/** * Custom find all, sort by createAt desc. * * @param array $filtersKeys List medias in this filters */ public function findAllByFiltersKeys(array $filtersKeys) { $qb = $this->entityManager->getRepository($this->class)->createQueryBuilder('m'); $filters = array(); $addNull = false; $inversedfilters = array(); foreach ($filtersKeys as $filter) { if ($this->filter->has($filter)) { $value = $this->filter->get($filter); $inversedfilters[$value] = $filter; if ($value === null) { $addNull = true; } else { $filters[] = $value; } } } if ($addNull === false && empty($filters)) { return array(); } if (!empty($filters)) { $qb->select('m')->where($qb->expr()->in('m.filter', $filters)); } if ($addNull === true) { $qb->orWhere('m.filter IS NULL'); } $medias = $qb->orderBy('m.createdAt', 'DESC')->getQuery()->getResult(); foreach ($medias as $media) { $media->setCryptedFilter($inversedfilters[$media->getFilter()]); } return $medias; }
/** * {@inheritDoc} */ public function buildView(FormView $view, FormInterface $form, array $options) { $view->vars['filter'] = $this->filter->set($options['filter']); $this->contextsManipulator->addContexts($options['contexts'])->addAllowedExtensions($options['allowed_extensions']); $view->vars['allowed_extensions'] = $this->contextsManipulator->getAllowedExtensions(); }