bulk_media_upload.summary.inc in Bulk Media Upload 7
Summary page which is displayed after the media upload
File
bulk_media_upload.summary.incView source
<?php
/**
* @file
* Summary page which is displayed after the media upload
*
*/
/**
* Generates summary table for the generated forms
*/
function bulk_media_upload_summary($form, $form_state) {
module_load_include('inc', 'node', 'node.admin');
$form = array();
if (!isset($_SESSION['bulk_media_upload_batch_result']['ids'])) {
$form['info'] = array(
'#markup' => '<p>' . t('There was no media uploaded in this session.') . '</p>',
);
return $form;
}
// Confirmation page for node deletion.
if (isset($form_state['values']['operation']) && $form_state['values']['operation'] == 'delete') {
return bulk_media_upload_summary_node_multiple_delete_confirm($form, $form_state, array_filter($form_state['values']['nodes']));
}
$admin_access = user_access('administer nodes');
// Build the 'Update options' form.
$form['options'] = array(
'#type' => 'fieldset',
'#title' => t('Update options'),
'#attributes' => array(
'class' => array(
'container-inline',
),
),
'#access' => $admin_access,
);
$options = array();
foreach (module_invoke_all('node_operations') as $operation => $array) {
$options[$operation] = $array['label'];
}
$form['options']['operation'] = array(
'#type' => 'select',
'#title' => t('Operation'),
'#title_display' => 'invisible',
'#options' => $options,
'#default_value' => 'approve',
);
$form['options']['submit'] = array(
'#type' => 'submit',
'#value' => t('Update'),
'#validate' => array(
'bulk_media_upload_summary_nodes_validate',
),
'#submit' => array(
'bulk_media_upload_summary_nodes_submit',
),
);
// Enable language column if translation module is enabled or if we have any
// node with language.
$multilanguage = module_exists('translation') || db_query_range("SELECT 1 FROM {node} WHERE language <> :language", 0, 1, array(
':language' => LANGUAGE_NONE,
))
->fetchField();
// Build the sortable table header.
$header = array(
'title' => array(
'data' => t('Title'),
'field' => 'n.title',
),
'type' => array(
'data' => t('Type'),
'field' => 'n.type',
),
'author' => t('Author'),
'status' => array(
'data' => t('Status'),
'field' => 'n.status',
),
'changed' => array(
'data' => t('Updated'),
'field' => 'n.changed',
'sort' => 'desc',
),
);
if ($multilanguage) {
$header['language'] = array(
'data' => t('Language'),
'field' => 'n.language',
);
}
$header['operations'] = array(
'data' => t('Operations'),
);
$query = db_select('node', 'n')
->extend('PagerDefault')
->extend('TableSort');
$nids = $query
->fields('n', array(
'nid',
))
->condition('n.nid', $_SESSION['bulk_media_upload_batch_result']['ids'], 'IN')
->limit(50)
->orderByHeader($header)
->execute()
->fetchCol();
$nodes = node_load_multiple($nids);
// Prepare the list of nodes.
$languages = language_list();
$destination = drupal_get_destination();
$options = array();
foreach ($nodes as $node) {
$l_options = $node->language != LANGUAGE_NONE && isset($languages[$node->language]) ? array(
'language' => $languages[$node->language],
) : array();
$options[$node->nid] = array(
'title' => array(
'data' => array(
'#type' => 'link',
'#title' => $node->title,
'#href' => 'node/' . $node->nid,
'#options' => $l_options,
'#suffix' => ' ' . theme('mark', array(
'type' => node_mark($node->nid, $node->changed),
)),
),
),
'type' => check_plain(node_type_get_name($node)),
'author' => theme('username', array(
'account' => $node,
)),
'status' => $node->status ? t('published') : t('not published'),
'changed' => format_date($node->changed, 'short'),
);
if ($multilanguage) {
if ($node->language == LANGUAGE_NONE || isset($languages[$node->language])) {
$options[$node->nid]['language'] = $node->language == LANGUAGE_NONE ? t('Language neutral') : t($languages[$node->language]->name);
}
else {
$options[$node->nid]['language'] = t('Undefined language (@langcode)', array(
'@langcode' => $node->language,
));
}
}
// Build a list of all the accessible operations for the current node.
$operations = array();
if (node_access('update', $node)) {
$operations['edit'] = array(
'title' => t('edit'),
'href' => 'node/' . $node->nid . '/edit',
'query' => $destination,
);
}
if (node_access('delete', $node)) {
$operations['delete'] = array(
'title' => t('delete'),
'href' => 'node/' . $node->nid . '/delete',
'query' => $destination,
);
}
$options[$node->nid]['operations'] = array();
if (count($operations) > 1) {
// Render an unordered list of operations links.
$options[$node->nid]['operations'] = array(
'data' => array(
'#theme' => 'links__node_operations',
'#links' => $operations,
'#attributes' => array(
'class' => array(
'links',
'inline',
),
),
),
);
}
elseif (!empty($operations)) {
// Render the first and only operation as a link.
$link = reset($operations);
$options[$node->nid]['operations'] = array(
'data' => array(
'#type' => 'link',
'#title' => $link['title'],
'#href' => $link['href'],
'#options' => array(
'query' => $link['query'],
),
),
);
}
}
// Only use a tableselect when the current user is able to perform any
// operations.
if ($admin_access) {
$form['nodes'] = array(
'#type' => 'tableselect',
'#header' => $header,
'#options' => $options,
'#empty' => t('No content available.'),
);
}
else {
$form['nodes'] = array(
'#theme' => 'table',
'#header' => $header,
'#rows' => $options,
'#empty' => t('No content available.'),
);
}
$form['pager'] = array(
'#markup' => theme('pager'),
);
return $form;
}
/**
* Validate bulk_media_upload_summary form submissions.
*/
function bulk_media_upload_summary_nodes_validate($form, &$form_state) {
// Error if there are no items to select.
if (!is_array($form_state['values']['nodes']) || !count(array_filter($form_state['values']['nodes']))) {
form_set_error('', t('No items selected.'));
}
}
/**
* Process bulk_media_upload_summary form submissions.
*/
function bulk_media_upload_summary_nodes_submit($form, &$form_state) {
$operations = module_invoke_all('node_operations');
$operation = $operations[$form_state['values']['operation']];
// Filter out unchecked nodes.
$nodes = array_filter($form_state['values']['nodes']);
if ($function = $operation['callback']) {
// Add in callback arguments if present.
if (isset($operation['callback arguments'])) {
$args = array_merge(array(
$nodes,
), $operation['callback arguments']);
}
else {
$args = array(
$nodes,
);
}
call_user_func_array($function, $args);
cache_clear_all();
}
else {
// We need to rebuild the form to go to a second step. For example, to
// show the confirmation form for the deletion of nodes.
$form_state['rebuild'] = TRUE;
}
}
/**
* Displays the delete confirmation page
*/
function bulk_media_upload_summary_node_multiple_delete_confirm($form, &$form_state, $nodes) {
$form['nodes'] = array(
'#prefix' => '<ul>',
'#suffix' => '</ul>',
'#tree' => TRUE,
);
// array_filter returns only elements with TRUE values.
foreach ($nodes as $nid => $value) {
$title = db_query('SELECT title FROM {node} WHERE nid = :nid', array(
':nid' => $nid,
))
->fetchField();
$form['nodes'][$nid] = array(
'#type' => 'hidden',
'#value' => $nid,
'#prefix' => '<li>',
'#suffix' => check_plain($title) . "</li>\n",
);
}
$form['operation'] = array(
'#type' => 'hidden',
'#value' => 'delete',
);
$form['#submit'][] = 'bulk_media_upload_summary_node_multiple_delete_confirm_submit';
$confirm_question = format_plural(count($nodes), 'Are you sure you want to delete this item?', 'Are you sure you want to delete these items?');
return confirm_form($form, $confirm_question, 'admin/content', t('This action cannot be undone.'), t('Delete'), t('Cancel'));
}
/**
* Bulk deletes nodes
*/
function bulk_media_upload_summary_node_multiple_delete_confirm_submit($form, &$form_state) {
if ($form_state['values']['confirm']) {
node_delete_multiple(array_keys($form_state['values']['nodes']));
$count = count($form_state['values']['nodes']);
watchdog('content', 'Deleted @count posts.', array(
'@count' => $count,
));
drupal_set_message(format_plural($count, 'Deleted 1 post.', 'Deleted @count posts.'));
}
$form_state['redirect'] = 'admin/content/media/bulk_upload/summary';
}
Functions
Name![]() |
Description |
---|---|
bulk_media_upload_summary | Generates summary table for the generated forms |
bulk_media_upload_summary_nodes_submit | Process bulk_media_upload_summary form submissions. |
bulk_media_upload_summary_nodes_validate | Validate bulk_media_upload_summary form submissions. |
bulk_media_upload_summary_node_multiple_delete_confirm | Displays the delete confirmation page |
bulk_media_upload_summary_node_multiple_delete_confirm_submit | Bulk deletes nodes |