/**
  * Converts the WP_Query to a Cloud_Search_Query
  * @return Cloud_Search_Query
  */
 public function get_cs_query()
 {
     $cs_query = new Cloud_Search_Query();
     $cs_query->add_facet(apply_filters('lift_search_facets', array()));
     $parameters = apply_filters('list_search_bq_parameters', array(sprintf("(label '%s')", $this->wp_query->get('s'))), $this);
     //filter to the current blog/site
     $parameters[] = new Lift_Expression_Set('and', array(new Lift_Expression_Field('site_id', lift_get_current_site_id(), false), new Lift_Expression_Field('blog_id', get_current_blog_id(), false)));
     $boolean_query = sprintf('(and %s)', trim(implode(' ', $parameters)));
     $cs_query->set_boolean_query($boolean_query);
     // size
     $posts_per_page = $this->wp_query->get('posts_per_page');
     if ($posts_per_page < 0) {
         $posts_per_page = 9999999;
     }
     $cs_query->set_size($posts_per_page);
     // start
     $paged = $this->wp_query->get('paged');
     $start = 0;
     if ($paged > 1) {
         $start = $posts_per_page * ($paged - 1);
     }
     $cs_query->set_start($start);
     $orderby_values = array('date' => 'post_date_gmt', 'relevancy' => 'text_relevance');
     // rank
     $order = $this->wp_query->get('order');
     $orderby = isset($orderby_values[$this->wp_query->get('orderby')]) ? $orderby_values[$this->wp_query->get('orderby')] : $orderby_values['relevancy'];
     if ($orderby) {
         $cs_query->add_rank($orderby, $order);
     }
     // return fields
     $cs_query->add_return_field('id');
     do_action_ref_array('get_cs_query', array($cs_query));
     return $cs_query;
 }
Exemplo n.º 2
0
 /**
  * Sends the search to the CloudSearch API
  * @param Cloud_Search_Query $query
  */
 public function sendSearch($query)
 {
     $response = $this->send('GET', $query->get_query_string());
     if ($response && property_exists($response, 'error')) {
         $this->error_messages = $response->messages;
         return false;
     }
     if (in_array($this->http_interface->getStatusCode(), array(200, 201, 204))) {
         return $response;
     }
     return false;
 }
 /**
  * Adds the facet data to the query
  * @param Cloud_Search_Query $cs_query
  */
 public function setFacetOptions($cs_query)
 {
     $facets = array();
     $cs_query->add_facet($this->field->getName());
 }