PluginProbe ʕ •ᴥ•ʔ
JetFormBuilder — Dynamic Blocks Form Builder / trunk
JetFormBuilder — Dynamic Blocks Form Builder vtrunk
3.6.3.1 3.6.3 3.6.2.2 3.6.2.1 3.6.2 3.6.1.1 3.6.1 3.6.0.1 trunk 1.0.0 1.0.1 1.0.2 1.0.3 1.1.0 1.1.1 1.1.2 1.1.3 1.1.4 1.1.5 1.1.6 1.1.7 1.2.0 1.2.1 1.2.2 1.2.3 1.2.4 1.2.5 1.2.6 1.2.7 1.3.0 1.3.1 1.3.2 1.3.3 1.4.0 1.4.1 1.4.2 1.4.3 1.5.0 1.5.1 1.5.2 1.5.3 1.5.4 1.5.5 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.1.0 2.1.1 2.1.10 2.1.11 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.1.9 3.0.0 3.0.0.1 3.0.0.2 3.0.0.3 3.0.1 3.0.1.1 3.0.2 3.0.3 3.0.4 3.0.5 3.0.6 3.0.7 3.0.8 3.0.9 3.1.0 3.1.0.1 3.1.1 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.1.7 3.1.8 3.1.9 3.2.0 3.2.1 3.2.2 3.2.3 3.3.0 3.3.1 3.3.2 3.3.3 3.3.3.1 3.3.4 3.3.4.1 3.3.4.2 3.4.0 3.4.1 3.4.2 3.4.3 3.4.4 3.4.5 3.4.5.1 3.4.5.2 3.4.6 3.4.7 3.4.7.1 3.5.0 3.5.1 3.5.1.1 3.5.1.2 3.5.2 3.5.2.1 3.5.3 3.5.4 3.5.5 3.5.6 3.5.6.1 3.5.6.2 3.5.6.3 3.6.0
jetformbuilder / modules / validation / rules-controller.php
jetformbuilder / modules / validation Last commit date
advanced-rules 1 week ago handlers 1 week ago messages 2 years ago post-type 2 years ago rest-api 4 months ago ssr 1 year ago class-validation-handlers.php 1 year ago module.php 1 week ago rules-controller.php 1 week ago
rules-controller.php
82 lines
1 <?php
2
3
4 namespace JFB_Modules\Validation;
5
6 // If this file is called directly, abort.
7 if ( ! defined( 'WPINC' ) ) {
8 die;
9 }
10
11 use JFB_Modules\Validation\Advanced_Rules;
12 use Jet_Form_Builder\Exceptions\Repository_Exception;
13 use JFB_Components\Repository\Interfaces\Repository_Pattern_Interface;
14 use JFB_Components\Repository\Repository_Pattern_Trait;
15 use JFB_Modules\Block_Parsers\Field_Data_Parser;
16
17 class Rules_Controller implements Repository_Pattern_Interface {
18
19 use Repository_Pattern_Trait;
20
21 public function __construct() {
22 $this->rep_install();
23 }
24
25 public function rep_instances(): array {
26 return array(
27 new Advanced_Rules\Must_Equal_Rule(),
28 new Advanced_Rules\Must_Contain_Characters_Rule(),
29 new Advanced_Rules\Must_Not_Contain_Characters_Rule(),
30 new Advanced_Rules\Match_Regexp_Rule(),
31 new Advanced_Rules\Match_Not_Regexp_Rule(),
32 new Advanced_Rules\Server_Side_Rule(),
33 );
34 }
35
36 public function validate_block( Field_Data_Parser $parser ) {
37 $validation = $parser->get_setting( 'validation' );
38 $rules = $validation['rules'] ?? array();
39
40 $this->prepare_rules( $rules );
41
42 foreach ( $rules as $index => $rule_attrs ) {
43 try {
44 $rule = $this->get_item( $rule_attrs['type'] ?? '' );
45 } catch ( Repository_Exception $exception ) {
46 continue;
47 }
48 $rule_attrs['_rule_index'] = $index;
49 $rule->set_settings( $rule_attrs );
50 $rule->validate_field( $parser );
51 }
52 }
53
54 public function get_ssr(): Advanced_Rules\Server_Side_Rule {
55 try {
56 /** @var Advanced_Rules\Server_Side_Rule $rule */
57 $rule = $this->get_item( Advanced_Rules\Server_Side_Rule::class );
58 } catch ( Repository_Exception $exception ) {
59 // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
60 wp_die( $exception->getMessage() );
61 }
62
63 return $rule;
64 }
65
66 public function prepare_rules( array &$rules ) {
67 foreach ( $rules as &$rule ) {
68 $rule['value'] = jet_fb_parse_dynamic( $rule['value'] ?? '' );
69 }
70 }
71
72 /**
73 * @param string $name
74 *
75 * @return Advanced_Rules\Rule
76 * @throws Repository_Exception
77 */
78 public function get_item( string $name ): Advanced_Rules\Rule {
79 return $this->rep_get_item( $name );
80 }
81 }
82