You are here

function guestbook_form_entry_form_submit in Guestbook 7.2

Same name and namespace in other branches
  1. 5.2 guestbook.module \guestbook_form_entry_form_submit()
  2. 5 guestbook.module \guestbook_form_entry_form_submit()
  3. 6.2 guestbook.module \guestbook_form_entry_form_submit()
  4. 6 guestbook.module \guestbook_form_entry_form_submit()

File

./guestbook.module, line 594

Code

function guestbook_form_entry_form_submit($form, &$form_state) {
  global $user;
  $uid = $form_state['values']['uid'];
  $message = $form_state['values']['message']['value'];

  // Make sure this isn't a dupe.
  $entry = db_query("SELECT message FROM {guestbook} WHERE recipient = :uid ORDER BY id DESC LIMIT 1", array(
    ':uid' => $uid,
  ))
    ->fetchAssoc();
  if ($entry['message'] == $message) {
    return;
  }

  // No empty entries.
  if ($message == '') {
    return;
  }
  if (module_exists('spam')) {

    // Is this spam?
    $spamcheck = $form_state['values']['anonname'] . ' ' . $form_state['values']['anonemail'] . ' ' . $form_state['values']['anonwebsite'];
    if (spam_content_filter('guestbook', 1, $spamcheck, $message, '_guestbook_spam')) {
      return;
    }
  }

  // E-mail notification.
  $iSendEmail = '';
  $guestbook_mode = variable_get('guestbook_mode', GUESTBOOK_SITE_GUESTBOOK | GUESTBOOK_USER_GUESTBOOKS);
  if ($uid == 0 && $guestbook_mode & GUESTBOOK_SITE_GUESTBOOK) {
    $iSendEmail = variable_get('guestbook_send_email', '');
  }
  else {
    if ($guestbook_mode & GUESTBOOK_USER_GUESTBOOKS) {
      if ($uid != $user->uid) {
        $guestbook_user = user_load_multiple(array(
          $uid,
        ), array(
          'status' => 1,
        ));
        $guestbook_user = reset($guestbook_user);
      }
      else {
        $guestbook_user = $user;
      }
      if ($guestbook_user->uid && empty($guestbook_user->data['guestbook_status']) && !empty($guestbook_user->data['guestbook_send_email'])) {
        $iSendEmail = $guestbook_user->mail;
      }
    }
  }
  if ($iSendEmail) {
    $params = array();
    $params['body'] = $message;
    $params['account'] = user_load($uid);
    drupal_mail('guestbook', 'notification', $iSendEmail, user_preferred_language($params['account']), $params);
  }

  // Insert new message
  if ($user->uid == 0) {

    // Anonymous user.
    $fields = array(
      'anonname' => $form_state['values']['anonname'],
      'anonemail' => $form_state['values']['anonemail'],
      'anonwebsite' => $form_state['values']['anonwebsite'],
      'author' => 0,
      'recipient' => $uid,
      'message' => $message,
      'comment' => '',
      'status' => $form_state['values']['status'],
      'created' => REQUEST_TIME,
      'message_format' => $form_state['values']['message']['format'],
    );
  }
  else {

    // Authenticated user.
    $fields = array(
      'author' => $user->uid,
      'recipient' => $uid,
      'message' => $message,
      'comment' => '',
      'status' => $form_state['values']['status'],
      'created' => REQUEST_TIME,
      'message_format' => $form_state['values']['message']['format'],
    );
  }
  $entryid = db_insert('guestbook')
    ->fields($fields)
    ->execute();

  // Notify other modules of the new guestbook entry.
  $entry = db_query('SELECT * FROM {guestbook} WHERE id = :id', array(
    ':id' => $entryid,
  ))
    ->fetchAssoc();
  module_invoke_all('guestbook', 'insert', $entry);

  // Explain the approval queue if necessary.
  if (empty($entry['status'])) {
    if (!_guestbook_access('moderate', $uid)) {
      drupal_set_message(t('Your message has been queued for review and will be published after approval.'));
    }
  }
  else {
    drupal_set_message(t('Your message has been added.'));
  }
  cache_clear_all();
}