Снипет "Ответы мне"

Главные вкладки

Аватар пользователя Portnov Portnov 23 мая 2008 в 8:29

Написал вот такую штуку. Выводит список всех новых (непрочтенных) комментариев на материалы текущего юзера, а также новых комментариев-ответов на комментарии юзера.

<h2>Новые комментарии к моим материалам</h2>
<?
global $user;
$any = FALSE;
$r = db_query("SELECT * FROM {node} WHERE uid=%s ORDER BY `created` DESC",$user->uid);
while ($node=db_fetch_object($r)) {
  $new = comment_num_new($node->nid);
  if (!$new) continue;
  print("<h2 class='title'>Re: {$node->title}</h2>\n");
  $cr = db_query("SELECT * FROM {comments} WHERE nid=%d ORDER BY timestamp",$node->nid);
  while ($comment = db_fetch_object($cr)) {
    if (node_mark($comment->nid,$comment->timestamp) != MARK_READ) {
      print(theme('comment',$comment));
      $any = TRUE;
    }
  }
}

if (!$any) {
?>
<p>Новых комментариев нет.</p>
<?}?>

<h2>Новые ответы на мои комментарии</h2>
<?
function c_replies($cid) {
  $comments = array();
  $c = db_query("SELECT * FROM {comments} WHERE pid=%d",$cid);
  while ($comment = db_fetch_object($c)) {
    if (node_mark($comment->nid,$comment->timestamp) != MARK_READ) {
      $comments[] = $comment;
      if (comment_num_replies($comment->cid) > 0) {
        array_push($comments,c_replies($comment->cid));
      }
    }
  }
  return $comments;
}

$any = FALSE;
$r = db_query("SELECT * FROM {comments} WHERE uid=%d",$user->uid);
while ($my=db_fetch_object($r)) {
  $comments = c_replies($my->cid);
  if (count($comments) > 0) {
    print("<h2 class='title'>Re: {$my->subject}</h2>\n");
    foreach ($comments as $comment) {
      if ($comment->timestamp) {
        print(theme('comment',$comment));
        $any = TRUE;
      }
    }
  }
}

if (!$any) {
?>
<p>Новых ответов нет.</p>
<?}?>

Если убрать проверку на !=MARK_READ, а добавить ограничение по количеству выводимых записей - получатся просто последние N ответов текущему юзеру.

Комментарии

Аватар пользователя Гость Гость (не проверено) 26 мая 2008 в 17:36

нет привязки к целям использования. Нет отображения, отвечающего целям использования. Нет механизма постоянного уточнения иерархии контента без переделки. Нет уточнения контента до последнего нижнего уровня. Нет иерархии для нескольких напралений использования всего контента