updated email options
This commit is contained in:
@@ -169,39 +169,18 @@ function update_emails_settings_option_CIPF($request, $option_name, $option_data
|
||||
Plgntls::debug_infos();
|
||||
|
||||
/*
|
||||
* loop through saved data option
|
||||
* update them
|
||||
* add them to the option that will be saved
|
||||
* first check if saved option has the same data as default option
|
||||
*
|
||||
*/
|
||||
foreach ($option_data as $email_type => $email_options) {
|
||||
$ret_update = update_email_by_type_CIPF($email_type, $email_options, $option_default[$email_type], $request);
|
||||
if ($ret_update !== false) {
|
||||
$option_data[$email_type] = $ret_update;
|
||||
}
|
||||
}
|
||||
$new_option = update_option_with_default_CIPF($option_data, $option_default);
|
||||
|
||||
|
||||
/*
|
||||
* to reorder and add new data with the default data
|
||||
* also take the name of the default
|
||||
* then update the option with the request
|
||||
*
|
||||
*/
|
||||
$new_option = array();
|
||||
foreach ($option_default as $email => $options) {
|
||||
if (isset($option_data[$email])) {
|
||||
$new_option[$email] = $option_data[$email];
|
||||
}
|
||||
else {
|
||||
// it means it was not in the saved data, but was added in the default
|
||||
$ret_update = update_email_by_type_CIPF($email, $options, $option_default[$email], $request);
|
||||
if ($ret_update !== false) {
|
||||
$new_option[$email] = $ret_update;
|
||||
}
|
||||
else {
|
||||
$new_option[$email] = $options;
|
||||
}
|
||||
}
|
||||
$new_option[$email]['name'] = $options['name'];
|
||||
foreach ($new_option as $email_type => $email_options) {
|
||||
$new_option[$email_type] = update_email_type_with_request_CIPF($email_type, $email_options, $request);
|
||||
}
|
||||
|
||||
Plgntls::update_option_safe($option_name, $new_option);
|
||||
@@ -209,59 +188,73 @@ function update_emails_settings_option_CIPF($request, $option_name, $option_data
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* utility function to update the emails
|
||||
* utility
|
||||
*
|
||||
*/
|
||||
function update_email_by_type_CIPF($email_type, $email_options, $email_default_options, $request) {
|
||||
function update_option_with_default_CIPF($option_data, $option_default) {
|
||||
Plgntls::debug_infos();
|
||||
$is_new = false;
|
||||
|
||||
/*
|
||||
* set notification/confirmation_send to false by default,
|
||||
* because the request only contains the value 'on' if checked, nothing for false
|
||||
*
|
||||
*/
|
||||
$email_options['notification_send'] = false;
|
||||
$email_options['confirmation_send'] = false;
|
||||
|
||||
/*
|
||||
* loop through all options to update them
|
||||
*
|
||||
*/
|
||||
foreach ($email_default_options as $default_option => $default_value) {
|
||||
if (!isset($request[$email_type.'_'.$default_option])) {
|
||||
if (isset($email_options[$default_option])) {
|
||||
continue;
|
||||
}
|
||||
$is_new = true;
|
||||
$email_options[$default_option] = $default_value;
|
||||
continue;
|
||||
}
|
||||
$new_value = $request[$email_type.'_'.$default_option];
|
||||
$value = $email_options[$default_option];
|
||||
if ($new_value === $value) {
|
||||
continue;
|
||||
}
|
||||
$is_new = true;
|
||||
if ($default_option === 'notification_send' || $default_option === 'confirmation_send') {
|
||||
$email_options[$default_option] = true;
|
||||
$new_option_values = array();
|
||||
foreach ($option_default as $email_type => $email_default_options) {
|
||||
if (!isset($option_data[$email_type])) {
|
||||
$new_option_values[$email_type] = $email_default_options;
|
||||
}
|
||||
else {
|
||||
$email_options[$default_option] = $new_value;
|
||||
$new_email_options = update_email_type_with_default_CIPF($option_data[$email_type], $email_default_options);
|
||||
$new_option_values[$email_type] = $new_email_options;
|
||||
}
|
||||
}
|
||||
return $new_option_values;
|
||||
}
|
||||
function update_email_type_with_default_CIPF($email_options, $email_default_options) {
|
||||
Plgntls::debug_infos();
|
||||
|
||||
if ($is_new === false) {
|
||||
return false;
|
||||
$new_email_type = array();
|
||||
foreach ($email_default_options as $default_key => $default_value) {
|
||||
if (!isset($email_options[$default_key])) {
|
||||
$new_email_type[$default_key] = $default_value;
|
||||
}
|
||||
else {
|
||||
$new_email_type[$default_key] = $email_options[$default_key];
|
||||
}
|
||||
}
|
||||
else {
|
||||
return $email_options;
|
||||
return $new_email_type;
|
||||
}
|
||||
function update_email_type_with_request_CIPF($email_type, $email_options, $request) {
|
||||
Plgntls::debug_infos();
|
||||
|
||||
foreach ($email_options as $email_key => $email_value) {
|
||||
/*
|
||||
* special update for notification/confirmation_send
|
||||
* default them to false, since they will only be in request if they value 'on'
|
||||
*
|
||||
*/
|
||||
if (in_array($email_key, array('notification_send', 'confirmation_send'))) {
|
||||
$email_options[$email_key] = 'off';
|
||||
}
|
||||
|
||||
/*
|
||||
* search in request needs the prefix
|
||||
*
|
||||
*/
|
||||
$request_name = $email_type.'_'.$email_key;
|
||||
if (isset($request[$request_name])) {
|
||||
$email_options[$email_key] = $request[$request_name];
|
||||
}
|
||||
}
|
||||
return $email_options;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
?>
|
||||
|
||||
Reference in New Issue
Block a user