You are here

function subscriptions_page_form_submit in Subscriptions 5.2

Same name and namespace in other branches
  1. 6 subscriptions.admin.inc \subscriptions_page_form_submit()
  2. 7 subscriptions.admin.inc \subscriptions_page_form_submit()
  3. 2.0.x subscriptions.admin.old.php \subscriptions_page_form_submit()

Subscriptions page submit handler.

File

./subscriptions.admin.inc, line 148

Code

function subscriptions_page_form_submit($form_id, $form_values) {
  global $user;
  if (isset($form_values['header']['role']['roles'])) {
    $rid0 = current($form_values['header']['role']['roles']);
  }
  if ($form_values['op'] == $form_values['submit']) {
    if (empty($rid0)) {
      $form_values['header']['role']['roles'][] = -$form_values['uid'];

      // will be negated again below
    }
    $module = $form_values['module'];
    $field = $form_values['field'];
    $access_key = isset($form_values['access_key']) ? $form_values['access_key'] : $module;
    foreach ($form_values as $element_values) {
      if (isset($element_values[0])) {
        $element_values = $element_values[0];
      }
      if (isset($element_values['defaults']['send_interval'])) {
        $defaults = $element_values['defaults'];
        foreach ($element_values['checkboxes'] as $value => $bundle) {
          foreach ($bundle as $author_uid => $set_to_enabled) {
            if ($set_to_enabled && (!isset($defaults['checkboxes'][$value][$author_uid]) || $element_values['send_interval'][$value][$author_uid] != $defaults['send_interval'][$value][$author_uid] || empty($element_values['send_updates'][$value][$author_uid]) != empty($defaults['send_updates'][$value][$author_uid]) || empty($element_values['send_comments'][$value][$author_uid]) != empty($defaults['send_comments'][$value][$author_uid]))) {
              $send_updates = empty($element_values['send_updates'][$value][$author_uid]) ? 0 : 1;
              $send_comments = empty($element_values['send_comments'][$value][$author_uid]) ? 0 : 1;
              foreach ($form_values['header']['role']['roles'] as $uid) {
                subscriptions_write($access_key, $module, $field, $value, $author_uid, -$uid, $element_values['send_interval'][$value][$author_uid], $send_updates, $send_comments);
              }
              $changed = TRUE;
            }
            elseif (!$set_to_enabled && isset($defaults['checkboxes'][$value][$author_uid])) {

              // It was enabled but now it is not. Delete.
              foreach ($form_values['header']['role']['roles'] as $uid) {
                db_query("DELETE FROM {subscriptions} WHERE module = '%s' AND field = '%s' AND value = '%s' AND author_uid = %d AND recipient_uid = %d", $module, $field, $value, $author_uid, -$uid);
              }
              $changed = TRUE;
            }
          }
        }
      }
    }
    if (!empty($changed)) {
      drupal_set_message(t('Your subscriptions were updated.'));
    }
  }
  if (!empty($rid0)) {
    $redirect = 'admin/settings/subscriptions/userdefaults/' . arg(4);
    if ($rid0 != DRUPAL_AUTHENTICATED_RID) {
      $redirect .= '/' . $rid0;
    }
    return $redirect;
  }
}