You are here

function _datereminder_set_reminders in Date Reminder 7

Same name and namespace in other branches
  1. 6.2 includes/db6.inc \_datereminder_set_reminders()
  2. 6 datereminder.module \_datereminder_set_reminders()

Write back user reminder information.

3 calls to _datereminder_set_reminders()
datereminder_rules_action_set_reminder in ./datereminder.rules.inc
Called as a rule action to set a reminder on the given node.
_datereminder_form_submit_user in ./datereminder.module
Callback on submit from datereminder_form.
_datereminder_update_reminder_nexts in includes/node.inc
Recompute "next" time and write back a group of reminders.

File

includes/db7.inc, line 198

Code

function _datereminder_set_reminders(&$reminders) {
  foreach (array_keys($reminders) as $k) {
    $r = $reminders[$k];

    // Should we save this reminder?
    if ($r->leadtime == 0 || !isset($r->next_due)) {

      // No reminder, so delete any existing entry.
      if ($r->rid > 0) {
        db_delete('datereminder')
          ->condition('rid', $r->rid)
          ->execute();
      }
      unset($reminders[$k]);
    }
    else {
      if (!isset($r->expired)) {
        $r->expired = 0;
      }
      $fvals = array(
        'nid' => $r->nid,
        'uid' => $r->uid,
        'leadtime' => $r->leadtime,
        'next_due' => $r->next_due,
        'email' => $r->email,
        'expired' => $r->expired,
      );
      if ($r->rid > 0) {
        $q = db_merge('datereminder')
          ->key(array(
          'rid' => $r->rid,
        ))
          ->fields($fvals)
          ->execute();
      }
      else {

        // This is a new entry.
        $q = db_insert('datereminder')
          ->fields($fvals);
        $rid = $q
          ->execute();
        if ($rid > 0) {
          $r->rid = $rid;

          // Update worked, so adjust array indix to reflect new rid.
          unset($reminders[$k]);
          $reminders[$rid] = $r;
        }
      }
    }
  }
}