Exemple #1
0
 /**
  * Returns a sorted list of required criteria keys.
  *
  * @param MW_Common_Criteria_Interface $criteria Search criteria object
  * @param string[] $required List of prefixes of required search conditions
  * @return string[] Sorted list of criteria keys
  */
 private function _getCriteriaKeyList(MW_Common_Criteria_Interface $criteria, array $required)
 {
     $keys = array_merge($required, $this->_getCriteriaKeys($required, $criteria->getConditions()));
     foreach ($criteria->getSortations() as $sortation) {
         $keys = array_merge($keys, $this->_getCriteriaKeys($required, $sortation));
     }
     $keys = array_unique(array_merge($required, $keys));
     sort($keys);
     return $keys;
 }
Exemple #2
0
 /**
  * Initializes the criteria object with sortations based on the given parameter.
  *
  * @param MW_Common_Criteria_Interface $criteria Criteria object
  * @param stdClass $params Object that may contain the properties "condition", "sort", "dir", "start" and "limit"
  */
 private function _initCriteriaSortations(MW_Common_Criteria_Interface $criteria, stdClass $params)
 {
     if (isset($params->sort) && isset($params->dir)) {
         $sortation = array();
         switch ($params->dir) {
             case 'ASC':
                 $sortation[] = $criteria->sort('+', $params->sort);
                 break;
             case 'DESC':
                 $sortation[] = $criteria->sort('-', $params->sort);
                 break;
             default:
                 throw new Controller_ExtJS_Exception(sprintf('Invalid sort direction "%1$s"', $params->sort));
         }
         $criteria->setSortations($sortation);
     }
     if ($this->_sort !== null) {
         $sort = $criteria->getSortations();
         $sort[] = $criteria->sort('+', $this->_sort);
         $criteria->setSortations($sort);
     }
 }