function redirect_list_form in Redirect 7
Same name and namespace in other branches
- 7.2 redirect.admin.inc \redirect_list_form()
@file Administrative page callbacks for the redirect module.
1 string reference to 'redirect_list_form'
- redirect_menu in ./
redirect.module - Implements hook_menu().
File
- ./
redirect.admin.inc, line 8 - Administrative page callbacks for the redirect module.
Code
function redirect_list_form($form, &$form_state) {
$args = func_get_args();
$form['#operations'] = redirect_get_redirect_operations();
if (isset($form_state['values']['operation']) && empty($form_state['values']['confirm'])) {
return redirect_list_form_operations_confirm_form($form, $form_state, $form_state['values']['operation'], array_filter($form_state['values']['rids']));
}
$destination = drupal_get_destination();
$default_status_code = variable_get('redirect_default_status_code', 301);
// Set up the header.
$header = array(
'source' => array(
'data' => t('From'),
'field' => 'source',
'sort' => 'asc',
),
'redirect' => array(
'data' => t('To'),
'field' => 'redirect',
),
'status' => array(
'data' => t('Status'),
'field' => 'status',
),
'status_code' => array(
'data' => t('Type'),
'field' => 'status_code',
),
'language' => array(
'data' => t('Language'),
'field' => 'language',
),
'count' => array(
'data' => t('Count'),
'field' => 'count',
),
'access' => array(
'data' => t('Last accessed'),
'field' => 'access',
),
'operations' => array(
'data' => t('Operations'),
),
);
// Do not include the language column if locale is disabled.
if (!module_exists('locale')) {
unset($header['language']);
}
// Get filter keys and add the filter form.
$keys = array_slice($args, 2);
// Offset the $form and $form_state parameters.
$keys = implode('/', $keys);
$form['redirect_list_filter_form'] = redirect_list_filter_form($keys);
// Build the 'Update options' form.
$form['operations'] = array(
'#type' => 'fieldset',
'#title' => t('Update options'),
'#prefix' => '<div class="container-inline">',
'#suffix' => '</div>',
'#attributes' => array(
'class' => array(
'redirect-list-operations',
),
),
);
$operations = array();
foreach ($form['#operations'] as $key => $operation) {
$operations[$key] = $operation['action'];
}
$form['operations']['operation'] = array(
'#type' => 'select',
'#options' => $operations,
'#default_value' => 'delete',
);
$form['operations']['submit'] = array(
'#type' => 'submit',
'#value' => t('Update'),
'#validate' => array(
'redirect_list_form_operations_validate',
),
'#submit' => array(
'redirect_list_form_operations_submit',
),
);
// Building the SQL query and load the redirects.
$query = db_select('redirect', 'r')
->extend('TableSort')
->extend('PagerDefault');
$query
->addField('r', 'rid');
$query
->condition('r.type', 'redirect');
$query
->orderByHeader($header);
$query
->limit(50);
$query
->addTag('redirect_list');
$query
->addTag('redirect_access');
redirect_build_filter_query($query, array(
'source',
'redirect',
), $keys);
$rids = $query
->execute()
->fetchCol();
$redirects = redirect_load_multiple($rids);
$rows = array();
foreach ($redirects as $rid => $redirect) {
$row = array();
$redirect->source_options = array_merge($redirect->source_options, array(
'alias' => TRUE,
'language' => redirect_language_load($redirect->language),
));
$source_url = redirect_url($redirect->source, $redirect->source_options);
$redirect_url = redirect_url($redirect->redirect, array_merge($redirect->redirect_options, array(
'alias' => TRUE,
)));
drupal_alter('redirect_url', $redirect->source, $redirect->source_options);
drupal_alter('redirect_url', $redirect->redirect, $redirect->redirect_options);
// Rewrite redirect URLs to absolute file URIs.
if ($scheme = file_uri_scheme($redirect->redirect)) {
if (file_stream_wrapper_valid_scheme($scheme)) {
if ($external_path = file_create_url($redirect->redirect)) {
$redirect->redirect = $external_path;
}
}
}
$row['source'] = l($source_url, $redirect->source, $redirect->source_options);
$row['redirect'] = l($redirect_url, $redirect->redirect, $redirect->redirect_options);
$row['status'] = $redirect->status ? t('Enabled') : t('Disabled');
$row['status_code'] = $redirect->status_code ? $redirect->status_code : t('Default (@default)', array(
'@default' => $default_status_code,
));
$row['language'] = module_invoke('locale', 'language_name', $redirect->language);
$row['count'] = $redirect->count;
if ($redirect->access) {
$row['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['access'] = t('Never');
}
// Mark redirects that override existing paths with a warning in the table.
if (drupal_valid_path($redirect->source)) {
$row['#attributes']['class'][] = 'warning';
$row['#attributes']['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/search/redirect/edit/' . $rid,
'query' => $destination,
);
}
if (redirect_access('delete', $redirect)) {
$operations['delete'] = array(
'title' => t('Delete'),
'href' => 'admin/config/search/redirect/delete/' . $rid,
'query' => $destination,
);
}
$row['operations'] = array(
'data' => array(
'#theme' => 'links',
'#links' => $operations,
'#attributes' => array(
'class' => array(
'links',
'inline',
'nowrap',
),
),
),
);
$rows[$rid] = $row;
}
$form['rids'] = array(
'#type' => 'tableselect',
'#header' => $header,
'#options' => $rows,
'#empty' => t('No URL redirects available.'),
'#attributes' => array(
'class' => array(
'redirect-list-tableselect',
),
),
'#attached' => array(
'js' => array(
drupal_get_path('module', 'redirect') . '/redirect.admin.js',
),
),
);
if (redirect_access('create', 'redirect')) {
$form['rids']['#empty'] .= ' ' . l(t('Add URL redirect'), 'admin/config/search/redirect/add', array(
'query' => $destination,
));
}
$form['pager'] = array(
'#theme' => 'pager',
);
return $form;
}