$83 GRAYBYTE WORDPRESS FILE MANAGER $79

SERVER : vnpttt-amd7f72-h1.vietnix.vn #1 SMP Fri May 24 12:42:50 UTC 2024
SERVER IP : 103.200.23.149 | ADMIN IP 216.73.216.22
OPTIONS : CRL = ON | WGT = ON | SDO = OFF | PKEX = OFF
DEACTIVATED : NONE

/home/bqrcodec/contact.fpt.auto/wp-content/plugins/jetformbuilder/includes/blocks/

HOME
Current File : /home/bqrcodec/contact.fpt.auto/wp-content/plugins/jetformbuilder/includes/blocks//validation.php
<?php


namespace Jet_Form_Builder\Blocks;

use Jet_Form_Builder\Blocks\Advanced_Rules\Match_Not_Regexp_Rule;
use Jet_Form_Builder\Blocks\Advanced_Rules\Match_Regexp_Rule;
use Jet_Form_Builder\Blocks\Advanced_Rules\Must_Contain_Characters_Rule;
use Jet_Form_Builder\Blocks\Advanced_Rules\Must_Equal_Rule;
use Jet_Form_Builder\Blocks\Advanced_Rules\Must_Not_Contain_Characters_Rule;
use Jet_Form_Builder\Blocks\Advanced_Rules\Server_Side_Rule;
use Jet_Form_Builder\Blocks\Ssr_Validation\Validation_Callbacks;
use Jet_Form_Builder\Blocks\Types\Base;
use Jet_Form_Builder\Blocks\Validation_Messages\Base_Message;
use Jet_Form_Builder\Blocks\Validation_Messages\Is_Char_Max;
use Jet_Form_Builder\Blocks\Validation_Messages\Is_Char_Min;
use Jet_Form_Builder\Blocks\Validation_Messages\Is_Date_Max;
use Jet_Form_Builder\Blocks\Validation_Messages\Is_Date_Min;
use Jet_Form_Builder\Blocks\Validation_Messages\Is_Empty_Value;
use Jet_Form_Builder\Blocks\Validation_Messages\Is_File_Ext;
use Jet_Form_Builder\Blocks\Validation_Messages\Is_File_Size;
use Jet_Form_Builder\Blocks\Validation_Messages\Is_Files_Max;
use Jet_Form_Builder\Blocks\Validation_Messages\Is_Not_Complete_Mask;
use Jet_Form_Builder\Blocks\Validation_Messages\Is_Not_Valid_Email;
use Jet_Form_Builder\Blocks\Validation_Messages\Is_Not_Valid_Url;
use Jet_Form_Builder\Blocks\Validation_Messages\Is_Number_Max;
use Jet_Form_Builder\Blocks\Validation_Messages\Is_Number_Min;
use Jet_Form_Builder\Classes\Arrayable\Array_Tools;
use Jet_Form_Builder\Classes\Arrayable\Arrayable;
use Jet_Form_Builder\Classes\Instance_Trait;
use Jet_Form_Builder\Classes\Tools;
use Jet_Form_Builder\Plugin;

// If this file is called directly, abort.
if ( ! defined( 'WPINC' ) ) {
	die;
}

/**
 * @method static Validation instance()
 *
 * Class Validation_Messages
 * @package Jet_Form_Builder\Blocks
 */
class Validation implements Arrayable {

	use Instance_Trait;

	const FORMAT_ADVANCED = 'advanced';
	const FORMAT_BROWSER  = 'browser';
	const HANDLE          = 'jet-fb-advanced-reporting';

	/**
	 * @var Base_Message[]
	 */
	private $messages;
	public $callbacks;
	private $settings        = array();
	private $inline_messages = array();

	public function __construct() {
		$this->messages = apply_filters(
			'jet-form-builder/validation-messages',
			$this->get_messages()
		);

		$this->callbacks = new Validation_Callbacks();

		add_filter(
			'jet-form-builder/before-start-form',
			array( $this, 'add_validation_messages_global' )
		);
		add_action(
			'jet-form-builder/before-start-form-row',
			array( $this, 'add_validation_block' )
		);
		add_action(
			'wp_enqueue_scripts',
			array( $this, 'register_scripts' )
		);

		/**
		 * @link https://github.com/Crocoblock/issues-tracker/issues/1542
		 */
		add_action(
			'jet_plugins/frontend/register_scripts',
			array( $this, 'register_scripts' )
		);
	}

	/**
	 * @return Base_Message[]
	 */
	private function get_messages(): array {
		return array(
			new Is_Empty_Value(),
			new Is_Number_Min(),
			new Is_Number_Max(),
			new Is_Char_Min(),
			new Is_Char_Max(),
			new Is_Not_Valid_Email(),
			new Is_Not_Valid_Url(),
			new Is_Not_Complete_Mask(),
			new Is_Files_Max(),
			new Is_File_Size(),
			new Is_File_Ext(),
			new Is_Date_Min(),
			new Is_Date_Max(),
		);
	}

	public function register_scripts() {
		wp_register_script(
			self::HANDLE,
			Plugin::instance()->plugin_url( 'assets/js/frontend/advanced.reporting.js' ),
			array(
				Manager::MAIN_SCRIPT_HANDLE,
			),
			Plugin::instance()->get_version(),
			true
		);
	}

	public function add_validation_messages_global( string $markup, bool $force = false ): string {
		$this->settings = $this->get_settings();
		$form_id        = jet_fb_live()->form_id;

		if (
			( ! $this->is_advanced_form() && ! $force ) ||
			in_array( $form_id, $this->inline_messages, true )
		) {
			return $markup;
		}

		$data = Tools::encode_json( $this->settings );

		wp_add_inline_script(
			Manager::MAIN_SCRIPT_HANDLE,
			"
			window.JetFormsValidation = window.JetFormsValidation ?? {};
			window.JetFormsValidation[ {$form_id} ] = $data;
			"
		);

		add_action(
			'wp_enqueue_scripts',
			function () use ( $form_id, $data ) {
				wp_add_inline_script(
					Manager::MAIN_SCRIPT_HANDLE,
					"
			window.JetFormsValidation = window.JetFormsValidation ?? {};
			window.JetFormsValidation[ {$form_id} ] = $data;
			"
				);
			},
			20
		);

		$this->inline_messages[] = $form_id;

		return $markup;
	}

	public function add_validation_block( Base $block ) {
		/**
		 * If in post meta enable Advanced validation
		 * or right in block settings
		 */
		if ( ! $this->is_advanced( $block ) ) {
			return;
		}
		wp_enqueue_script( self::HANDLE );

		$this->add_validation_messages_global( '', true );

		$type  = $this->get_block_type( $block );
		$rules = $block->block_attrs['validation']['rules'] ?? array();

		$block->add_attribute( 'data-validation-type', $type ?: 'inherit' );

		if ( ! empty( $rules ) ) {
			$this->prepare_rules( $rules );

			$block->add_attribute(
				'data-validation-rules',
				Tools::encode_json( $rules )
			);
		}

		/**
		 * If advanced validation not enabled right in block settings
		 */
		if ( self::FORMAT_ADVANCED !== $type ) {
			return;
		}

		$messages = $block->block_attrs['validation']['messages'] ?? array();

		if ( ! empty( $messages ) ) {
			$block->add_attribute( 'data-validation-messages', Tools::encode_json( $messages ) );
		}
	}

	public function get_settings(): array {
		$validation = jet_form_builder()->post_type->get_validation( jet_fb_live()->form_id );

		$response = array(
			'type'     => $validation['type'] ?? self::FORMAT_BROWSER,
			'messages' => array(),
		);

		foreach ( $this->messages as $message ) {
			$response['messages'][ $message->get_id() ] = (
				$validation['messages'][ $message->get_id() ] ?? $message->get_initial()
			);
		}

		return $response;
	}

	public function is_advanced( Base $block ): bool {
		$type = $this->get_block_type( $block );

		return $type
			? self::FORMAT_ADVANCED === $type
			: $this->is_advanced_form();
	}

	public function is_advanced_form(): bool {
		return self::FORMAT_ADVANCED === ( $this->settings['type'] ?? '' );
	}

	protected function get_block_type( Base $block ): string {
		return $block->block_attrs['validation']['type'] ?? '';
	}

	public function formats(): array {
		return array(
			array(
				'value' => self::FORMAT_BROWSER,
				'label' => __( 'Default', 'jet-form-builder' ),
				'title' => __( 'Browser native validation', 'jet-form-builder' ),
			),
			array(
				'value' => self::FORMAT_ADVANCED,
				'label' => __( 'Advanced', 'jet-form-builder' ),
				'title' => __( 'More flexible JetFormBuilder\'s validation', 'jet-form-builder' ),
			),
		);
	}

	public function rule_types(): array {
		return Array_Tools::to_array(
			array(
				new Must_Equal_Rule(),
				new Must_Contain_Characters_Rule(),
				new Must_Not_Contain_Characters_Rule(),
				new Match_Regexp_Rule(),
				new Match_Not_Regexp_Rule(),
				new Server_Side_Rule(),
			)
		);
	}

	public function to_array(): array {
		return array(
			'messages'      => Array_Tools::to_array( $this->messages ),
			'ssr_callbacks' => Array_Tools::to_array( $this->callbacks->get_items() ),
			'formats'       => $this->formats(),
			'rule_types'    => $this->rule_types(),
		);
	}

	public function prepare_rules( array &$rules ) {
		foreach ( $rules as &$rule ) {
			$rule['value'] = jet_fb_parse_dynamic( $rule['value'] ?? '' );
		}
	}

}

Current_dir [ WRITEABLE ] Document_root [ WRITEABLE ]


[ Back ]
NAME
SIZE
LAST TOUCH
USER
CAN-I?
FUNCTIONS
..
--
30 Jan 2024 5.36 PM
bqrcodec / bqrcodec
0755
advanced-rules
--
30 Jan 2024 5.36 PM
bqrcodec / bqrcodec
0755
button-types
--
30 Jan 2024 5.36 PM
bqrcodec / bqrcodec
0755
conditional-block
--
30 Jan 2024 5.36 PM
bqrcodec / bqrcodec
0755
exceptions
--
30 Jan 2024 5.36 PM
bqrcodec / bqrcodec
0755
modules
--
30 Jan 2024 5.36 PM
bqrcodec / bqrcodec
0755
render
--
30 Jan 2024 5.36 PM
bqrcodec / bqrcodec
0755
ssr-validation
--
30 Jan 2024 5.36 PM
bqrcodec / bqrcodec
0755
types
--
30 Jan 2024 5.36 PM
bqrcodec / bqrcodec
0755
validation-messages
--
30 Jan 2024 5.36 PM
bqrcodec / bqrcodec
0755
action-buttons-manager.php
1.739 KB
30 Jan 2024 5.36 PM
bqrcodec / bqrcodec
0755
block-helper.php
6.615 KB
30 Jan 2024 5.36 PM
bqrcodec / bqrcodec
0755
blocks-repository-base.php
0.82 KB
30 Jan 2024 5.36 PM
bqrcodec / bqrcodec
0755
default-blocks-repository.php
0.294 KB
30 Jan 2024 5.36 PM
bqrcodec / bqrcodec
0755
dynamic-value.php
2.222 KB
30 Jan 2024 5.36 PM
bqrcodec / bqrcodec
0755
form-builder-blocks-repository.php
1.094 KB
30 Jan 2024 5.36 PM
bqrcodec / bqrcodec
0755
module.php
10.519 KB
30 Jan 2024 5.36 PM
bqrcodec / bqrcodec
0755
native-block-wrapper-attributes.php
0.182 KB
30 Jan 2024 5.36 PM
bqrcodec / bqrcodec
0755
validation.php
7.59 KB
30 Jan 2024 5.36 PM
bqrcodec / bqrcodec
0755

GRAYBYTE WORDPRESS FILE MANAGER @ 2026 CONTACT ME
Static GIF