| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 | 
							- <?php
 
- /**
 
-  * @file
 
-  * Search API Rules integration.
 
-  */
 
- /**
 
-  * Implements hook_rules_action_info().
 
-  */
 
- function search_api_rules_action_info() {
 
-   $items['search_api_index'] = array (
 
-    'parameter' => array(
 
-       'entity' => array(
 
-         'type' => 'entity',
 
-         'label' => t('Entity'),
 
-         'description' => t('The item to index.'),
 
-       ),
 
-       'index' => array(
 
-         'type' => 'search_api_index',
 
-         'label' => t('Index'),
 
-         'description' => t('The index on which the item should be indexed. Leave blank to index on all indexes for this item type.'),
 
-         'optional' => TRUE,
 
-         'options list' => 'search_api_index_options_list',
 
-       ),
 
-       'index_immediately' => array(
 
-         'type' => 'boolean',
 
-         'label' => t('Index immediately'),
 
-         'description' => t('Activate for indexing the item right away, otherwise it will only be marked as dirty and indexed during the next cron run.'),
 
-         'optional' => TRUE,
 
-         'default value' => TRUE,
 
-         'restriction' => 'input',
 
-       ),
 
-     ),
 
-     'group' => t('Search API'),
 
-     'access callback' => '_search_api_rules_access',
 
-     'label' => t('Index an entity'),
 
-     'base' => '_search_api_rules_action_index',
 
-   );
 
-   return $items;
 
- }
 
- /**
 
-  * Rules access callback for search api actions.
 
-  */
 
- function _search_api_rules_access() {
 
-   return user_access('administer search_api');
 
- }
 
- /**
 
-  * Rules action for indexing an item.
 
-  */
 
- function _search_api_rules_action_index(EntityDrupalWrapper $wrapper, SearchApiIndex $index = NULL, $index_immediately = TRUE) {
 
-   // If we do not have an index, we need to guess the item type to use.
 
-   // @todo Since this can only be used with entities anyways, we can just loop
 
-   //   over the item type information and use all types with that entity type.
 
-   $type = $wrapper->type();
 
-   $item_ids = array($wrapper->getIdentifier());
 
-   if (empty($index) && !$index_immediately) {
 
-     search_api_track_item_change($type, $item_ids);
 
-     return;
 
-   }
 
-   if ($index) {
 
-     $type = $index->item_type;
 
-     $indexes = array($index);
 
-   }
 
-   else {
 
-     $conditions = array(
 
-       'enabled' => 1,
 
-       'item_type' => $type,
 
-       'read_only' => 0,
 
-     );
 
-     $indexes = search_api_index_load_multiple(FALSE, $conditions);
 
-     if (!$indexes) {
 
-       return;
 
-     }
 
-   }
 
-   if ($index_immediately) {
 
-     foreach ($indexes as $index) {
 
-       search_api_index_specific_items_delayed($index, $item_ids);
 
-     }
 
-   }
 
-   else {
 
-     search_api_get_datasource_controller($type)->trackItemChange($item_ids, $indexes);
 
-   }
 
- }
 
- function _search_api_rules_action_index_help() {
 
-   return t('Queues an item for reindexing. If "index immediately" is disabled then the item will be indexed during the next cron run.');
 
- }
 
 
  |