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
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;
}