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"> <a href="index.php?do=sql&act=overview">'.Lang::__('Инструмент Управления').'</a></div>';
echo '<div class="subpost"><img src="../icons/support/server.png"> <a href="index.php?do=sql&act=info_server">'.Lang::__('Состояние сервера').'</a></div>';
echo '<div class="subpost"><img src="../icons/support/value.png"> <a href="index.php?do=sql&act=value_system">'.Lang::__('Системные значение').'</a></div>';
echo '<div class="subpost"><img src="../icons/support/server_go.png"> <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> ';
echo '<a class="Button_secondary" href="index.php?do=sql&act=repair&table='.$name_sql.'">Ремонт</a> ';
echo '<a class="Button_secondary" href="index.php?do=sql&act=analiz&table='.$name_sql.'">Анализ</a> ';
echo '<a class="Button_secondary" href="index.php?do=sql&act=view_table&table='.$name_sql.'">Проверка</a> ';
echo '<a class="Button_secondary" href="index.php?do=sql&act=table_creact&table='.$name_sql.'">Структура</a> ';
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> '.engine::filesize($info_show['Data_length']).'</div>';
echo '<div class="row"><b>Индекс</b> '.engine::filesize($info_show['Index_length']).'</div>';
echo '<div class="row"><b>Всего</b> '.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> '.$format[$info_show['Row_format']].'</div>';
echo '<div class="row"><b>Сравнение</b> '.$info_show['Collation'].'</div>';
echo '<div class="row"><b>Строки</b> '.$info_show['Rows'].'</div>';
echo '<div class="row"><b>Длина строки</b> '.engine::filesize($info_show['Avg_row_length']).'</div>';
echo '<div class="row"><b>Следующий автоматический индекс</b> '.$info_show['Auto_increment'].'</div>';
echo '<div class="row"><b>Создание</b> '.$info_show['Create_time'].'</div>';
echo '<div class="row"><b>Последнее обновление</b> '.$info_show['Update_time'].'</div>';
echo '<div class="row"><b>Комментария</b> '.$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::__('Структура таблицы').' '.$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"> Все необходимы таблицы готовы к резервинованию, после сохранения бэкап можно будет найти перейти по пути 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;
?>