Example #1
0
 public function applySorting($sorting)
 {
     $this->ensureNotExecuted();
     foreach ($sorting as $field => $order) {
         if (is_numeric($field)) {
             $field = $order;
             $order = 'asc';
         }
         $this->selectQuery->addSort($field, $order);
     }
 }
 /**
  * Checks that $sortString is well-formatted and adds the sort conidition
  * defined by it to $query.
  * Adds feedback about invalid sort string format to the page.
  *
  * @param string $sortString
  * @param $query
  */
 protected function addSortStringForQuery($sortString)
 {
     if (!empty($sortString)) {
         $sortCriteria = explode(',', $sortString);
         foreach ($sortCriteria as $sortCriterion) {
             $sortCriterionParts = explode(' ', $sortCriterion);
             if (count($sortCriterionParts) === 2) {
                 $sortDirection = Query::SORT_ASC;
                 if ($sortCriterionParts[1] === 'desc') {
                     $sortDirection = Query::SORT_DESC;
                 } else {
                     if ($sortCriterionParts[1] !== 'asc') {
                         $message = sprintf('find: sort criterion »%s«’s sort direction is »%s« It should be »asc« or »desc«. Ignoring it.', $sortCriterion, $sortCriterionParts[1]);
                         LoggerUtility::logWarning($message);
                         continue;
                     }
                 }
                 $this->query->addSort($sortCriterionParts[0], $sortDirection);
             } else {
                 $message = sprintf('find: sort criterion »%s« does not have the required form »fieldName [asc|desc]«. Ignoring it.', $sortCriterion);
                 LoggerUtility::logWarning($message);
             }
         }
     }
 }
Example #3
0
 public function testAddSort()
 {
     $this->query->addSort('field1', Query::SORT_DESC);
     $this->assertEquals(array('field1' => Query::SORT_DESC), $this->query->getSorts());
 }
 /**
  * Add sort field to the solarium query
  *
  * @param Query $solarium_query
  * @param string $sort_field_name
  */
 private function add_sort_field(Query $solarium_query, $sort_field_name = self::SORT_CODE_BY_RELEVANCY_DESC)
 {
     switch ($sort_field_name) {
         case self::SORT_CODE_BY_DATE_DESC:
             $solarium_query->addSort(WpSolrSchema::_FIELD_NAME_DATE, $solarium_query::SORT_DESC);
             break;
         case self::SORT_CODE_BY_DATE_ASC:
             $solarium_query->addSort(WpSolrSchema::_FIELD_NAME_DATE, $solarium_query::SORT_ASC);
             break;
         case self::SORT_CODE_BY_NUMBER_COMMENTS_DESC:
             $solarium_query->addSort(WpSolrSchema::_FIELD_NAME_NUMBER_OF_COMMENTS, $solarium_query::SORT_DESC);
             break;
         case self::SORT_CODE_BY_NUMBER_COMMENTS_ASC:
             $solarium_query->addSort(WpSolrSchema::_FIELD_NAME_NUMBER_OF_COMMENTS, $solarium_query::SORT_ASC);
             break;
         case self::SORT_CODE_BY_RELEVANCY_DESC:
         default:
             // None is relevancy by default
             break;
     }
 }
Example #5
0
 public function setSorts(Query $solarium_query, QueryInterface $query, $field_names_single_value = array())
 {
     foreach ($query->getSorts() as $field => $order) {
         $f = $field_names_single_value[$field];
         if (substr($f, 0, 3) == 'ss_') {
             $f = 'sort_' . substr($f, 3);
         }
         $solarium_query->addSort($f, strtolower($order));
     }
 }
 /**
  * Add sort field to the solarium query
  *
  * @param Query $solarium_query
  * @param string $sort_field_name
  */
 private function add_sort_field(Query $solarium_query, $sort_field_name = self::SORT_CODE_BY_RELEVANCY_DESC)
 {
     switch ($sort_field_name) {
         case self::SORT_CODE_BY_DATE_DESC:
             $solarium_query->addSort(WpSolrSchema::_FIELD_NAME_DATE, $solarium_query::SORT_DESC);
             break;
         case self::SORT_CODE_BY_DATE_ASC:
             $solarium_query->addSort(WpSolrSchema::_FIELD_NAME_DATE, $solarium_query::SORT_ASC);
             break;
         case self::SORT_CODE_BY_NUMBER_COMMENTS_DESC:
             $solarium_query->addSort(WpSolrSchema::_FIELD_NAME_NUMBER_OF_COMMENTS, $solarium_query::SORT_DESC);
             break;
         case self::SORT_CODE_BY_NUMBER_COMMENTS_ASC:
             $solarium_query->addSort(WpSolrSchema::_FIELD_NAME_NUMBER_OF_COMMENTS, $solarium_query::SORT_ASC);
             break;
         case self::SORT_CODE_BY_RELEVANCY_DESC:
         default:
             // None is relevancy by default
             break;
     }
     // Let a chance to add custom sort options
     $solarium_query = apply_filters(WpSolrFilters::WPSOLR_FILTER_SORT, $solarium_query, $sort_field_name);
 }
Example #7
-1
 public function testSelectUrlWithSortAndFilters()
 {
     $this->query->addSort('id', Query::SORT_ASC);
     $this->query->addSort('name', Query::SORT_DESC);
     $this->query->addFilterQuery(new FilterQuery(array('key' => 'f1', 'query' => 'published:true')));
     $this->query->addFilterQuery(new FilterQuery(array('key' => 'f2', 'tag' => array('t1', 't2'), 'query' => 'category:23')));
     $request = $this->builder->build($this->query);
     $this->assertEquals(null, $request->getRawData());
     $this->assertEquals('select?omitHeader=true&wt=json&json.nl=flat&q=*:*&start=0&rows=10&fl=*,score&sort=id asc,name desc' . '&fq=published:true&fq={!tag=t1,t2}category:23', urldecode($request->getUri()));
 }