You are here

function notifications_destination_parse_submitted in Notifications 6.4

Parse submitted destination

6 calls to notifications_destination_parse_submitted()
notifications_destination_edit_form_submit in includes/destination.inc
Edit destinatin submission
notifications_destination_edit_form_validate in includes/destination.inc
Edit destination validate
notifications_destination_request_form_submit in includes/destination.inc
Process submitted values
notifications_destination_request_form_validate in includes/destination.inc
Validate submitted values
notifications_subscription_destination_subform_submit in ./notifications.module
Create submitted destination

... See full list

File

includes/destination.inc, line 141
Destination management

Code

function notifications_destination_parse_submitted(&$values, $validate = FALSE) {
  $account = !empty($values['destination_account']) ? $values['destination_account'] : NULL;
  $method = $addres = $type = NULL;
  $dest = array();
  $field = '';

  // Destination can come in any of these configurations
  if (!$validate && !empty($values['destination_parsed'])) {
    return $values['destination_parsed'];
  }
  else {
    if (!empty($values['destination_method'])) {
      $field = 'destination_method';
      $method = $values['destination_method']['method'];
      $address = $values['destination_method']['address'];
      $type = messaging_method_info($method, 'address_type');
    }
    elseif (!empty($values['destination_address'])) {
      $field = 'destination_address';
      $destination = $values['destination_address'];
      if (is_array($destination)) {
        $destination = array_filter($destination);
        if ($destination && count($destination) == 1) {
          $type = key($destination);
          $address = current($destination);
          $method = $values['destination_methods'][$type];
        }
      }
    }
  }
  $dest = array(
    'method' => $method,
    'type' => $type,
    'address' => $address,
    'uid' => messaging_user_uid($account),
  );
  if ($validate) {
    if (!$method || !$address) {
      form_set_error($field, t('You need to enter exactly one destination address.'));
    }
    elseif (!notifications_destination_validate($method, $address, $account)) {
      form_set_error($field, t('This destination address is not valid.'));
    }
    else {

      // If this is a valid one, we store it on the form values
      $values['destination_parsed'] = $dest;
    }
  }
  return $dest;
}