1 redirect.admin.inc | redirect_list_table($redirects, $header) |
Display a list of redirects. Used on forms when editing an entity.
Parameters
Redirect[] $redirects: An array of Redirect objects.
$header: The table header columns for the table.
Return value
array: A renderable table element.
File
- core/
modules/ redirect/ redirect.admin.inc, line 850 - Admin page callbacks for the Redirect module.
Code
function redirect_list_table($redirects, $header) {
$destination = backdrop_get_destination();
$config = config('redirect.settings');
$default_status_code = $config->get('default_status_code');
// Set up the header.
$header = array_combine($header, $header);
$header = array_intersect_key(array(
'source' => array('data' => t('From'), 'field' => 'source', 'sort' => 'asc'),
'redirect' => array('data' => t('To'), 'field' => 'redirect'),
'status_code' => array('data' => t('Type'), 'field' => 'status_code', 'class' => array('priority-low')),
'language' => array('data' => t('Language'), 'field' => 'langcode'),
'count' => array('data' => t('Count'), 'field' => 'count', 'class' => array('priority-medium')),
'access' => array('data' => t('Last accessed'), 'field' => 'access', 'class' => array('priority-low')),
'operations' => array('data' => t('Operations')),
), $header);
// Do not include the language column if locale is disabled.
if (!module_exists('locale')) {
unset($header['language']);
}
$rows = array();
foreach ($redirects as $rid => $redirect) {
$row = array();
$redirect->source_options = array_merge($redirect->source_options, array('alias' => TRUE, 'language' => language_load($redirect->langcode)));
$source_url = redirect_url($redirect->source, $redirect->source_options);
$redirect_url = redirect_url($redirect->redirect, array_merge($redirect->redirect_options, array('alias' => TRUE)));
$row['data']['source'] = l($source_url, $redirect->source, $redirect->source_options);
$row['data']['redirect'] = l($redirect_url, $redirect->redirect, $redirect->redirect_options);
$row['data']['status_code'] = $redirect->status_code ? $redirect->status_code : t('Default (@default)', array('@default' => $default_status_code));
$row['data']['language'] = language_name($redirect->langcode);
$row['data']['count'] = $redirect->count;
if ($redirect->access) {
$row['data']['access'] = array(
'data' => t('!interval ago', array('!interval' => format_interval(REQUEST_TIME - $redirect->access))),
'title' => t('Last accessed on @date', array('@date' => format_date($redirect->access))),
);
}
else {
$row['data']['access'] = t('Never');
}
// Mark redirects that override existing paths with a warning in the table.
if (backdrop_valid_path($redirect->source)) {
$row['class'][] = 'warning';
$row['title'] = t('This redirect overrides an existing internal path.');
}
$operations = array();
if (redirect_access('update', $redirect)) {
$operations['edit'] = array(
'title' => t('Edit'),
'href' => 'admin/config/urls/redirect/edit/' . $rid,
'query' => $destination,
);
}
if (redirect_access('delete', $redirect)) {
$operations['delete'] = array(
'title' => t('Delete'),
'href' => 'admin/config/urls/redirect/delete/' . $rid,
'query' => $destination,
);
}
$row['data']['operations'] = array(
'data' => array(
'#type' => 'operations',
'#links' => $operations,
),
);
$row['data'] = array_intersect_key($row['data'], $header);
$rows[$rid] = $row;
}
$build['list'] = array(
'#theme' => 'table',
'#header' => $header,
'#rows' => $rows,
'#empty' => t('No URL redirects available.'),
'#attributes' => array('class' => array('redirect-list')),
);
return $build;
}