public function execute() { $filename = $this->getParam('filename', self::DEFAULT_FILENAME); $filename = str_replace('%REX_SERVER', parse_url(rex::getServer(), PHP_URL_HOST), $filename); $filename = str_replace('%REX_VERSION', rex::getVersion(), $filename); $filename = strftime($filename); $file = $filename; $dir = rex_backup::getDir() . '/'; $ext = '.sql'; if (file_exists($dir . $file . $ext)) { $i = 1; while (file_exists($dir . $file . '_' . $i . $ext)) { ++$i; } $file = $file . '_' . $i; } if (rex_backup::exportDb($dir . $file . $ext)) { $message = $file . $ext . ' created'; if ($this->sendmail) { if (!rex_addon::get('phpmailer')->isAvailable()) { $this->setMessage($message . ', mail not sent (addon "phpmailer" isn\'t activated)'); return false; } $mail = new rex_mailer(); $mail->AddAddress($this->mailaddress); $mail->Subject = rex_i18n::msg('backup_mail_subject'); $mail->Body = rex_i18n::msg('backup_mail_body', rex::getServerName()); $mail->AddAttachment($dir . $file . $ext, $filename . $ext); if ($mail->Send()) { $this->setMessage($message . ', mail sent'); return true; } $this->setMessage($message . ', mail not sent'); return false; } $this->setMessage($message); return true; } $this->setMessage($file . $ext . ' not created'); return false; }
public static function loadExistingImport($import_name) { // ----- vorhandenen Export importieren $err_msg = ''; if ($import_name == '') { $err_msg .= '<p>' . rex_i18n::msg('setup_508') . '</p>'; } else { $import_sql = rex_backup::getDir() . '/' . $import_name . '.sql'; $import_archiv = rex_backup::getDir() . '/' . $import_name . '.tar.gz'; // Nur hier zuerst die Addons installieren // Da sonst Daten aus dem eingespielten Export // Überschrieben würden // Da für das Installieren der Addons die rex_config benötigt wird, // mit overrideExisting() eine saubere, komplette Basis schaffen if ($err_msg == '') { $err_msg .= self::overrideExisting(); } if ($err_msg == '') { $err_msg .= self::import($import_sql, $import_archiv); } } return $err_msg; }
$fragment->setVar('title', rex_i18n::msg('backup_export_db_caption'), false); $fragment->setVar('content', $content, false); $content = $fragment->parse('core/page/section.php'); echo $content; $content = '<table class="table table-striped table-hover"> <thead> <tr> <th class="rex-table-icon"></th> <th>' . rex_i18n::msg('backup_filename') . '</th> <th class="rex-table-width-5">' . rex_i18n::msg('backup_filesize') . '</th> <th class="rex-table-width-5">' . rex_i18n::msg('backup_createdate') . '</th> <th class="rex-table-action" colspan="3">' . rex_i18n::msg('backup_function') . '</th> </tr> </thead> <tbody>'; $dir = rex_backup::getDir(); $folder = rex_backup::getBackupFiles('.tar.gz'); foreach ($folder as $file) { $filepath = $dir . '/' . $file; $filec = date('d.m.Y H:i', filemtime($filepath)); $filesize = rex_file::formattedSize($filepath); $content .= '<tr> <td class="rex-table-icon"><i class="rex-icon rex-icon-file-archive"></i></td> <td data-title="' . rex_i18n::msg('backup_filename') . '">' . $file . '</td> <td data-title="' . rex_i18n::msg('backup_filesize') . '">' . $filesize . '</td> <td data-title="' . rex_i18n::msg('backup_createdate') . '">' . $filec . '</td> <td class="rex-table-action"><a href="' . rex_url::currentBackendPage(['function' => 'fileimport', 'impname' => $file]) . '" title="' . rex_i18n::msg('backup_import_file') . '" data-confirm="' . rex_i18n::msg('backup_proceed_file_import') . '"><i class="rex-icon rex-icon-import"></i> ' . rex_i18n::msg('backup_to_import') . '</a></td> <td class="rex-table-action"><a href="' . rex_url::currentBackendPage(['function' => 'download', 'impname' => $file]) . '" title="' . rex_i18n::msg('backup_download_file') . '"><i class="rex-icon rex-icon-download"></i> ' . rex_i18n::msg('backup_download') . '</a></td> <td class="rex-table-action"><a href="' . rex_url::currentBackendPage(['function' => 'delete', 'impname' => $file]) . '" title="' . rex_i18n::msg('backup_delete_file') . '" data-confirm="' . rex_i18n::msg('backup_delete') . ' ?"><i class="rex-icon rex-icon-delete"></i> ' . rex_i18n::msg('backup_delete') . '</a></td> </tr>'; }
if ($impname == '') { rex_file::delete($file_temp); } } else { $error = rex_i18n::msg('backup_file_could_not_be_uploaded') . ' ' . rex_i18n::msg('backup_you_have_no_write_permission_in', 'data/addons/backup/') . ' <br>'; } } } elseif ($function == 'fileimport') { // ------------------------------ FUNC FILEIMPORT if (isset($_FILES['FORM']) && $_FILES['FORM']['size']['importfile'] < 1 && $impname == '') { $error = rex_i18n::msg('backup_no_import_file_chosen') . '<br/>'; } else { if ($impname == '') { $file_temp = rex_backup::getDir() . '/temp.tar.gz'; } else { $file_temp = rex_backup::getDir() . '/' . $impname; } if ($impname != '' || @move_uploaded_file($_FILES['FORM']['tmp_name']['importfile'], $file_temp)) { $return = rex_backup::importFiles($file_temp); if ($return['state']) { $success = $return['message']; } else { $error = $return['message']; } // temp datei löschen if ($impname == '') { rex_file::delete($file_temp); } } else { $error = rex_i18n::msg('backup_file_could_not_be_uploaded') . ' ' . rex_i18n::msg('backup_you_have_no_write_permission_in', 'data/addons/backup/') . ' <br>'; }
case 2: case 3: case 4: $dbchecked[$createdb] = ' checked="checked"'; break; default: $dbchecked[0] = ' checked="checked"'; } // Vorhandene Exporte auslesen $sel_export = new rex_select(); $sel_export->setName('import_name'); $sel_export->setId('rex-form-import-name'); $sel_export->setSize(1); $sel_export->setStyle('class="form-control rex-js-import-name"'); $sel_export->setAttribute('onclick', 'checkInput(\'createdb_3\')'); $export_dir = rex_backup::getDir(); $exports_found = false; if (is_dir($export_dir)) { if ($handle = opendir($export_dir)) { $export_archives = []; $export_sqls = []; while (($file = readdir($handle)) !== false) { if ($file == '.' || $file == '..') { continue; } $isSql = substr($file, strlen($file) - 4) == '.sql'; $isArchive = substr($file, strlen($file) - 7) == '.tar.gz'; if ($isSql) { // cut .sql $export_sqls[] = substr($file, 0, -4); $exports_found = true;
if ($exportfilename == '') { $server = parse_url(rex::getServer(), PHP_URL_HOST); $exportfilename = strtolower($server) . '_rex' . rex::getVersion() . '_' . date('Ymd_Hi'); } if (rex_post('export', 'bool')) { // ------------------------------ FUNC EXPORT $exportfilename = strtolower($exportfilename); $filename = preg_replace('@[^\\.a-z0-9_\\-]@', '', $exportfilename); if ($filename != $exportfilename) { $success = rex_i18n::msg('backup_filename_updated'); $exportfilename = $filename; } else { $hasContent = false; $header = ''; $ext = $exporttype == 'sql' ? '.sql' : '.tar.gz'; $export_path = rex_backup::getDir() . '/'; if (file_exists($export_path . $filename . $ext)) { $i = 1; while (file_exists($export_path . $filename . '_' . $i . $ext)) { ++$i; } $filename = $filename . '_' . $i; } if ($exporttype == 'sql') { // ------------------------------ FUNC EXPORT SQL $header = 'plain/text'; $hasContent = rex_backup::exportDb($export_path . $filename . $ext, $EXPTABLES); // ------------------------------ /FUNC EXPORT SQL } elseif ($exporttype == 'files') { // ------------------------------ FUNC EXPORT FILES $header = 'tar/gzip';