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;
}