class-redux-sanitize.php (3904B)
1 <?php 2 /** 3 * Redux Sanitize Class 4 * 5 * @class Redux_Sanitize 6 * @version 4.0.0 7 * @package Redux Framework 8 */ 9 10 defined( 'ABSPATH' ) || exit; 11 12 if ( ! class_exists( 'Redux_Sanitize', false ) ) { 13 14 /** 15 * Class Redux_Sanitize 16 */ 17 class Redux_Sanitize extends Redux_Class { 18 19 /** 20 * Sanitize values from options form (used in settings api validate function) 21 * 22 * @since 4.0.0 23 * @access public 24 * 25 * @param array $plugin_options Plugin Options. 26 * @param array $options Options. 27 * @param array $sections Sections array. 28 * 29 * @return array $plugin_options 30 */ 31 public function sanitize( array $plugin_options, array $options, array $sections ): array { 32 $core = $this->core(); 33 34 foreach ( $sections as $k => $section ) { 35 if ( isset( $section['fields'] ) ) { 36 foreach ( $section['fields'] as $fkey => $field ) { 37 38 if ( is_array( $field ) ) { 39 $field['section_id'] = $k; 40 } 41 42 if ( isset( $field['type'] ) && ( 'text' === $field['type'] || 'textarea' === $field['type'] || 'multi_text' === $field['type'] ) ) { 43 44 // Make sure 'sanitize' field is set. 45 if ( isset( $field['sanitize'] ) ) { 46 47 // Can we make this an array of validations? 48 $val_arr = array(); 49 50 if ( is_array( $field['sanitize'] ) ) { 51 $val_arr = $field['sanitize']; 52 } else { 53 $val_arr[] = $field['sanitize']; 54 } 55 56 foreach ( $val_arr as $idx => $function ) { 57 58 // Check for empty id value. 59 if ( ! isset( $field['id'] ) || ! isset( $plugin_options[ $field['id'] ] ) || ( isset( $plugin_options[ $field['id'] ] ) && '' === $plugin_options[ $field['id'] ] ) ) { 60 continue; 61 } 62 63 if ( function_exists( $function ) ) { 64 if ( empty( $options[ $field['id'] ] ) ) { 65 $options[ $field['id'] ] = ''; 66 } 67 68 if ( isset( $plugin_options[ $field['id'] ] ) && is_array( $plugin_options[ $field['id'] ] ) && ! empty( $plugin_options[ $field['id'] ] ) ) { 69 foreach ( $plugin_options[ $field['id'] ] as $key => $value ) { 70 $before = null; 71 $after = null; 72 73 if ( isset( $plugin_options[ $field['id'] ][ $key ] ) && ( ! empty( $plugin_options[ $field['id'] ][ $key ] ) || '0' === $plugin_options[ $field['id'] ][ $key ] ) ) { 74 if ( is_array( $plugin_options[ $field['id'] ][ $key ] ) ) { 75 $before = $plugin_options[ $field['id'] ][ $key ]; 76 } else { 77 $before = trim( $plugin_options[ $field['id'] ][ $key ] ); 78 } 79 } 80 81 if ( isset( $options[ $field['id'] ][ $key ] ) && ( ! empty( $plugin_options[ $field['id'] ][ $key ] ) || '0' === $plugin_options[ $field['id'] ][ $key ] ) ) { 82 $after = $options[ $field['id'] ][ $key ]; 83 } 84 85 $value = call_user_func( $function, $before ); 86 87 if ( ! empty( $value ) || false !== $value ) { 88 $plugin_options[ $field['id'] ][ $key ] = $value; 89 } else { 90 unset( $plugin_options[ $field['id'] ][ $key ] ); 91 } 92 93 $field['current'] = $value; 94 95 $core->sanitize[] = $field; 96 } 97 } else { 98 if ( isset( $plugin_options[ $field['id'] ] ) ) { 99 if ( is_array( $plugin_options[ $field['id'] ] ) ) { 100 $pofi = $plugin_options[ $field['id'] ]; 101 } else { 102 $pofi = trim( $plugin_options[ $field['id'] ] ); 103 } 104 } else { 105 $pofi = null; 106 } 107 108 $value = call_user_func( $function, $pofi ); 109 110 $plugin_options[ $field['id'] ] = $value; 111 112 $field['current'] = $value; 113 114 $core->sanitize[] = $field; 115 } 116 117 break; 118 } 119 } 120 } 121 } 122 } 123 } 124 } 125 126 return $plugin_options; 127 } 128 } 129 }