/** * Return data for Subscriber edit inline */ function alo_em_ajax_alo_easymail_subscriber_edit_inline() { check_ajax_referer("alo-easymail"); $subscriber = $_POST['subscriber']; $row_index = $_POST['row_index']; $inline_action = $_POST['inline_action']; if ($subscriber && current_user_can("manage_newsletter_subscribers")) { $mailinglists = alo_em_get_mailinglists('admin,public'); $languages = alo_em_get_all_languages(true); switch ($inline_action) { case 'save': // save data and return html row, red-only mode $subscriber_obj = alo_em_get_subscriber_by_id($subscriber); $_POST = array_map('strip_tags', $_POST); $_POST = array_map('stripslashes_deep', $_POST); $new_name = isset($_POST['new_name']) ? trim($_POST['new_name']) : false; $new_email = isset($_POST['new_email']) && is_email(trim($_POST['new_email'])) ? trim($_POST['new_email']) : false; $new_active = isset($_POST['new_active']) && is_numeric($_POST['new_active']) ? $_POST['new_active'] : 0; $new_lang = isset($_POST['new_lang']) && in_array($_POST['new_lang'], $languages) ? $_POST['new_lang'] : ""; $new_lists = isset($_POST['new_lists']) ? trim($_POST['new_lists']) : false; //edit : added the following foreach and its content $alo_em_cf = alo_easymail_get_custom_fields(); if ($alo_em_cf) { foreach ($alo_em_cf as $key => $value) { $var_name = "new_" . $key; //$fields[$key] = ( isset( $_POST[$var_name] ) ) ? stripslashes( trim ( $_POST[$var_name] ) ): false; //$fields[$key] = false; if (isset($_POST[$var_name])) { switch ($value['input_type']) { // particular case: checkbox value not only exist, but value 1 case "checkbox": if ($_POST[$var_name] == '1') { $fields[$key] = 1; } else { unset($fields[$key]); } break; default: $fields[$key] = stripslashes(trim($_POST[$var_name])); } } else { $fields[$key] = false; } } } /* if ( !$new_name ) { echo "-error-name-is-empty"; break; } */ // Check if a subscriber with this email already exists $already = alo_em_is_subscriber($new_email) ? alo_em_is_subscriber($new_email) : false; if ($already && $already != $subscriber && $subscriber_obj->email != $new_email) { echo "-error-email-already-subscribed"; break; // Last check before save } else { if ($new_email) { //$fields['old_email'] = $subscriber_obj->email; //edit : added all this line $fields['email'] = $new_email; //edit : added all this line $fields['name'] = $new_name; //edit : added all this line alo_em_update_subscriber_by_email($subscriber_obj->email, $fields, $new_active, $new_lang, false); //edit : orig : alo_em_update_subscriber_by_email ( $subscriber_obj->email, $new_email, $new_name, $new_active, $new_lang ); $new_lists = explode(",", rtrim($new_lists, ",")); if (is_array($mailinglists)) { foreach ($mailinglists as $mailinglist => $val) { if (in_array($mailinglist, $new_lists)) { alo_em_add_subscriber_to_list($subscriber, $mailinglist); } else { alo_em_delete_subscriber_from_list($subscriber, $mailinglist); } } } echo alo_em_get_subscriber_table_row($subscriber, $row_index, false, $mailinglists, $languages); } else { echo "-error-email-is-not-valid"; } } break; case 'delete': // If required, add email in unsubscribed db table if (isset($_POST['to_unsubscribe']) && $_POST['to_unsubscribe'] == 1) { $subscriber_obj = alo_em_get_subscriber_by_id($subscriber); alo_em_add_email_in_unsubscribed($subscriber_obj->email); } // Delete the subscriber if (alo_em_delete_subscriber_by_id($subscriber)) { echo "-ok-deleted"; break; } else { echo "-1"; // error break; } echo alo_em_get_subscriber_table_row($subscriber, $row_index, false, $mailinglists, $languages); case 'cancel': // return html row, red-only mode echo alo_em_get_subscriber_table_row($subscriber, $row_index, false, $mailinglists, $languages); break; case 'edit': default: // return html row, edit mode echo alo_em_get_subscriber_table_row($subscriber, $row_index, true, $mailinglists, $languages); } } die; }