You are here

function _forum_access_comment_access_callback in Forum Access 7

1 string reference to '_forum_access_comment_access_callback'
forum_access_menu_alter in ./forum_access.module
Implements hook_menu_alter().

File

./forum_access.module, line 100
forum_access.module

Code

function _forum_access_comment_access_callback($comment, $op) {
  global $user;
  if ($op == 'reply') {

    // 'reply' is governed by AND, return TRUE by default.
    $node = $comment;
    if ($tid = _forum_access_get_tid($node)) {
      return forum_access_access('create', $tid);
    }
    return TRUE;
  }
  if (is_numeric($comment)) {
    $comment = comment_load($comment);
    if (empty($comment)) {
      return FALSE;
    }
  }
  elseif (is_string($comment)) {
    return FALSE;
  }
  $node = node_load($comment->nid);

  // The remaining $ops are governed by OR, return FALSE by default.
  if ($tid = _forum_access_get_tid($node)) {
    if ($op == 'approve') {
      return $user->uid == 1 || forum_access_is_moderator($user, $tid);
    }
    if (!user_access('administer comments')) {
      if ($op == 'edit' && (forum_access_access('update', $tid) || user_access('edit any forum content') || $user->uid == $comment->uid && user_access('edit own forum content'))) {
        forum_access_enable_moderator();
        return TRUE;
      }
      if ($op == 'delete' && (forum_access_access('delete', $tid) || user_access('delete any forum content') || $user->uid == $comment->uid && user_access('delete own forum content'))) {
        return TRUE;
      }
    }
  }
  return FALSE;
}