/
home
/
techb158
/
balacoffee.com
/
wp-content
/
plugins
/
wpforms
/
src
/
Pro
/
Admin
/
Entries
/
Export
/
/home/techb158/balacoffee.com/wp-content/plugins/wpforms/src/Pro/Admin/Entries/Export
mkdir
upload
Name
Size
Mode
Actions
Admin.php
12200
0644
edit
dl
rm
Ajax.php
20434
0644
edit
dl
rm
Export.php
12789
0644
edit
dl
rm
File.php
12894
0644
edit
dl
rm
Edit:
/home/techb158/balacoffee.com/wp-content/plugins/wpforms/src/Pro/Admin/Entries/Export/Export.php
(12789B)
<?php namespace WPForms\Pro\Admin\Entries\Export; /** * Entries Export. * * @since 1.5.5 */ class Export { /** * ActionScheduler task name for cleaning up orphaned export files. * * @since 1.6.5 */ const TASK_CLEANUP = 'wpforms_pro_admin_entries_export_remove_old_export_files'; /** * Configuration. * * @since 1.5.5 * * @var array */ public $configuration = [ 'request_data_ttl' => DAY_IN_SECONDS, // Export request and a temp file TTL value. 'entries_per_step' => 5000, // Number of entries in a chunk that are retrieved and saved into a temp file per one iteration. 'csv_export_separator' => ',', // Columns separator. 'disallowed_fields' => [ // Disallowed fields array. 'captcha', 'entry-preview', 'divider', 'html', 'pagebreak', 'internal-information', 'content', 'layout', ], ]; /** * Translatable strings for JS responses. * * @since 1.5.5 * * @var array */ public $i18n = []; /** * Error messages. * * @since 1.5.5 * * @var array */ public $errors = []; /** * Additional Information checkboxes. * * @since 1.5.5 * * @var array */ public $additional_info_fields = []; /** * Type checkboxes. * * @since 1.6.5 * * @var array */ public $export_options_fields = []; /** * Array for store/read some data. * * @since 1.5.5 * * @var array */ public $data = []; /** * Instance of Admin Object. * * @since 1.5.5 * * @var Admin */ public $admin; /** * Instance of Ajax Object. * * @since 1.5.5 * * @var Ajax */ public $ajax; /** * Instance of File Object. * * @since 1.5.5 * * @var File */ public $file; /** * Initialize. * * @since 1.6.1 */ public function init() { if ( ! wpforms_current_user_can( 'view_entries' ) && ! wp_doing_cron() ) { return; } if ( ! $this->is_entries_export_ajax() && ! wpforms_is_admin_page( 'tools' ) && ! wp_doing_cron() ) { return; } $this->init_args(); $this->init_settings(); $this->init_form_data(); $this->admin = new Admin( $this ); $this->file = new File( $this ); $this->ajax = new Ajax( $this ); } /** * Init data. * * @since 1.5.5 */ protected function init_settings() { // Additional information fields. $this->additional_info_fields = [ 'entry_id' => esc_html__( 'Entry ID', 'wpforms' ), 'date' => esc_html__( 'Entry Date', 'wpforms' ), 'notes' => esc_html__( 'Entry Notes', 'wpforms' ), 'status' => esc_html__( 'Entry Status', 'wpforms' ), 'viewed' => esc_html__( 'Viewed', 'wpforms' ), 'starred' => esc_html__( 'Starred', 'wpforms' ), 'user_agent' => esc_html__( 'User Agent', 'wpforms' ), 'ip_address' => esc_html__( 'User IP', 'wpforms' ), 'user_uuid' => esc_html__( 'Unique Generated User ID', 'wpforms' ), 'pstatus' => esc_html__( 'Payment Status', 'wpforms' ), 'pginfo' => esc_html__( 'Payment Gateway Information', 'wpforms' ), 'del_fields' => esc_html__( 'Include data of previously deleted fields', 'wpforms' ), ]; if ( function_exists( 'wpforms_geolocation' ) ) { $this->additional_info_fields['geodata'] = esc_html__( 'Geolocation Details', 'wpforms' ); } /** * Additional information fields for entries export. * * @since 1.5.5.1 * * @param array $fields Additional info fields. */ $this->additional_info_fields = apply_filters( 'wpforms_pro_admin_entries_export_additional_info_fields', $this->additional_info_fields ); // This option should be available only if zip PHP extension is loaded. if ( class_exists( 'ZipArchive' ) ) { $this->export_options_fields['xlsx'] = esc_html__( 'Export in Microsoft Excel (.xlsx)', 'wpforms' ); } // Export options fields. $this->export_options_fields = apply_filters( 'wpforms_pro_admin_entries_export_options_fields', $this->export_options_fields ); // Error strings. $this->errors = [ 'common' => esc_html__( 'There were problems while preparing your export file. Please recheck export settings and try again.', 'wpforms' ), 'security' => esc_html__( 'You don\'t have enough capabilities to complete this request.', 'wpforms' ), 'unknown_form_id' => esc_html__( 'Incorrect form ID has been specified.', 'wpforms' ), 'unknown_entry_id' => esc_html__( 'Incorrect entry ID has been specified.', 'wpforms' ), 'form_data' => esc_html__( 'Specified form seems to be broken.', 'wpforms' ), 'unknown_request' => esc_html__( 'Unknown request.', 'wpforms' ), 'file_not_readable' => esc_html__( 'Export file cannot be retrieved from a file system.', 'wpforms' ), 'file_empty' => esc_html__( 'Export file is empty.', 'wpforms' ), 'form_empty' => esc_html__( 'The form does not have any fields for export.', 'wpforms' ), 'file_system_not_configured' => esc_html__( 'File system is not configured.', 'wpforms' ), ]; // Strings to localize. $this->i18n = [ 'error_prefix' => $this->errors['common'], 'error_form_empty' => $this->errors['form_empty'], 'label_select_all' => esc_html__( 'Select All', 'wpforms' ), 'prc_1_filtering' => esc_html__( 'Generating a list of entries according to your filters.', 'wpforms' ), 'prc_1_please_wait' => esc_html__( 'This can take a while. Please wait.', 'wpforms' ), 'prc_2_no_entries' => esc_html__( 'No entries found after applying your filters.', 'wpforms' ), 'prc_3_done' => esc_html__( 'The file was generated successfully.', 'wpforms' ), 'prc_3_download' => esc_html__( 'If the download does not start automatically', 'wpforms' ), 'prc_3_click_here' => esc_html__( 'click here', 'wpforms' ), ]; // Keeping default configuration data. $default_configuration = $this->configuration; // Applying deprecated filters. if ( has_filter( 'wpforms_export_fields_allowed' ) ) { // We need this because otherwise files can't be downloaded due to 'filter deprecated' notice. // Notice will be shown only on the WPForms > Tools > Export page. if ( 'wpforms_tools_entries_export_download' === $this->data['get_args']['action'] || 'wpforms_tools_single_entry_export_download' === $this->data['get_args']['action'] ) { ini_set( 'display_errors', 0 ); // phpcs:ignore } require_once WPFORMS_PLUGIN_DIR . 'pro/includes/admin/entries/class-entries-export.php'; $old_export = new \WPForms_Entries_Export(); $all_fields = $old_export->all_fields(); $allowed_fields = $old_export->allowed_fields(); $disallowed_fields = array_diff( $all_fields, $allowed_fields ); $this->configuration['disallowed_fields'] = array_unique( array_merge( $this->configuration['disallowed_fields'], $disallowed_fields ) ); } if ( has_filter( 'wpforms_csv_export_separator' ) ) { if ( 'wpforms_tools_entries_export_download' === $this->data['get_args']['action'] || 'wpforms_tools_single_entry_export_download' === $this->data['get_args']['action'] ) { ini_set( 'display_errors', 0 ); // phpcs:ignore } $this->configuration['csv_export_separator'] = (string) apply_filters_deprecated( 'wpforms_csv_export_separator', [ $this->configuration['csv_export_separator'] ], '1.5.5 of the WPForms plugin', 'wpforms_pro_admin_entries_export_configuration' ); } // Apply filter to config parameters. $this->configuration = (array) apply_filters( 'wpforms_pro_admin_entries_export_configuration', $this->configuration ); $this->configuration['disallowed_fields'] = (array) $this->configuration['disallowed_fields']; $this->configuration = wp_parse_args( $this->configuration, $default_configuration ); } /** * Get localized data. * * @since 1.5.5 */ public function get_localized_data() { return [ 'nonce' => wp_create_nonce( 'wpforms-tools-entries-export-nonce' ), 'lang_code' => sanitize_key( wpforms_get_language_code() ), 'export_page' => esc_url( admin_url( 'admin.php?page=wpforms-tools&view=export' ) ), 'i18n' => $this->i18n, 'form_id' => ! empty( $this->data['form_data'] ) ? $this->data['get_args']['form_id'] : 0, 'dates' => $this->data['get_args']['dates'], ]; } /** * Init GET or POST args. * * @since 1.5.5 * * @param string $method GET|POST. */ public function init_args( $method = 'GET' ) { $args = []; $method = $method === 'GET' ? 'GET' : 'POST'; $req = $method === 'GET' ? $_GET : $_POST; // phpcs:ignore WordPress.Security.NonceVerification.Recommended, WordPress.Security.NonceVerification.Missing // Action. $args['action'] = ''; if ( ! empty( $req['action'] ) ) { $args['action'] = sanitize_text_field( wp_unslash( $req['action'] ) ); } // Nonce. $args['nonce'] = ''; if ( ! empty( $req['nonce'] ) ) { $args['nonce'] = sanitize_text_field( wp_unslash( $req['nonce'] ) ); } // Form ID. $args['form_id'] = 0; if ( ! empty( $req['form'] ) ) { $args['form_id'] = (int) $req['form']; } // Entry ID. $args['entry_id'] = 0; if ( ! empty( $req['entry_id'] ) ) { $args['entry_id'] = (int) $req['entry_id']; } // Fields. $args['fields'] = []; if ( ! empty( $req['fields'] ) ) { $args['fields'] = array_map( 'intval', wp_unslash( $req['fields'] ) ); } // Additional Information. $args['additional_info'] = []; if ( ! empty( $req['additional_info'] ) ) { $args['additional_info'] = array_map( 'sanitize_text_field', wp_unslash( $req['additional_info'] ) ); } // Export Options Information. $args['export_options'] = []; if ( ! empty( $req['export_options'] ) ) { $args['export_options'] = array_map( 'sanitize_text_field', wp_unslash( $req['export_options'] ) ); } // Date range. $args['dates'] = []; if ( ! empty( $req['date'] ) ) { $dates = explode( ' - ', sanitize_text_field( wp_unslash( $req['date'] ) ) ); switch ( count( $dates ) ) { case 1: $args['dates'] = sanitize_text_field( $req['date'] ); break; case 2: $args['dates'] = array_map( 'sanitize_text_field', $dates ); break; } } // Search. $args['search'] = [ 'field' => 'any', 'comparison' => 'contains', 'term' => '', ]; if ( isset( $req['search'] ) ) { if ( isset( $req['search']['field'] ) ) { $args['search']['field'] = sanitize_key( $req['search']['field'] ); } if ( ! empty( $req['search']['comparison'] ) ) { $args['search']['comparison'] = sanitize_key( $req['search']['comparison'] ); } if ( ! empty( $req['search']['term'] ) ) { $args['search']['term'] = sanitize_text_field( $req['search']['term'] ); } } // Request ID. $args['request_id'] = ''; if ( ! empty( $req['request_id'] ) ) { $args['request_id'] = sanitize_text_field( wp_unslash( $req['request_id'] ) ); } $this->data[ strtolower( $method ) . '_args' ] = $args; } /** * Init selected form data. * * @since 1.5.5 */ protected function init_form_data() { $this->data['form_data'] = wpforms()->form->get( $this->data['get_args']['form_id'], [ 'content_only' => true, 'cap' => 'view_entries_form_single', ] ); } /** * Check if current page request meets requirements for Export tool. * * @since 1.5.5 * @deprecated 1.7.6 * * @return bool */ public function is_tools_export_page() { _deprecated_function( __METHOD__, '1.7.6 of the WPForms plugin' ); // Only proceed for the Tools > Export. if ( ! wpforms_is_admin_page( 'tools', 'export' ) ) { return false; } return true; } /** * Helper function to determine if it is entries export ajax request. * * @since 1.6.1 * * @return bool */ public function is_entries_export_ajax() { // phpcs:ignore Generic.Metrics.CyclomaticComplexity.TooHigh if ( ! wp_doing_ajax() ) { return false; } $ref = wp_get_raw_referer(); if ( ! $ref ) { return false; } $query = wp_parse_url( $ref, PHP_URL_QUERY ); wp_parse_str( $query, $query_vars ); if ( empty( $query_vars['page'] ) || $query_vars['page'] !== 'wpforms-tools' ) { return false; } // phpcs:disable WordPress.Security.NonceVerification.Recommended if ( empty( $_REQUEST['action'] ) || empty( $_REQUEST['nonce'] ) || ( empty( $_REQUEST['form'] ) && empty( $_REQUEST['request_id'] ) ) ) { return false; } if ( $_REQUEST['action'] !== 'wpforms_tools_entries_export_form_data' && $_REQUEST['action'] !== 'wpforms_tools_entries_export_step' ) { return false; } // phpcs:enable WordPress.Security.NonceVerification.Recommended return true; } }
Save
cmd:
run