File ManagerCurrent Directory: wp-content/plugins/wpforms/src/Pro/Admin/Entries/Export/TraitsLinux appserver-0d5e4f1e-php-cc8da225320a42ba9b7d66cba40b1f03 6.6.123+ #1 SMP PREEMPT_DYNAMIC Wed Mar 11 09:04:28 UTC 2026 x86_64Edit File: Export.php <?php namespace WPForms\Pro\Admin\Entries\Export\Traits; /** * Export trait. * * @since 1.8.5 */ trait Export { /** * Get dynamic columns notice. * * @since 1.8.5 * * @param int $dynamic_choices_count Dynamic choices count. * * @return string */ private function get_dynamic_columns_notice( $dynamic_choices_count ) { return sprintf( /* translators: %d - dynamic columns count. */ esc_html__( 'This form has %d dynamic columns. Exporting dynamic columns will increase the size of the exported table.', 'wpforms' ), $dynamic_choices_count ); } /** * Get dynamic choices count. * * @since 1.8.5 * * @param array $fields Fields array. * * @return int */ private function get_dynamic_choices_count( $fields ) { $count = 0; if ( empty( $fields ) ) { return $count; } foreach ( $fields as $field ) { if ( $this->is_dynamic_choices( $field ) && $this->is_multiple_input( $field ) ) { $dynamic_choices = wpforms_get_field_dynamic_choices( $field, $this->export->data['form_data']['id'], $this->export->data['form_data'] ); $count += count( $dynamic_choices ); } } return $count; } /** * Check if field is multiple input. * * @since 1.8.5 * * @param array $field Field data. * * @return bool */ private function is_multiple_input( $field ) { // phpcs:ignore Generic.Metrics.CyclomaticComplexity.TooHigh /** * Filter to allow multiple input for specific fields. * * @since 1.8.5 * * @param bool $is_multiple_input Is multiple input. * @param array $field Field data. */ if ( ! apply_filters( 'wpforms_pro_admin_entries_export_allow_multiple_input_field', true, $field ) ) { return false; } $type = $field['type']; $available_types = [ 'name', 'address', 'select', 'checkbox', 'file-upload', 'likert_scale', 'payment-checkbox', 'payment-single', 'payment-select', ]; if ( ! in_array( $type, $available_types, true ) ) { return false; } // Check if select is multiple. if ( $type === 'select' && ! empty( $field['multiple'] ) ) { return true; } // Check if file upload is multiple. if ( $type === 'file-upload' && $field['max_file_number'] > 1 ) { return true; } // Check if name field is multi-input. if ( $type === 'name' && in_array( $field['format'], [ 'first-last', 'first-middle-last' ], true ) ) { return true; } // The rest of the fields are multiple choice by default. if ( in_array( $type, [ 'checkbox', 'payment-checkbox', 'likert_scale', 'address' ], true ) ) { return true; } // Check if quantity is enabled. if ( in_array( $type, [ 'payment-select', 'payment-single' ], true ) && $this->is_payment_quantities_enabled( $field ) ) { return true; } // Return false for single select and file upload fields. return false; } /** * Check if field has dynamic choices. * * @since 1.8.5 * * @param array $field Field data. * * @return bool */ private function is_dynamic_choices( $field ) { return isset( $field['dynamic_choices'] ) && $field['dynamic_choices']; } /** * Get available form entry statuses. * * @since 1.8.5 * * @param int $form_id Form ID. * * @return array */ private function get_available_form_entry_statuses( $form_id ) { global $wpdb; // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching $statuses = $wpdb->get_col( $wpdb->prepare( "SELECT DISTINCT `status` FROM {$wpdb->prefix}wpforms_entries WHERE `form_id` = %d", $form_id ) ); $statuses = array_map( static function ( $status ) { return [ 'value' => $status ? $status : 'published', // published entries have empty status. 'label' => $status ? ucwords( sanitize_text_field( $status ) ) : __( 'Published', 'wpforms' ), // null should be 'Published' for UI. ]; }, $statuses ); return array_values( array_filter( $statuses ) ); } /** * Get field ID from multiple field ID. * * @since 1.8.6 * * @param string $col_id Column ID. * * @return string */ private function get_multiple_field_id( string $col_id ): string { // Get multiple field id. Contains field id and value id. // See get_csv_cols method. // $col_id: 'multiple_field_' . $field_id . '_' . $key. $id = str_replace( 'multiple_field_', '', $col_id ); // Get field id and value id. // $id: $field_id . '_' . $key. $multiple_key = explode( '_', $id ); // The First element is field id. return $multiple_key[0] ?? ''; } /** * Check if value should be skipped. * * @since 1.8.6 * * @param string $value Field value. * @param array $fields Fields array. * @param string $col_id Column ID. * * @return bool */ private function is_skip_value( string $value, array $fields, string $col_id ): bool { // No skip for AJAX requests. if ( wpforms_is_ajax() ) { return false; } $field = $fields[ $this->get_multiple_field_id( $col_id ) ] ?? []; if ( empty( $field ) ) { return false; } // Skip empty values only for available fields. $available_types = [ 'select', 'checkbox', 'payment-checkbox', ]; if ( ! in_array( $field['type'], $available_types, true ) ) { return false; } /** * Filters whether to skip not selected choices for multiple fields. * * @since 1.8.6 * * @param bool $skip_not_selected_choices Whether to skip not selected choices. */ $skip_not_selected_choices = apply_filters( 'wpforms_pro_admin_entries_export_skip_not_selected_choices', false ); // phpcs:ignore WPForms.PHP.ValidateHooks.InvalidHookName return empty( $value ) && $skip_not_selected_choices; } /** * Determine if payment quantities enabled. * * @since 1.8.7 * * @param array $field Field settings. * * @return bool */ private function is_payment_quantities_enabled( $field ) { if ( empty( $field['enable_quantity'] ) ) { return false; } // Quantity available only for `single` format of the Single payment field. if ( $field['type'] === 'payment-single' && $field['format'] !== 'single' ) { return false; } // Otherwise return true. return true; } } Upload File Directory Listing NameTypeSizeActions.. (Parent Directory)DirExport.phpFile6.11 KB Rename | Delete | Edit