1 redirect.admin.inc | redirect_404_list($form = NULL) |
Form callback; Display a list of all recent 404 pages.
This callback is only used if the dblog.module is enabled, from which it pulls the list of recent 404 pages.
File
- core/
modules/ redirect/ redirect.admin.inc, line 710 - Admin page callbacks for the Redirect module.
Code
function redirect_404_list($form = NULL) {
$destination = backdrop_get_destination();
// Get filter keys and add the filter form.
$keys = func_get_args();
//$keys = array_splice($keys, 2); // Offset the $form and $form_state parameters.
$keys = implode('/', $keys);
$build['redirect_list_404_filter_form'] = backdrop_get_form('redirect_list_404_filter_form', $keys);
$header = array(
array('data' => t('Page'), 'field' => 'message'),
array('data' => t('Count'), 'field' => 'count', 'sort' => 'desc'),
array('data' => t('Last accessed'), 'field' => 'timestamp', 'class' => array('priority-low')),
array('data' => t('Operations')),
);
$count_query = db_select('watchdog', 'w');
$count_query->addExpression('COUNT(DISTINCT(w.message))');
$count_query->leftJoin('redirect', 'r', 'w.message = r.source');
$count_query->condition('w.type', 'page not found');
$count_query->isNull('r.rid');
redirect_build_filter_query($count_query, array('w.message'), $keys);
$query = db_select('watchdog', 'w')->extend('PagerDefault')->extend('TableSort');
$query->fields('w', array('message'));
$query->addExpression('COUNT(wid)', 'count');
$query->addExpression('MAX(timestamp)', 'timestamp');
$query->leftJoin('redirect', 'r', 'w.message = r.source');
$query->isNull('r.rid');
$query->condition('w.type', 'page not found');
$query->groupBy('w.message');
$query->orderByHeader($header);
$query->limit(25);
redirect_build_filter_query($query, array('w.message'), $keys);
$query->setCountQuery($count_query);
$results = $query->execute();
$rows = array();
foreach ($results as $result) {
$row = array();
$row['source'] = l($result->message, $result->message, array('query' => $destination));
$row['count'] = $result->count;
$row['timestamp'] = format_date($result->timestamp, 'short');
$operations = array();
if (redirect_access('create', 'redirect')) {
$operations['add'] = array(
'title' => t('Add URL redirect'),
'href' => 'admin/config/urls/redirect/add/',
'query' => array('source' => $result->message) + $destination,
);
}
$row['operations'] = array(
'data' => array(
'#type' => 'operations',
'#links' => $operations,
),
);
$rows[] = $row;
}
$build['redirect_404_table'] = array(
'#theme' => 'table',
'#header' => $header,
'#rows' => $rows,
'#empty' => t('No 404 pages without redirects found.'),
);
$build['redirect_404_pager'] = array('#theme' => 'pager');
return $build;
}