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