晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。渔人甚异之,复前行,欲穷其林。 林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。 见渔人,乃大惊,问所从来。具答之。便要还家,设酒杀鸡作食。村中闻有此人,咸来问讯。自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人间隔。问今是何世,乃不知有汉,无论魏晋。此人一一为具言所闻,皆叹惋。余人各复延至其家,皆出酒食。停数日,辞去。此中人语云:“不足为外人道也。”(间隔 一作:隔绝) 既出,得其船,便扶向路,处处志之。及郡下,诣太守,说如此。太守即遣人随其往,寻向所志,遂迷,不复得路。 南阳刘子骥,高尚士也,闻之,欣然规往。未果,寻病终。后遂无问津者。
|
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/rainic/public_html/wp-contentTZh/plugins/revslider/includes/ |
Upload File : |
<?php
/**
* @author ThemePunch <info@themepunch.com>
* @link https://www.themepunch.com/
* @copyright 2021 ThemePunch
*/
if(!defined('ABSPATH')) exit();
class RevSliderCache extends RevSliderFunctions {
public $cache_enabled = false;
/**
* holds transient additions that the slider is using
**/
private $cache_additions = array('action' => array(), 'filter' => array(), 'html' => array(), 'special' => array());
private $output_html = array();
public function __construct(){
$globals = $this->get_global_settings();
$this->cache_enabled = ($this->_truefalse($this->get_val($globals, 'internalcaching')) === true) ? true : false;
}
public function is_enabled(){
return $this->cache_enabled;
}
/**
* define which slider types are supported
* no social streams are supported
**/
public function is_supported_type($type){
return (in_array($type, array('post', 'posts', 'specific_posts', 'specific_post', 'current_post', 'woocommerce', 'woo', 'gallery'), true)) ? true : false;
}
public function clear_all_transients(){
global $wpdb;
$return = $wpdb->query("DELETE FROM ". $wpdb->prefix . 'options' ." WHERE `option_name` LIKE '_transient_revslider_slider_%'");
$wpdb->query("DELETE FROM ". $wpdb->prefix . 'options' ." WHERE `option_name` LIKE '_transient_timeout_revslider_slider_%'");
return $return;
}
/**
* clears all transients that are from a certain slider
* @since: 6.4.7
**/
public function clear_transients_by_slider($sid){
global $wpdb;
$return = false;
$sid = intval($sid);
if($sid > 0){
$return = $wpdb->query($wpdb->prepare("DELETE FROM ". $wpdb->prefix . 'options' ." WHERE `option_name` LIKE '_transient_revslider_slider_%d%%'", $sid));
$wpdb->query($wpdb->prepare("DELETE FROM ". $wpdb->prefix . 'options' ." WHERE `option_name` LIKE '_transient_timeout_revslider_slider_%d%%'", $sid));
}
return $return;
}
public function get_additions(){
return $this->cache_additions;
}
public function add_addition($type, $name = false, $output = '', $priority = 10){
if($output === '') return;
if(!isset($this->cache_additions[$type])) $this->cache_additions[$type] = array();
if($name === false){
$this->cache_additions[$type][] = $output;
}else{
if(!isset($this->cache_additions[$type][$name])) $this->cache_additions[$type][$name] = array();
if($type === 'special'){
$this->cache_additions[$type][$name][] = $output;
}else{
$this->cache_additions[$type][$name][] = array(
'html' => $output,
'priority' => $priority
);
}
}
}
/**
* replace HTML placeholders with their corresponding value
**/
public function do_html_changes($html){
//$html = str_replace('##NONCE##', wp_create_nonce('RevSlider_Front'), $html);
return $html;
}
/**
* this will push all the additions to the output that can not be cached
* @since: 6.4.7
**/
public function do_additions($additions, $output){
$t_actions = $this->get_val($additions, 'action', array());
if(!empty($t_actions)){
foreach($t_actions as $_action => $t_a){
if(!empty($t_a)){
foreach($t_a as $t_sa){
if(!isset($this->output_html[$_action])) $this->output_html[$_action] = array();
$this->output_html[$_action][] = $t_sa;
add_action($_action, array($this, 'print_addition'));
}
}
}
}
$t_filters = $this->get_val($additions, 'filter', array());
if(!empty($t_filters)){
foreach($t_filters as $_filter => $t_a){
if(!empty($t_a)){
foreach($t_a as $t_sa){
if(!isset($this->output_html[$_filter])) $this->output_html[$_filter] = array();
$this->output_html[$_filter][] = $t_sa;
add_filter($_filter, array($this, 'print_addition'));
}
}
}
}
$t_special = $this->get_val($additions, 'special', array());
if(!empty($t_special)){
$_rs_css_collection = $this->get_val($t_special, 'rs_css_collection', array());
if(!empty($_rs_css_collection)){
global $rs_css_collection;
$rs_css_collection = $_rs_css_collection;
}
$_font_var = $this->get_val($t_special, 'font_var', array());
if(!empty($_font_var)){
foreach($_font_var as $fw){
global $$fw;
$$fw = true;
}
}
}
do_action('revslider_do_cache_additions', $additions, $output);
}
public function set_full_transient($transient, $sid, $content){
$add = array(
'html' => $content,
'addition' => $this->get_additions()
);
$add = json_encode($add);
set_transient($transient, $add, 60*60*24*7);
$this->cache_additions = array();
}
/**
* prints the additions html when the filter/action is called
* @since: 6.4.7
**/
public function print_addition(){
$html = $this->get_val($this->output_html, current_filter());
if(is_array($html)){
if(!empty($html)){
usort($html, array($this, 'sort_by_priority'));
echo (current_filter() === 'wp_print_footer_scripts') ? '<script>'."\n" : '';
foreach($html as $echo){
echo $this->get_val($echo, 'html');
}
echo (current_filter() === 'wp_print_footer_scripts') ? RS_T.'</script>'."\n" : '';
}
}else{
echo $html;
}
}
/**
* check delete post based caches only!
**/
public function check_for_post_transient_deletion(){
$post_types = array('post', 'posts', 'specific_posts', 'specific_post', 'current_post', 'woocommerce', 'woo');
foreach($post_types as $k => $pt){
$post_types[$k] = '"sourcetype":"'.$pt.'"';
}
$_slider = RevSliderGlobals::instance()->get('RevSliderSlider');
$slider = $_slider->get_slider_by_param_string($post_types, true);
//clear cache for all of these sliders
if(!empty($slider) && is_array($slider)){
foreach($slider as $s){
$this->clear_transients_by_slider($this->get_val($s, 'id'));
}
}
}
public function sort_by_priority($a, $b) {
return $a['priority'] - $b['priority'];
}
}