From 716a2ae3cda7ad1b74fccafe42df9459830a07f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafa=C5=82=20Muszy=C5=84ski?= Date: Wed, 13 May 2015 13:13:48 +0200 Subject: [PATCH] CS-5754 - Problem with topics --- .../template_engine/classes/SubtopicsList.php | 34 ++++++++++++++----- 1 file changed, 26 insertions(+), 8 deletions(-) diff --git a/newscoop/template_engine/classes/SubtopicsList.php b/newscoop/template_engine/classes/SubtopicsList.php index 808813f739..ae239de19e 100644 --- a/newscoop/template_engine/classes/SubtopicsList.php +++ b/newscoop/template_engine/classes/SubtopicsList.php @@ -8,10 +8,11 @@ */ class SubtopicsList extends ListObject { - private static $s_orderFields = array('default', - 'bynumber', - 'byname', - ); + private static $s_orderFields = array( + 'default', + 'bynumber', + 'byname', + ); /** * Creates the list of objects. Sets the parameter $p_hasNextElements to @@ -30,6 +31,7 @@ protected function CreateList($p_start = 0, $p_limit = 0, array $p_parameters, & $rootTopicId = $p_parameters['topic_identifier']; $start = null; $limit = null; + $order = array(); if ($p_start > 0) { $start = $p_start; } @@ -38,6 +40,14 @@ protected function CreateList($p_start = 0, $p_limit = 0, array $p_parameters, & $limit = $p_limit; } + if (!isset($p_parameters['direct'])) { + $p_parameters['direct'] = true; + } + + if (!empty($this->m_order)) { + $order = $this->m_order[0]; + } + $em = \Zend_Registry::get('container')->getService('em'); $cacheService = \Zend_Registry::get('container')->getService('newscoop.cache'); $topicService = \Zend_Registry::get('container')->getService('newscoop_newscoop.topic_service'); @@ -56,9 +66,9 @@ protected function CreateList($p_start = 0, $p_limit = 0, array $p_parameters, & $subtopics = $repository->childrenWithTranslations( $topic, $language ? $language->getCode() : null, - false, - null, - isset($p_parameters['order']) ? $p_parameters['order'] : null, + $p_parameters['direct'], + isset($order['field']) ? $order['field'] : null, + isset($order['dir']) ? $order['dir'] : null, $start, $limit )->getArrayResult(); @@ -101,13 +111,18 @@ protected function ProcessOrder(array $p_order) { $order = array(); $state = 1; + $aliases = array( + 'byname' => 'title', + 'bynumber' => 'id', + ); + foreach ($p_order as $word) { switch ($state) { case 1: // reading the order field if (array_search(strtolower($word), SubtopicsList::$s_orderFields) === false) { CampTemplate::singleton()->trigger_error("invalid order field $word in list_subtopics, order parameter"); } else { - $orderField = $word; + $orderField = $aliases[$word]; $state = 2; } break; @@ -156,6 +171,9 @@ protected function ProcessParameters(array $p_parameters) $parameters[$parameter] = $value; } break; + case 'direct': + $parameters[$parameter] = filter_var($value, FILTER_VALIDATE_BOOLEAN); + break; default: CampTemplate::singleton()->trigger_error("invalid parameter $parameter in list_subtopics", $p_smarty); }