You are here

function search_api_saved_searches_block_view in Search API Saved Searches 7

Implements hook_block_view().

File

./search_api_saved_searches.module, line 718
Offers the ability to save searches and be notified of new results.

Code

function search_api_saved_searches_block_view($delta = '') {
  $searches = search_api_current_search();
  if (!$searches) {
    return;
  }
  if (!user_access('use search_api_saved_searches')) {
    return;
  }
  $settings = search_api_saved_searches_settings_load($delta);
  if (!$settings || !search_api_saved_search_create_access($settings)) {
    return;
  }
  $index_id = $settings->index_id;
  $options = $settings->options;
  $ids_list = drupal_map_assoc($options['ids_list']);
  $search_ids = variable_get('search_api_saved_searches_search_ids', array());
  foreach ($searches as $id => $data) {
    if ($data[0]
      ->getIndex()->machine_name == $index_id) {
      if (!isset($search_ids[$index_id][$id])) {
        $search_ids[$index_id][$id] = $id;
        $search_ids_updated = TRUE;
      }
      if (isset($ids_list[$id]) != $options['default_true']) {
        if (isset($query)) {
          watchdog('search_api_saved_searches', 'Two matching searches on index %index for saved search block.', array(
            '%index' => $settings
              ->index()->name,
          ), WATCHDOG_WARNING, l(t('view page'), $_GET['q'], array(
            'query' => drupal_get_query_parameters(),
          )));
        }
        else {
          list($query, $results) = $data;
        }
      }
    }
  }
  if (isset($search_ids_updated)) {
    variable_set('search_api_saved_searches_search_ids', $search_ids);
  }
  if (empty($query)) {
    return;
  }
  return array(
    'subject' => t('Save search'),
    'content' => array(
      'form' => drupal_get_form('search_api_saved_searches_save_form', $settings, $query),
    ),
  );
}