<?php
/*
Plugin Name: Панель нагрузки
Plugin URI: http://my-wordpress.ru/plugin/panel-nagruzki-wordpress-plugin.php
Description: Отображает небольшую панельку в углу сайта, которая показывает запросы к БД, время генерации страницы, потребляемую память
Version: 1.03
Author: Alexpts
Author URI: http://alexpts.ru
*/


class AlexPTS_LoadPanel {


	function style_panel_load()
	{
		$settings = get_option('pts_panel_load');
  	?> 

   
    <style type="text/css">   
      #panel_load {
  		 background:<?php if ($settings["bgcolor"]) {echo $settings["bgcolor"];} else {echo "#FFFFFF";}?>;
  		 border:1px solid #CCCCCC;
  		 opacity:<?php if ($settings["opacity"]) {echo $settings["opacity"];} else {echo "1";}?>;
  		 padding:10px;
  		 position:<?php if ($settings["position"]) {echo $settings["position"];} else {echo "fixed";}?>;
  		 <?php if($settings["horizont_position"]){echo $settings["horizont_position"];} else { echo "right";} ?>: <?php if($settings["offset_horizont"]){echo $settings["offset_horizont"]."px";} else {echo "10px";}?>;
  		 <?php if($settings["vertical_position"]){echo $settings["vertical_position"];} else { echo "top";} ?>: <?php if($settings["offset_vertical"]){echo $settings["offset_vertical"]."px";} else {echo "10px";}?>;
  		 color:#555555;
  		 font-family:"Trebuchet MS",Arial,Helvetica,sans-serif;
  		 font-size:12px;
  		 text-align:center;
  		 z-index:100;
      }  
     </style>  
    
    <?  
	}



	function show_panel_load()
	{
		$settings = get_option('pts_panel_load');

		if ($settings["visible_role"] == "admin") {
			if (current_user_can('level_10')){
				self::myShowStats();
			}
		} else {
			self::myShowStats();
		}
	}



	static function myShowStats()
	{
		echo "<div id='panel_load'>Запросов: " . get_num_queries() . " | "; timer_stop(1). "секунд";

		if (function_exists('memory_get_usage')) {
			echo "<br /> Потребление памяти: " . round(memory_get_usage()/1024/1024, 2) . "MB</div>";
		}

	}


	function addMenuItem()
	{
		if(isset($_POST['submitted']))
		{

			if($_POST["show_adminka"] == "") {
				$_POST["show_adminka"] = 'false';
			}
			
			if($_POST["opacity"] != "") {
				$opacity = ($_POST["opacity"]/100);
				$opacity = substr("$opacity", 0, 4);				
			}


			$settings = array(
			'position'            => $_POST["position"],
			'horizont_position'   => $_POST["horizont_position"],
			'vertical_position'   => $_POST["vertical_position"],
			'offset_horizont'     => $_POST["offset_horizont"],
			'offset_vertical'     => $_POST["offset_vertical"],
			'visible_role'        => $_POST["visible_role"],
			'show_adminka'        => $_POST["show_adminka"],
			'opacity'			  => $opacity,
			'bgcolor'			  => $_POST["bgcolor"],
			);


			
			update_option('pts_panel_load', $settings);

			echo "<div id='message' class='updated fade'><p><strong>Настройки успешно обновлены.</strong></p></div>";
		}

		$settings = get_option('pts_panel_load');




    ?>
<form method="post" name="options" target="_self">
<?php wp_nonce_field('update-options'); ?>
<input type="hidden" name="page_options" value="position" />


	<table style="width:520px; margin:15px;" border="0">
	
	<tr>
		<td>Позиция	</td> 
		<td><select name="position" type="text">
		   <option value="fixed" <?php if($settings["position"] == 'fixed'){ echo(' selected="selected"');}?>>Фиксированная</option> 
		   <option value="absolute" <?php if($settings["position"] == 'absolute'){ echo(' selected="selected"');}?>>Абсолютная</option> 
		 </select></td>
 	</tr>
 	
 	<tr>
	<td> Горизонтальное положение панельки</td>
		<td> <select name="horizont_position" type="text">
		   <option value="left" <?php if($settings["horizont_position"] == 'left'){ echo(' selected="selected"');}?>>Слева</option> 
		   <option value="right" <?php if($settings["horizont_position"] == 'right'){ echo(' selected="selected"');}?>>Справа</option> 
		 </select></td>
	</tr>
	
	<tr>
	 <td>Вертикальное положение пнельки</td>
		 <td> <select name="vertical_position" type="text">
		   <option value="top" <?php if($settings["vertical_position"] == 'top'){ echo(' selected="selected"');}?>>Сверху</option> 
		   <option value="bottom" <?php if($settings["vertical_position"] == 'bottom'){ echo(' selected="selected"');}?>>Снизу</option> 
		 </select></td>
	</tr>
	
	<tr>
	<td>Отображать панель для</td>
		 <td> <select name="visible_role" type="text">
		   <option value="all" <?php if($settings["visible_role"] == 'all'){ echo(' selected="selected"');}?>>Всех</option> 
		   <option value="admin" <?php if($settings["visible_role"] == 'admin'){ echo(' selected="selected"');}?>>Администратора</option> 
		 </select></td>
	</tr>
	
	<tr>
	<td>Отступ по горизонтали (в px)</td>	
		 <td><input type="text" name="offset_horizont" value="<?php if($settings["offset_horizont"]){ echo $settings["offset_horizont"];}?>" /></td><td>px</td>
	</tr>
	
	<tr>
	<td>Отступ по вертикали (в px)</td>
		<td> <input type="text" name="offset_vertical" value="<?php if($settings["offset_vertical"]){ echo $settings["offset_vertical"];}?>" /></td><td>px</td>
	</tr>
	
	<tr>
	<td>Отображать панель в админке</td>
		<td> <select name="show_adminka" type="text">
		   <option value="false" <?php if($settings["show_adminka"] == 'false'){ echo(' selected="selected"');}?>>Нет</option> 
		   <option value="true" <?php if($settings["show_adminka"] == 'true'){ echo(' selected="selected"');}?>>Да</option> 
		 </select></td>
	</tr>
	
	<tr>
	<td>Прозрачность панельки, от 0 до 100</td>
		<td><input maxlength="3" type="text" name="opacity" value="<?php if($settings["opacity"]){ echo $settings["opacity"]*100;}?>" /></td><td>%</td>
	</tr>
	
	<tr>
	<td>Цает панельки (по умолчанию #FFFFFF)</td>
		<td><input maxlength="7" type="text" name="bgcolor" value="<?php if($settings["bgcolor"]){ echo $settings["bgcolor"];}?>" /></td>
	</tr>
	
</table>
		

		<p class="submit">
			<input name="submitted" type="hidden" value="yes" />
			<input type="submit" name="Submit" value="Сохранить" />
		</p>

		
		
		
</form>
</div>
<?php 
	}

}





function panel_load_add_to_menu() {
	add_submenu_page('options-general.php', 'Панель нагрузки - настройки', 'Панель нагрузки', 10, __FILE__, array('AlexPTS_LoadPanel', 'addMenuItem'));
}


add_action('admin_menu', 'panel_load_add_to_menu');
add_action('wp_head', array('AlexPTS_LoadPanel', 'style_panel_load'));
add_action('wp_footer', array('AlexPTS_LoadPanel', 'show_panel_load'));


$settings = get_option('pts_panel_load');
if ($settings["show_adminka"] == "true") {
	add_action('admin_head', array('AlexPTS_LoadPanel', 'style_panel_load'));
	add_action('admin_footer', array('AlexPTS_LoadPanel', 'show_panel_load'));
}


?>