You are here

function casetracker_comment_update in Case Tracker 7

Implements hook_comment_update().

File

./casetracker.module, line 426
Enables the handling of projects and their cases.

Code

function casetracker_comment_update($comment) {

  // Load the node here anyway -- it is almost certainly static cached already.
  $node = is_array($comment) ? node_load($comment['nid']) : node_load($comment->nid);

  // Bail if this is not a casetracker node.
  if (!casetracker_is_case($node->type)) {
    return;
  }
  $new = (object) $comment->casetracker;
  $new->cid = $comment->cid;
  $new->nid = $comment->nid;
  $new->vid = $comment->revision_id;
  $new->state = 1;
  $new->assign_to = casetracker_get_uid($new->assign_to);

  // Populate old state values from node
  $old = $node->casetracker;
  $old->cid = $comment->cid;
  $old->state = 0;
  drupal_write_record('casetracker_case', $new, array(
    'nid',
    'vid',
  ));

  // Fire events for case change
  if (is_callable('rules_invoke_event')) {

    //Determine if the user id has changed
    if ($new->assign_to && $new->assign_to != $node->casetracker->assign_to) {
      $user = user_load($new->assign_to);
      rules_invoke_event('casetracker_assign_case', $node, $user);
    }
    _casetracker_change_event($node, $node->casetracker, $new);
  }
  drupal_write_record('casetracker_comment_status', $old, array(
    'cid',
    'state',
  ));
  drupal_write_record('casetracker_comment_status', $new, array(
    'cid',
    'state',
  ));
}