403Webshell
Server IP : 89.108.64.180  /  Your IP : 216.73.216.60
Web Server : Apache/2.4.41 (Ubuntu)
System : Linux 89-108-64-180.cloudvps.regruhosting.ru 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64
User : www-root ( 1010)
PHP Version : 8.0.30
Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,
MySQL : OFF  |  cURL : ON  |  WGET : OFF  |  Perl : OFF  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /var/www/www-root/data/www/joysochi.ru/wp-content/plugins/yamaps/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /var/www/www-root/data/www/joysochi.ru/wp-content/plugins/yamaps//options.php
<?php
$yamaps_page = 'yamaps-options.php'; 

global $yamaps_page, $yamaps_defaults, $yamaps_defaults_front_bak;
$option_name = 'yamaps_options';
if(get_option($option_name)){
	$yamaps_defaults=get_option($option_name);
	if (isset($yamaps_defaults['reset_maps_option'])) {
		if ($yamaps_defaults['reset_maps_option']==="on") {
			update_option( $option_name, $yamaps_defaults_front_bak);
			$yamaps_defaults=$yamaps_defaults_front_bak;
		}
	}
}

/*
 * Функция, добавляющая страницу в пункт меню Настройки
 */
function yamaps_options() {
	global $yamaps_page;
	add_options_page( 'YaMaps', 'YaMaps', 'manage_options', $yamaps_page, 'yamaps_option_page');  
}
add_action('admin_menu', 'yamaps_options');
 
/**
 * Возвратная функция (Callback)
 */ 
function yamaps_option_page(){
	global $yamaps_page, $yamaps_defaults;
	if (trim($yamaps_defaults['apikey_map_option'])<>"") {
			$apikey='&apikey='.$yamaps_defaults['apikey_map_option'];
	}
	else {
		$apikey="";
	}
	?><div class="wrap">
		<h2><?php echo __( 'YaMaps default options', 'yamaps' ); ?></h2>
		<form method="post" id="YaMapsOptions" enctype="multipart/form-data" action="options.php">
		<?php echo'<script src="https://api-maps.yandex.ru/2.1/?lang='.get_locale().$apikey.'" type="text/javascript"></script>'; ?>
			<script type="text/javascript">
						//Округляем координаты до 4 знаков после запятой
						function coordaprox(fullcoord) {
						        if (fullcoord.length!==2) {
						            fullcoord=fullcoord.split(',');
						            if (fullcoord.length!==2) { 
						                fullcoord=[0,0];
						            }
						        }
						        return [parseFloat(fullcoord[0]).toFixed(4), parseFloat(fullcoord[1]).toFixed(4)];
						}

                        ymaps.ready(init); 


                 		//Инициализируем карту для страницы настроек
                        function init () {
                        	var testvar=document.getElementById('center_map_option').value;
                        	var apikeyexist = false, apikey=<?php echo '"'.$apikey.'"' ?>;
                        	if (apikey!=="") apikeyexist=true;
                        	var controlsArr=["zoomControl", "typeSelector"];
                            if (apikeyexist) controlsArr.push("searchControl"); //Если определен API key, добавляем поиск на карту. Без ключа он все равно не будет работать и выдавать ошибку.

                            var myMap0 = new ymaps.Map("yamap", {
                                    center: [<?php echo $yamaps_defaults["center_map_option"]; ?>],
                                    zoom: <?php echo $yamaps_defaults["zoom_map_option"]; ?>,
                                    type: '<?php echo $yamaps_defaults["type_map_option"]; ?>',
                                    controls: controlsArr 
                                });   

							//Добавляем пример метки
							placemark1 = new ymaps.Placemark([<?php echo $yamaps_defaults["center_map_option"]; ?>], {
                                hintContent: "Placemark",
                                iconContent: "",

                              
                            }, {
                            	<?php 
                            		//Проверяем, является ли поле иконки url-адресом. Если да, то ставим в качестве иконки кастомное изображение.
								    $iconurl = strripos($yamaps_defaults["type_icon_option"], 'http');
								    if (is_int($iconurl)) {
								    	echo '                        
								                            	iconLayout: "default#image",
								        						iconImageHref: "'.$yamaps_defaults["type_icon_option"].'"
								                              
										';

								    }
								    else {
								    	echo '                        
								                            	preset: "'.$yamaps_defaults["type_icon_option"].'", 
								                            	iconColor: "'.$yamaps_defaults["color_icon_option"].'",
								                             
										';
								    }

                            	?>

                            });  
							myMap0.geoObjects.add(placemark1);

							//Событие перемещения карты
							myMap0.events.add('boundschange', function (event) {
										//Если изменили масштаб
				                        if (event.get('newZoom') != event.get('oldZoom')) {     
				                            document.getElementById('zoom_map_option').value = event.get('newZoom');				                            
				                        }
				                        //Если переместили центр
				                          if (event.get('newCenter') != event.get('oldCenter')) {
				                            document.getElementById('center_map_option').value = coordaprox(event.get('newCenter'));   
				                        }
				                        //Помещаем метку в новый центр
				                        placemark1.geometry.setCoordinates(event.get('newCenter'));			                        
			                });
			                //Событие смены иконки
			                myMap0.events.add('typechange', function (event) {
			                            document.getElementById('type_map_option').value = myMap0.getType();
		                    });
		                    //Cобытие поиска, скрываем метку результата
                        	var searchControl = myMap0.controls.get('searchControl');                        
                        	searchControl.events.add("resultshow", function (e) {
                            	searchControl.hideResult();
                        	});
                        	//Функция добавления элементов управления картой в поле настроек
                        	var controlElems = document.querySelectorAll('#addcontrol a');
                        	for (var i = 0; i < controlElems.length; i++) {
                        		controlElems[i].addEventListener('click', function() {                        		
		                        if (document.getElementById('controls_map_option').value.trim()!="") {
		                               document.getElementById('controls_map_option').value = document.getElementById('controls_map_option').value + ';'; 
		                        }
		                        document.getElementById('controls_map_option').value = document.getElementById('controls_map_option').value + this.getAttribute("data-control");
	                        });
								
							}

                        }
                        
            </script>
                    
    		<div id="yamap"  style="position: relative; min-height: 15rem; margin-bottom: 1rem;"></div><br />
    		<div class="thanks" style="border: 4px #ffdb4d solid; background: #fff ; padding: 0 1rem 2rem 1rem; display: flex;">
    			<div style="flex: 1">
    				<?php echo __( '<div style="position: relative; display: block; width: 100%; white-space: normal !important;"><h2 style="color: #444;font-size: 18px;font-weight: 600;line-height: 36px;">Want other icon types?</h2>Additional types of icons can be found by the link in the <a href="https://tech.yandex.com/maps/doc/jsapi/2.1/ref/reference/option.presetStorage-docpage/ " style="white-space: normal">Yandex.Map documentation</a>.</div><div style="position: relative; display: block; width: 100%; white-space: normal !important;"><h2 style="color: #444;font-size: 18px;font-weight: 600;line-height: 36px;">Do you like YaMaps plugin?</h2>You can support its development by donate (<a href="https://money.yandex.ru/to/41001278340150" style="white-space: normal">Yandex</a>, <a href="https://www.paypal.me/yhunter" style="white-space: normal">PayPal</a>) or just leave a positive feedback in the <a href="https://wordpress.org/support/plugin/yamaps/reviews/" style="white-space: normal">plugin repository</a>. It\'s very motivating!</div><div style="position: relative; display: block; width: 100%; white-space: normal !important;"><h2 style="color: #444;font-size: 18px;font-weight: 600;line-height: 36px;">Any questions?</h2>Ask in the comments <a href="https://www.yhunter.ru/portfolio/dev/yamaps/" style="white-space: normal">on the plug-in\'s page</a>, <a href="https://wordpress.org/support/plugin/yamaps" style="white-space: normal">WP support forum</a> or <a href="https://github.com/yhunter-ru/yamaps/issues" style="white-space: normal">on GitHub</a>.</div>', 'yamaps' ); ?>
    			</div>
    			<div style="flex: 1">					
					<?php echo __('<div style="position: relative; display: block; width: 100%; white-space: normal !important;"><h2 style="color: #444;font-size: 18px;font-weight: 600;line-height: 36px;">Want other plugin features?</h2>Do you like the plugin but lack features for your project? For commercial modifications of the plugin, please contact me.</div><div style="position: relative; display: block; width: 100%; white-space: normal !important;"><h2 style="color: #444;font-size: 18px;font-weight: 600;line-height: 36px;">WordPress website design and development</h2>My name is Yuri and I have been creating websites for over 15 years. I have been familiar with WordPress since 2008. I know and love this CMS for its user friendly interface. This is exactly how I tried to make the interface of my YaMaps plugin, which you are currently using. If you need to create a website, make an interface design or write a plugin for WordPress - I will be happy to help you!<p style="margin-top: .5rem; text-align: center;"><b>Contacts:</b>  <a href="mailto:mail@yhunter.ru">mail@yhunter.ru</a>, <b>telegram:</b> <a href="tg://resolve?domain=yhunter">@yhunter</a>, <b>tel:</b> <a href="tel:+79028358830">+7-902-83-588-30</a></p></div>', 'yamaps') ?>
    			</div>
    		</div>
			<?php 
			settings_fields('yamaps_options'); // Идентификатор настроек плагина
			do_settings_sections($yamaps_page);
			?>
			<p class="submit">  
				<input type="submit" class="button-primary" value="<?php _e('Save Changes') ?>" />
			</p>

		
	</div><?php
}
 
/*
 * Регистрируем настройки
 * Мои настройки будут храниться в базе под названием yamaps_options (это также видно в предыдущей функции)
 */
function yamaps_option_settings() {
	global $yamaps_page;
	// Присваиваем функцию валидации ( yamaps_validate_settings() ). Вы найдете её ниже
	register_setting( 'yamaps_options', 'yamaps_options', 'yamaps_validate_settings' ); // yamaps_options
 
	// Область настроек карты
	add_settings_section( 'map_section', __( 'Map options', 'yamaps' ), '', $yamaps_page );
 
	// Поле центра карты
	$yamaps_field_params = array(
		'type'      => 'text', // тип
		'id'        => 'center_map_option',
		'desc'      => __( 'Drag the map to set its default coordinates', 'yamaps' ), 
		'label_for' => 'center_map_option' 
	);
	add_settings_field( 'center_map_option', __( 'Map center', 'yamaps' ), 'yamaps_option_display_settings', $yamaps_page, 'map_section', $yamaps_field_params );

	// Поле масштаба карты
	$yamaps_field_params = array(
		'type'      => 'text', // тип
		'id'        => 'zoom_map_option',
		'desc'      => __( 'Zoom the map to set its default scale', 'yamaps' ), 
		'label_for' => 'zoom_map_option' 
	);
	add_settings_field( 'zoom_map_option', __( 'Map zoom', 'yamaps' ), 'yamaps_option_display_settings', $yamaps_page, 'map_section', $yamaps_field_params );

	// Поле типа карты
	$yamaps_field_params = array(
		'type'      => 'text', // тип
		'id'        => 'type_map_option',
		'desc'      => __( 'Choose default map type: yandex#map, yandex#satellite, yandex#hybrid', 'yamaps' ), 
		'label_for' => 'type_map_option' 
	);
	add_settings_field( 'type_map_option', __( 'Map type', 'yamaps' ), 'yamaps_option_display_settings', $yamaps_page, 'map_section', $yamaps_field_params );

	// Поле высоты карты
	$yamaps_field_params = array(
		'type'      => 'text', // тип
		'id'        => 'height_map_option',
		'desc'      => 'rem, em, px, %', 
		'label_for' => 'height_map_option'
	);
	add_settings_field( 'height_map_option', __( 'Map height', 'yamaps' ), 'yamaps_option_display_settings', $yamaps_page, 'map_section', $yamaps_field_params );

 
	// Поле элементов управления карты
	$yamaps_field_params = array(
		'type'      => 'textarea',
		'id'        => 'controls_map_option',
		'desc'      => '<div id="addcontrol" style="text-align: left;"><a data-control="typeSelector">'.__( 'Map type', 'yamaps' ).'</a>, <a data-control="zoomControl">'.__( 'Zoom', 'yamaps' ).'</a>, <a data-control="searchControl">'.__( 'Search', 'yamaps' ).'</a>, <a data-control="routeButtonControl">'.__( 'Route', 'yamaps' ).'</a>, <a data-control="rulerControl">'.__( 'Ruler', 'yamaps' ).'</a>, <a data-control="trafficControl">'.__( 'Traffic', 'yamaps' ).'</a>, <a data-control="fullscreenControl">'.__( 'Full screen', 'yamaps' ).'</a>, <a data-control="geolocationControl">'.__( 'Geolocation', 'yamaps' ).'</a></div>'
	);
	add_settings_field( 'controls_map_option', __( 'Map controls', 'yamaps' ), 'yamaps_option_display_settings', $yamaps_page, 'map_section', $yamaps_field_params );

	// Чекбокс масштаба колесом
	$yamaps_field_params = array(
		'type'      => 'checkbox',
		'id'        => 'wheelzoom_map_option',
		'desc'      => __( 'The map can be scaled with mouse scroll', 'yamaps' )
	);
	add_settings_field( 'wheelzoom_map_option', __( 'Wheel zoom', 'yamaps' ), 'yamaps_option_display_settings', $yamaps_page, 'map_section', $yamaps_field_params );

	// Чекбокс мобильного перетаскивания
	$yamaps_field_params = array(
		'type'      => 'checkbox',
		'id'        => 'mobiledrag_map_option',
		'desc'      => __( 'The map can be dragged on mobile', 'yamaps' )
	);
	add_settings_field( 'mobiledrag_map_option', __( 'Mobile drag', 'yamaps' ), 'yamaps_option_display_settings', $yamaps_page, 'map_section', $yamaps_field_params );

	// Чекбокс открытия большой карты
	$yamaps_field_params = array(
		'type'      => 'checkbox',
		'id'        => 'open_map_option',
		'desc'      => __( 'Open big map/how to get button', 'yamaps' )
	);
	add_settings_field( 'open_map_option', __( 'Big map', 'yamaps' ), 'yamaps_option_display_settings', $yamaps_page, 'map_section', $yamaps_field_params );

	// Чекбокс ссылки на автора
	$yamaps_field_params = array(
		'type'      => 'checkbox',
		'id'        => 'authorlink_map_option',
		'desc'      => __( 'Disable link to plugin page', 'yamaps' )
	);
	add_settings_field( 'authorlink_map_option', __( 'Author link', 'yamaps' ), 'yamaps_option_display_settings', $yamaps_page, 'map_section', $yamaps_field_params );
 
	// Область настроек метки
 
	add_settings_section( 'icon_section', __( 'Marker options', 'yamaps' ), '', $yamaps_page );
 
	// Поле типа метки
	$yamaps_field_params = array(
		'type'      => 'text',
		'id'        => 'type_icon_option',
		'desc'      => '<a href="https://tech.yandex.com/maps/doc/jsapi/2.1/ref/reference/option.presetStorage-docpage/" target="_blank">'.__( 'Other icon types', 'yamaps' ).'</a>'
	);
	add_settings_field( 'type_icon_option', __( 'Icon', 'yamaps' ), 'yamaps_option_display_settings', $yamaps_page, 'icon_section', $yamaps_field_params );

	// Поле цвета метки
	$yamaps_field_params = array(
		'type'      => 'text',
		'id'        => 'color_icon_option',
		'desc'      => __( 'For example:', 'yamaps' ).' #ff3333'
	);
	add_settings_field( 'color_icon_option', __( 'Marker color', 'yamaps' ), 'yamaps_option_display_settings', $yamaps_page, 'icon_section', $yamaps_field_params );

	// Область ключа API

	add_settings_section( 'apikey_section', __( 'Yandex.Maps API key', 'yamaps' ), '', $yamaps_page );

	// Поле ключа API
	$yamaps_field_params = array(
		'type'      => 'text', // тип
		'id'        => 'apikey_map_option',
		'desc'      => __( '<a href="https://developer.tech.yandex.com/services/">Get a key</a> (JavaScript API & HTTP Geocoder) if it necessary', 'yamaps' ), 
		'label_for' => 'apikey_map_option'
	);
	add_settings_field( 'apikey_map_option', __( 'API key', 'yamaps' ), 'yamaps_option_display_settings', $yamaps_page, 'apikey_section', $yamaps_field_params );

	// Область сброса настроек
 
	add_settings_section( 'reset_section', __( 'Reset options', 'yamaps' ), '', $yamaps_page );

	// Чекбокс сброса настроек
	$yamaps_field_params = array(
		'type'      => 'checkbox',
		'id'        => 'reset_maps_option',
		'desc'      => __( 'Restore defaults', 'yamaps' )
	);
	add_settings_field( 'reset_maps_option', __( 'Reset options', 'yamaps' ), 'yamaps_option_display_settings', $yamaps_page, 'reset_section', $yamaps_field_params );
 
}
add_action( 'admin_init', 'yamaps_option_settings' );
 
/*
 * Функция отображения полей ввода
 * Здесь задаётся HTML и PHP, выводящий поля
 */
function yamaps_option_display_settings($args) {
	global $yamaps_defaults, $yamaps_defaults_front_bak;
	extract( $args );
 
	$option_name = 'yamaps_options';
	//delete_option($option_name); //удаление настроек для тестов
 	
	//Если настройки не найдены в БД, сохраняем туда дефолтные настройки плагина
	if(!get_option( $option_name)){
    	update_option( $option_name, $yamaps_defaults_front_bak);
	}

	//Нужно перебрать настройки и поставить дефолт в отсутствующие.

	$o = get_option( $option_name );

	foreach ($yamaps_defaults_front_bak as $key => $value) {
		if (!isset($o[$key])) {
			if (($value=='off')or($value=='on')) {
				$o[$key]=$yamaps_defaults_front_bak[$key];
			}
		}

	}
	switch ( $type ) {  
		case 'text':  
			$o[$id] = esc_attr( stripslashes($o[$id]) );
			echo "<input class='regular-text' type='text' id='$id' name='" . $option_name . "[$id]' value='$o[$id]' />";  
			echo ($desc != '') ? "<br /><span class='description'>$desc</span>" : "";  
		break;
		case 'textarea':  
			$o[$id] = esc_attr( stripslashes($o[$id]) );
			echo "<textarea class='code large-text' cols='50' rows='2' type='text' id='$id' name='" . $option_name . "[$id]'>$o[$id]</textarea>";  
			echo ($desc != '') ? "<br /><span class='description'>$desc</span>" : "";  
		break;
		case 'checkbox':
			$checked = ($o[$id] == 'on') ? " checked='checked'" :  '';  
			echo "<label><input type='checkbox' id='$id' name='" . $option_name . "[$id]' $checked /> ";  
			echo ($desc != '') ? $desc : "";
			echo "</label>";  
		break;
		case 'select':
			echo "<select id='$id' name='" . $option_name . "[$id]'>";
			foreach($vals as $v=>$l){
				$selected = ($o[$id] == $v) ? "selected='selected'" : '';  
				echo "<option value='$v' $selected>$l</option>";
			}
			echo ($desc != '') ? $desc : "";
			echo "</select>";  
		break;
		case 'radio':
			echo "<fieldset>";
			foreach($vals as $v=>$l){
				$checked = ($o[$id] == $v) ? "checked='checked'" : '';  
				echo "<label><input type='radio' name='" . $option_name . "[$id]' value='$v' $checked />$l</label><br />";
			}
			echo "</fieldset>";  
		break; 
	}
}

?>

Youez - 2016 - github.com/yon3zu
LinuXploit