You are here

function search_api_saved_searches_create_manual in Search API Saved Searches 7

Page callback for manually creating a new saved search.

Parameters

SearchApiSavedSearchesSettings $settings: (optional) The settings to use. If not present, either the only available settings will be used, or a form for selecting one will be displayed.

1 string reference to 'search_api_saved_searches_create_manual'
search_api_saved_searches_menu in ./search_api_saved_searches.module
Implements hook_menu().

File

./search_api_saved_searches.pages.inc, line 92
User UI functions and form callbacks for saved searches.

Code

function search_api_saved_searches_create_manual(SearchApiSavedSearchesSettings $settings = NULL) {
  if (!isset($settings)) {
    foreach (search_api_saved_searches_settings_load_multiple(FALSE, array(
      'enabled' => TRUE,
    )) as $settings) {
      if (!empty($settings->options['manual']['allow'])) {
        $available_settings[$settings->delta] = $settings;
      }
    }
    if (empty($available_settings)) {
      return t('There are no searches for which saved searches can be created manually.');
    }
    if (count($available_settings) == 1) {
      $settings = reset($available_settings);
    }
    else {
      $render = array();
      $render['question']['#markup'] = t('For which search do you want to create a saved search?');
      $render['list']['#theme'] = 'list';
      $render['list']['#items'] = array();
      $base = 'search-api/saved-searches/add/';
      foreach ($available_settings as $id => $settings) {
        $name = $settings
          ->index()->name;
        if (!empty($settings->options['manual']['page']['path'])) {
          $item = menu_get_item($settings->options['manual']['page']['path']);
          if (!empty($item['title'])) {
            $name = $item['title'];
          }
        }
        $render['list']['#items'][]['#markup'] = l($name, $base . $id);
      }
      return $render;
    }
  }
  return drupal_get_form('search_api_saved_searches_save_form', $settings);
}