comment_moderate

Versions
4.6
comment_moderate()

Code

modules/comment.module, line 1255

<?php
function comment_moderate() {
  global $user;

  if ($moderation = $_POST['edit']['moderation']) {
    $result = db_query('SELECT DISTINCT mid, value, ABS(value) FROM {moderation_roles} WHERE rid IN (%s) ORDER BY mid, ABS(value), value', implode(', ', array_keys($user->roles)));
    while ($mod = db_fetch_object($result)) {
      $votes[$mod->mid] = $mod->value;
    }

    $node = node_load(array('nid' => db_result(db_query('SELECT nid FROM {comments} WHERE cid = %d', key($moderation)))));

    if (user_access('administer comments') || comment_user_can_moderate($node)) {
      foreach ($moderation as $cid => $vote) {
        if ($vote) {
          $comment = db_fetch_object(db_query('SELECT * FROM {comments} WHERE cid = %d', $cid));
          $users = unserialize($comment->users);
          if ($user->uid != $comment->uid && !(comment_already_moderated($user->uid, $comment->users))) {
            $users[$user->uid] = $vote;
            $tot_score = 0;
            foreach ($users as $uid => $vote) {
              if ($uid) {
                $tot_score = $tot_score + $votes[$vote];
              }
              else {
                // vote 0 is the start value
                $tot_score = $tot_score + $vote;
              }
            }
            $new_score = round($tot_score / count($users));
            db_query("UPDATE {comments} SET score = '$new_score', users = '%s' WHERE cid = %d", serialize($users), $cid);

            module_invoke_all('comment', 'moderate', $cid, $vote);
          }
        }
      }
    }
  }
}
?>
Login or register to post comments
 
 

All source code and documentation on this site is released under the terms of the GNU General Public License, version 2 and later. Drupal is a registered trademark of Dries Buytaert.