__  __    __   __  _____      _            _          _____ _          _ _ 
 |  \/  |   \ \ / / |  __ \    (_)          | |        / ____| |        | | |
 | \  / |_ __\ V /  | |__) | __ ___   ____ _| |_ ___  | (___ | |__   ___| | |
 | |\/| | '__|> <   |  ___/ '__| \ \ / / _` | __/ _ \  \___ \| '_ \ / _ \ | |
 | |  | | |_ / . \  | |   | |  | |\ V / (_| | ||  __/  ____) | | | |  __/ | |
 |_|  |_|_(_)_/ \_\ |_|   |_|  |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1
 if you need WebShell for Seo everyday contact me on Telegram
 Telegram Address : @jackleet
        
        
For_More_Tools: Telegram: @jackleet | Bulk Smtp support mail sender | Business Mail Collector | Mail Bouncer All Mail | Bulk Office Mail Validator | Html Letter private



Upload:

Command:

[email protected]: ~ $
<?php

namespace WPForms\Pro\Admin\Entries;

/**
 * Entries FilterSearch trait.
 *
 * @since 1.6.9
 */
trait FilterSearch {

	/**
	 * Array of filtering arguments.
	 *
	 * @since 1.6.9
	 *
	 * @var array
	 */
	protected $filter = [];

	/**
	 * Watch for filtering requests from a search field.
	 *
	 * @since 1.6.9
	 */
	public function process_filter_search() {

		$form_id = $this->get_filtered_form_id();

		// phpcs:disable WordPress.Security.NonceVerification.Recommended

		// Check for run switch and that all data is present.
		if (
			! $form_id ||
			! isset( $_REQUEST['search'] ) ||
			(
				! isset( $_REQUEST['search']['term'] ) ||
				! isset( $_REQUEST['search']['field'] ) ||
				empty( $_REQUEST['search']['comparison'] )
			)
		) {
			return;
		}

		$term = sanitize_text_field( wp_unslash( $_REQUEST['search']['term'] ) );

		/*
		 * Because empty fields were not migrated to a fields table in 1.4.3, we don't have that data
		 * and can't filter those with empty values.
		 * The current workaround - display all entries (instead of none at all).
		 */
		// phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized, WordPress.Security.ValidatedSanitizedInput.MissingUnslash
		if ( wpforms_is_empty_string( $term ) && wpforms_is_empty_string( $_REQUEST['search']['term'] ) ) {
			return;
		}

		// Prepare the data.
		$field      = sanitize_text_field( wp_unslash( $_REQUEST['search']['field'] ) ); // We must use as a string for the work field with id equal 0.
		$comparison = sanitize_text_field( wp_unslash( $_REQUEST['search']['comparison'] ) );
		$comparison = in_array( $comparison, [ 'contains', 'contains_not', 'is', 'is_not' ], true ) ? $comparison : 'contains';

		// phpcs:enable WordPress.Security.NonceVerification.Recommended

		$term = $this->prepare_term( $term );

		$args = [
			'select'        => 'entry_ids',
			'form_id'       => $form_id,
			'value'         => $term,
			'value_compare' => $comparison,
		];

		if ( is_numeric( $field ) ) {
			$args['field_id'] = $field;
		} else {
			$args['advanced_search'] = $field !== 'any' ? $field : '';
		}

		$this->filter = array_merge(
			$this->filter,
			$args,
			[
				'is_filtered' => true,
				'select'      => 'all',
			]
		);

		// We shouldn't limit searching by the fields.
		// Limiting the results will be done later in `WPForms_Entry_Handler::get_entries()`.
		$args['number'] = -1;

		$entries = '';

		if ( empty( $args['advanced_search'] ) && $field !== 'any' ) {
			$entries = wpforms()->obj( 'entry_fields' )->get_fields( $args );
		}

		$this->prepare_entry_ids_for_get_entries_args( $entries );

		add_filter( 'wpforms_entry_handler_get_entries_args', [ $this, 'get_filtered_entry_table_args' ] );
	}

	/**
	 * Prepare the term for the search.
	 *
	 * Allows replacing currency symbols with their html entities.
	 * This is needed because some currency symbols are stored in the database as html entities.
	 *
	 * @since 1.8.9
	 *
	 * @param string $term Search term.
	 *
	 * @return string
	 */
	protected function prepare_term( string $term ): string {

		$currencies_map = [];

		$currencies = wpforms_get_currencies();

		foreach ( $currencies as $currency ) {
			$currencies_map[ html_entity_decode( $currency['symbol'] ) ] = $currency['symbol'];
		}

		return str_replace( array_keys( $currencies_map ), array_values( $currencies_map ), $term );
	}

	/**
	 * Get the entry IDs based on the entries array and pass it further to the
	 * WPForms_Entry_Handler::get_entries() method via a filter.
	 *
	 * @since 1.6.9
	 *
	 * @param array $entries Entries search by form fields result set.
	 */
	protected function prepare_entry_ids_for_get_entries_args( $entries ) {

		$entry_ids = [];

		if ( is_array( $entries ) ) {
			$entry_ids = wp_list_pluck( $entries, 'entry_id' );
		}

		$entry_ids = array_unique( $entry_ids );

		$this->filter['entry_id'] = $entry_ids;

		// In case of Advanced Search and if some html entered to the search box we need to return nothing.
		if (
			empty( $this->filter['value'] ) &&
			! empty( $_REQUEST['search']['term'] ) && // phpcs:ignore WordPress.Security.NonceVerification.Recommended
			! empty( $this->filter['advanced_search'] )
		) {
			$this->filter['entry_id'] = '0';
		}
	}

	/**
	 * Merge default arguments to entries retrieval with the one we send to filter.
	 *
	 * @since 1.6.9
	 *
	 * @param array $args Arguments.
	 *
	 * @return array Filtered arguments.
	 */
	public function get_filtered_entry_table_args( $args ) {

		if ( empty( $this->filter['is_filtered'] ) ) {
			return $args;
		}

		return array_merge( $args, $this->filter );
	}

	/**
	 * Get filtered form ID.
	 *
	 * @since 1.6.9
	 *
	 * @return int
	 */
	private function get_filtered_form_id() {

		// phpcs:disable WordPress.Security.NonceVerification.Recommended
		if ( ! empty( $_REQUEST['form_id'] ) ) {
			return absint( $_REQUEST['form_id'] );
		}

		return ! empty( $_REQUEST['form'] ) ? absint( $_REQUEST['form'] ) : 0;
		// phpcs:enable WordPress.Security.NonceVerification.Recommended
	}
}

Filemanager

Name Type Size Permission Actions
Ajax Folder 0750
Export Folder 0750
Overview Folder 0750
Table Folder 0750
Edit.php File 50.88 KB 0640
FilterSearch.php File 4.93 KB 0640
Handler.php File 1.54 KB 0640
Helpers.php File 1.23 KB 0640
ListTable.php File 57.47 KB 0640
Page.php File 37.58 KB 0640
PageOptions.php File 1.86 KB 0640
PrintPreview.php File 14.27 KB 0640
Filemanager