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 = $aliases[$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_subtopics, order parameter");
}
$state = 1;
break;
}
}
if ($state != 1) {
CampTemplate::singleton()->trigger_error("unexpected end of order parameter in list_issues");
}
return $order;
}