themes/bases/Campussuite2015/widgets/FeedList/WidgetProcessor.php line 46

Open in your IDE?
  1. <?php
  2. namespace Cms\Widgets\FeedList;
  3. use App\Doctrine\Repository\Feed\FeedSearch;
  4. use App\Entity\Feed\Entry\AbstractContentEntry;
  5. use App\Entity\System\School;
  6. use App\Enum\ChannelEnum;
  7. use Cms\ContentBundle\Service\FrontendRenderer;
  8. use Cms\FrontendBundle\Service\ResolverManager;
  9. use Cms\WidgetBundle\Model\AbstractWidgetProcessor;
  10. use Cms\WidgetBundle\Model\WidgetObject;
  11. use Symfony\Component\DependencyInjection\ContainerInterface;
  12. /**
  13.  *
  14.  */
  15. final class WidgetProcessor extends AbstractWidgetProcessor
  16. {
  17.     private const LIMITS__MAX 12;
  18.     private const LIMITS__DEFAULT 6;
  19.     protected ResolverManager $rm;
  20.     /**
  21.      * {@inheritdoc}
  22.      */
  23.     public function setup(ContainerInterface $container): void
  24.     {
  25.         parent::setup($container);
  26.         $this->rm $container->get(ResolverManager::class);
  27.     }
  28.     /**
  29.      * {@inheritdoc}
  30.      * @param FeedList $object
  31.      */
  32.     public function process(WidgetObject $objectFrontendRenderer $renderer): array
  33.     {
  34.         // get the school
  35.         switch ($object->getSchool() ?: null) {
  36.             case null:
  37.                 $school null;
  38.                 break;
  39.             case 'current':
  40.                 $school $this->rm->getSchoolResolver()->resolveSchoolByDepartment(
  41.                     $renderer->peekGlobals()->getContainer(),
  42.                 );
  43.                 break;
  44.             default:
  45.                 $school $this->em->getRepository(School::class)->findOneByUlid($object->getSchool());
  46.         }
  47.         // determine if we should be pulling the district or not
  48.         $district $object->getDistrict() ?: (!$school);
  49.         // query for feed items
  50.         $items $this->em->getRepository(AbstractContentEntry::class)->findBySearch(
  51.             (new FeedSearch())
  52.                 ->setRoot($renderer->peekGlobals()->getSite())
  53.                 ->setDistrict($district)
  54.                 ->setSchools($school)
  55.                 ->setBoosted(true)
  56.                 ->setDeep(false)
  57.                 ->setChannels(ChannelEnum::WEBSITE),
  58.             min($object->getLimit() ?: self::LIMITS__DEFAULTself::LIMITS__MAX),
  59.         );
  60.         return [
  61.             'school' => $school,
  62.             'department' => $school
  63.                 $school->getDepartment()
  64.                 : $this->rm->getSchoolResolver()->resolveDistrictByTenant($renderer->peekGlobals()->getTenant())->getDepartment(),
  65.             'items' => $items,
  66.         ];
  67.     }
  68. }