Circle.php 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. <?php
  2. declare(strict_types = 1);
  3. // {{{ License
  4. // This file is part of GNU social - https://www.gnu.org/software/social
  5. //
  6. // GNU social is free software: you can redistribute it and/or modify
  7. // it under the terms of the GNU Affero General Public License as published by
  8. // the Free Software Foundation, either version 3 of the License, or
  9. // (at your option) any later version.
  10. //
  11. // GNU social is distributed in the hope that it will be useful,
  12. // but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  14. // GNU Affero General Public License for more details.
  15. //
  16. // You should have received a copy of the GNU Affero General Public License
  17. // along with GNU social. If not, see <http://www.gnu.org/licenses/>.
  18. // }}}
  19. namespace Component\Circle\Controller;
  20. use function App\Core\I18n\_m;
  21. use App\Entity\LocalUser;
  22. use App\Util\Exception\ClientException;
  23. use Component\Circle\Entity\ActorCircle;
  24. use Component\Collection\Util\Controller\CircleController;
  25. class Circle extends CircleController
  26. {
  27. public function circleById(int|ActorCircle $circle_id): array
  28. {
  29. $circle = \is_int($circle_id) ? ActorCircle::getByPK(['id' => $circle_id]) : $circle_id;
  30. unset($circle_id);
  31. if (\is_null($circle)) {
  32. throw new ClientException(_m('No such circle.'), 404);
  33. } else {
  34. return [
  35. '_template' => 'collection/actors.html.twig',
  36. 'title' => _m('Circle'),
  37. 'empty_message' => _m('No members.'),
  38. 'sort_form_fields' => [],
  39. 'page' => $this->int('page') ?? 1,
  40. 'actors' => $circle->getTaggedActors(),
  41. ];
  42. }
  43. }
  44. public function circleByTaggerIdAndTag(int $tagger_id, string $tag): array
  45. {
  46. return $this->circleById(ActorCircle::getByPK(['tagger' => $tagger_id, 'tag' => $tag]));
  47. }
  48. public function circleByTaggerNicknameAndTag(string $tagger_nickname, string $tag): array
  49. {
  50. return $this->circleById(ActorCircle::getByPK(['tagger' => LocalUser::getByNickname($tagger_nickname)->getId(), 'tag' => $tag]));
  51. }
  52. }