You are here

function mailhandler_comment_submit in Mailhandler 6

Same name and namespace in other branches
  1. 5 mailhandler.module \mailhandler_comment_submit()
  2. 7 mailhandler.module \mailhandler_comment_submit()

Create the comment.

1 call to mailhandler_comment_submit()
mailhandler_node_process_message in ./mailhandler.module

File

./mailhandler.module, line 930
Mailhandler module code.

Code

function mailhandler_comment_submit($node, $header, $mailbox, $origbody) {
  global $user;
  if (!$node->subject) {
    $node->subject = $node->title;
  }

  // When submitting comments, 'comment' means actualy the comment's body, and not the comments status for a node.
  // We need to reset the comment's body, so it doesn't colide with a default 'comment' command.
  $node->comment = $node->body;

  // comment_save will not fall back to permission system if we set the status explicitly
  // See comment_save.  += will not overwrite an existing array property.
  if (property_exists($node, 'status')) {

    // In comment module, status of 1 means unpublished, status of 0 means published.
    $node->status == 1 ? $node->status = 0 : ($node->status = 1);
  }

  // We want the comment to have the email time, not the current time
  $node->timestamp = $node->created = $header->udate;

  // comment_save gets an array
  $edit = (array) $node;

  // post the comment. if unable, send a failure email when so configured
  $cid = comment_save($edit);
  if (!$cid && $mailbox['replies']) {

    // $fromaddress really refers to the mail header which is authoritative for authentication
    list($fromaddress, $fromname) = mailhandler_get_fromaddress($header, $mailbox);
    $error_text = t('Sorry, your comment experienced an error and was not posted. Possible reasons are that you have insufficient permission to post comments or the node is no longer open for comments.');
    $params = array(
      'body' => $origbody,
      'error_messages' => array(),
      'error_text' => $error_text,
      'from' => $fromaddress,
      'header' => $header,
      'node' => $node,
    );
    drupal_mail('mailhandler', 'mailhandler_error_comment', $fromaddress, user_preferred_language($user), $params);
    mailhandler_watchdog_record('Comment submission failure: %subject.', array(
      '%subject' => $edit['subject'],
    ), WATCHDOG_NOTICE);

    // Record debug information.
    mailhandler_watchdog_record('Comment submission failure: @comment', array(
      '@comment' => var_export($edit, TRUE),
    ), WATCHDOG_DEBUG);
  }
  return $cid;
}