1 comment.admin.inc | comment_admin_overview($form, &$form_state, $arg) |
Form constructor for the comment overview administration form.
Parameters
$arg: The type of overview form ('approval' or 'new').
See also
comment_admin_overview_validate()
comment_admin_overview_submit()
theme_comment_admin_overview()
Related topics
File
- core/
modules/ comment/ comment.admin.inc, line 40 - Admin page callbacks for the Comment module.
Code
function comment_admin_overview($form, &$form_state, $arg) {
// Build the 'Operations' form.
$form['operations'] = array(
'#type' => 'fieldset',
'#title' => t('Operations'),
'#prefix' => '<div class="container-inline">',
'#suffix' => '</div>',
'#attributes' => array(
'class' => array('comment-operations')
),
);
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['operations']['operation'] = array(
'#type' => 'select',
'#title' => t('Operations'),
'#title_display' => 'invisible',
'#options' => $options,
'#empty_option' => '- ' . t('Choose an action') . ' -',
);
$form['operations']['submit'] = array(
'#type' => 'submit',
'#value' => t('Execute'),
);
// Load the comments that need to be displayed.
$status = ($arg == 'approval') ? COMMENT_NOT_PUBLISHED : COMMENT_PUBLISHED;
$header = array(
'subject' => array('data' => t('Title'), '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('PagerDefault')->extend('TableSort');
$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 = backdrop_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);
$title = '';
if (isset($comment->comment_body) && !empty($comment->comment_body[LANGUAGE_NONE][0])) {
$title = truncate_utf8($comment->comment_body[LANGUAGE_NONE][0]['value'], 128);
}
$options[$comment->cid] = array(
'subject' => array(
'data' => array(
'#type' => 'link',
'#title' => $comment->subject,
'#href' => 'comment/' . $comment->cid,
'#options' => array('attributes' => array('title' => $title), '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,
);
$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;
}