View file admin/support/toolbar_sql.php

File size: 23.34Kb
<?
switch($act):

	    //По умолчанию получаем данные ниже
        default:
            echo '<div class="mainname">'.Lang::__('Управление SQL').'</div>';
		    echo '<div class="mainpost">';
		    echo '<div class="subpost"><img src="../icons/support/server_chart.png">&nbsp;<a href="index.php?do=sql&act=overview">'.Lang::__('Инструмент Управления').'</a></div>';
		    echo '<div class="subpost"><img src="../icons/support/server.png">&nbsp;<a href="index.php?do=sql&act=info_server">'.Lang::__('Состояние сервера').'</a></div>';
		    echo '<div class="subpost"><img src="../icons/support/value.png">&nbsp;<a href="index.php?do=sql&act=value_system">'.Lang::__('Системные значение').'</a></div>';
		    echo '<div class="subpost"><img src="../icons/support/server_go.png">&nbsp;<a href="index.php?do=sql&act=backup">'.Lang::__('Резервирование базы данных').'</a></div>';		    
			echo '</div>';
			
			echo engine::home(array(Lang::__('Назад'),'index.php'));	
	    break;
		
		//Выводим все таблицы которые находятся в базе и управлять ими!)
		case 'overview':

		    $result = $db->query("SHOW TABLES");
                
				if (!$result) {
                    echo Lang::__('Ошибка базы, не удалось получить список таблиц').'<br/>';
                    echo Lang::__('Ошибка MySQL:'). $db->error_sql();
                    exit;
                }

            //Вывод всех таблиц
                echo '<div class="mainname">'.Lang::__('Всего таблиц в базе: ').$db->num_rows($result).'</div>';
                echo '<div class="mainpost">';
		
		    /// 

			    $sql_show = new sql_show();

            if (!empty($_POST)) {
                foreach ($_POST as $table => $val) {
                    if (!$val)
                        continue;
                            if (in_array($table, $sql_show->sql_show)) {
                                if (!empty($_POST['table_sql'])) {
                                    $sql_show->save_data(H .'engine/sql/'. $table . '.sql', $table);
                                }
                            }
                }

                if (!empty($_POST['table_sql'])) {
                   echo engine::success(Lang::__('База была успешно экспортирована в папку engine/sql/'));
	               echo '</div>';
	               echo engine::home(array(Lang::__('Назад'),'index.php?do=sql&act=overview'));
	               exit;
                }
	        }
		            
					echo "<table style='text-shadow: 0px 0px 0px #fff;' class='little-table' cellspacing='0'>"; 
                        echo "<tr>
				                <th></th> 
				                <th>".Lang::__('Таблица')." </th> 
                                <th>".Lang::__('Полей')."</th> 
                                <th>".Lang::__('Строк')."</th> 		
                                <th>".Lang::__('Размер')."</th> 							
					            <th>".Lang::__('Экспорт')."</th>  
				            </tr>";
					        // Вывод ........
							while ($row = $db->get_array($result)) {
								echo '<tr class="even">';
								        $show = $db->get_array($db->query("SHOW TABLE STATUS FROM `".DBNAME."` WHERE `name` = '{$row[0]}'"));
										$total = engine::filesize($show[Data_length]+$show[Index_length]);
                            		
									echo '<td style="pagging-left: 5px;"><img src="../icons/support/table.png"></td>'; 
									    echo "<td><a href='index.php?do=sql&act=viewsql&table={$row[0]}'>{$row[0]}</a></td>"; 	
                                    echo "<td>".$db->num_rows($db->query("SHOW COLUMNS FROM `{$row[0]}`"))."</td>";
									    echo "<td>".$show['Rows']."</td>";
                                    echo "<td>";
									    echo $total;
									echo "</td>";
									    echo '<td>';
									        //Форма
									        $form = new form('index.php?do=sql&act=overview');
									        $form->text('<input type="checkbox" id="'.$row[0].'" name="'.$row[0].'" checked hidden>');
									        $form->submit(Lang::__('Экспорт'),'table_sql',false,'Button_secondary');
									        $form->display();
									    echo '</td>';	
								    echo '</tr>';
							} //			
    	            echo "</table>";		 
                echo '</div>';

            echo engine::home(array(Lang::__('Назад'),'index.php?do=sql'));
		break;
		
		////// Получение всех полей таблицы и дополнительные разделы
		case 'viewsql':
		    $name_sql = engine::proc_name($_GET['table']);
		        
				echo '<div class="mainname">'.Lang::__('Дополнительно').'</div>';
		        echo '<div class="mainpost">';
		            echo '<a class="Button_secondary" href="index.php?do=sql&act=optimize&table='.$name_sql.'">Оптимизация</a>&nbsp;&nbsp;';
			        echo '<a class="Button_secondary" href="index.php?do=sql&act=repair&table='.$name_sql.'">Ремонт</a>&nbsp;&nbsp;';
			        echo '<a class="Button_secondary" href="index.php?do=sql&act=analiz&table='.$name_sql.'">Анализ</a>&nbsp;&nbsp;';	
                    echo '<a class="Button_secondary" href="index.php?do=sql&act=view_table&table='.$name_sql.'">Проверка</a>&nbsp;&nbsp;';	
                    echo '<a class="Button_secondary" href="index.php?do=sql&act=table_creact&table='.$name_sql.'">Структура</a>&nbsp;&nbsp;';						
		        echo '</div>';
		            echo '<div class="mainname">'.Lang::__('Поля').' <b>'.$name_sql.'</b></div>';
		            echo '<div class="mainpost">';
		                echo "<table style='text-shadow: 0px 0px 0px #fff;' class='little-table' cellspacing='0'>"; 
                            echo "<tr>
				                    <th>".Lang::__('Имя')." </th> 
                                    <th>".Lang::__('Тип')."</th> 
                                    <th>".Lang::__('Null')."</th> 		
                                    <th>".Lang::__('По умолчанию')."</th> 							
					                <th>".Lang::__('Дополнительно')."</th>  
				                </tr>";
					                $result = $db->query("SHOW COLUMNS FROM `".$name_sql."`");
							
							            while ($row = $db->get_array($result)) {
							                $null = array('NO' => '<i>Нет</i>','YES' => 'Да');
								                echo '<tr class="even">';
										            echo '<td>'.$row['Field'].'</td>';
										            echo '<td>'.$row['Type'].'</td>';
										            echo '<td>'. $null[$row['Null']].'</td>';
										            echo '<td>'. $row['Default'].'</td>';
										            echo '<td>'.$row['Extra'].'</td>';
								                echo '</tr>';
							            }			
    	                echo "</table>";	
		            echo '</div>';
		
                    echo '<div class="mainname">'.Lang::__('Индексы').' <b>'.$name_sql.'</b></div>';
		            echo '<div class="mainpost">';
		                echo "<table style='text-shadow: 0px 0px 0px #fff;' class='little-table' cellspacing='0'>"; 
                            echo "<tr>
				                    <th>".Lang::__('Имя индекса')." </th> 
                                    <th>".Lang::__('Тип')."</th> 
                                    <th>".Lang::__('Уникальный')."</th> 		
                                    <th>".Lang::__('Столбец')."</th> 							
					                <th>".Lang::__('Уник. Элементов')."</th>  
				                </tr>";
								
						            $result_in = $db->query("SHOW INDEX FROM `".$name_sql."`");
							            while ($row_in = $db->get_array($result_in)) {
							                $non = array(0 => 'Да', 1 => 'Нет');
								                echo '<tr class="even">';
										            echo '<td><b>'.$row_in['Key_name'].'</b></td>';
										            echo '<td>'.$row_in['Index_type'].'</td>';
										            echo '<td>'.$non[$row_in['Non_unique']].'</td>';
										            echo '<td>'.$row_in['Column_name'].'</td>';
										            echo '<td>'.$row_in['Cardinality'].'</td>';
								                echo '</tr>';
							            }		 
    	                echo "</table>";	
		            echo '</div>';		
        
		            echo '<div class="mainname">'.Lang::__('Информация').'</b></div>';
		            echo '<div class="mainpost">';
		                $info_show = $db->get_array($db->query("SHOW TABLE STATUS FROM `".DBNAME."` WHERE `name` = '{$name_sql}'"));
		                    
							echo '<div class="subpost">';
		                    echo '<center style="padding-bottom: 5px;"><b>Используемое пространство</b></center>';
			                    echo '<div class="row"><b>Данные</b>&nbsp; '.engine::filesize($info_show['Data_length']).'</div>';
			                    echo '<div class="row"><b>Индекс</b>&nbsp; '.engine::filesize($info_show['Index_length']).'</div>';
			                    echo '<div class="row"><b>Всего</b>&nbsp; '.engine::filesize($info_show['Data_length']+$info_show['Index_length']).'</div>';
		                        echo '</div>';
		
		                            echo '<div class="subpost">';
		                                echo '<center style="padding-bottom: 5px;"><b>Статистика строк</b></center>';
		                                    $format = array('Dynamic' => 'Динамический','Static' => 'Статический');
			                            
										echo '<div class="row"><b>Формат</b>&nbsp; '.$format[$info_show['Row_format']].'</div>';
			                                echo '<div class="row"><b>Сравнение</b>&nbsp; '.$info_show['Collation'].'</div>';
			                                    echo '<div class="row"><b>Строки</b>&nbsp; '.$info_show['Rows'].'</div>';
			                                echo '<div class="row"><b>Длина строки</b>&nbsp; '.engine::filesize($info_show['Avg_row_length']).'</div>';
			                                    echo '<div class="row"><b>Следующий автоматический индекс</b>&nbsp; '.$info_show['Auto_increment'].'</div>';
			                                echo '<div class="row"><b>Создание</b>&nbsp; '.$info_show['Create_time'].'</div>';	
                                                echo '<div class="row"><b>Последнее обновление</b>&nbsp; '.$info_show['Update_time'].'</div>';	
                                            echo '<div class="row"><b>Комментария</b>&nbsp; '.$info_show['Comment'].'</div>';				
		                                echo '</div>';		
		                            echo '</div>';
									
		        echo engine::home(array(Lang::__('Назад'),'index.php?do=sql&act=overview'));
		break;		
        
		//Оптимизация таблицы
		case 'optimize':
		        $table = engine::proc_name($_GET['table']);		
                    
					echo '<div class="mainname">'.Lang::__('Оптимазация таблицы').' <b>'.$name_sql.'</b></div>';
		            echo '<div class="mainpost">';
		                echo "<table style='text-shadow: 0px 0px 0px #fff;' class='little-table' cellspacing='0'>"; 
                            echo "<tr>
				                    <th>".Lang::__('Таблица')." </th> 
                                    <th>".Lang::__('Op')."</th> 
                                    <th>".Lang::__('Тип')."</th> 		
                                    <th>".Lang::__('Текст')."</th> 							
				                </tr>";				
		                            
									$optimize = $db->query("OPTIMIZE TABLE  `{$table}`");
			                            while($optim = $db->get_array($optimize)) {
                                            echo '<tr class="even">';			     
					                            echo '<td><b>'.$optim['Table'].'</b></td>';
					                                echo '<td>'.$optim['Op'].'</td>';
					                            echo '<td>'.$optim['Msg_type'].'</td>';
					                                echo '<td>'.$optim['Msg_text'].'</td>';
									
				                            echo '</tr>';
			                            }
    	                echo "</table>";	
		            echo '</div>';
				echo engine::home(array(Lang::__('Назад'),'index.php?do=sql&act=viewsql&table='.$table.''));
		break;
		
		//Ремонт таблицы
		case 'repair':
		        $table = engine::proc_name($_GET['table']);
				
                    echo '<div class="mainname">'.Lang::__('Ремонт таблицы').' <b>'.$table.'</b></div>';
		            echo '<div class="mainpost">';
		                echo "<table style='text-shadow: 0px 0px 0px #fff;' class='little-table' cellspacing='0'>"; 
                            echo "<tr>
				                    <th>".Lang::__('Таблица')." </th> 
                                    <th>".Lang::__('Op')."</th> 
                                    <th>".Lang::__('Тип')."</th> 		
                                    <th>".Lang::__('Текст')."</th> 							
				            </tr>";				
		    
			                    $repaire = $db->query("REPAIR TABLE  `{$table}`");
			                        while($repair = $db->get_array($repaire)) {
                                        echo '<tr class="even">';				     
					                        echo '<td><b>'.$repair['Table'].'</b></td>';
					                        echo '<td>'.$repair['Op'].'</td>';
					                        echo '<td>'.$repair['Msg_type'].'</td>';
					                        echo '<td>'.$repair['Msg_text'].'</td>';
				                        echo '</tr>';
			                        }
    	                echo "</table>";	
		            echo '</div>';
				echo engine::home(array(Lang::__('Назад'),'index.php?do=sql&act=viewsql&table='.$table.''));
		break; // ex
		
		//Анализируем таблицы
		case 'analiz':
		   		$table = engine::proc_name($_GET['table']);
				
                    echo '<div class="mainname">'.Lang::__('Аналиц структуры таблицы').' <b>'.$table.'</b></div>';
		            echo '<div class="mainpost">';
		                echo "<table style='text-shadow: 0px 0px 0px #fff;' class='little-table' cellspacing='0'>"; 
                            echo "<tr>
				                    <th>".Lang::__('Имя')." </th> 
                                    <th>".Lang::__('Мин. Значение')."</th> 
                                    <th>".Lang::__('Мак. Значение')."</th> 
                                    <th>".Lang::__('Ср. Значение')."<br/>".Lang::__('Ср. Длина')."</th> 
				                </tr>";				
		    
			                        $analize = $db->query("SELECT * FROM  `{$table}` PROCEDURE ANALYSE ( )");
			                            while($analiz = $db->get_array($analize)) {
                                            echo '<tr class="even">';
					                            echo '<td>'.$analiz['Field_name'].'</td>';
					                            echo '<td>'.$analiz['Min_value'].'</td>';
					                            echo '<td>'.$analiz['Max_value'].'</td>';
					                            echo '<td>'.$analiz['Avg_value_or_avg_length'].'</td>';		
				                            echo '</tr>';
			                            }
    	                echo "</table>";	
		            echo '</div>';
				//Переадресация
				echo engine::home(array(Lang::__('Назад'),'index.php?do=sql&act=viewsql&table='.$table.''));
		break;
		
		//Проверяем таблицы
		case 'view_table':
		   		$table = engine::proc_name($_GET['table']);
			
                    echo '<div class="mainname">'.Lang::__('Проверить таблицу').' <b>'.$table.'</b></div>';
		            echo '<div class="mainpost">';
		                echo "<table style='text-shadow: 0px 0px 0px #fff;' class='little-table' cellspacing='0'>"; 
                            echo "<tr>
				                    <th>".Lang::__('Таблица')." </th> 
                                    <th>".Lang::__('Op')."</th> 
                                    <th>".Lang::__('Тип')."</th> 
                                    <th>".Lang::__('Текст')."</th> 
				                </tr>";				
		                            
									$views = $db->query("CHECK TABLE  `{$table}`");
			                            while($view = $db->get_array($views)) {
                                            echo '<tr class="even">';		     
					                            echo '<td>'.$view['Table'].'</td>';
					                            echo '<td>'.$view['Op'].'</td>';
					                            echo '<td>'.$view['Msg_type'].'</td>';
					                            echo '<td>'.$view['Msg_text'].'</td>';	
				                            echo '</tr>';
			                            }
    	                echo "</table>";	
		            echo '</div>';
				//Переадресация
				echo engine::home(array(Lang::__('Назад'),'index.php?do=sql&act=viewsql&table='.$table.''));
		break;		
		
		//Структура таблиц
		case 'table_creact':
		        $table = engine::proc_name($_GET['table']);
                    echo '<div class="mainname">'.Lang::__('Структура таблицы').'&nbsp;'.$table.'</div>';
		            echo '<div class="mainpost">';
		                echo "<table style='text-shadow: 0px 0px 0px #fff;' class='little-table' cellspacing='0'>"; 
                            echo "<tr>
				                    <th>".Lang::__('Имя переменной')." </th> 
                                    <th>".Lang::__('Значение')."</th> 
				                </tr>";				
		                            
									$values = $db->query("SHOW CREATE TABLE `{$table}`");
			                            while($value = $db->get_array($values)) {
                                            echo '<tr class="even">';		     
					                            echo '<td>'.$value['Table'].'</td>';
					                            echo '<td>'.engine::input_text('[php]'.$value['Create Table'].'[/php]').'</td>';
				                            echo '</tr>';
			                            }
    	                echo "</table>";	
		            echo '</div>';
				//Переадресация
				echo engine::home(array(Lang::__('Назад'),'index.php?do=sql&act=viewsql&table='.$table.''));
		break;    
	    case 'info_server':
            
                    echo '<div class="mainname">'.Lang::__('Информация о сервере').'</div>';
		            echo '<div class="mainpost">';
					echo '<div class="subpost">';
					    printf("Версия сервера: %s\n<br/>", $db->get_server_info());
						printf("Тип соединения: %s\n<br/>", $db->get_host_info());
					echo '</div>';
		                echo "<table style='text-shadow: 0px 0px 0px #fff;' class='little-table' cellspacing='0'>"; 
                            echo "<tr>
				                    <th>".Lang::__('Имя переменной')." </th> 
                                    <th>".Lang::__('Значение')."</th> 
				                </tr>";				
		                            
									$views = $db->query("SHOW STATUS;");
			                            while($view = $db->get_array($views)) {
                                            echo '<tr class="even">';		     
					                            echo '<td>'.$view['Variable_name'].'</td>';
					                            echo '<td>'.$view['Value'].'</td>';
				                            echo '</tr>';
			                            }
    	                echo "</table>";	
		            echo '</div>';
				//Переадресация
				echo engine::home(array(Lang::__('Назад'),'index.php?do=sql'));
		break;
		
		//Системные значение настроек
		case 'value_system':
                    echo '<div class="mainname">'.Lang::__('Системные значение').'</div>';
		            echo '<div class="mainpost">';
		                echo "<table style='text-shadow: 0px 0px 0px #fff;' class='little-table' cellspacing='0'>"; 
                            echo "<tr>
				                    <th>".Lang::__('Имя переменной')." </th> 
                                    <th>".Lang::__('Значение')."</th> 
				                </tr>";				
		                            
									$values = $db->query("SHOW VARIABLES;");
			                            while($value = $db->get_array($values)) {
                                            echo '<tr class="even">';		     
					                            echo '<td>'.$value['Variable_name'].'</td>';
					                            echo '<td>'.$value['Value'].'</td>';
				                            echo '</tr>';
			                            }
    	                echo "</table>";	
		            echo '</div>';
				//Переадресация
				echo engine::home(array(Lang::__('Назад'),'index.php?do=sql'));		
		break;
		
		//Создание резервинованого копирование ваших таблиц
		case 'backup':
            
			echo '<div class="mainname">Резервирование базы данных</div>';
			echo '<div class="mainpost">';
				
				echo engine::error('<b>Предупреждение</b><br/>Если у вас есть доступ к phpMyAdmin или другим подобным инструментам, то мы рекомендуем для создания резервной копии воспользоваться ими.');
				echo '<div class="subpost"><img src="../icons/support/frame.png">&nbsp;Все необходимы таблицы готовы к резервинованию, после сохранения бэкап можно будет найти перейти по пути engine/sql/</div>';
			    
					$form = new form('index.php?do=sql&act=backup');
					$form->text('</div><div class="submit"><center>');
					$form->submit(Lang::__('Начать резервинование'),'submit');
					$form->text('</center></div>');
					$form->display();
					
				//Для резервинования нужно пройти по форме	
				if(isset($_POST['submit'])) {
            		$backup = new MySQL_Backup();
            		$backup->fname_format = 'Ymd-His';
               			
						//Соединение с сервером
                			$backup->server = DBHOST;
                			$backup->username = DBUSER;
                			$backup->password = DBPASS;
                			$backup->database = DBNAME;
				
                    	// Кодировка базы
                    		$backup->characters = 'UTF8';
                        
						// Место куда будем заливать дамп. Не забываем про слеши.
                        	$backup->backup_dir = H.'engine/sql/';
                        	$run = $backup->Execute();
                    echo $run;
				}		
				
			echo engine::home(array(Lang::__('Назад'),'index.php?do=sql'));		
		break;
		
	endswitch;

?>