PluginProbe
Hustle – Email Marketing, Lead Generation, Optins, Popups / 7.8.14.2
Hustle – Email Marketing, Lead Generation, Optins, Popups v7.8.14.2
7.8.14.2 7.8.14 7.8.14.1 7.8.13 7.8.13.1 trunk 3.0 3.1 3.1.1 3.1.2 3.1.3 3.1.4 4.3.2 4.4.4 4.4.5 4.4.5.1 4.4.5.4 4.6 4.6.1.1 4.6.1.4 4.7.0.2 4.7.0.3 4.7.0.7 4.7.0.9 4.7.1.0 All 103 releases
wordpress-popup / inc / class-hustle-module-validator.php
class-hustle-module-validator.php
80 lines 2.1 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php // phpcs:ignore WordPress.Files.FileName.InvalidClassFileName
2 /**
3 * Hustle_Module_Fields_Validator class file.
4 *
5 * @package Hustle
6 * @since 7.8.11
7 */
8 class Hustle_Module_Fields_Validator {
9
10 /**
11 * Validates the module data before saving.
12 *
13 * @param array $fields The fields to validate, structured as [field_name] => rules.
14 * @param array $data The module data to validate.
15 * @return array An array containing 'is_valid' (boolean) and 'errors' (array) keys.
16 */
17 public function validate( $fields, $data ) {
18 $errors = array();
19
20 foreach ( $fields as $field_name => $rules ) {
21 $value = isset( $data[ $field_name ] ) ? $data[ $field_name ] : null;
22 // Check for required fields.
23 if ( isset( $rules['required'] ) && $rules['required'] && empty( $value ) ) {
24 $errors[ $field_name ][] = sprintf(
25 esc_html__( 'The field is required.', 'hustle' ),
26 );
27 continue;
28 }
29
30 // Check for required_if condition.
31 if (
32 isset( $rules['required_if'] ) &&
33 isset( $data[ $rules['required_if'] ] )
34 ) {
35 if ( 1 === (int) $data[ $rules['required_if'] ] ) {
36 if ( empty( $value ) ) {
37 $errors[ $field_name ][] = sprintf(
38 esc_html__( 'The field is required.', 'hustle' ),
39 );
40 continue;
41 }
42 } else {
43 // If the condition is not met, skip further validation for this field.
44 continue;
45 }
46 }
47
48 // If the field is not required and empty, skip further validation.
49 if ( empty( $value ) ) {
50 continue;
51 }
52
53 // Validate field type.
54 switch ( $rules['type'] ) {
55 case 'email':
56 $list = array_map( 'trim', explode( ',', $value ) );
57 foreach ( $list as $email ) {
58 if ( '{email}' === $email ) {
59 // If the placeholder is present, skip validation for this email.
60 continue;
61 }
62
63 if ( ! filter_var( $email, FILTER_VALIDATE_EMAIL ) ) {
64 $errors[ $field_name ][] = esc_html__( 'Please enter a valid email address.', 'hustle' );
65 break;
66 }
67 }
68 break;
69 default:
70 break;
71 }
72 }
73
74 return array(
75 'is_valid' => empty( $errors ),
76 'errors' => $errors,
77 );
78 }
79 }
80