/**
  * Восстанавливает базу данных из резервной копии.
  * @param type $BackupFile Имя файла бекапа
  * @param type $Table      Имя таблицы, если нужно восстановить одну таблицу
  */
 public function RestoreBackupFile($BackupFile, $Table = '')
 {
     $zip = new ZipArchive();
     $iferrors = false;
     if (GetSecondFileExt($BackupFile, true) == $this->Name && $zip->open($BackupFile) === true) {
         for ($i = 0; $i < $zip->numFiles; $i++) {
             $filename = $zip->getNameIndex($i);
             if ($Table == '' || $Table == GetFileName($filename, true)) {
                 $sql = $zip->getFromIndex($i);
                 $sql = explode(";", $sql);
                 foreach ($sql as $query) {
                     if (trim($query) == '') {
                         continue;
                     }
                     if (System::database()->MySQLQuery($query) === false) {
                         if (defined('ADMIN_SCRIPT')) {
                             System::admin()->HighlightError(System::database()->MySQLGetErrMsg() . ' (' . $filename . ')');
                         }
                         $iferrors = true;
                     }
                 }
             }
         }
         $zip->close();
         // Обрабытываем ошибки
         if ($iferrors) {
             return 2;
             // Ошибки при восстановлении таблиц
         }
         return 1;
         // Успешно восстановлено
     } else {
         return 3;
         // Неверный формат файла
     }
 }
	$.ajax({
		type: "POST",
		url: "' . ADMIN_FILE . '?exe=dbadmin&a=backup_create",
		data: {},
		success: function(data){
			Admin.LoadPage("' . ADMIN_FILE . '?exe=dbadmin&a=backups", undefined, "Обновление страницы");
			Admin.HideSplashScreen();
		}
	});
};
');
$backup_files = GetFiles($backup_dir, false, true, '.zip');
rsort($backup_files, SORT_STRING);
$backup_files2 = array();
foreach ($backup_files as $file) {
    if (GetSecondFileExt($file, true) == System::database()->Name) {
        $backup_files2[] = $file;
    }
}
$text = '';
$text .= '<table cellspacing="0" cellpadding="0" class="cfgtable">';
$text .= '<tr><th>Имя файла (дата-время...)</th><th>Функции</th></tr>';
foreach ($backup_files2 as $file) {
    $file = SafeDB($file, 255, str);
    $func = System::admin()->SpeedConfirm('Восстановить', ADMIN_FILE . '?exe=dbadmin&a=backup_restore&name=' . $file, 'images/admin/restore.png', 'Все текущие данные будут затёрты. Восстановить БД из резервной копии?');
    $func .= System::admin()->SpeedConfirm('Удалить', ADMIN_FILE . '?exe=dbadmin&a=backup_delete&name=' . $file, 'images/admin/delete.png', 'Удалить?');
    $text .= '<tr>
	<td><a href="' . $backup_dir . $file . '">' . $file . '</a></td>
	<td>' . $func . '</td>
	</tr>';
}
 /**
  * Восстанавливает базу данных из резервной копии.
  * @param string         $BackupFile Имя файла бекапа
  * @param string         $Table      Имя таблицы, если нужно восстановить одну таблицу
  * @return int
  */
 public function RestoreBackupFile($BackupFile, $Table = '')
 {
     $zip = new ZipArchive();
     $iferrors = false;
     if (GetSecondFileExt($BackupFile, true) == $this->Name && $zip->open($BackupFile) === true) {
         $dbhost = $this->DbAccess;
         $to_unpack = array();
         for ($i = 0; $i < $zip->numFiles; $i++) {
             $filename = $zip->getNameIndex($i);
             if ($Table == '' || $Table == GetFileName($filename, true)) {
                 $to_unpack[] = $filename;
             }
         }
         if (!$zip->extractTo($dbhost, $to_unpack)) {
             $iferrors = true;
         }
         $zip->close();
         // Обрабытываем ошибки
         if ($iferrors) {
             return 2;
             // Ошибки при восстановлении таблиц
         }
         return 1;
         // Успешно восстановлено
     } else {
         return 3;
         // Неверный формат файла
     }
 }