Файл: adultscript-2.0.3-pro/files/admin/modules/tools/components/database.php
Строк: 38
<?php
defined('_VALID') or die('Restricted Accesss!');
class VComponent_Admin_tools_database
{
private $db;
public function __construct()
{
$this->db = VF::factory('database');
}
public function render()
{
$errors = array();
$messages = array();
$warnings = array();
if (isset($_POST['submit-database'])) {
$table = VF::factory('filter')->get('table');
$optimize = trim($_POST['optimize']);
if (!empty($table)) {
if (!VValid::alunderscore($table)) {
$errors[] = 'Table name can contain only letters, numbers and underscore!';
} else {
if ($table == 'all') {
$tables = $this->get_tables();
foreach ($tables as $db_table) {
$this->repair_table($db_table);
}
} else {
$this->repair_table($table);
}
$messages[] = 'Table(s) repaired!';
}
}
if (!empty($optimize)) {
if ($optimize == 'yes') {
$tables = $this->get_tables();
foreach ($tables as $db_table) {
$this->optimize_table($db_table);
}
$messages[] = 'Database tables optimized!';
} elseif ($optimize == 'table') {
if ($table == 'all') {
$tables = $this->get_tables();
foreach ($tables as $db_table) {
$this->optimize_table($db_table);
}
$messages[] = 'Database tables optimized!';
} elseif (!empty($table) && !$errors) {
$this->optimize_table($table);
$messages[] = 'Database table optimized!';
} else {
$errors[] = 'Table is empty or not valid!';
}
}
}
}
$tpl = VF::factory('template');
$tpl->menu = 'main';
$tpl->submenu = 'tools';
$tpl->meta_title = 'Admin::Tools::Database';
$tpl->errors = $errors;
$tpl->messages = $messages;
$tpl->warnings = $warnings;
$tpl->load(array('header', 'tools_database', 'footer'));
$tpl->display();
}
private function repair_table($table)
{
$this->db->query("REPAIR TABLE #__".$this->db->escape($table));
}
private function get_tables()
{
$tables = array();
$rows = $this->db->get_rows("SHOW TABLES");
foreach ($rows as $row) {
$tables[] = $row['0'];
}
return $tables;
}
private function optimize_table($table)
{
$this->db->query("OPTIMIZE TABLE #__".$this->db->escape($table));
}
}