| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200 | 
							- <?php
 
- /**
 
-  * @file
 
-  * Contains base definitions for data alterations.
 
-  *
 
-  * Contains the SearchApiAlterCallbackInterface interface and the
 
-  * SearchApiAbstractAlterCallback class.
 
-  */
 
- /**
 
-  * Interface representing a Search API data-alter callback.
 
-  */
 
- interface SearchApiAlterCallbackInterface {
 
-   /**
 
-    * Construct a data-alter callback.
 
-    *
 
-    * @param SearchApiIndex $index
 
-    *   The index whose items will be altered.
 
-    * @param array $options
 
-    *   The callback options set for this index.
 
-    */
 
-   public function __construct(SearchApiIndex $index, array $options = array());
 
-   /**
 
-    * Check whether this data-alter callback is applicable for a certain index.
 
-    *
 
-    * This can be used for hiding the callback on the index's "Filters" tab. To
 
-    * avoid confusion, you should only use criteria that are immutable, such as
 
-    * the index's entity type. Also, since this is only used for UI purposes, you
 
-    * should not completely rely on this to ensure certain index configurations
 
-    * and at least throw an exception with a descriptive error message if this is
 
-    * violated on runtime.
 
-    *
 
-    * @param SearchApiIndex $index
 
-    *   The index to check for.
 
-    *
 
-    * @return boolean
 
-    *   TRUE if the callback can run on the given index; FALSE otherwise.
 
-    */
 
-   public function supportsIndex(SearchApiIndex $index);
 
-   /**
 
-    * Display a form for configuring this callback.
 
-    *
 
-    * @return array
 
-    *   A form array for configuring this callback, or FALSE if no configuration
 
-    *   is possible.
 
-    */
 
-   public function configurationForm();
 
-   /**
 
-    * Validation callback for the form returned by configurationForm().
 
-    *
 
-    * @param array $form
 
-    *   The form returned by configurationForm().
 
-    * @param array $values
 
-    *   The part of the $form_state['values'] array corresponding to this form.
 
-    * @param array $form_state
 
-    *   The complete form state.
 
-    */
 
-   public function configurationFormValidate(array $form, array &$values, array &$form_state);
 
-   /**
 
-    * Submit callback for the form returned by configurationForm().
 
-    *
 
-    * This method should both return the new options and set them internally.
 
-    *
 
-    * @param array $form
 
-    *   The form returned by configurationForm().
 
-    * @param array $values
 
-    *   The part of the $form_state['values'] array corresponding to this form.
 
-    * @param array $form_state
 
-    *   The complete form state.
 
-    *
 
-    * @return array
 
-    *   The new options array for this callback.
 
-    */
 
-   public function configurationFormSubmit(array $form, array &$values, array &$form_state);
 
-   /**
 
-    * Alter items before indexing.
 
-    *
 
-    * Items which are removed from the array won't be indexed, but will be marked
 
-    * as clean for future indexing. This could for instance be used to implement
 
-    * some sort of access filter for security purposes (e.g., don't index
 
-    * unpublished nodes or comments).
 
-    *
 
-    * @param array $items
 
-    *   An array of items to be altered, keyed by item IDs.
 
-    */
 
-   public function alterItems(array &$items);
 
-   /**
 
-    * Declare the properties that are added to items by this callback.
 
-    *
 
-    * If one of the specified properties already exists for an entity it will be
 
-    * overridden, so keep a clear namespace by prefixing the properties with the
 
-    * module name if this is not desired.
 
-    *
 
-    * CAUTION: Since this method is used when calling
 
-    * SearchApiIndex::getFields(), calling that method from inside propertyInfo()
 
-    * will lead to a recursion and should therefore be avoided.
 
-    *
 
-    * @see hook_entity_property_info()
 
-    *
 
-    * @return array
 
-    *   Information about all additional properties, as specified by
 
-    *   hook_entity_property_info() (only the inner "properties" array).
 
-    */
 
-   public function propertyInfo();
 
- }
 
- /**
 
-  * Abstract base class for data-alter callbacks.
 
-  *
 
-  * This class implements most methods with sensible defaults.
 
-  *
 
-  * Extending classes will at least have to implement the alterItems() method to
 
-  * make this work. If that method adds additional fields to the items,
 
-  * propertyInfo() has to be overridden, too.
 
-  */
 
- abstract class SearchApiAbstractAlterCallback implements SearchApiAlterCallbackInterface {
 
-   /**
 
-    * The index whose items will be altered.
 
-    *
 
-    * @var SearchApiIndex
 
-    */
 
-   protected $index;
 
-   /**
 
-    * The configuration options for this callback, if it has any.
 
-    *
 
-    * @var array
 
-    */
 
-   protected $options;
 
-   /**
 
-    * Implements SearchApiAlterCallbackInterface::__construct().
 
-    */
 
-   public function __construct(SearchApiIndex $index, array $options = array()) {
 
-     $this->index = $index;
 
-     $this->options = $options;
 
-   }
 
-   /**
 
-    * Implements SearchApiAlterCallbackInterface::supportsIndex().
 
-    *
 
-    * The default implementation always returns TRUE.
 
-    */
 
-   public function supportsIndex(SearchApiIndex $index) {
 
-     return TRUE;
 
-   }
 
-   /**
 
-    * Implements SearchApiAlterCallbackInterface::configurationForm().
 
-    */
 
-   public function configurationForm() {
 
-     return array();
 
-   }
 
-   /**
 
-    * Implements SearchApiAlterCallbackInterface::configurationFormValidate().
 
-    */
 
-   public function configurationFormValidate(array $form, array &$values, array &$form_state) { }
 
-   /**
 
-    * Implements SearchApiAlterCallbackInterface::configurationFormSubmit().
 
-    */
 
-   public function configurationFormSubmit(array $form, array &$values, array &$form_state) {
 
-     $this->options = $values;
 
-     return $values;
 
-   }
 
-   /**
 
-    * Implements SearchApiAlterCallbackInterface::propertyInfo().
 
-    */
 
-   public function propertyInfo() {
 
-     return array();
 
-   }
 
-   /**
 
-    * Determines whether the given index contains multiple types of entities.
 
-    *
 
-    * @param SearchApiIndex|null $index
 
-    *   (optional) The index to examine. Defaults to the index set for this
 
-    *   plugin.
 
-    *
 
-    * @return bool
 
-    *   TRUE if the index is a multi-entity index, FALSE otherwise.
 
-    */
 
-   protected function isMultiEntityIndex(SearchApiIndex $index = NULL) {
 
-     $index = $index ? $index : $this->index;
 
-     return $index->datasource() instanceof SearchApiCombinedEntityDataSourceController;
 
-   }
 
- }
 
 
  |