You are here

function ext_search_admin_content_node_headers in Extended search page 7

Helper function to build the table headers.

Parameters

boolean $multilanguage:

Return value

array $headers array( 'header1' => array( 'data' => 'label', 'field' => 'field_to_sort_on', 'sort' => 'asc_or_desc', 'sortable' => 'checked_in_ui', 'indexed' => TRUE|FALSE, ), ... );

2 calls to ext_search_admin_content_node_headers()
ext_search_admin_admin_content_admin_nodes in ext_search_admin/ext_search_admin.admin.inc
Form builder: Builds the node administration overview. It's a basic reworking of node_admin_nodes()
ext_search_admin_settings in ext_search_admin/ext_search_admin.admin.inc
Form builder; ext search admin settings form.

File

ext_search_admin/ext_search_admin.module, line 83
Extended search admin module.

Code

function ext_search_admin_content_node_headers($page, $multilanguage = FALSE) {
  $index = search_api_index_load($page->index_id);
  $data = variable_get('ext_search_admin_page_headers', array());

  // Build the sortable table header.
  // Add common headers
  $headers = array(
    'score' => array(
      'data' => t('Score'),
      'field' => 'search_api_relevance',
      'sort' => 'desc',
      'sortable' => TRUE,
      'default_sort' => TRUE,
    ),
    'title' => array(
      'data' => t('Title'),
      'field' => 'title',
      'sortable' => FALSE,
    ),
    // seams tokenized fields are not sortable
    'type' => array(
      'data' => t('Type'),
      'field' => 'type',
      'sortable' => TRUE,
    ),
    'author' => t('Author'),
    'status' => array(
      'data' => t('Status'),
      'field' => 'status',
      'sortable' => TRUE,
    ),
    'changed' => array(
      'data' => t('Updated'),
      'field' => 'changed',
      'sort' => 'desc',
      'sortable' => TRUE,
      'default_sort' => TRUE,
    ),
  );
  if ($multilanguage) {
    $headers['language'] = array(
      'data' => t('Language'),
      'field' => 'language',
    );
  }
  $fields = array();
  foreach ($headers as $hid => &$header) {
    if (!is_array($header)) {
      $header = array(
        'data' => $header,
      );
    }
    if (isset($header['field'])) {
      $fields[$header['field']] = $header['field'];
    }
    $header['available'] = TRUE;
  }

  // add other indexed fields

  /*
    foreach ($index->options['fields'] as $field => $info) {
      if (isset($fields[$field])) continue;
      if (!isset($info['indexed']) || $info['indexed']) $headers[$field] = array('data' => isset($info['name']) ? $info['name'] : $field, 'field' => $field);
      if (!isset($headers[$field]['data']) && isset($page->ext_search_options['filters'][$field]['display_name']) && $page->ext_search_options['filters'][$field]['display_name'] != '<default>') {
        $headers[$field]['data'] = $page->ext_search_options['filters'][$field]['display_name'];
      }
    }*/
  foreach (ext_search_page_get_available_filters($page) as $field => $info) {
    if (isset($fields[$field])) {
      continue;
    }
    if (!isset($info['indexed']) || $info['indexed']) {
      $headers[$field] = array(
        'data' => isset($info['name']) ? $info['name'] : $field,
        'field' => $field,
      );
    }
  }
  $headers['operations'] = array(
    'data' => t('Operations'),
  );
  $fields = ext_search_page_get_available_filters($page);

  // allow other modules to alter headers
  drupal_alter('ext_search_admin_headers', $headers, $page);
  $i = 0;
  foreach ($headers as $hid => &$header) {
    if (!is_array($header)) {
      $header = array(
        'data' => $header,
      );
    }
    if (!isset($data[$hid]['weight'])) {
      $data[$hid]['weight'] = $i++;
    }
    $header['weight'] = $data[$hid]['weight'];
    $i = $data[$hid]['weight'] + 1;
    if (!isset($header['available'])) {
      $header['available'] = FALSE;
    }
    if (isset($data[$hid]['available'])) {
      $header['available'] = $data[$hid]['available'];
    }
    if (!isset($header['sortable'])) {
      $header['sortable'] = FALSE;
    }
    if (!isset($header['default_sort'])) {
      $header['default_sort'] = FALSE;
    }
    $header['indexed'] = FALSE;
    if (isset($header['field']) && $header['field']) {
      if (!(isset($header['sort']) && $header['sort'])) {
        $header['sort'] = 'ASC';
      }
      if (isset($data[$hid]['sortable'])) {
        $header['sortable'] = $data[$hid]['sortable'];
      }
      if (isset($fields[$header['field']]) && (!isset($fields[$header['field']]['indexed']) || $fields[$header['field']]['indexed']) || $header['field'] == 'search_api_relevance') {
        $header['indexed'] = TRUE;
      }
    }
    if (!$header['indexed']) {
      $header['sortable'] = FALSE;
    }
  }
  uasort($headers, '_ext_search_admin_cmp_header');
  return $headers;
}