/** * @param PaginateFinderConfiguration $configuration * @param array|null $order * @param int|null $limit * @param int|null $skip * @param array|null $search */ protected function finderPaginateConfigurationTest(PaginateFinderConfiguration $configuration, $order, $limit, $skip, $search) { $this->isTypeOrNull("is_array", $configuration->getSearch(), $search); $this->isTypeOrNull("is_array", $configuration->getOrder(), $order); $this->isTypeOrNull("is_int", $configuration->getLimit(), $limit); $this->isTypeOrNull("is_int", $configuration->getSkip(), $skip); }
/** * @param PaginateFinderConfiguration $configuration * * @return array */ protected function generateGroupForFilterSort(PaginateFinderConfiguration $configuration) { $group = array(); $sorts = $this->generateArrayForFilterSort($configuration->getOrder(), $configuration->getDescriptionEntity(), false, true); foreach ($sorts as $key => $name) { $group = array_merge($group, array($key => array('$last' => '$' . $name))); } return $group; }
/** * @param PaginateFinderConfiguration $configuration * @param string $siteId * @param string $language * * @return array */ public function findForPaginate(PaginateFinderConfiguration $configuration, $siteId, $language) { $elementName = 'node'; $order = $configuration->getOrder(); $qa = $this->createQueryWithFilterAndLastVersion($configuration, $siteId, $language, $elementName, $order); $qa->skip($configuration->getSkip()); $qa->limit($configuration->getLimit()); return $this->hydrateAggregateQuery($qa, $elementName); }