mirror of https://github.com/vtrois/kratos
195 lines
4.5 KiB
PHP
195 lines
4.5 KiB
PHP
<?php
|
|
/**
|
|
* @package Options_Framework
|
|
* @author Devin Price <devin@wptheming.com>
|
|
* @license GPL-2.0+
|
|
* @link http://wptheming.com
|
|
* @copyright 2010-2014 WP Theming
|
|
*/
|
|
|
|
/**
|
|
* Sanitization for text input
|
|
*
|
|
* @link http://developer.wordpress.org/reference/functions/sanitize_text_field/
|
|
*/
|
|
add_filter( 'of_sanitize_text', 'sanitize_text_field' );
|
|
|
|
/**
|
|
* Sanitization for password input
|
|
*
|
|
* @link http://developer.wordpress.org/reference/functions/sanitize_text_field/
|
|
*/
|
|
add_filter( 'of_sanitize_password', 'sanitize_text_field' );
|
|
|
|
/**
|
|
* Sanitization for select input
|
|
*
|
|
* Validates that the selected option is a valid option.
|
|
*/
|
|
add_filter( 'of_sanitize_select', 'of_sanitize_enum', 10, 2 );
|
|
|
|
/**
|
|
* Sanitization for radio input
|
|
*
|
|
* Validates that the selected option is a valid option.
|
|
*/
|
|
add_filter( 'of_sanitize_radio', 'of_sanitize_enum', 10, 2 );
|
|
|
|
/**
|
|
* Sanitization for image selector
|
|
*
|
|
* Validates that the selected option is a valid option.
|
|
*/
|
|
add_filter( 'of_sanitize_images', 'of_sanitize_enum', 10, 2 );
|
|
|
|
/**
|
|
* Sanitization for textarea field
|
|
*
|
|
* @param $input string
|
|
* @return $output sanitized string
|
|
*/
|
|
function of_sanitize_textarea( $input ) {
|
|
global $allowedposttags;
|
|
$output = wp_kses( $input, $allowedposttags );
|
|
return $output;
|
|
}
|
|
add_filter( 'of_sanitize_textarea', 'of_sanitize_textarea' );
|
|
|
|
/**
|
|
* Sanitization for checkbox input
|
|
*
|
|
* @param $input string (1 or empty) checkbox state
|
|
* @return $output '1' or false
|
|
*/
|
|
function of_sanitize_checkbox( $input ) {
|
|
if ( $input ) {
|
|
$output = '1';
|
|
} else {
|
|
$output = false;
|
|
}
|
|
return $output;
|
|
}
|
|
add_filter( 'of_sanitize_checkbox', 'of_sanitize_checkbox' );
|
|
|
|
/**
|
|
* File upload sanitization.
|
|
*
|
|
* Returns a sanitized filepath if it has a valid extension.
|
|
*
|
|
* @param string $input filepath
|
|
* @returns string $output filepath
|
|
*/
|
|
function of_sanitize_upload( $input ) {
|
|
$output = '';
|
|
$filetype = wp_check_filetype( $input );
|
|
if ( $filetype["ext"] ) {
|
|
$output = esc_url( $input );
|
|
}
|
|
return $output;
|
|
}
|
|
add_filter( 'of_sanitize_upload', 'of_sanitize_upload' );
|
|
|
|
/**
|
|
* Sanitization of input with allowed tags and wpautotop.
|
|
*
|
|
* Allows allowed tags in html input and ensures tags close properly.
|
|
*
|
|
* @param string $input
|
|
* @returns string $output
|
|
*/
|
|
function of_sanitize_allowedtags( $input ) {
|
|
global $allowedtags;
|
|
$output = wpautop( wp_kses( $input, $allowedtags ) );
|
|
return $output;
|
|
}
|
|
|
|
/**
|
|
* Sanitization of input with allowed post tags and wpautotop.
|
|
*
|
|
* Allows allowed post tags in html input and ensures tags close properly.
|
|
*
|
|
* @param string $input
|
|
* @returns string $output
|
|
*/
|
|
function of_sanitize_allowedposttags( $input ) {
|
|
global $allowedposttags;
|
|
$output = wpautop( wp_kses( $input, $allowedposttags) );
|
|
return $output;
|
|
}
|
|
|
|
/**
|
|
* Validates that the $input is one of the avilable choices
|
|
* for that specific option.
|
|
*
|
|
* @param string $input
|
|
* @returns string $output
|
|
*/
|
|
function of_sanitize_enum( $input, $option ) {
|
|
$output = '';
|
|
if ( array_key_exists( $input, $option['options'] ) ) {
|
|
$output = $input;
|
|
}
|
|
return $output;
|
|
}
|
|
|
|
/**
|
|
* Sanitization for background option.
|
|
*
|
|
* @returns array $output
|
|
*/
|
|
function of_sanitize_background( $input ) {
|
|
|
|
$output = wp_parse_args( $input, array(
|
|
'color' => '',
|
|
'image' => '',
|
|
'repeat' => 'repeat',
|
|
'position' => 'top center',
|
|
'attachment' => 'scroll'
|
|
) );
|
|
|
|
$output['color'] = apply_filters( 'of_sanitize_hex', $input['color'] );
|
|
$output['image'] = apply_filters( 'of_sanitize_upload', $input['image'] );
|
|
|
|
return $output;
|
|
}
|
|
add_filter( 'of_sanitize_background', 'of_sanitize_background' );
|
|
|
|
/**
|
|
* Sanitize a color represented in hexidecimal notation.
|
|
*
|
|
* @param string Color in hexidecimal notation. "#" may or may not be prepended to the string.
|
|
* @param string The value that this function should return if it cannot be recognized as a color.
|
|
* @return string
|
|
*/
|
|
|
|
function of_sanitize_hex( $hex, $default = '' ) {
|
|
if ( of_validate_hex( $hex ) ) {
|
|
return $hex;
|
|
}
|
|
return $default;
|
|
}
|
|
add_filter( 'of_sanitize_color', 'of_sanitize_hex' );
|
|
|
|
/**
|
|
* Is a given string a color formatted in hexidecimal notation?
|
|
*
|
|
* @param string Color in hexidecimal notation. "#" may or may not be prepended to the string.
|
|
* @return bool
|
|
*/
|
|
function of_validate_hex( $hex ) {
|
|
$hex = trim( $hex );
|
|
/* Strip recognized prefixes. */
|
|
if ( 0 === strpos( $hex, '#' ) ) {
|
|
$hex = substr( $hex, 1 );
|
|
}
|
|
elseif ( 0 === strpos( $hex, '%23' ) ) {
|
|
$hex = substr( $hex, 3 );
|
|
}
|
|
/* Regex match. */
|
|
if ( 0 === preg_match( '/^[0-9a-fA-F]{6}$/', $hex ) ) {
|
|
return false;
|
|
}
|
|
else {
|
|
return true;
|
|
}
|
|
} |