Управление. Комментарии для одобрения модератором



Код выводит сообщение вида:

Количество комментариев
в очереди на одобрение: 21

Показывать определенному пользователю:

<?php
 
global $user;
  if (
$user->uid == 1) {
 
$sql = 'SELECT c.nid, c.cid, c.timestamp, c.status, c.name, c.homepage FROM {comments} c WHERE c.status = 1';
 
$result = db_query($sql);
 
$num_comments = db_num_rows($result);
   return
"<div align='center'>
   <p>Количество комментариев <br />в <a href='/admin/content/comment/list/approval'>очереди  на одобрение</a>: <strong>$num_comments</strong></p></div>"
;}
?>

Показывать определенным ролям:

<?php
global $user;
$output = '';
$approved_roles = array('Администратор', 'Редактор', 'Модератор');
if (
is_array($user->roles)) {
  if (
count(array_intersect($user->roles, $approved_roles)) > 0) {
 
$sql = 'SELECT c.nid, c.cid, c.timestamp, c.status, c.name, c.homepage FROM {comments} c WHERE c.status = 1';
 
$result = db_query($sql);
 
$num_comments = db_num_rows($result);
 
$output .=  "<div align='center'>
  <p>Количество комментариев <br />в <a href='/admin/content/comment/list/approval'>очереди на одобрение</a>: <strong>$num_comments</strong></p></div>"
;
  
'content goes here';
  }
}
return
$output;
?>

Comments

Этот кусок сильно напрягает БД:
$sql = 'SELECT c.nid, c.cid, c.timestamp, c.status, c.name, c.homepage FROM {comments} c WHERE c.status = 1';
$result = db_query($sql);
$num_comments = db_num_rows($result);

Нам ни к чему тащить все комменты только ради того, чтобы сказать, _сколько_ мы их вытащили.

Быстрей для БД будет так:

$sql = 'SELECT count(*) as cnt FROM {comments} WHERE status = 1';
$num_comments = db_fetch_object(db_query($sql))->cnt;

здесь считаем записи средствами SQL, этот процесс отлично оптимизирован

Post new comment

Image CAPTCHA
Copy the characters (respecting upper/lower case) from the image.