You are here

function _datereminder_form_submit_user in Date Reminder 6.2

Same name and namespace in other branches
  1. 6 datereminder.module \_datereminder_form_submit_user()
  2. 7 datereminder.module \_datereminder_form_submit_user()

Callback on submit from datereminder_form.

@todo The "send-now" operation sends email using the last reminder found in the list, which may not correspond to anything useful. For normal users, this isn't an issue. If the user can send emails, though, the reminder used determines the target email address. Probably should let priviledged user select which email to send to.

1 string reference to '_datereminder_form_submit_user'
datereminder_form in includes/datereminder_form.inc
Build the user reminder form.

File

./datereminder.module, line 422
Support for reminders for nodes with dates.

Code

function _datereminder_form_submit_user($form, &$form_state) {
  global $user;
  $v = $form_state['values'];
  $nid = $v['nid'];
  $node = $form_state['datereminder_node'];
  $rems = _datereminder_get_node_user_reminders($node);
  $rows = explode(',', $v['rids']);
  module_load_include('inc', 'datereminder', 'includes/date');
  $df = _datereminder_get_node_datefield($node);
  $other_email = user_access(DATEREMINDER_OTHER_EMAIL);
  $changedrems = array();
  foreach ($rows as $rtag) {
    $changed = FALSE;
    $newtime = FALSE;
    if (substr($rtag, 0, 1) == 'n') {

      // This is a new reminder.
      unset($r);
      $r->leadtime = $v["datereminder_lead_{$rtag}"];
      if ($r->leadtime > 0) {
        $rid = -substr($rtag, 1);
        $r->nid = $node->nid;
        $r->node = $node;
        $r->uid = $user->uid;
        $r->user = $user;
        $r->next = 0;
        $r->rid = $rid;
        if ($other_email) {
          $r->email = $v["datereminder_email_{$rtag}"];
        }
        else {
          $r->email = '';
        }
        $newtime = TRUE;
      }
    }
    else {

      // This is an existing reminder.
      $rid = $rtag;
      $r = $rems[$rid];
      $ltn = $v["datereminder_lead_{$rtag}"];
      if ($ltn != $r->leadtime) {
        $r->leadtime = $ltn;
        $newtime = TRUE;
      }
      if ($other_email) {
        $em = $v["datereminder_email_{$rtag}"];
        if ($em != $r->email) {
          $r->email = $em;
          $changed = TRUE;
        }
      }
    }
    if ($newtime) {
      _datereminder_get_next_reminder($r, $df);
      if (!isset($r->next)) {
        drupal_set_message(t("Sorry, but it's too late to send that reminder"), 'error');
        return;
      }
      $changed = TRUE;
    }
    if ($changed) {
      $changedrems[$rid] = $r;
    }
  }
  if (count($changedrems) > 0) {
    _datereminder_set_reminders($changedrems);
    unset($node->reminders);
  }
  if ($v['send-now']) {
    module_load_include('inc', 'datereminder', 'includes/messaging');
    $r = NULL;
    $r->uid = $user->uid;
    $r->nid = $node->nid;
    $r->node = $node;
    $r->user = $user;
    $r->leadtime = 0;
    $r->next = NULL;
    if (_datereminder_send_reminder($r)) {
      drupal_set_message(t('An email reminder has been sent'));
    }
    else {
      drupal_set_message(t('Sorry, there was a problem sending mail'), 'error');
    }
  }
}