public function exportAction() { set_time_limit(0); $config = Config::get(); $dbname = $config->database->name; $dbuser = $config->database->user; $dbpass = $config->database->password; $dbhost = $config->database->host; $outputDir = APPLICATION_ROOT; $sqlSubDir = '__sql'; if (!file_exists($outputDir . $sqlSubDir) && !mkdir($outputDir . $sqlSubDir)) { header($_SERVER['SERVER_PROTOCOL'] . ' 500 Internal Server Error'); die('Could not create output directory'); } // dump database $dbFilename = $sqlSubDir . '/' . $dbname . '.sql'; $command = "mysqldump -h {$dbhost} -u {$dbuser} -p{$dbpass} --add-drop-table --databases {$dbname} > {$outputDir}{$dbFilename}"; system($command); // create zip file $zipFilename = 'export_' . date('YmdHis') . '.zip'; $zip = new ZipArchive(); if ($zip->open($zipFilename, file_exists($zipFilename) ? \ZIPARCHIVE::OVERWRITE : \ZIPARCHIVE::CREATE) !== true) { header($_SERVER['SERVER_PROTOCOL'] . ' 500 Internal Server Error'); die('Could not create zip file'); } $this->zip($zip, array($dbFilename => $outputDir . $dbFilename, $outputDir . 'user-data/')); $zip->close(); // encrypt zip $encryptedFilename = $zipFilename . '.enc'; $command = "openssl enc -aes-256-cbc -pass pass:"******" < {$outputDir}{$zipFilename} > {$outputDir}{$encryptedFilename}"; system($command); // send file contents header('Content-Length: ' . filesize($outputDir . $encryptedFilename)); $this->sendFileContents($outputDir . $encryptedFilename); // clean up FileUtils::deleteFolder($outputDir . $sqlSubDir); FileUtils::deleteFile($outputDir . $zipFilename); FileUtils::deleteFile($outputDir . $encryptedFilename); die; }
protected function endSavingImages($row_id, $error = false) { // Zur Sicherheit nur irgendwelche Bilder löschen, wenn das Speichern ohne Fehler verlaufen ist if (!$error) { $image_dir = $this->getImageDir($row_id); // Erstmal alle Dateien löschen, die auf der Liste der zu löschenden Dateien stehen if (count($this->image_files_to_delete) > 0) { foreach ($this->image_files_to_delete as $filename) { if (is_file($image_dir . $filename)) { FileUtils::deleteFile($image_dir . $filename); } } } // Dann alle Dateien durchgehen, die noch zu finden sind // Wenn eine Datei nicht auf der Liste der zu erhaltenden Dateien steht, // ist anzunehmen, dass sie verwaist ist und gelöscht werden soll. $handle = @opendir($image_dir); if ($handle !== false) { while (false !== ($item = @readdir($handle))) { if ($item != "." && $item != "..") { if (@is_file($image_dir . $item)) { if (!in_array($item, $this->image_files_to_keep)) { if (is_file($image_dir . $item)) { FileUtils::deleteFile($image_dir . $item); } } } } } @closedir($handle); } } }
private function removeOldTempFiles() { $handle = @opendir(APPLICATION_ROOT . 'user-data/tmp/images/'); if ($handle !== false) { while (false !== ($item = @readdir($handle))) { if ($item != "." && $item != "..") { if (@is_file(APPLICATION_ROOT . 'user-data/tmp/images/' . $item)) { // Der Zeitstempel ist Teil des Dateinamens, da filectime usw nicht // unbedingt zuverl�ssig sind (z.B. nach Kopie auf einen anderen Server) $temp = explode('-', $item); $timestamp = $temp[0]; if (is_numeric($timestamp)) { if (time() - $timestamp > self::TEMP_FILES_MAX_AGE) { FileUtils::deleteFile(APPLICATION_ROOT . 'user-data/tmp/images/' . $item); } } } } } @closedir($handle); } }
private function switchTemplate($page_id, $new_template_id, $properties = null) { if ($properties === null) { $properties = $this->pages->getProperties($page_id); } if ($properties !== null && $properties !== false) { $old_template_id = $properties['template-id']; if ($new_template_id != $old_template_id) { // Ver�ffentlichte Seite samt Dateien l�schen $published_folder = $this->pages->getPagePublishedFolder($page_id, $properties); $published_data_file = $published_folder . Pages::DATA_FILE_NAME; $published_files_folder = $published_folder . Pages::PAGE_FILES_FOLDER_NAME; if (file_exists($published_data_file)) { FileUtils::deleteFile($published_data_file); } if (file_exists($published_files_folder)) { FileUtils::deleteFolder($published_files_folder); } // Bearbeitete Seite samt Dateien l�schen $edit_folder = $this->pages->getPageeditFolder($page_id, $properties); $edit_data_file = $edit_folder . Pages::DATA_FILE_NAME; $edit_files_folder = $edit_folder . Pages::PAGE_FILES_FOLDER_NAME; if (file_exists($edit_data_file)) { FileUtils::deleteFile($edit_data_file); } if (file_exists($edit_files_folder)) { FileUtils::deleteFolder($edit_files_folder); } // ge�nderte Eigenschaften setzen $edit_properties = array('template-id' => $new_template_id, 'last-change-date' => time(), 'last-change-user-id' => Auth::getUserId(), 'last-change-user-name' => Auth::getScreenName(), 'status' => Pages::STATUS_NEW); $this->pages->setProperties($page_id, $edit_properties); return true; } } return false; }
public function onAfterSavePageDataFields($parameters, &$data) { // Erstmal alle Dateien löschen, die auf der Liste der zu l�schenden Dateien stehen if (count($this->files_to_delete) > 0) { foreach ($this->files_to_delete as $filename) { if (is_file($parameters['pageFiles'] . $filename)) { FileUtils::deleteFile($parameters['pageFiles'] . $filename); } } } // Dann alle Dateien durchgehen, die noch zu finden sind // Wenn eine Datei nicht auf der Liste der zu erhaltenden Dateien steht, // ist anzunehmen, dass sie verwaist ist und gelöscht werden soll. $handle = @opendir($parameters['pageFiles']); if ($handle !== false) { while (false !== ($item = @readdir($handle))) { if ($item != "." && $item != "..") { if (@is_file($parameters['pageFiles'] . $item)) { if (!in_array($item, $this->files_to_keep)) { if (is_file($parameters['pageFiles'] . $item)) { FileUtils::deleteFile($parameters['pageFiles'] . $item); } } } } } @closedir($handle); } }