晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。渔人甚异之,复前行,欲穷其林。 林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。 见渔人,乃大惊,问所从来。具答之。便要还家,设酒杀鸡作食。村中闻有此人,咸来问讯。自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人间隔。问今是何世,乃不知有汉,无论魏晋。此人一一为具言所闻,皆叹惋。余人各复延至其家,皆出酒食。停数日,辞去。此中人语云:“不足为外人道也。”(间隔 一作:隔绝) 既出,得其船,便扶向路,处处志之。及郡下,诣太守,说如此。太守即遣人随其往,寻向所志,遂迷,不复得路。 南阳刘子骥,高尚士也,闻之,欣然规往。未果,寻病终。后遂无问津者。
|
Server : Apache System : Linux srv.rainic.com 4.18.0-553.47.1.el8_10.x86_64 #1 SMP Wed Apr 2 05:45:37 EDT 2025 x86_64 User : rainic ( 1014) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/stando/www/wp-content/plugins/wp-analytify/classes/ |
Upload File : |
<?php
class WPANALYTIFY_Sanitize {
/**
* Sanitize and validate data.
*
* @param string|array $data The data to the sanitized.
* @param string|array $key_rules The keys in the data (if data is an array) and the sanitization rule(s) to apply for each key.
* @param string $context Additional context data for messages etc.
*
* @return mixed The sanitized data, the data if no key rules supplied or `false` if an unrecognized rule supplied.
*/
static function sanitize_data( $data, $key_rules, $context ) {
if ( empty( $data ) || empty( $key_rules ) ) {
return $data;
}
return WPANALYTIFY_Sanitize::_sanitize_data( $data, $key_rules, $context );
}
/**
* Sanitize and validate data.
*
* @param string|array $data The data to the sanitized.
* @param string|array $key_rules The keys in the data (if data is an array) and the sanitization rule(s) to apply for each key.
* @param string $context Additional context data for messages etc.
* @param int $recursion_level How deep in the recursion are we? Optional, defaults to 0.
*
* @return mixed The sanitized data, the data if no key rules supplied or `false` if an unrecognized rule supplied.
*/
private static function _sanitize_data( $data, $key_rules, $context, $recursion_level = 0 ) {
if ( empty( $data ) || empty( $key_rules ) ) {
return $data;
}
if ( 0 === $recursion_level && is_array( $data ) ) {
// We always expect associative arrays.
if ( ! is_array( $key_rules ) ) {
wp_die( sprintf( __( '%1$s was not expecting data to be an array.', 'wp-analytify' ), $context ) );
return false;
}
foreach ( $data as $key => $value ) {
// If a key does not have a rule it's not ours and can be removed.
// We should not fail if there is extra data as plugins like Polylang add their own data to each ajax request.
if ( ! array_key_exists( $key, $key_rules ) ) {
unset( $data[ $key ] );
continue;
}
$data[ $key ] = WPANALYTIFY_Sanitize::_sanitize_data( $value, $key_rules[ $key ], $context, ( $recursion_level + 1 ) );
}
} elseif ( is_array( $key_rules ) ) {
foreach ( $key_rules as $rule ) {
$data = WPANALYTIFY_Sanitize::_sanitize_data( $data, $rule, $context, ( $recursion_level + 1 ) );
}
} else {
// Neither $data or $key_rules are a first level array so can be analysed.
if ( 'array' == $key_rules ) {
if ( ! is_array( $data ) ) {
wp_die( sprintf( __( '%1$s was expecting an array but got something else: "%2$s"', 'wp-analytify' ), $context, $data ) );
return false;
}
} elseif ( 'string' == $key_rules ) {
if ( ! is_string( $data ) ) {
wp_die( sprintf( __( '%1$s was expecting a string but got something else: "%2$s"', 'wp-analytify' ), $context, $data ) );
return false;
}
} elseif ( 'key' == $key_rules ) {
$key_name = sanitize_key( $data );
if ( $key_name !== $data ) {
wp_die( sprintf( __( '%1$s was expecting a valid key but got something else: "%2$s"', 'wp-analytify' ), $context, $data ) );
return false;
}
$data = $key_name;
} elseif ( 'text' == $key_rules ) {
$text = sanitize_text_field( $data );
if ( $text !== $data ) {
wp_die( sprintf( __( '%1$s was expecting text but got something else: "%2$s"', 'wp-analytify' ), $context, $data ) );
return false;
}
$data = $text;
} elseif ( 'serialized' == $key_rules ) {
if ( ! is_string( $data ) || ! is_serialized( $data ) ) {
wp_die( sprintf( __( '%1$s was expecting serialized data but got something else: "%2$s"', 'wp-analytify' ), $context, $data ) );
return false;
}
}
// elseif ( 'json_array' == $key_rules ) {
// if ( ! is_string( $data ) || ! WPANALYTIFY::is_json( $data ) ) {
// wp_die( sprintf( __( '%1$s was expecting JSON data but got something else: "%2$s"', 'wp-analytify' ), $context, $data ) );
// return false;
// }
// $data = json_decode( $data, true );
// } elseif ( 'json' == $key_rules ) {
// if ( ! is_string( $data ) || ! WPANALYTIFY::is_json( $data ) ) {
// wp_die( sprintf( __( '%1$s was expecting JSON data but got something else: "%2$s"', 'wp-analytify' ), $context, $data ) );
// return false;
// }
// }
elseif ( 'numeric' == $key_rules ) {
if ( ! is_numeric( $data ) ) {
wp_die( sprintf( __( '%1$s was expecting a valid numeric but got something else: "%2$s"', 'wp-analytify' ), $context, $data ) );
return false;
}
} elseif ( 'int' == $key_rules ) {
// As we are sanitizing form data, even integers are within a string.
if ( ! is_numeric( $data ) || (int) $data != $data ) {
wp_die( sprintf( __( '%1$s was expecting an integer but got something else: "%2$s"', 'wp-analytify' ), $context, $data ) );
return false;
}
$data = (int) $data;
} elseif ( 'positive_int' == $key_rules ) {
if ( ! is_numeric( $data ) || (int) $data != $data || 0 > $data ) {
wp_die( sprintf( __( '%1$s was expecting a positive number (int) but got something else: "%2$s"', 'wp-analytify' ), $context, $data ) );
return false;
}
$data = floor( $data );
} elseif ( 'negative_int' == $key_rules ) {
if ( ! is_numeric( $data ) || (int) $data != $data || 0 < $data ) {
wp_die( sprintf( __( '%1$s was expecting a negative number (int) but got something else: "%2$s"', 'wp-analytify' ), $context, $data ) );
return false;
}
$data = ceil( $data );
} elseif ( 'zero_int' == $key_rules ) {
if ( ! is_numeric( $data ) || (int) $data != $data || 0 !== $data ) {
wp_die( sprintf( __( '%1$s was expecting 0 (int) but got something else: "%2$s"', 'wp-analytify' ), $context, $data ) );
return false;
}
$data = 0;
} elseif ( 'empty' == $key_rules ) {
if ( ! empty( $data ) ) {
wp_die( sprintf( __( '%1$s was expecting an empty value but got something else: "%2$s"', 'wp-analytify' ), $context, $data ) );
return false;
}
} elseif ( 'url' == $key_rules ) {
$url = esc_url_raw( $data );
if ( empty( $url ) ) {
wp_die( sprintf( __( '%1$s was expecting a URL but got something else: "%2$s"', 'wp-analytify' ), $context, $data ) );
return false;
}
$data = $url;
} elseif ( 'bool' == $key_rules ) {
$bool = sanitize_key( $data );
if ( empty( $bool ) || ! in_array( $bool, array( 'true', 'false' ) ) ) {
wp_die( sprintf( __( '%1$s was expecting a bool but got something else: "%2$s"', 'wp-analytify' ), $context, $data ) );
return false;
}
$data = $bool;
} else {
wp_die( sprintf( __( 'Unknown sanitization rule "%1$s" supplied by %2$s', 'wp-analytify' ), $key_rules, $context ) );
return false;
}
}
return $data;
}
}