You are here

function search_api_saved_searches_user_listing in Search API Saved Searches 7

Page callback for listing all saved searches of a user.

Parameters

$account: The user of which to list saved searches.

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

File

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

Code

function search_api_saved_searches_user_listing($account) {
  $base_path = 'search-api/saved-search/';
  $header = array(
    t('Name'),
    t('Created'),
    t('Last executed'),
    t('Interval'),
    t('Operations'),
  );
  $searches = search_api_saved_search_load_multiple(FALSE, array(
    'uid' => $account->uid,
  ));
  $rows = array();
  foreach ($searches as $search) {
    $settings = $search
      ->settings();
    if (empty($search->options['page'])) {
      $name = check_plain($search->name);
    }
    else {
      $name = $search
        ->l($search->name);
    }
    $created = format_date($search->created, 'short');
    $last_execute = t('@time ago', array(
      '@time' => format_interval(REQUEST_TIME - $search->last_execute),
    ));

    // Get the translated label for the interval.
    $available_intervals = $settings
      ->getTranslatedOption('interval_options');
    if (isset($available_intervals[$search->notify_interval])) {
      $interval = $available_intervals[$search->notify_interval];
    }
    elseif ($search->notify_interval < 0) {
      $interval = t('Never');
    }
    else {
      $interval = format_interval($search->notify_interval, 1);
    }
    $enable_options['attributes']['class'][] = 'saved-search-enable';
    $edit_options['attributes']['class'][] = 'saved-search-edit';
    $delete_options['attributes']['class'][] = 'saved-search-delete';
    if ($search->enabled) {
      $enable_action = '/disable';
      $enable_label = t('disable');
    }
    else {
      $enable_action = '/enable';
      $enable_label = t('enable');
      $enable_options['query']['token'] = drupal_get_token($search->id);
    }
    $path = $base_path . $search->id;
    $enable_link = l($enable_label, $path . $enable_action, $enable_options);
    $edit_link = l(t('edit'), $path . '/edit', $edit_options);
    $delete_link = l(t('delete'), $path . '/delete', $delete_options);
    $rows[] = array(
      $name,
      $created,
      $last_execute,
      $interval,
      $enable_link . ' | ' . $edit_link . ' | ' . $delete_link,
    );
  }
  $render = array(
    '#theme' => 'table',
    '#header' => $header,
    '#rows' => $rows,
    '#empty' => t('No searches were saved yet.'),
    '#sticky' => TRUE,
  );
  return $render;
}