Form constructor for the comment overview administration form.
$arg: The type of overview form ('approval' or 'new').
comment_admin_overview_validate()
comment_admin_overview_submit()
theme_comment_admin_overview()
function comment_admin_overview($form, &$form_state, $arg) {
// Build an 'Update options' form.
$form['options'] = array(
'#type' => 'details',
'#title' => t('Update options'),
'#attributes' => array(
'class' => array(
'container-inline',
),
),
);
if ($arg == 'approval') {
$options['publish'] = t('Publish the selected comments');
}
else {
$options['unpublish'] = t('Unpublish the selected comments');
}
$options['delete'] = t('Delete the selected comments');
$form['options']['operation'] = array(
'#type' => 'select',
'#title' => t('Operation'),
'#title_display' => 'invisible',
'#options' => $options,
'#default_value' => 'publish',
);
$form['options']['submit'] = array(
'#type' => 'submit',
'#value' => t('Update'),
);
// Load the comments that need to be displayed.
$status = $arg == 'approval' ? COMMENT_NOT_PUBLISHED : COMMENT_PUBLISHED;
$header = array(
'subject' => array(
'data' => t('Subject'),
'field' => 'subject',
),
'author' => array(
'data' => t('Author'),
'field' => 'name',
'class' => array(
RESPONSIVE_PRIORITY_MEDIUM,
),
),
'posted_in' => array(
'data' => t('Posted in'),
'field' => 'node_title',
'class' => array(
RESPONSIVE_PRIORITY_LOW,
),
),
'changed' => array(
'data' => t('Updated'),
'field' => 'c.changed',
'sort' => 'desc',
'class' => array(
RESPONSIVE_PRIORITY_LOW,
),
),
'operations' => t('Operations'),
);
$query = db_select('comment', 'c')
->extend('Drupal\\Core\\Database\\Query\\PagerSelectExtender')
->extend('Drupal\\Core\\Database\\Query\\TableSortExtender');
$query
->join('node', 'n', 'n.nid = c.nid');
$query
->addField('n', 'title', 'node_title');
$query
->addTag('node_access');
$result = $query
->fields('c', array(
'cid',
'subject',
'name',
'changed',
))
->condition('c.status', $status)
->limit(50)
->orderByHeader($header)
->execute();
$cids = array();
// We collect a sorted list of node_titles during the query to attach to the
// comments later.
foreach ($result as $row) {
$cids[] = $row->cid;
$node_titles[] = $row->node_title;
}
$comments = comment_load_multiple($cids);
// Build a table listing the appropriate comments.
$options = array();
$destination = drupal_get_destination();
foreach ($comments as $comment) {
// Remove the first node title from the node_titles array and attach to
// the comment.
$comment->node_title = array_shift($node_titles);
$comment_body = field_get_items('comment', $comment, 'comment_body');
$options[$comment->cid] = array(
'subject' => array(
'data' => array(
'#type' => 'link',
'#title' => $comment->subject,
'#href' => 'comment/' . $comment->cid,
'#options' => array(
'attributes' => array(
'title' => truncate_utf8($comment_body[0]['value'], 128),
),
'fragment' => 'comment-' . $comment->cid,
),
),
),
'author' => theme('username', array(
'account' => $comment,
)),
'posted_in' => array(
'data' => array(
'#type' => 'link',
'#title' => $comment->node_title,
'#href' => 'node/' . $comment->nid,
),
),
'changed' => format_date($comment->changed, 'short'),
);
$links = array();
$links['edit'] = array(
'title' => t('edit'),
'href' => 'comment/' . $comment->cid . '/edit',
'query' => $destination,
);
if (module_invoke('translation_entity', 'translate_access', $comment)) {
$links['translate'] = array(
'title' => t('translate'),
'href' => 'comment/' . $comment->cid . '/translations',
'query' => $destination,
);
}
$options[$comment->cid]['operations']['data'] = array(
'#type' => 'operations',
'#links' => $links,
);
}
$form['comments'] = array(
'#type' => 'tableselect',
'#header' => $header,
'#options' => $options,
'#empty' => t('No comments available.'),
);
$form['pager'] = array(
'#theme' => 'pager',
);
return $form;
}