D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
home
/
everqlsh
/
www
/
wp-admin
/
user
/
577040
/
Filename :
pages.tar
back
Copy
reports-page.php 0000644 00000017670 15162221136 0007677 0 ustar 00 <?php /** * Forminator Reports Page * * @package Forminator */ if ( ! defined( 'ABSPATH' ) ) { die(); } /** * Class Forminator_Reports_Page * * @since 1.18.0 */ class Forminator_Reports_Page extends Forminator_Admin_Page { /** * Merged default parameter with superglobal REQUEST * * @since 1.18.0 * @var array */ private $screen_params = array(); /** * Current Form Model * * @var null|Forminator_Base_Form_Model */ private $form_model = null; /** * Get Form types based on available modules * * @return mixed * @since 1.18.0 */ public function get_form_types() { $form_types = $this->modules_form_type(); return apply_filters( 'forminator_reports_page_modules', $form_types ); } /** * Render Form switcher / select based on current form_type * * @param string $form_type Form type. * @param int $form_id Form Id. * * @since 1.18.0 */ public static function render_form_switcher( $form_type = 'forminator_forms', $form_id = 0 ) { $classes = 'sui-select'; if ( 0 !== $form_id ) { $classes .= ' sui-select-sm sui-select-inline'; } $empty_option = esc_html__( 'Choose a Form', 'forminator' ); $method = 'get_forms'; $model = 'Forminator_Form_Model'; if ( Forminator_Poll_Model::model()->get_post_type() === $form_type ) { $empty_option = esc_html__( 'Choose a Poll', 'forminator' ); $method = 'get_polls'; $model = 'Forminator_Poll_Model'; } elseif ( Forminator_Quiz_Model::model()->get_post_type() === $form_type ) { $empty_option = esc_html__( 'Choose a Quiz', 'forminator' ); $method = 'get_quizzes'; $model = 'Forminator_Quiz_Model'; } echo '<select aria-label="' . esc_html__( 'Choose a Form', 'forminator' ) . '" name="form_id" data-allow-search="1" data-minimum-results-for-search="0" class="' . esc_attr( $classes ) . '" data-search="true" data-search="true" data-placeholder="' . esc_attr( $empty_option ) . '">'; echo '<option><option>'; $forms = Forminator_API::$method( null, 1, 999, $model::STATUS_PUBLISH ); $forms = apply_filters( 'forminator_reports_get_forms', $forms, $form_type ); foreach ( $forms as $form ) { /** * Forminator_Base_Form_Model * * @var Forminator_Base_Form_Model $form */ $title = ! empty( $form->settings['formName'] ) ? $form->settings['formName'] : $form->raw->post_title; echo '<option value="' . esc_attr( $form->id ) . '" ' . selected( $form->id, $form_id, false ) . '>' . esc_html( $title ) . '</option>'; } echo '</select>'; } /** * Executed Action before render the page * * @since 1.18.0 */ public function before_render() { $this->populate_screen_params(); $this->prepare_reports_page(); $this->enqueue_reports_scripts(); } /** * Populating Current Page Parameters * * @since 1.18.0 */ public function populate_screen_params() { $this->screen_params = array( 'form_type' => Forminator_Core::sanitize_text_field( 'form_type', 'forminator_forms' ), 'form_id' => Forminator_Core::sanitize_text_field( 'form_id', 0 ), ); } /** * Prepare Reports Page * * @since 1.18.0 */ private function prepare_reports_page() { $this->form_model = $this->get_form_model(); // Form not found. if ( ! $this->form_model instanceof Forminator_Base_Form_Model ) { // if form_id available remove it from request, and redirect. if ( $this->get_current_form_id() ) { $url = remove_query_arg( 'form_id' ); if ( wp_safe_redirect( $url ) ) { exit; } } } } /** * Get current form type * * @return mixed */ public function get_current_form_type() { return $this->screen_params['form_type']; } /** * Get current form id * * @return mixed */ public function get_current_form_id() { return $this->screen_params['form_id']; } /** * Custom scripts that only used on submissions page * * @since 1.18.0 */ public function enqueue_reports_scripts() { $this->forminator_daterange_script(); $this->forminator_report_chart_script(); add_filter( 'forminator_l10n', array( $this, 'add_l10n' ) ); } /** * Daterange script */ public function forminator_daterange_script() { wp_enqueue_script( 'forminator-reports-datepicker-range', forminator_plugin_url() . 'assets/js/library/daterangepicker.min.js', array( 'moment' ), '3.0.3', true ); $daterangepicker_ranges = sprintf( " var forminator_reports_datepicker_ranges = { '%s': [moment(), moment()], '%s': [moment().subtract(6,'days'), moment()], '%s': [moment().startOf('month'), moment().endOf('month')], '%s': [moment().subtract(29,'days'), moment()], '%s': [moment().startOf('year'), moment().endOf('year')], };", esc_html__( 'Today', 'forminator' ), esc_html__( 'Last 7 Days', 'forminator' ), esc_html__( 'This Month', 'forminator' ), esc_html__( 'Last 30 Days', 'forminator' ), esc_html__( 'This Year', 'forminator' ) ); /** * Filter ranges to be used on reports date range * * @param string $daterangepicker_ranges * * @since 1.18.0 */ $daterangepicker_ranges = apply_filters( 'forminator_reports_datepicker_ranges', $daterangepicker_ranges ); wp_add_inline_script( 'forminator-reports-datepicker-range', $daterangepicker_ranges ); } /** * Chart script */ public function forminator_report_chart_script() { $form_id = $this->get_current_form_id(); $chart_data = Forminator_Admin_Report_Page::get_instance()->forminator_report_chart_data( $form_id ); $chart_vars = sprintf( " var chart_label = '%s', chart_form_id = %d, monthDays = ['%s'], submissions = [%s], canvas_spacing = %s;", esc_html__( 'Submissions', 'forminator' ), $form_id, wp_kses_post( implode( "', '", $chart_data['monthDays'] ) ), esc_html( implode( ', ', $chart_data['submissions'] ) ), $chart_data['canvas_spacing'] ); /** * Filter chart vars to be used on reports * * @param string $chart_vars * * @since 1.18.0 */ $chart_vars = apply_filters( 'forminator_reports_chart', $chart_vars ); wp_add_inline_script( 'forminator-chartjs', $chart_vars ); return $chart_vars; } /** * Hook into forminator_l10n * * Allow to modify `daterangepicker` locale * * @param array $l10n locale. * * @return mixed */ public function add_l10n( $l10n ) { $daterangepicker_lang = array( 'daysOfWeek' => Forminator_Admin_L10n::get_short_days_names(), 'monthNames' => Forminator_Admin_L10n::get_months_names(), ); /** * Filter daterangepicker locale to be used * * @param array $daterangepicker_lang * * @since 1.18.0 */ $daterangepicker_lang = apply_filters( 'forminator_l10n_daterangepicker', $daterangepicker_lang ); $l10n['daterangepicker'] = $daterangepicker_lang; return $l10n; } /** * Override scripts to be loaded * * @param string $hook Hook name. */ public function enqueue_scripts( $hook ) { parent::enqueue_scripts( $hook ); wp_enqueue_script( 'forminator-chartjs', forminator_plugin_url() . 'assets/js/front/Chart.min.js', array( 'jquery' ), '2.8.0', false ); $save_global_color = "if (typeof window !== 'undefined' && typeof window.Color !== 'undefined') {window.notChartColor = window.Color;}"; $restore_global_color = "if (typeof window !== 'undefined' && typeof window.notChartColor !== 'undefined') {window.Color = window.notChartColor;}"; wp_add_inline_script( 'forminator-chartjs', $save_global_color, 'before' ); wp_add_inline_script( 'forminator-chart', $save_global_color, 'before' ); wp_add_inline_script( 'forminator-chartjs', $restore_global_color ); wp_add_inline_script( 'forminator-chart', $restore_global_color ); // LOAD: Datalabels plugin for ChartJS. wp_enqueue_script( 'chartjs-plugin-datalabels', forminator_plugin_url() . 'assets/js/front/chartjs-plugin-datalabels.min.js', array( 'jquery' ), '0.6.0', false ); $this->forminator_report_chart_script(); } } integrations-page.php 0000644 00000010414 15162221136 0010674 0 ustar 00 <?php /** * Forminator Integrations Page * * @package Forminator */ if ( ! defined( 'ABSPATH' ) ) { die(); } /** * Class Forminator_Integrations_Page * * @since 1.1 */ class Forminator_Integrations_Page extends Forminator_Admin_Page { /** * Addon list as array * * @var array */ public $addons_list = array(); /** * Connected addon list * * @var array */ public $addons_list_grouped_by_connected = array(); /** * Nonce * * @var string */ public $addon_nonce = ''; /** * Addon page * * @var array */ private $addon_page = array(); /** * Page action * * @var string */ public static $addon_nonce_page_action = 'forminator_addon_nonce_page'; /** * Executed Action before render the page * * @since 1.1 * @since 1.2 add extra section for addon */ public function before_render() { // cleanup addons on integrations page. Forminator_Integration_Loader::get_instance()->cleanup_activated_addons(); $this->addons_list = forminator_get_registered_addons_list(); $this->addons_list_grouped_by_connected = forminator_get_registered_addons_grouped_by_connected(); Forminator_Integration_Admin_Ajax::get_instance()->generate_nonce(); $this->addon_nonce = Forminator_Integration_Admin_Ajax::get_instance()->get_nonce(); add_filter( 'forminator_data', array( $this, 'add_addons_js_data' ) ); $this->validate_addon_page(); } /** * Add js data * * @param mixed $data Addon data to add. * @return mixed */ public function add_addons_js_data( $data ) { if ( Forminator::is_addons_feature_enabled() ) { $data['addons'] = forminator_get_registered_addons_list(); $data['addon_nonce'] = $this->addon_nonce; } return $data; } /** * Render custom output of addon when validated * * @since 1.2 */ protected function render_page_content() { if ( ! empty( $this->addon_page ) ) { // html output here are expected. echo $this->addon_page['output'];// phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped } else { parent::render_page_content(); } } /** * Render Addon title as header on addon page * * @since 1.2 */ public function render_header() { if ( ! empty( $this->addon_page ) ) { ?> <header class="sui-header"> <h1 class="sui-header-title"><?php echo esc_html( $this->addon_page['title'] ); ?></h1> <div class="sui-actions-right"> <?php if ( forminator_is_show_documentation_link() ) : ?> <a href="https://wpmudev.com/docs/wpmu-dev-plugins/forminator/#integrations" target="_blank" class="sui-button sui-button-ghost"> <i class="sui-icon-academy"></i> <?php esc_html_e( 'View Documentation', 'forminator' ); ?> </a> <?php endif; ?> </div> </header> <?php } else { parent::render_header(); } } /** * Nonce generation for addon page * * @since 1.2 * @return string */ public static function get_addon_page_nonce() { return wp_create_nonce( self::$addon_nonce_page_action ); } /** * Validate required query arg for displaying addon page * * @since 1.2 * * @return bool */ public function validate_addon_page() { $nonce = Forminator_Core::sanitize_text_field( 'nonce' ); if ( $nonce && ! wp_verify_nonce( $nonce, self::$addon_nonce_page_action ) ) { return false; } $query_args = $_GET; // main component. /** * - slug : addon slug (eg. trello) * - nonce: nonce validation * - section: callback */ if ( isset( $query_args['nonce'] ) ) { unset( $query_args['nonce'] ); } if ( ! isset( $query_args['slug'] ) ) { return false; } $slug = $query_args['slug']; unset( $query_args['slug'] ); $addon = forminator_get_addon( $slug ); if ( ! $addon ) { return false; } if ( ! isset( $query_args['section'] ) ) { return false; } $section = $query_args['section']; unset( $query_args['section'] ); $callback = $addon->get_integration_section_callback( $section );// returned callback must be an array. if ( ! is_array( $callback ) ) { return false; } if ( ! is_callable( $callback ) ) { return false; } forminator_maybe_attach_addon_hook( $addon ); $output = call_user_func( $callback, $query_args ); $this->addon_page = array( 'title' => $addon->get_title(), 'output' => $output, ); return true; } } templates-page.php 0000644 00000004114 15162221136 0010164 0 ustar 00 <?php /** * Forminator Templates Page * * @package Forminator */ if ( ! defined( 'ABSPATH' ) ) { die(); } /** * Class Forminator_Templates_Page * * @since 1.0 */ class Forminator_Templates_Page extends Forminator_Admin_Page { /** * Initialize templates page * * @return void */ public function init() {} /** * Enqueue scripts * * @param string $hook Hook name. * @return void */ public function enqueue_scripts( $hook ) { parent::enqueue_scripts( $hook ); add_filter( 'forminator_data', array( $this, 'change_forminator_data' ) ); $forminator_data = new Forminator_Admin_Data(); $forminator_l10n = new Forminator_Admin_L10n(); wp_localize_script( 'forminator-admin', 'forminatorData', $forminator_data->get_options_data() ); wp_localize_script( 'forminator-admin', 'forminatorl10n', $forminator_l10n->get_l10n_strings() ); } /** * Add select forms for creating new Appearance Preset * * @param array $data Data. * * @return array */ public function change_forminator_data( $data ) { ob_start(); Forminator_Entries_Page::render_form_switcher(); $forms_select = ob_get_clean(); $data['forms_select'] = $forms_select; $data['presetNonce'] = wp_create_nonce( 'forminator_appearance_preset' ); $preset_id = Forminator_Core::sanitize_text_field( 'preset' ); if ( empty( $preset_id ) ) { $preset_id = 'default'; } return $data; } /** * Before render * * @return void */ public function before_render() { // Add js data for Permissions. add_filter( 'forminator_data', array( $this, 'add_permissions_js_data' ) ); } /** * Add js data * * @param mixed $data Data to add. * @return mixed */ public function add_permissions_js_data( $data ) { if ( ! current_user_can( forminator_get_admin_cap() ) ) { return $data; } $permissions = get_option( 'forminator_permissions', array() ); $data['mainSettings'] = array( 'permissions' => $permissions, 'modal' => array(), ); $data['permission_nonce'] = wp_create_nonce( 'forminator_permission_nonce' ); return $data; } } addons-page.php 0000644 00000003232 15162221136 0007436 0 ustar 00 <?php /** * Forminator Addons Page * * @package Forminator */ if ( ! defined( 'ABSPATH' ) ) { die(); } /** * Class Forminator_Addons_Page * * @since 1.15 */ class Forminator_Addons_Page extends Forminator_Admin_Page { /** * Fetch Add-ons data * * @return array */ public function get_addons_data() { $project_data = array(); if ( class_exists( 'WPMUDEV_Dashboard' ) ) { $project_info = array( array( 'pid' => Forminator_Admin_Addons_Page::GEOLOCATION_PID, // Geolocation Add-on. ), // PDF Add-on. array( 'pid' => 4262971, ), // Stripe Add-on. array( 'pid' => 3953609, ), ); foreach ( $project_info as $project ) { $project_data[] = Forminator_Admin_Addons_Page::get_project_info_from_wpmudev_dashboard( $project['pid'] ); } } return $project_data; } /** * Get addons by action * * @return array */ public function get_addons_by_action() { $update = array(); $projects = $this->get_addons_data(); if ( ! empty( $projects ) ) { foreach ( $projects as $project ) { if ( ! empty( $project ) ) { if ( $project->has_update ) { $update[] = $project; } } } } if ( empty( $projects ) && ! FORMINATOR_PRO && ! class_exists( 'WPMUDEV_Dashboard' ) ) { $projects = Forminator_Admin_Addons_Page::forminator_get_static_addons(); } // Remove Stripe Add-on if payments are disabled. if ( forminator_payments_disabled() ) { $projects = array_filter( $projects, function ( $project ) { return 3953609 !== $project->pid; } ); } $response['all'] = $projects; $response['update'] = $update; return $response; } } dashboard-page.php 0000644 00000002246 15162221136 0010121 0 ustar 00 <?php /** * Forminator Dashboard Page * * @package Forminator */ if ( ! defined( 'ABSPATH' ) ) { die(); } /** * Class Forminator_Dashboard_Page * * @since 1.0 */ class Forminator_Dashboard_Page extends Forminator_Admin_Page { /** * Print Dashboard box * * @since 1.0 */ public function dashboard_create_screen() { $modules = forminator_get_modules(); $this->template( 'dashboard/create-content', array( 'modules' => $modules, ) ); } /** * Count modules * * @param string $status Status. * * @since 1.6 * @return int */ public function countModules( $status = '' ) { return Forminator_Form_Model::model()->count_all( $status ); } /** * Return all forms containing Stripe field * * @since 1.9 * * @return array */ public function stripeModules() { return Forminator_Form_Model::model()->get_models_by_field_and_version( 'stripe-1', '1.9-alpha.1' ); } /** * Override scripts to be loaded * * @since 1.11 * * @param string $hook Hook name. */ public function enqueue_scripts( $hook ) { parent::enqueue_scripts( $hook ); forminator_print_front_styles(); forminator_print_front_scripts(); } } entries-page.php 0000644 00000017551 15162221136 0007650 0 ustar 00 <?php /** * Forminator Entries Page * * @package Forminator */ if ( ! defined( 'ABSPATH' ) ) { die(); } /** * Class Forminator_Entries_Page * * @since 1.0.5 */ class Forminator_Entries_Page extends Forminator_Admin_Page { /** * Merged default parameter with superglobal REQUEST * * @since 1.0.5 * @var array */ private $screen_params = array(); /** * HTML representative of entries page * * @since 1.0.5 * @var string */ private $entries_page = ''; /** * Current Form Model of requested entries * * @since 1.0.5 * @var null|Forminator_Base_Form_Model */ private $form_model = null; /** * Populating Current Page Parameters * * @since 1.0.5 */ public function populate_screen_params() { $this->screen_params = array( 'form_type' => Forminator_Core::sanitize_text_field( 'form_type', 'forminator_forms' ), 'form_id' => Forminator_Core::sanitize_text_field( 'form_id', 0 ), ); } /** * Executed Action before render the page * * @since 1.0.5 */ public function before_render() { $this->populate_screen_params(); $this->prepare_entries_page(); $this->enqueue_entries_scripts(); } /** * Get Form types based on available modules * * @since 1.0.5 * * @return mixed */ public function get_form_types() { $form_types = $this->modules_form_type(); return apply_filters( 'forminator_entries_page_modules', $form_types ); } /** * Prepare Entries Page * * @since 1.0.5 */ private function prepare_entries_page() { $this->form_model = $this->get_form_model(); // Form not found. if ( ! $this->form_model instanceof Forminator_Base_Form_Model ) { // if form_id available remove it from request, and redirect. if ( $this->get_current_form_id() ) { $url = remove_query_arg( 'form_id' ); if ( wp_safe_redirect( $url ) ) { exit; } } } else { switch ( $this->get_current_form_type() ) { case Forminator_Form_Model::model()->get_post_type(): $entries_renderer = new Forminator_CForm_Renderer_Entries( 'custom-form/entries' ); break; case Forminator_Poll_Model::model()->get_post_type(): $entries_renderer = new Forminator_Poll_Renderer_Entries( 'poll/entries' ); break; case Forminator_Quiz_Model::model()->get_post_type(): $entries_renderer = new Forminator_Quiz_Renderer_Entries( 'quiz/entries' ); break; default: $entries_renderer = null; break; } if ( $entries_renderer instanceof Forminator_Admin_Page ) { ob_start(); // render the entries page. $entries_renderer->render_page_content(); $this->entries_page = ob_get_clean(); } } } /** * Return rendered entries page * * @since 1.0.5 * * @return string */ public function render_entries() { return $this->entries_page; } /** * Render Form switcher / select based on current form_type * * @param string $form_type Form type. * @param int $form_id Form Id. * * @since 1.0.5 */ public static function render_form_switcher( $form_type = 'forminator_forms', $form_id = 0 ) { $classes = 'sui-select'; // Using this method for Create Appearance Preset. if ( 0 !== $form_id ) { $classes .= ' sui-select-sm sui-select-inline'; } $empty_option = esc_html__( 'Choose Form', 'forminator' ); $method = 'get_forms'; $model = 'Forminator_Form_Model'; if ( Forminator_Poll_Model::model()->get_post_type() === $form_type ) { $empty_option = esc_html__( 'Choose Poll', 'forminator' ); $method = 'get_polls'; $model = 'Forminator_Poll_Model'; } elseif ( Forminator_Quiz_Model::model()->get_post_type() === $form_type ) { $empty_option = esc_html__( 'Choose Quiz', 'forminator' ); $method = 'get_quizzes'; $model = 'Forminator_Quiz_Model'; } echo '<select name="form_id" data-allow-search="1" data-minimum-results-for-search="0" class="' . esc_attr( $classes ) . '" data-search="true" data-search="true" data-placeholder="' . esc_attr( $empty_option ) . '">'; echo '<option><option>'; $forms = Forminator_API::$method( null, 1, 999, $model::STATUS_PUBLISH ); $forms = apply_filters( 'forminator_entries_get_forms', $forms, $form_type ); foreach ( $forms as $form ) { /** * Forminator_Base_Form_Model * * @var Forminator_Base_Form_Model $form */ $title = ! empty( $form->settings['formName'] ) ? $form->settings['formName'] : $form->raw->post_title; echo '<option value="' . esc_attr( $form->id ) . '" ' . selected( $form->id, $form_id, false ) . '>' . esc_html( $title ) . '</option>'; } echo '</select>'; } /** * Get current form type * * @since 1.0.5 * * @return mixed */ public function get_current_form_type() { return $this->screen_params['form_type']; } /** * Get current form id * * @since 1.0.5 * * @return mixed */ public function get_current_form_id() { return $this->screen_params['form_id']; } /** * Custom scripts that only used on submissions page * * @since 1.5.4 */ public function enqueue_entries_scripts() { wp_enqueue_script( 'forminator-entries-datepicker-range', forminator_plugin_url() . 'assets/js/library/daterangepicker.min.js', array( 'moment' ), '3.0.3', true ); wp_enqueue_script( 'forminator-inputmask', forminator_plugin_url() . 'assets/js/library/inputmask.min.js', array( 'jquery' ), FORMINATOR_VERSION, false ); // inputmask. wp_enqueue_script( 'forminator-jquery-inputmask', forminator_plugin_url() . 'assets/js/library/jquery.inputmask.min.js', array( 'jquery' ), FORMINATOR_VERSION, false ); // jquery inputmask. wp_enqueue_script( 'forminator-inputmask-binding', forminator_plugin_url() . 'assets/js/library/inputmask.binding.js', array( 'jquery' ), FORMINATOR_VERSION, false ); // inputmask binding. // use inline script to allow hooking into this. $daterangepicker_ranges = sprintf( " var forminator_entries_datepicker_ranges = { '%s': [moment(), moment()], '%s': [moment().subtract(1,'days'), moment().subtract(1,'days')], '%s': [moment().subtract(6,'days'), moment()], '%s': [moment().subtract(29,'days'), moment()], '%s': [moment().startOf('month'), moment().endOf('month')], '%s': [moment().subtract(1,'month').startOf('month'), moment().subtract(1,'month').endOf('month')] };", esc_html__( 'Today', 'forminator' ), esc_html__( 'Yesterday', 'forminator' ), esc_html__( 'Last 7 Days', 'forminator' ), esc_html__( 'Last 30 Days', 'forminator' ), esc_html__( 'This Month', 'forminator' ), esc_html__( 'Last Month', 'forminator' ) ); /** * Filter ranges to be used on submissions date range * * @since 1.5.4 * * @param string $daterangepicker_ranges */ $daterangepicker_ranges = apply_filters( 'forminator_entries_datepicker_ranges', $daterangepicker_ranges ); wp_add_inline_script( 'forminator-entries-datepicker-range', $daterangepicker_ranges ); add_filter( 'forminator_l10n', array( $this, 'add_l10n' ) ); } /** * Hook into forminator_l10n * * Allow to modify `daterangepicker` locale * * @param array $l10n locale. * * @return mixed */ public function add_l10n( $l10n ) { $daterangepicker_lang = array( 'daysOfWeek' => Forminator_Admin_L10n::get_short_days_names(), 'monthNames' => Forminator_Admin_L10n::get_months_names(), ); /** * Filter daterangepicker locale to be used * * @since 1.5.4 * * @param array $daterangepicker_lang */ $daterangepicker_lang = apply_filters( 'forminator_l10n_daterangepicker', $daterangepicker_lang ); $l10n['daterangepicker'] = $daterangepicker_lang; return $l10n; } /** * Override scripts to be loaded * * @since 1.11 * * @param string $hook Hook name. */ public function enqueue_scripts( $hook ) { parent::enqueue_scripts( $hook ); forminator_print_front_styles(); forminator_print_front_scripts(); } } settings-page.php 0000644 00000017623 15162221137 0010040 0 ustar 00 <?php /** * Forminator Settings Page * * @package Forminator */ if ( ! defined( 'ABSPATH' ) ) { die(); } /** * Class Forminator_Settings_Page * * @since 1.0 */ class Forminator_Settings_Page extends Forminator_Admin_Page { /** * Addons data that will be sent to settings page * * @var array */ private $addons_data = array(); /** * Addon list * * @var array */ public $addons_list = array(); /** * Init * * @return void */ public function init() { $this->process_request(); } /** * Enqueue scripts * * @param string $hook Hook name. * @return void */ public function enqueue_scripts( $hook ) { add_filter( 'forminator_data', array( $this, 'change_forminator_data' ) ); parent::enqueue_scripts( $hook ); wp_localize_script( 'forminator-admin', 'forminator_addons_data', $this->addons_data ); wp_enqueue_script( 'forminator-settings-page', forminator_plugin_url() . 'build/settings.js', array( 'jquery', 'wp-color-picker', 'react', 'react-dom', 'wp-element', ), FORMINATOR_VERSION, true ); } /** * Add select forms for creating new Appearance Preset * * @param array $data Data. * @return array */ public function change_forminator_data( $data ) { ob_start(); Forminator_Entries_Page::render_form_switcher(); $forms_select = ob_get_clean(); $data['forms_select'] = $forms_select; $data['presetNonce'] = wp_create_nonce( 'forminator_appearance_preset' ); $preset_id = Forminator_Core::sanitize_text_field( 'preset' ); if ( empty( $preset_id ) ) { $preset_id = 'default'; } $data['currentPreset'] = self::get_preset_settings( $preset_id ); return $data; } /** * Add new item in presets list. * * @param string $id ID. * @param string $name Name. */ public static function save_preset_list( $id, $name ) { $key = 'forminator_appearance_presets'; $preset_names = get_option( $key, array() ); $preset_names[ $id ] = $name; update_option( $key, $preset_names ); } /** * Get preset settings for apply to a form * * @param string $preset_id Preset ID. * @return array */ public static function get_preset( $preset_id ) { $data = self::get_preset_settings( $preset_id ); return $data['settings']; } /** * Get preset settings. * * @param string $id ID. * @return array */ private static function get_preset_settings( $id ) { $settings = get_option( 'forminator_appearance_preset_' . $id, array() ); if ( empty( $settings ) ) { $settings = Forminator_Custom_Form_Admin::get_default_settings( '' ); } $data = array( 'settings' => self::only_appearance_settings( $settings ), 'wrappers' => null, // to show all possible settings. ); return $data; } /** * Leave only Appearance settings * * @param array $all_settings All settings. * @return array */ public static function only_appearance_settings( $all_settings ) { // todo: refactor - it's better to use separate array `appearance` in the modal settings, // which includes all appearance settings. And then we can remove this method. $consist = array( '-font-family', '-custom-family', '-font-size', '-font-weight', '-border', '-background', '-color', '-placeholder', '-bg', '-icon', '-label', 'spacing', '-static', '-active', '-hover', 'multiupload-', 'calendar-dweek', 'timeline-text', ); $props = array( 'form-style', 'form-substyle', 'cform-color-settings', 'form-font-family', 'form-padding', 'form-padding-top', 'form-padding-bottom', 'form-padding-left', 'form-padding-right', 'form-border', 'form-border-radius', 'form-border-width', 'form-border-style', 'field-border', 'field-border-radius', 'field-border-width', 'fields-style', 'field-image-size', 'field-image-width', 'field-image-height', 'use-custom-css', 'custom_css', ); $settings = array(); foreach ( $all_settings as $key => $value ) { $apply = false; if ( in_array( $key, $props, true ) || 'basic-' === substr( $key, 0, 6 ) ) { $apply = true; } if ( ! $apply ) { foreach ( $consist as $end ) { if ( false !== strpos( $key, $end ) ) { $apply = true; break; } } } if ( ! $apply ) { continue; } $settings[ $key ] = $value; } return apply_filters( 'forminator_only_appearance_settings', $settings, $all_settings ); } /** * Get Appearance Preset names * * @return array */ public static function get_preset_names() { $preset_names = get_option( 'forminator_appearance_presets', array() ); if ( ! isset( $preset_names['default'] ) ) { self::save_preset_list( 'default', esc_html__( 'Default Preset', 'forminator' ) ); $preset_names = get_option( 'forminator_appearance_presets', array() ); } return $preset_names; } /** * Get Appearance preset selectbox HTML * * @return string */ public static function get_preset_selectbox() { $presets = self::get_preset_names(); ob_start(); echo '<select name="appearance_preset" class="sui-select">'; foreach ( $presets as $key => $peset_name ) { echo '<option value="' . esc_attr( $key ) . '">' . esc_html( $peset_name ) . '</option>'; } echo '</select>'; $select = ob_get_clean(); return $select; } /** * Before render * * @return void */ public function before_render() { if ( Forminator::is_addons_feature_enabled() ) { $this->prepare_addons(); } // Add js data for Permissions. add_filter( 'forminator_data', array( $this, 'add_permissions_js_data' ) ); } /** * Prepare addons * * @return void */ private function prepare_addons() { // cleanup activated addons. Forminator_Integration_Loader::get_instance()->cleanup_activated_addons(); Forminator_Integration_Admin_Ajax::get_instance()->generate_nonce(); $addons_list = forminator_get_registered_addons_list(); $this->addons_data = array( 'addons_list' => $addons_list, 'nonce' => Forminator_Integration_Admin_Ajax::get_instance()->get_nonce(), ); $this->addons_list = forminator_get_registered_addons_list(); } /** * Add js data * * @param mixed $data Data to add. * * @return mixed */ public function add_permissions_js_data( $data ) { if ( ! current_user_can( forminator_get_admin_cap() ) ) { return $data; } $permissions = get_option( 'forminator_permissions', array() ); $data['mainSettings'] = array( 'permissions' => $permissions, 'modal' => array(), ); $data['permission_nonce'] = wp_create_nonce( 'forminator_permission_nonce' ); return $data; } /** * Process request * * @return void */ public function process_request() { $nonce = Forminator_Core::sanitize_text_field( 'forminatorNonce' ); if ( ! $nonce ) { return; } if ( ! wp_verify_nonce( $nonce, 'forminatorSettingsRequest' ) ) { return; } $is_redirect = true; $action = Forminator_Core::sanitize_text_field( 'forminator_action' ); switch ( $action ) { case 'reset_plugin_settings': forminator_reset_settings(); $query_args = array( 'section' => 'data', 'forminator_notice' => 'settings_reset', ); break; case 'disconnect_stripe': if ( class_exists( 'Forminator_Gateway_Stripe' ) ) { Forminator_Gateway_Stripe::store_settings( array() ); } break; case 'disconnect_paypal': if ( class_exists( 'Forminator_PayPal_Express' ) ) { Forminator_PayPal_Express::store_settings( array() ); } break; default: break; } if ( $is_redirect ) { $to_referer = true; $args = array( 'page' => $this->get_admin_page(), ); if ( ! empty( $query_args ) ) { $args = array_merge( $args, $query_args ); $to_referer = false; } $fallback_redirect = add_query_arg( $args, admin_url( 'admin.php' ) ); $this->maybe_redirect_to_referer( $fallback_redirect, $to_referer ); } exit; } }