balmet.com

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs

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 }