parent
b5cc8f2694
commit
c7d8dea958
@ -1,181 +0,0 @@ |
||||
<?php |
||||
|
||||
/** |
||||
* |
||||
* |
||||
* @package chamilo.admin |
||||
* @author Laurent Opprecht <laurent@opprecht.info> |
||||
* @license see /license.txt |
||||
*/ |
||||
$language_file = array('admin'); |
||||
$cidReset = true; |
||||
require_once '../inc/global.inc.php'; |
||||
require_once __DIR__ . '/admin_page.class.php'; |
||||
|
||||
class SystemManagementPage extends AdminPage |
||||
{ |
||||
|
||||
const PARAM_ACTION = 'action'; |
||||
const PARAM_SECURITY_TOKEN = 'sec_token'; |
||||
const ACTION_DEFAULT = 'list'; |
||||
const ACTION_SECURITY_FAILED = 'security_failed'; |
||||
|
||||
function get_action() |
||||
{ |
||||
$result = Request::get(self::PARAM_ACTION, self::ACTION_DEFAULT); |
||||
if ($result != self::ACTION_DEFAULT) { |
||||
$passed = Security::check_token('get'); |
||||
Security::clear_token(); |
||||
$result = $passed ? $result : self::ACTION_SECURITY_FAILED; |
||||
} |
||||
return $result; |
||||
} |
||||
|
||||
function url($params) |
||||
{ |
||||
return Uri::here($params); |
||||
} |
||||
|
||||
function display_default() |
||||
{ |
||||
$message = get_lang('RemoveOldDatabaseMessage'); |
||||
$message_table = get_lang('RemoveOldTables'); |
||||
|
||||
$message_table .= "<br />".implode(' , ', self::get_tables_to_delete()); |
||||
$token = Security::get_token(); |
||||
$url = $this->url(array(self::PARAM_ACTION => 'drop_old_databases', self::PARAM_SECURITY_TOKEN => $token)); |
||||
$url_table = $this->url(array(self::PARAM_ACTION => 'drop_old_tables', self::PARAM_SECURITY_TOKEN => $token)); |
||||
|
||||
$go = get_lang('Go'); |
||||
$access_url_id = api_get_current_access_url_id(); |
||||
$message2 = ''; |
||||
|
||||
if ($access_url_id === 1) { |
||||
if (api_is_windows_os()) { |
||||
$message2 .= get_lang('SpaceUsedOnSystemCannotBeMeasuredOnWindows'); |
||||
} else { |
||||
$dir = api_get_path(SYS_PATH); |
||||
$du = exec('du -sh ' . $dir, $err); |
||||
list($size, $none) = explode("\t", $du); |
||||
$limit = $_configuration[$url]['hosting_limit_disk_space']; |
||||
$message2 .= sprintf(get_lang('TotalSpaceUsedByPortalXLimitIsYMB'), $size, $limit); |
||||
} |
||||
} |
||||
if (!empty($message2)) { |
||||
$message2 = '<li>' . $message2 . '</li>'; |
||||
} |
||||
echo <<<EOT |
||||
<ul> |
||||
<li> |
||||
<div>$message</div> |
||||
<a class="btn" href=$url>$go</a> |
||||
</li> |
||||
<li> |
||||
<div>$message_table</div> |
||||
<a class="btn" href=$url_table>$go</a> |
||||
</li> |
||||
$message2 |
||||
</ul> |
||||
EOT; |
||||
} |
||||
|
||||
function display_security_failed() |
||||
{ |
||||
Display::display_error_message(get_lang('NotAuthorized')); |
||||
} |
||||
|
||||
function display_content() |
||||
{ |
||||
$action = $this->get_action(); |
||||
switch ($action) { |
||||
case self::ACTION_DEFAULT: |
||||
$this->display_default(); |
||||
return; |
||||
|
||||
case self::ACTION_SECURITY_FAILED: |
||||
$this->display_security_failed(); |
||||
return; |
||||
|
||||
default: |
||||
$f = array($this, $action); |
||||
if (is_callable($f)) { |
||||
call_user_func($f); |
||||
return; |
||||
} else { |
||||
Display::display_error_message(get_lang('UnknownAction')); |
||||
} |
||||
return; |
||||
} |
||||
} |
||||
|
||||
/** |
||||
* |
||||
* @return ResultSet |
||||
*/ |
||||
function get_old_databases() |
||||
{ |
||||
$course_db = Database::get_main_table(TABLE_MAIN_COURSE); |
||||
$sql = "SELECT id, code, db_name, directory, course_language FROM $course_db WHERE target_course_code IS NULL AND db_name IS NOT NULL ORDER BY code"; |
||||
return new ResultSet($sql); |
||||
} |
||||
|
||||
function drop_old_tables() |
||||
{ |
||||
$tables_to_remove = self::get_tables_to_delete(); |
||||
|
||||
$number_tables_deleted = 0; |
||||
$tables_deleted = ''; |
||||
foreach ($tables_to_remove as $table) { |
||||
//Deleting tables |
||||
$drop_table = "DROP TABLE $table"; |
||||
$success = Database::query($drop_table); |
||||
$success =true; |
||||
if ($success) { |
||||
$tables_deleted .= $table.'<br />'; |
||||
$number_tables_deleted++; |
||||
} |
||||
} |
||||
|
||||
Display::display_confirmation_message(sprintf(get_lang('XOldTablesDeleted'),$number_tables_deleted)); |
||||
Display::display_confirmation_message($tables_deleted, false); |
||||
} |
||||
|
||||
function get_tables_to_delete() { |
||||
$tables_to_remove = array( |
||||
Database::get_main_table(TABLE_MAIN_CLASS), |
||||
Database::get_main_table(TABLE_MAIN_CLASS_USER), |
||||
Database::get_main_table(TABLE_MAIN_COURSE_CLASS), |
||||
); |
||||
return $tables_to_remove; |
||||
} |
||||
|
||||
function drop_old_databases() |
||||
{ |
||||
$result = array(); |
||||
$courses = $this->get_old_databases(); |
||||
$course_db = Database::get_main_table(TABLE_MAIN_COURSE); |
||||
foreach ($courses as $course) { |
||||
$drop_statement = 'DROP DATABASE ' . $course['db_name']; |
||||
$success = Database::query($drop_statement); |
||||
if ($success) { |
||||
/* |
||||
* Note that Database::update do not supports null statements so |
||||
* we do it by hand here. |
||||
*/ |
||||
$id = $course['id']; |
||||
$update_statement = "UPDATE $course_db SET db_name = NULL WHERE id = $id"; |
||||
Database::query($update_statement); |
||||
$result[] = $course['db_name']; |
||||
} |
||||
} |
||||
|
||||
Display::display_confirmation_message(sprintf(get_lang('XOldDatabasesDeleted'),count($result))); |
||||
|
||||
|
||||
return $result; |
||||
} |
||||
|
||||
} |
||||
|
||||
$page = new SystemManagementPage(get_lang('SystemManagement')); |
||||
$page->display(); |
Loading…
Reference in new issue