setup_hooks(); } /** * Setup Hooks. * * @since 1.8.17 * * @return void */ private function setup_hooks() { if ( ! $this->is_donations_import_page() ) { return; } // Do not render main import tools page. remove_action( 'give_admin_field_tools_import', array( 'Give_Settings_Import', 'render_import_field', ) ); // Render donation import page add_action( 'give_admin_field_tools_import', array( $this, 'render_page' ) ); // Print the HTML. add_action( 'give_tools_import_core_settings_form_start', array( $this, 'html' ), 10 ); // Run when form submit. add_action( 'give-tools_save_import', array( $this, 'save' ) ); add_action( 'give-tools_update_notices', array( $this, 'update_notices' ), 11, 1 ); // Used to add submit button. add_action( 'give_tools_import_core_settings_form_end', array( $this, 'submit' ), 10 ); } /** * Update notice * * @since 1.8.17 * * @param $messages * * @return mixed */ public function update_notices( $messages ) { if ( ! empty( $_GET['tab'] ) && 'import' === give_clean( $_GET['tab'] ) ) { unset( $messages['give-setting-updated'] ); } return $messages; } /** * Print submit and nonce button. * * @since 1.8.17 */ public function submit() { wp_nonce_field( 'give-save-settings', '_give-save-settings' ); ?> get_step(); // Show progress. $this->render_progress(); ?>
is_json_valid ) ? 'give-hidden' : '' ); ?> " id=""> render_upload_html(); break; case 2: $this->start_import(); break; case 3: $this->import_success(); } ?>
'give_forms', 'page' => 'give-settings', ); if ( $undo ) { $success = false; } $query_arg_success = array( 'post_type' => 'give_forms', 'page' => 'give-tools', 'tab' => 'import', 'importer-type' => 'import_core_setting', 'step' => '1', 'undo' => 'true', ); $title = __( 'Settings Importing Completed!', 'give' ); if ( $success ) { $query_arg_success['undo'] = '1'; $query_arg_success['step'] = '3'; $query_arg_success['success'] = '1'; $text = __( 'Undo Importing', 'give' ); } else { if ( $undo ) { $host_give_options = get_option( 'give_settings_old', array() ); update_option( 'give_settings', $host_give_options, false ); $title = __( 'Undo of Setting Imported Completed!', 'give' ); } else { $title = __( 'Failed to import', 'give' ); } $text = __( 'Importing Again', 'give' ); } ?>

get_step(); ?>
get_step(); ?>

'type', 'name' => __( 'Merge Type:', 'give' ), 'description' => __( 'Select "Merge" to retain existing settings, or "Replace" to overwrite with the settings from the JSON file', 'give' ), 'default' => $type, 'type' => 'radio_inline', 'options' => array( 'merge' => __( 'Merge', 'give' ), 'replace' => __( 'Replace', 'give' ), ), ), ); $settings = apply_filters( 'give_import_core_setting_html', $settings ); if ( empty( $this->is_json_valid ) ) { Give_Admin_Settings::output_fields( $settings, 'give_settings' ); ?> " id="recount-stats-submit" value=""/> get_step(); // Validation for first step. if ( 1 === $step ) { $type = ( ! empty( $_REQUEST['type'] ) ? give_clean( $_REQUEST['type'] ) : 'replace' ); $core_settings = self::upload_widget_settings_file(); if ( ! empty( $core_settings['error'] ) ) { Give_Admin_Settings::add_error( 'give-import-csv', __( 'Please upload a valid JSON settings file.', 'give' ) ); } else { $file_path = explode( '/', $core_settings['file'] ); $count = ( count( $file_path ) - 1 ); $url = give_import_page_url( (array) apply_filters( 'give_import_core_settings_importing_url', array( 'step' => '2', 'importer-type' => $this->importer_type, 'type' => $type, 'file_name' => $file_path[ $count ], ) ) ); $this->is_json_valid = $url; } } } /** * Get if current page import donations page or not * * @since 1.8.17 * @return bool */ private function is_donations_import_page() { return 'import' === give_get_current_setting_tab() && isset( $_GET['importer-type'] ) && $this->importer_type === give_clean( $_GET['importer-type'] ); } /** * Upload JSON file * @return boolean */ public static function upload_widget_settings_file() { $upload = false; if ( isset( $_FILES['json'] ) ) { add_filter( 'upload_mimes', array( __CLASS__, 'json_upload_mimes' ) ); $upload = wp_handle_upload( $_FILES['json'], array( 'test_form' => false ) ); remove_filter( 'upload_mimes', array( __CLASS__, 'json_upload_mimes' ) ); } else { Give_Admin_Settings::add_error( 'give-import-csv', __( 'Please upload or provide a valid JSON file.', 'give' ) ); } return $upload; } /** * Add mime type for JSON * * @param array $existing_mimes */ public static function json_upload_mimes( $existing_mimes = array() ) { $existing_mimes['json'] = 'application/json'; return $existing_mimes; } } Give_Import_Core_Settings::get_instance()->setup(); }