Knp\Component\Pager\Event\Subscriber\Sortable\Doctrine\ORM\QuerySubscriber::items PHP Method

items() public method

public items ( Knp\Component\Pager\Event\ItemsEvent $event )
$event Knp\Component\Pager\Event\ItemsEvent
    public function items(ItemsEvent $event)
    {
        if ($event->target instanceof Query) {
            if (isset($_GET[$event->options['sortFieldParameterName']])) {
                $dir = isset($_GET[$event->options['sortDirectionParameterName']]) && strtolower($_GET[$event->options['sortDirectionParameterName']]) === 'asc' ? 'asc' : 'desc';
                if (isset($event->options['sortFieldWhitelist'])) {
                    if (!in_array($_GET[$event->options['sortFieldParameterName']], $event->options['sortFieldWhitelist'])) {
                        throw new \UnexpectedValueException("Cannot sort by: [{$_GET[$event->options['sortFieldParameterName']]}] this field is not in whitelist");
                    }
                }
                $sortFieldParameterNames = $_GET[$event->options['sortFieldParameterName']];
                $fields = array();
                $aliases = array();
                foreach (explode('+', $sortFieldParameterNames) as $sortFieldParameterName) {
                    $parts = explode('.', $sortFieldParameterName, 2);
                    // We have to prepend the field. Otherwise OrderByWalker will add
                    // the order-by items in the wrong order
                    array_unshift($fields, end($parts));
                    array_unshift($aliases, 2 <= count($parts) ? reset($parts) : false);
                }
                $event->target->setHint(OrderByWalker::HINT_PAGINATOR_SORT_DIRECTION, $dir)->setHint(OrderByWalker::HINT_PAGINATOR_SORT_FIELD, $fields)->setHint(OrderByWalker::HINT_PAGINATOR_SORT_ALIAS, $aliases);
                QueryHelper::addCustomTreeWalker($event->target, 'Knp\\Component\\Pager\\Event\\Subscriber\\Sortable\\Doctrine\\ORM\\Query\\OrderByWalker');
            }
        }
    }