| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180 | 
							- <?php
 
- /**
 
-  * @file
 
-  * Contains the SearchApiAutocompleteSearch class.
 
-  */
 
- /**
 
-  * Class describing the settings for a certain search for which autocompletion
 
-  * is available.
 
-  */
 
- class SearchApiAutocompleteSearch extends Entity {
 
-   // Entity properties, loaded from the database:
 
-   /**
 
-    * @var integer
 
-    */
 
-   public $id;
 
-   /**
 
-    * @var string
 
-    */
 
-   public $machine_name;
 
-   /**
 
-    * @var string
 
-    */
 
-   public $name;
 
-   /**
 
-    * @var integer
 
-    */
 
-   public $index_id;
 
-   /**
 
-    * @var string
 
-    */
 
-   public $type;
 
-   /**
 
-    * @var boolean
 
-    */
 
-   public $enabled;
 
-   /**
 
-    * An array of options for this search, containing any of the following:
 
-    * - results: Boolean indicating whether to also list the estimated number of
 
-    *   results for each suggestion (if possible).
 
-    * - fields: Array containing the fulltext fields to use for autocompletion.
 
-    * - custom: An array of type-specific settings.
 
-    *
 
-    * @var array
 
-    */
 
-   public $options = array();
 
-   // Inferred properties, for caching:
 
-   /**
 
-    * @var SearchApiIndex
 
-    */
 
-   protected $index;
 
-   /**
 
-    * @var SearchApiServer
 
-    */
 
-   protected $server;
 
-   /**
 
-    * Constructor.
 
-    *
 
-    * @param array $values
 
-    *   The entity properties.
 
-    */
 
-   public function __construct(array $values = array()) {
 
-     parent::__construct($values, 'search_api_autocomplete_search');
 
-   }
 
-   /**
 
-    * @return SearchApiIndex
 
-    *   The index this search belongs to.
 
-    */
 
-   public function index() {
 
-     if (!isset($this->index)) {
 
-       $this->index = search_api_index_load($this->index_id);
 
-       if (!$this->index) {
 
-         $this->index = FALSE;
 
-       }
 
-     }
 
-     return $this->index;
 
-   }
 
-   /**
 
-    * @return SearchApiServer
 
-    *   The server this search would at the moment be executed on.
 
-    */
 
-   public function server() {
 
-     if (!isset($this->server)) {
 
-       if (!$this->index() || !$this->index()->server) {
 
-         $this->server = FALSE;
 
-       }
 
-       else {
 
-         $this->server = $this->index()->server();
 
-         if (!$this->server) {
 
-           $this->server = FALSE;
 
-         }
 
-       }
 
-     }
 
-     return $this->server;
 
-   }
 
-   /**
 
-    * @return boolean
 
-    *   TRUE if the server this search is currently associated with supports the
 
-    *   autocompletion feature; FALSE otherwise.
 
-    */
 
-   public function supportsAutocompletion() {
 
-     return $this->server() && $this->server()->supportsFeature('search_api_autocomplete');
 
-   }
 
-   /**
 
-    * Helper method for altering a textfield form element to use autocompletion.
 
-    */
 
-   public function alterElement(array &$element, array $fields = array()) {
 
-     if (search_api_autocomplete_access($this)) {
 
-       $fields_string = $fields ? implode(' ', $fields) : ' ';
 
-       $element['#attached']['css'][] = drupal_get_path('module', 'search_api_autocomplete') . '/search_api_autocomplete.css';
 
-       $element['#autocomplete_path'] = 'search_api_autocomplete/' . $this->machine_name . '/' . $fields_string;
 
-     }
 
-   }
 
-   /**
 
-    * Split a string with search keywords into two parts.
 
-    *
 
-    * The first part consists of all words the user has typed completely, the
 
-    * second one contains the beginning of the last, possibly incomplete word.
 
-    *
 
-    * @return array
 
-    *   An array with $keys split into exactly two parts, both of which may be
 
-    *   empty.
 
-    */
 
-   public function splitKeys($keys) {
 
-     $keys = ltrim($keys);
 
-     // If there is whitespace or a quote on the right, all words have been
 
-     // completed.
 
-     if (rtrim($keys, " \t\n\r\0\x0B\"") != $keys) {
 
-       return array(rtrim($keys), '');
 
-     }
 
-     if (preg_match('/^(.*?)\s*"?([\S]*)$/', $keys, $m)) {
 
-       return array($m[1], $m[2]);
 
-     }
 
-     return array('', $keys);
 
-   }
 
-   /**
 
-    * Create the query that would be issued for this search for the complete keys.
 
-    *
 
-    * @param $complete
 
-    *   A string containing the complete search keys.
 
-    * @param $incomplete
 
-    *   A string containing the incomplete last search key.
 
-    *
 
-    * @return SearchApiQueryInterface
 
-    *   The query that would normally be executed when only $complete was entered
 
-    *   as the search keys for this search.
 
-    */
 
-   public function getQuery($complete, $incomplete) {
 
-     $info = search_api_autocomplete_get_types($this->type);
 
-     if (empty($info['create query'])) {
 
-       return NULL;
 
-     }
 
-     $query = $info['create query']($this, $complete, $incomplete);
 
-     if ($complete && !$query->getKeys()) {
 
-       $query->keys($complete);
 
-     }
 
-     return $query;
 
-   }
 
- }
 
 
  |