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; }
$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>'; } $content .= '
private static function import($import_sql, $import_archiv = null) { $err_msg = ''; if (!is_dir(rex_path::addon('backup'))) { $err_msg .= rex_i18n::msg('setup_510') . '<br />'; } else { if (file_exists($import_sql) && ($import_archiv === null || $import_archiv !== null && file_exists($import_archiv))) { rex_i18n::addDirectory(rex_path::addon('backup', 'lang/')); // DB Import $state_db = rex_backup::importDb($import_sql); if ($state_db['state'] === false) { $err_msg .= nl2br($state_db['message']) . '<br />'; } // Archiv optional importieren if ($state_db['state'] === true && $import_archiv !== null) { $state_archiv = rex_backup::importFiles($import_archiv); if ($state_archiv['state'] === false) { $err_msg .= $state_archiv['message'] . '<br />'; } } } else { $err_msg .= rex_i18n::msg('setup_509') . '<br />'; } } return $err_msg; }
} 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>'; } } } if ($success != '') {
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;
++$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'; if (empty($EXPDIR)) { $error = rex_i18n::msg('backup_please_choose_folder'); } else { $content = rex_backup::exportFiles($EXPDIR); $hasContent = rex_file::put($export_path . $filename . $ext, $content); } // ------------------------------ /FUNC EXPORT FILES } if ($hasContent) { if ($exportdl) { $filename = $filename . $ext; rex_response::sendFile($export_path . $filename, $header, 'attachment'); rex_file::delete($export_path . $filename); exit; } else { $success = rex_i18n::msg('backup_file_generated_in') . ' ' . strtr($filename . $ext, '\\', '/'); } } else { $error = rex_i18n::msg('backup_file_could_not_be_generated') . ' ' . rex_i18n::msg('backup_check_rights_in_directory') . ' ' . $export_path;