晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。渔人甚异之,复前行,欲穷其林。   林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。   见渔人,乃大惊,问所从来。具答之。便要还家,设酒杀鸡作食。村中闻有此人,咸来问讯。自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人间隔。问今是何世,乃不知有汉,无论魏晋。此人一一为具言所闻,皆叹惋。余人各复延至其家,皆出酒食。停数日,辞去。此中人语云:“不足为外人道也。”(间隔 一作:隔绝)   既出,得其船,便扶向路,处处志之。及郡下,诣太守,说如此。太守即遣人随其往,寻向所志,遂迷,不复得路。   南阳刘子骥,高尚士也,闻之,欣然规往。未果,寻病终。后遂无问津者。 .
Prv8 Shell
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/www/setupTZh/betheme/visual-builder/classes/helpers/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /home/rainic/www/setupTZh/betheme/visual-builder/classes/helpers/local-css-compability.php
<?php  

if( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly

/*error_reporting(E_ALL);
ini_set("display_errors", 1);*/

class MfnLocalCssCompability {
	
	private $id = false;
	private $mfn_items = false;
	private $s = 0;
	private $w = 0;
	private $i = 0;
	private $nw = 0;
	private $detect_old_builder = false;
	public $devices = array('laptop', 'tablet', 'mobile');
	public $builder_storage = false;


	public function render($id) {
		$this->id = $id;
		$this->mfn_items = get_post_meta($this->id, 'mfn-page-items', true);
		$this->detect_old_builder = false;
		$this->builder_storage = mfn_opts_get('builder-storage');

		if ( !is_array( $this->mfn_items ) ) $this->mfn_items = unserialize(call_user_func('base'.'64_decode', $this->mfn_items));

		if( !empty( $this->mfn_items ) && is_array( $this->mfn_items ) ) $this->sections();
	}

	public function sections() {
		$mfn_fields = new Mfn_Builder_Fields();
		$sections_fields = $mfn_fields->get_section();

		$this->detect_old_builder = false;

		foreach( $this->mfn_items as $s=>$section ) {

			$this->s = $s;

			if( !empty($section['attr']) && is_iterable($section['attr']) ) {

				foreach ($sections_fields as $sf) {

					if( !empty($sf['old_id']) && !empty( $this->mfn_items[$s]['attr'][$sf['old_id']] ) ) {

						$this->mfn_items[$s]['attr'][$sf['id']] = array(
							'val' => $this->mfn_items[$s]['attr'][$sf['old_id']],
							'css_path' => $sf['css_path'],
							'css_style' => $sf['css_style']
						);

						unset($this->mfn_items[$s]['attr'][$sf['old_id']]);
						$this->detect_old_builder = true;

					}

					if( isset($sf['old_id']) && !empty($sf['responsive']) ) {
						foreach( $this->devices as $device ) {
							$sa_device = $sf['old_id'].'_'.$device;
							if( isset( $this->mfn_items[$s]['attr'][$sa_device] ) ) {

								$sf_device = $sf['id'].'_'.$device;

								if( !empty( $this->mfn_items[$s]['attr'][$sa_device] ) ) {

									$this->mfn_items[$s]['attr'][$sf_device] = array(
										'val' => $this->mfn_items[$s]['attr'][$sa_device],
										'css_path' => $sf['css_path'],
										'css_style' => $sf['css_style'].'_'.$device
									);

								}

								unset($this->mfn_items[$s]['attr'][$sa_device]);
								$this->detect_old_builder = true;

							}

						}
					}

				}

			}

			if( !empty($section['wraps']) && is_iterable($section['wraps']) ){
				foreach( $section['wraps'] as $w=>$wrap ) {
					$this->w = $w;
					$this->wraps($wrap);
				}
			}

		}

		if( $this->detect_old_builder ){
			$this->update();
		}

	}


	public function wraps( $wrap ) {
		$mfn_fields = new Mfn_Builder_Fields();
		$wraps_fields = $mfn_fields->get_wrap();

		if( !empty($wrap['attr']) && is_iterable($wrap['attr']) ) {

			foreach ($wraps_fields as $wf) {

				if( !empty($wf['old_id']) && !empty( $this->mfn_items[$this->s]['wraps'][$this->w]['attr'][$wf['old_id']] ) ) {

					$this->mfn_items[$this->s]['wraps'][$this->w]['attr'][$wf['id']] = array(
						'val' => $this->mfn_items[$this->s]['wraps'][$this->w]['attr'][$wf['old_id']],
						'css_path' => $wf['css_path'],
						'css_style' => $wf['css_style']
					);

					unset($this->mfn_items[$this->s]['wraps'][$this->w]['attr'][$wf['old_id']]);
					$this->detect_old_builder = true;

				}

				if( isset($wf['old_id']) && !empty($wf['responsive']) ) {
					foreach( $this->devices as $device ) {

						$wa_device = $wf['old_id'].'_'.$device;
						if( isset( $this->mfn_items[$this->s]['wraps'][$this->w]['attr'][$wa_device] ) ) {

							$wf_device = $wf['id'].'_'.$device;

							if( !empty( $this->mfn_items[$this->s]['wraps'][$this->w]['attr'][$wa_device] ) ) {

								$this->mfn_items[$this->s]['wraps'][$this->w]['attr'][$wf_device] = array(
									'val' => $this->mfn_items[$this->s]['wraps'][$this->w]['attr'][$wa_device],
									'css_path' => $wf['css_path'],
									'css_style' => $wf['css_style'].'_'.$device
								);

							}

							unset($this->mfn_items[$this->s]['wraps'][$this->w]['attr'][$wa_device]);
							$this->detect_old_builder = true;

						}

					}
				}


			}

		}

		if( !empty($wrap['items']) && is_iterable($wrap['items']) ){

			foreach( $wrap['items'] as $i=>$item ) {
				if( !empty($item['item_is_wrap']) ) {
					$this->nw = $i;
					$this->nested_wrap($item);
				}else{
					$this->i = $i;
					$this->item($item);
				}
				
			}
		}


	}

	public function nested_wrap($wrap) {
		$mfn_fields = new Mfn_Builder_Fields();
		$wraps_fields = $mfn_fields->get_wrap();

		if( !empty($wrap['attr']) && is_iterable($wrap['attr']) ) {

			foreach ($wraps_fields as $wf) {

				if( !empty($wf['old_id']) && !empty( $this->mfn_items[$this->s]['wraps'][$this->w]['items'][$this->nw]['attr'][$wf['old_id']] ) ) {

					$this->mfn_items[$this->s]['wraps'][$this->w]['items'][$this->nw]['attr'][$wf['id']] = array(
						'val' => $this->mfn_items[$this->s]['wraps'][$this->w]['items'][$this->nw]['attr'][$wf['old_id']],
						'css_path' => $wf['css_path'],
						'css_style' => $wf['css_style']
					);

					unset($this->mfn_items[$this->s]['wraps'][$this->w]['items'][$this->nw]['attr'][$wf['old_id']]);
					$this->detect_old_builder = true;

				}

				if( isset($wf['old_id']) && !empty($wf['responsive']) ) {
					foreach( $this->devices as $device ) {

						$wa_device = $wf['old_id'].'_'.$device;
						if( isset( $this->mfn_items[$this->s]['wraps'][$this->w]['items'][$this->nw]['attr'][$wa_device] ) ) {

							$wf_device = $wf['id'].'_'.$device;

							if( !empty( $this->mfn_items[$this->s]['wraps'][$this->w]['items'][$this->nw]['attr'][$wa_device] ) ) {

								$this->mfn_items[$this->s]['wraps'][$this->w]['items'][$this->nw]['attr'][$wf_device] = array(
									'val' => $this->mfn_items[$this->s]['wraps'][$this->w]['items'][$this->nw]['attr'][$wa_device],
									'css_path' => $wf['css_path'],
									'css_style' => $wf['css_style'].'_'.$device
								);

							}

							unset($this->mfn_items[$this->s]['wraps'][$this->w]['items'][$this->nw]['attr'][$wa_device]);
							$this->detect_old_builder = true;

						}

					}
				}


			}

		}

		if( !empty($wrap['items']) && is_iterable($wrap['items']) ){

			foreach( $wrap['items'] as $i=>$item ) {
				$this->i = $i;
				$this->nested_item($item);
			}
		}
	}

	public function nested_item($item) {
		$mfn_fields = new Mfn_Builder_Fields();
		$items_fields = $mfn_fields->get_items();
		$items_advanced = $mfn_fields->get_advanced(true);


		if( !empty($item['type']) && !empty($items_fields[$item['type']]['attr']) && is_iterable($items_fields[$item['type']]['attr']) ) {

			foreach ($items_fields[$item['type']]['attr'] as $it) {

				if( isset($it['old_id']) && !empty( $this->mfn_items[$this->s]['wraps'][$this->w]['items'][$this->nw]['items'][$this->i]['attr'][$it['old_id']] ) ) {

					if( !empty($it['old_id']) && !empty( $this->mfn_items[$this->s]['wraps'][$this->w]['items'][$this->nw]['items'][$this->i]['attr'][$it['old_id']] ) ) {

						$this->mfn_items[$this->s]['wraps'][$this->w]['items'][$this->nw]['items'][$this->i]['attr'][$it['id']] = array(
							'val' => $this->mfn_items[$this->s]['wraps'][$this->w]['items'][$this->nw]['items'][$this->i]['attr'][$it['old_id']],
							'css_path' => $it['css_path'],
							'css_style' => $it['css_style']
						);
					}

					unset($this->mfn_items[$this->s]['wraps'][$this->w]['items'][$this->nw]['items'][$this->i]['attr'][$it['old_id']]);
					$this->detect_old_builder = true;

				}

				if( isset($it['old_id']) && !empty($it['responsive']) ) {
					foreach( $this->devices as $device ) {
						$ia_device = $it['old_id'].'_'.$device;
						if( isset( $this->mfn_items[$this->s]['wraps'][$this->w]['items'][$this->nw]['items'][$this->i]['attr'][$ia_device] ) ) {

							$if_device = $it['id'].'_'.$device;

							if( !empty( $this->mfn_items[$this->s]['wraps'][$this->w]['items'][$this->nw]['items'][$this->i]['attr'][$ia_device] ) ) {

								$this->mfn_items[$this->s]['wraps'][$this->w]['items'][$this->nw]['items'][$this->i]['attr'][$if_device] = array(
									'val' => $this->mfn_items[$this->s]['wraps'][$this->w]['items'][$this->nw]['items'][$this->i]['attr'][$ia_device],
									'css_path' => $it['css_path'],
									'css_style' => $it['css_style'].'_'.$device
								);

							}

							unset($this->mfn_items[$this->s]['wraps'][$this->w]['items'][$this->nw]['items'][$this->i]['attr'][$ia_device]);
							$this->detect_old_builder = true;

						}

					}
				}

			}

			/* Advanced */

			foreach ($items_advanced as $it) {

				if( isset($it['old_id']) && !empty( $this->mfn_items[$this->s]['wraps'][$this->w]['items'][$this->nw]['items'][$this->i]['attr'][$it['old_id']] ) ) {

					if( !empty($it['old_id']) && !empty( $this->mfn_items[$this->s]['wraps'][$this->w]['items'][$this->nw]['items'][$this->i]['attr'][$it['old_id']] ) ) {
						$this->mfn_items[$this->s]['wraps'][$this->w]['items'][$this->nw]['items'][$this->i]['attr'][$it['id']] = array(
							'val' => $this->mfn_items[$this->s]['wraps'][$this->w]['items'][$this->nw]['items'][$this->i]['attr'][$it['old_id']],
							'css_path' => $it['css_path'],
							'css_style' => $it['css_style']
						);
					}

					unset($this->mfn_items[$this->s]['wraps'][$this->w]['items'][$this->nw]['items'][$this->i]['attr'][$it['old_id']]);
					$this->detect_old_builder = true;

				}

				if( isset($it['old_id']) && !empty($it['responsive']) ) {
					foreach( $this->devices as $device ) {
						$ia_device = $it['old_id'].'_'.$device;
						if( isset( $this->mfn_items[$this->s]['wraps'][$this->w]['items'][$this->nw]['items'][$this->i]['attr'][$ia_device] ) ) {

							$if_device = $it['id'].'_'.$device;

							if( !empty( $this->mfn_items[$this->s]['wraps'][$this->w]['items'][$this->nw]['items'][$this->i]['attr'][$ia_device] ) ) {

								$this->mfn_items[$this->s]['wraps'][$this->w]['items'][$this->nw]['items'][$this->i]['attr'][$if_device] = array(
									'val' => $this->mfn_items[$this->s]['wraps'][$this->w]['items'][$this->nw]['items'][$this->i]['attr'][$ia_device],
									'css_path' => $it['css_path'],
									'css_style' => $it['css_style'].'_'.$device
								);

							}

							unset($this->mfn_items[$this->s]['wraps'][$this->w]['items'][$this->nw]['items'][$this->i]['attr'][$ia_device]);
							$this->detect_old_builder = true;

						}

					}
				}

			}


		}

	}


	public function item($item) {
		$mfn_fields = new Mfn_Builder_Fields();
		$items_fields = $mfn_fields->get_items();
		$items_advanced = $mfn_fields->get_advanced(true);


		if( !empty($item['type']) && !empty($items_fields[$item['type']]['attr']) && is_iterable($items_fields[$item['type']]['attr']) ) {

			foreach ($items_fields[$item['type']]['attr'] as $it) {

				if( isset($it['old_id']) && !empty( $this->mfn_items[$this->s]['wraps'][$this->w]['items'][$this->i]['attr'][$it['old_id']] ) ) {

					if( !empty($it['old_id']) && !empty( $this->mfn_items[$this->s]['wraps'][$this->w]['items'][$this->i]['attr'][$it['old_id']] ) ) {
						$this->mfn_items[$this->s]['wraps'][$this->w]['items'][$this->i]['attr'][$it['id']] = array(
							'val' => $this->mfn_items[$this->s]['wraps'][$this->w]['items'][$this->i]['attr'][$it['old_id']],
							'css_path' => $it['css_path'],
							'css_style' => $it['css_style']
						);
					}

					unset($this->mfn_items[$this->s]['wraps'][$this->w]['items'][$this->i]['attr'][$it['old_id']]);
					$this->detect_old_builder = true;

				}

				if( isset($it['old_id']) && !empty($it['responsive']) ) {
					foreach( $this->devices as $device ) {
						$ia_device = $it['old_id'].'_'.$device;
						if( isset( $this->mfn_items[$this->s]['wraps'][$this->w]['items'][$this->i]['attr'][$ia_device] ) ) {

							$if_device = $it['id'].'_'.$device;

							if( !empty( $this->mfn_items[$this->s]['wraps'][$this->w]['items'][$this->i]['attr'][$ia_device] ) ) {

								$this->mfn_items[$this->s]['wraps'][$this->w]['items'][$this->i]['attr'][$if_device] = array(
									'val' => $this->mfn_items[$this->s]['wraps'][$this->w]['items'][$this->i]['attr'][$ia_device],
									'css_path' => $it['css_path'],
									'css_style' => $it['css_style'].'_'.$device
								);

							}

							unset($this->mfn_items[$this->s]['wraps'][$this->w]['items'][$this->i]['attr'][$ia_device]);
							$this->detect_old_builder = true;

						}

					}
				}

			}

			/* Advanced */

			foreach ($items_advanced as $it) {

				if( isset($it['old_id']) && !empty( $this->mfn_items[$this->s]['wraps'][$this->w]['items'][$this->i]['attr'][$it['old_id']] ) ) {

					if( !empty($it['old_id']) && !empty( $this->mfn_items[$this->s]['wraps'][$this->w]['items'][$this->i]['attr'][$it['old_id']] ) ) {
						$this->mfn_items[$this->s]['wraps'][$this->w]['items'][$this->i]['attr'][$it['id']] = array(
							'val' => $this->mfn_items[$this->s]['wraps'][$this->w]['items'][$this->i]['attr'][$it['old_id']],
							'css_path' => $it['css_path'],
							'css_style' => $it['css_style']
						);
					}

					unset($this->mfn_items[$this->s]['wraps'][$this->w]['items'][$this->i]['attr'][$it['old_id']]);
					$this->detect_old_builder = true;

				}

				if( isset($it['old_id']) && !empty($it['responsive']) ) {
					foreach( $this->devices as $device ) {
						$ia_device = $it['old_id'].'_'.$device;
						if( isset( $this->mfn_items[$this->s]['wraps'][$this->w]['items'][$this->i]['attr'][$ia_device] ) ) {

							$if_device = $it['id'].'_'.$device;

							if( !empty( $this->mfn_items[$this->s]['wraps'][$this->w]['items'][$this->i]['attr'][$ia_device] ) ) {

								$this->mfn_items[$this->s]['wraps'][$this->w]['items'][$this->i]['attr'][$if_device] = array(
									'val' => $this->mfn_items[$this->s]['wraps'][$this->w]['items'][$this->i]['attr'][$ia_device],
									'css_path' => $it['css_path'],
									'css_style' => $it['css_style'].'_'.$device
								);

							}

							unset($this->mfn_items[$this->s]['wraps'][$this->w]['items'][$this->i]['attr'][$ia_device]);
							$this->detect_old_builder = true;

						}

					}
				}

			}


		}

	}


	public function update() {

		if ( 'encode' == $this->builder_storage ) {
			$new = call_user_func('base'.'64_encode', serialize($this->mfn_items));
		}else{
			$new = $this->mfn_items;
		}

		update_post_meta($this->id, 'mfn-page-items', $new);

	}


}

haha - 2025