/** * Convert an object to an associative array. * * Can handle multidimensional arrays * * @since 1.7 * * @param unknown $data * @return array */ function edd_object_to_array($data) { if (is_array($data) || is_object($data)) { $result = array(); foreach ($data as $key => $value) { $result[$key] = edd_object_to_array($value); } return $result; } return $data; }
function fes_process_form_reset() { if (!isset($_POST['fes_action']) || empty($_POST['fes_action'])) { return; } if (!current_user_can('manage_shop_settings')) { return; } $form = $_POST['fes_action']; switch ($form) { case 'reset_login_form_settings': if (!wp_verify_nonce($_POST['reset_login_form_settings'], 'reset_login_form_settings')) { return; } $import_file = fes_plugin_dir . 'assets/backups/login-form.json'; // Retrieve the settings from the file and convert the json object to an array. $settings = edd_object_to_array(json_decode(file_get_contents($import_file))); // if there's no form, let's make one if (!EDD_FES()->helper->get_option('fes-login-form', false)) { $page_data = array('post_status' => 'publish', 'post_type' => 'fes-forms', 'post_author' => get_current_user_id(), 'post_title' => __('Login Form', 'edd_fes')); $page_id = wp_insert_post($page_data); update_post_meta($page_id, 'fes-form', $settings); } else { update_post_meta(EDD_FES()->helper->get_option('fes-login-form', false), 'fes-form', $settings); } wp_safe_redirect(admin_url('admin.php?page=fes-form-import-export&action=reset&form=login&result=success')); exit; break; case 'reset_registration_form_settings': if (!wp_verify_nonce($_POST['reset_registration_form_settings'], 'reset_registration_form_settings')) { return; } $import_file = fes_plugin_dir . 'assets/backups/registration-form.json'; // Retrieve the settings from the file and convert the json object to an array. $settings = edd_object_to_array(json_decode(file_get_contents($import_file))); // if there's no form, let's make one if (!EDD_FES()->helper->get_option('fes-registration-form', false)) { $page_data = array('post_status' => 'publish', 'post_type' => 'fes-forms', 'post_author' => get_current_user_id(), 'post_title' => __('Registration Form', 'edd_fes')); $page_id = wp_insert_post($page_data); update_post_meta($page_id, 'fes-form', $settings); } else { update_post_meta(EDD_FES()->helper->get_option('fes-registration-form', false), 'fes-form', $settings); } wp_safe_redirect(admin_url('admin.php?page=fes-form-import-export&action=reset&form=registration&result=success')); exit; break; case 'reset_submission_form_settings': if (!wp_verify_nonce($_POST['reset_submission_form_settings'], 'reset_submission_form_settings')) { return; } $import_file = fes_plugin_dir . 'assets/backups/submission-form.json'; // Retrieve the settings from the file and convert the json object to an array. $settings = edd_object_to_array(json_decode(file_get_contents($import_file))); // if there's no form, let's make one if (!EDD_FES()->helper->get_option('fes-submission-form', false)) { $page_data = array('post_status' => 'publish', 'post_type' => 'fes-forms', 'post_author' => get_current_user_id(), 'post_title' => __('Submission Form', 'edd_fes')); $page_id = wp_insert_post($page_data); update_post_meta($page_id, 'fes-form', $settings); } else { update_post_meta(EDD_FES()->helper->get_option('fes-submission-form', false), 'fes-form', $settings); } wp_safe_redirect(admin_url('admin.php?page=fes-form-import-export&action=reset&form=submission&result=success')); exit; break; case 'reset_profile_form_settings': if (!wp_verify_nonce($_POST['reset_profile_form_settings'], 'reset_profile_form_settings')) { return; } $import_file = fes_plugin_dir . 'assets/backups/profile-form.json'; // Retrieve the settings from the file and convert the json object to an array. $settings = edd_object_to_array(json_decode(file_get_contents($import_file))); // if there's no form, let's make one if (!EDD_FES()->helper->get_option('fes-profile-form', false)) { $page_data = array('post_status' => 'publish', 'post_type' => 'fes-forms', 'post_author' => get_current_user_id(), 'post_title' => __('Profile Form', 'edd_fes')); $page_id = wp_insert_post($page_data); update_post_meta($page_id, 'fes-form', $settings); } else { update_post_meta(EDD_FES()->helper->get_option('fes-profile-form', false), 'fes-form', $settings); } wp_safe_redirect(admin_url('admin.php?page=fes-form-import-export&action=reset&form=profile&result=success')); exit; break; case 'reset_contact_form_settings': if (!wp_verify_nonce($_POST['reset_contact_form_settings'], 'reset_contact_form_settings')) { return; } $import_file = fes_plugin_dir . 'assets/backups/contact-form.json'; // Retrieve the settings from the file and convert the json object to an array. $settings = edd_object_to_array(json_decode(file_get_contents($import_file))); // if there's no form, let's make one if (!EDD_FES()->helper->get_option('fes-vendor-contact-form', false)) { $page_data = array('post_status' => 'publish', 'post_type' => 'fes-forms', 'post_author' => get_current_user_id(), 'post_title' => __('Contact Form', 'edd_fes')); $page_id = wp_insert_post($page_data); update_post_meta($page_id, 'fes-form', $settings); } else { update_post_meta(EDD_FES()->helper->get_option('fes-vendor-contact-form', false), 'fes-form', $settings); } wp_safe_redirect(admin_url('admin.php?page=fes-form-import-export&action=reset&form=contact&result=success')); exit; break; } }
/** * Process a settings import from a json file * * @since 1.7 * @return void */ function edd_process_settings_import() { if (empty($_POST['edd_import_nonce'])) { return; } if (!wp_verify_nonce($_POST['edd_import_nonce'], 'edd_import_nonce')) { return; } if (!current_user_can('manage_shop_settings')) { return; } $import_file = $_FILES['import_file']['tmp_name']; if (empty($import_file)) { wp_die(__('Please upload a file to import', 'edd')); } // Retrieve the settings from the file and convert the json object to an array $settings = edd_object_to_array(json_decode(file_get_contents($import_file))); update_option('edd_general', $settings['general']); update_option('edd_gateways', $settings['gateways']); update_option('edd_emails', $settings['emails']); update_option('edd_styles', $settings['styles']); update_option('edd_taxes', $settings['taxes']); update_option('edd_extensions', $settings['extensions']); update_option('edd_misc', $settings['misc']); wp_safe_redirect(admin_url('tools.php?page=edd-settings-export-import&edd-message=settings-imported')); exit; }
/** * Given an object or array of objects, convert them to arrays * * @since 1.7 * @internal Updated in 2.6 * @param object|array $object An object or an array of objects * @return array An array or array of arrays, converted from the provided object(s) */ function edd_object_to_array($object = array()) { if (empty($object) || !is_object($object) && !is_array($object)) { return $object; } if (is_array($object)) { $return = array(); foreach ($object as $item) { if (is_a($object, 'EDD_Payment')) { $return[] = $object->array_convert(); } else { $return[] = edd_object_to_array($item); } } } else { if (is_a($object, 'EDD_Payment')) { $return = $object->array_convert(); } else { $return = get_object_vars($object); // Now look at the items that came back and convert any nested objects to arrays foreach ($return as $key => $value) { $value = is_array($value) || is_object($value) ? edd_object_to_array($value) : $value; $return[$key] = $value; } } } return $return; }
/** * Process a settings import from a json file * * @since 1.7 * @return void */ function edd_tools_import_export_process_import() { if (empty($_POST['edd_import_nonce'])) { return; } if (!wp_verify_nonce($_POST['edd_import_nonce'], 'edd_import_nonce')) { return; } if (!current_user_can('manage_shop_settings')) { return; } if (edd_get_file_extension($_FILES['import_file']['name']) != 'json') { wp_die(__('Please upload a valid .json file', 'edd')); } $import_file = $_FILES['import_file']['tmp_name']; if (empty($import_file)) { wp_die(__('Please upload a file to import', 'edd')); } // Retrieve the settings from the file and convert the json object to an array $settings = edd_object_to_array(json_decode(file_get_contents($import_file))); update_option('edd_settings', $settings); wp_safe_redirect(admin_url('edit.php?post_type=download&page=edd-tools&edd-message=settings-imported')); exit; }