Example #1
0
 /**
  * Processes order constraints passed in an array.
  *
  * @param  array $p_order
  * @return array
  */
 protected function ProcessOrder(array $p_order)
 {
     $order = array();
     $state = 1;
     foreach ($p_order as $word) {
         switch ($state) {
             case 1:
                 // reading the order field
                 if (array_search(strtolower($word), ArticlesList::$s_orderFields) === false) {
                     $checked_info = Article::CheckCustomOrder($word);
                     if (!$checked_info['status']) {
                         CampTemplate::singleton()->trigger_error("invalid order field {$word} in list_articles, order parameter");
                     }
                     // ordering by custom fields; runs the same way as other order specs
                     $orderField = $word;
                     $state = 2;
                 } else {
                     $orderField = $word;
                     $state = 2;
                 }
                 break;
             case 2:
                 // reading the order direction
                 if (MetaOrder::IsValid($word)) {
                     $order[] = array('field' => $orderField, 'dir' => $word);
                 } else {
                     CampTemplate::singleton()->trigger_error("invalid order {$word} of attribute {$orderField} in list_articles, order parameter");
                 }
                 $state = 1;
                 break;
         }
     }
     if ($state != 1) {
         CampTemplate::singleton()->trigger_error("unexpected end of order parameter in list_articles");
     }
     return $order;
 }