blog->delJunkComments(); $_SESSION['comments_del_spam'] = true; $core->adminurl->redirect("admin.comments"); } catch (Exception $e) { $core->error->add($e->getMessage()); } } # Creating filter combo boxes # Filter form we'll put in html_block $status_combo = array_merge( ['-' => ''], dcAdminCombos::getCommentStatusescombo() ); $type_combo = [ '-' => '', __('Comment') => 'co', __('Trackback') => 'tb' ]; $sortby_combo = [ __('Date') => 'comment_dt', __('Entry title') => 'post_title', __('Entry date') => 'post_dt', __('Author') => 'comment_author', __('Status') => 'comment_status' ]; $sortby_lex = [ // key in sorty_combo (see above) => field in SQL request 'post_title' => 'post_title', 'comment_author' => 'comment_author', 'comment_spam_filter' => 'comment_spam_filter']; $order_combo = [ __('Descending') => 'desc', __('Ascending') => 'asc' ]; /* Get comments -------------------------------------------------------- */ $author = isset($_GET['author']) ? $_GET['author'] : ''; $status = isset($_GET['status']) ? $_GET['status'] : ''; $type = !empty($_GET['type']) ? $_GET['type'] : ''; $sortby = !empty($_GET['sortby']) ? $_GET['sortby'] : 'comment_dt'; $order = !empty($_GET['order']) ? $_GET['order'] : 'desc'; $ip = !empty($_GET['ip']) ? $_GET['ip'] : ''; $email = !empty($_GET['email']) ? $_GET['email'] : ''; $site = !empty($_GET['site']) ? $_GET['site'] : ''; $with_spam = $author || $status || $type || $sortby != 'comment_dt' || $order != 'desc' || $ip; $show_filters = false; $page = !empty($_GET['page']) ? max(1, (integer) $_GET['page']) : 1; $nb_per_page = 30; if (!empty($_GET['nb']) && (integer) $_GET['nb'] > 0) { if ($nb_per_page != (integer) $_GET['nb']) { $show_filters = true; } $nb_per_page = (integer) $_GET['nb']; } $params['limit'] = [(($page - 1) * $nb_per_page), $nb_per_page]; $params['no_content'] = true; # Author filter if ($author !== '') { $params['q_author'] = $author; $show_filters = true; } else { $author = ''; } # - Type filter if ($type == 'tb' || $type == 'co') { $params['comment_trackback'] = ($type == 'tb'); $show_filters = true; } else { $type = ''; } # - Status filter if ($status !== '' && in_array($status, $status_combo)) { $params['comment_status'] = $status; $show_filters = true; } elseif (!$with_spam) { $params['comment_status_not'] = -2; $status = ''; } else { $status = ''; } # - IP filter if ($ip) { $params['comment_ip'] = $ip; $show_filters = true; } # - email filter if ($email) { $params['comment_email'] = $email; $show_filters = true; } # - site filter if ($site) { $params['comment_site'] = $site; $show_filters = true; } // Add some sort order if spams displayed if ($with_spam || ($status == -2)) { $sortby_combo[__('IP')] = 'comment_ip'; $sortby_combo[__('Spam filter')] = 'comment_spam_filter'; } # Sortby and order filter if ($sortby !== '' && in_array($sortby, $sortby_combo)) { if (array_key_exists($sortby, $sortby_lex)) { $params['order'] = $core->con->lexFields($sortby_lex[$sortby]); } else { $params['order'] = $sortby; } if ($order !== '' && in_array($order, $order_combo)) { $params['order'] .= ' ' . $order; } else { $order = 'desc'; } if ($sortby != 'comment_dt' || $order != 'desc') { $show_filters = true; } } else { $sortby = 'comment_dt'; $order = 'desc'; } # Actions combo box $combo_action = []; $default = ''; if ($core->auth->check('delete,contentadmin', $core->blog->id) && $status == -2) { $default = 'delete'; } $comments_actions_page = new dcCommentsActionsPage($core, $core->adminurl->get("admin.comments")); if ($comments_actions_page->process()) { return; } /* Get comments -------------------------------------------------------- */ try { $comments = $core->blog->getComments($params); $counter = $core->blog->getComments($params, true); $comment_list = new adminCommentList($core, $comments, $counter->f(0)); } catch (Exception $e) { $core->error->add($e->getMessage()); } /* DISPLAY -------------------------------------------------------- */ dcPage::open(__('Comments and trackbacks'), dcPage::jsLoad('js/_comments.js') . dcPage::jsFilterControl($show_filters), dcPage::breadcrumb( [ html::escapeHTML($core->blog->name) => '', __('Comments and trackbacks') => '' ]) ); if (!empty($_GET['upd'])) { dcPage::success(__('Selected comments have been successfully updated.')); } elseif (!empty($_GET['del'])) { dcPage::success(__('Selected comments have been successfully deleted.')); } if (!$core->error->flag()) { if (isset($_SESSION['comments_del_spam'])) { dcPage::message(__('Spam comments have been successfully deleted.')); unset($_SESSION['comments_del_spam']); } $spam_count = $core->blog->getComments(['comment_status' => -2], true)->f(0); if ($spam_count > 0) { echo '
'; if (!$with_spam || ($status != -2)) { if ($spam_count == 1) { echo '

' . sprintf(__('You have one spam comment.'), '' . $spam_count . '') . ' ' . ' -2]) . '">' . __('Show it.') . '

'; } elseif ($spam_count > 1) { echo '

' . sprintf(__('You have %s spam comments.'), '' . $spam_count . '') . ' ' . ' -2]) . '">' . __('Show them.') . '

'; } } echo '

' . $core->formNonce() . '

'; # --BEHAVIOR-- adminCommentsSpamForm $core->callBehavior('adminCommentsSpamForm', $core); echo '
'; } echo '
' . '

' . __('Show filters and display options') . '

' . '
' . '
' . '

' . __('Filters') . '

' . '

' . form::combo('type', $type_combo, $type) . '

' . '

' . form::combo('status', $status_combo, $status) . '

' . '
' . '
' . '

' . form::field('author', 20, 255, html::escapeHTML($author)) . '

' . '

' . form::field('ip', 20, 39, html::escapeHTML($ip)) . '

' . '

' . form::field('email', 20, 255, html::escapeHTML($email)) . '

' . '

' . form::field('site', 20, 255, html::escapeHTML($site)) . '

' . '
' . '
' . '

' . __('Display options') . '

' . '

' . form::combo('sortby', $sortby_combo, $sortby) . '

' . '

' . form::combo('order', $order_combo, $order) . '

' . '

' . __('Show') . '

' . '
' . '
' . '

' . '

' . //Opera sucks '
'; # Show comments $comment_list->display($page, $nb_per_page, '
' . '%s' . '
' . '

' . '

' . form::combo('action', $comments_actions_page->getCombo(), ['default' => $default, 'extra_html' => 'title="' . __('Actions') . '"']) . $core->formNonce() . '

' . form::hidden(['type'], $type) . form::hidden(['sortby'], $sortby) . form::hidden(['order'], $order) . form::hidden(['author'], html::escapeHTML(preg_replace('/%/', '%%', $author))) . form::hidden(['status'], $status) . form::hidden(['ip'], preg_replace('/%/', '%%', $ip)) . form::hidden(['page'], $page) . form::hidden(['nb'], $nb_per_page) . form::hidden(['email'], html::escapeHTML(preg_replace('/%/', '%%', $email))) . form::hidden(['site'], html::escapeHTML(preg_replace('/%/', '%%', $site))) . '
' . '
', $show_filters, ($with_spam || ($status == -2)) ); } dcPage::helpBlock('core_comments'); dcPage::close();