/** * Backup system * * This function is used to backup the system. There are 2 types of backup, database only and full. * In the first case (the default), only the database is backed up, while in the second case, files * are backed up as well. * <br/>Example: * <code> * $backupFile = EfrontSystem :: backup('13_3_2007'); //Backup database only * </code> * * @param string $backupName The name of the backup * @param int $backupType Can be either 0 or 1, where 0 siginifies database only backup and 1 is for including backup files as well * @return EfrontFile The compressed file of the backup * @since 3.5.0 * @access public * @static */ public static function backup($backupName, $backupType = 0) { $tempDir = G_BACKUPPATH . 'temp/'; if (is_dir($tempDir)) { $dir = new EfrontDirectory($tempDir); $dir->delete(); } mkdir($tempDir, 0755); mkdir($tempDir . 'db_backup', 0755); $directory = new EfrontDirectory($tempDir); $tables = $GLOBALS['db']->GetCol("show tables"); //Get the database tables foreach ($tables as $table) { if (!preg_match("/^\\w+_view\$/", $table)) { $data = eF_getTableData($table, "count(*)"); $unfold = 1000; $limit = ceil($data[0]['count(*)'] / $unfold); for ($i = 0; $i < $limit; $i++) { $data = eF_getTableData($table, "*", "", "'' limit {$unfold} offset " . $i * $unfold); file_put_contents($tempDir . 'db_backup/' . $table . '.' . $i, serialize($data), FILE_APPEND); } $result = eF_ExecuteNew("show create table {$table}"); $temp = $result->GetAll(); $definition[] = "drop table " . $temp[0]['Table']; $definition[] = $temp[0]['Create Table']; } } /* foreach ($tables as $table) { $data = eF_getTableData($table); file_put_contents($tempDir.'db_backup/'.$table, serialize($data)); $result = eF_ExecuteNew("show create table $table"); $temp = $result -> GetAll(); $definition[] = "drop table ".$temp[0]['Table']; $definition[] = $temp[0]['Create Table']; } */ file_put_contents($tempDir . 'db_backup/sql.txt', implode(";\n", $definition)); file_put_contents($tempDir . 'db_backup/version.txt', G_VERSION_NUM); if ($backupType == 3 && checkFunction('system') && strtoupper(substr(PHP_OS, 0, 3)) !== 'WIN') { system('mkdir ' . $tempDir . 'lessons'); system('cp -R ' . G_LESSONSPATH . '* ' . $tempDir . 'lessons'); system('mkdir -p ' . $tempDir . 'upload'); system('cp -R ' . G_UPLOADPATH . '* ' . $tempDir . 'upload'); system('mkdir -p ' . $tempDir . 'certificate_templates'); system('cp -R ' . G_ROOTPATH . "www/certificate_templates/" . '* ' . $tempDir . 'certificate_templates'); system('mkdir -p ' . $tempDir . 'editor_templates'); system('cp -R ' . G_ROOTPATH . "www/content/editor_templates/" . '* ' . $tempDir . 'editor_templates'); } else { if ($backupType == 1 || $backupType == 3) { $lessonsDir = new EfrontDirectory(G_LESSONSPATH); $lessonsDir->copy($tempDir . 'lessons'); $uploadsDir = new EfrontDirectory(G_UPLOADPATH); $uploadsDir->copy($tempDir . 'upload'); $certificatesDir = new EfrontDirectory(G_ROOTPATH . "www/certificate_templates/"); $certificatesDir->copy($tempDir . 'certificate_templates'); $editorTemplatesDir = new EfrontDirectory(G_ROOTPATH . "www/content/editor_templates/"); $editorTemplatesDir->copy($tempDir . 'editor_templates'); } else { if ($backupType == 2) { $rootDir = new EfrontDirectory(G_ROOTPATH); $rootDir->copy($tempDir . 'efront_root'); } } } if ($backupType == 3 && checkFunction('system') && strtoupper(substr(PHP_OS, 0, 3)) !== 'WIN') { $compressedFile = $directory->compress($backupName, false, false, true); } else { $compressedFile = $directory->compress($backupName, false); } $directory->delete(); return $compressedFile; }
td.failed { color: red; } td.passed { color: green; } </style> </head> <?php echo '<h2>Server check</h2>'; function checkFunction($sMessage, $sFunction) { echo '<tr>'; echo '<td class="message">' . $sMessage . '</td>'; if (function_exists($sFunction)) { echo '<td class="status passed">passed</td>'; } else { echo '<td class="status failed">failed</td>'; } echo '</tr>'; } echo '<table>'; checkFunction('Checking cURL extension', 'curl_init'); checkFunction('Checking image processing and GD', 'imagecreate'); checkFunction('Checking json_encode', 'json_encode'); echo '</table>';