diff --git a/main/coursecopy/create_backup.php b/main/coursecopy/create_backup.php index 1a13f2a244..6fef9d08b7 100755 --- a/main/coursecopy/create_backup.php +++ b/main/coursecopy/create_backup.php @@ -16,13 +16,13 @@ require_once __DIR__.'/../inc/global.inc.php'; $current_course_tool = TOOL_COURSE_MAINTENANCE; api_protect_course_script(true); -api_check_archive_dir(); // Check access rights (only teachers are allowed here) if (!api_is_allowed_to_edit()) { api_not_allowed(true); } +api_check_archive_dir(); api_set_more_memory_and_time_limits(); // Section for the tabs @@ -53,7 +53,6 @@ if (Security::check_token('post') && ( ) { // Clear token Security::clear_token(); - if (isset($_POST['action']) && $_POST['action'] == 'course_select_form') { $course = CourseSelectForm::get_posted_course(); } else { @@ -61,12 +60,14 @@ if (Security::check_token('post') && ( $course = $cb->build(); } - $zip_file = CourseArchiver::createBackup($course); + $zipFile = CourseArchiver::createBackup($course); echo Display::return_message(get_lang('BackupCreated'), 'confirm'); - echo '
- - '.get_lang('Download').''; + echo '
'; + echo Display::url( + get_lang('Download'), + api_get_path(WEB_CODE_PATH).'course_info/download.php?archive='.$zipFile.'&'.api_get_cidreq(), + ['class' => 'btn btn-primary btn-large'] + ); } elseif (Security::check_token('post') && ( isset($_POST['backup_option']) && $_POST['backup_option'] == 'select_items' @@ -74,53 +75,50 @@ if (Security::check_token('post') && ( ) { // Clear token Security::clear_token(); - $cb = new CourseBuilder('partial'); $course = $cb->build(); - // Add token to Course select form - $hiddenFields['sec_token'] = Security::get_token(); - CourseSelectForm::display_form($course, $hiddenFields); -} else { - $cb = new CourseBuilder(); - $course = $cb->build(); - if (!$course->has_resources()) { - echo get_lang('NoResourcesToBackup'); + if ($course->has_resources()) { + // Add token to Course select form + $hiddenFields['sec_token'] = Security::get_token(); + CourseSelectForm::display_form($course, $hiddenFields); } else { - $form = new FormValidator( - 'create_backup_form', - 'post', - api_get_self().'?'.api_get_cidreq() - ); - $form->addElement('header', get_lang('SelectOptionForBackup')); - $form->addElement('radio', 'backup_option', '', get_lang('CreateFullBackup'), 'full_backup'); - $form->addElement('radio', 'backup_option', '', get_lang('LetMeSelectItems'), 'select_items'); - $form->addButtonSave(get_lang('CreateBackup')); - $form->addProgress(); - // When progress bar appears we have to hide the title "Please select a backup-option". - $form->updateAttributes( - [ - 'onsubmit' => str_replace( - 'javascript: ', - 'javascript: page_title = getElementById(\'page_title\'); if (page_title) { setTimeout(\'page_title.style.display = \\\'none\\\';\', 2000); } ', - $form->getAttribute('onsubmit') - ), - ] - ); - $values['backup_option'] = 'full_backup'; - $form->setDefaults($values); - - // Add Security token - $token = Security::get_token(); - $form->addElement('hidden', 'sec_token'); - $form->setConstants(['sec_token' => $token]); - echo '
'; - echo '
'; - echo '
'; - $form->display(); - echo '
'; - echo '
'; - echo '
'; + echo Display::return_message(get_lang('NoResourcesToBackup'), 'warning'); } +} else { + $form = new FormValidator( + 'create_backup_form', + 'post', + api_get_self().'?'.api_get_cidreq() + ); + $form->addElement('header', get_lang('SelectOptionForBackup')); + $form->addElement('radio', 'backup_option', '', get_lang('CreateFullBackup'), 'full_backup'); + $form->addElement('radio', 'backup_option', '', get_lang('LetMeSelectItems'), 'select_items'); + $form->addButtonSave(get_lang('CreateBackup')); + $form->addProgress(); + // When progress bar appears we have to hide the title "Please select a backup-option". + $form->updateAttributes( + [ + 'onsubmit' => str_replace( + 'javascript: ', + 'javascript: page_title = getElementById(\'page_title\'); if (page_title) { setTimeout(\'page_title.style.display = \\\'none\\\';\', 2000); } ', + $form->getAttribute('onsubmit') + ), + ] + ); + $values['backup_option'] = 'full_backup'; + $form->setDefaults($values); + + // Add Security token + $token = Security::get_token(); + $form->addElement('hidden', 'sec_token'); + $form->setConstants(['sec_token' => $token]); + echo '
'; + echo '
'; + echo '
'; + $form->display(); + echo '
'; + echo '
'; + echo '
'; } Display::display_footer(); diff --git a/src/Chamilo/CourseBundle/Component/CourseCopy/Course.php b/src/Chamilo/CourseBundle/Component/CourseCopy/Course.php index b987d4806a..e7d963e3d1 100644 --- a/src/Chamilo/CourseBundle/Component/CourseCopy/Course.php +++ b/src/Chamilo/CourseBundle/Component/CourseCopy/Course.php @@ -340,10 +340,20 @@ class Course public static function serialize($course) { if (extension_loaded('igbinary')) { - return igbinary_serialize($course); + $serialized = igbinary_serialize($course); } else { - return serialize($course); + $serialized = serialize($course); } + + // Compress + if (function_exists('gzdeflate')) { + $deflated = gzdeflate($serialized, 9); + if ($deflated !== false) { + $deflated = $serialized; + } + } + + return $serialized; } /** @@ -355,10 +365,20 @@ class Course */ public static function unserialize($course) { + // Uncompress + if (function_exists('gzdeflate')) { + $inflated = @gzinflate($course); + if ($inflated !== false) { + $course = $inflated; + } + } + if (extension_loaded('igbinary')) { - return igbinary_unserialize($course); + $unserialized = igbinary_unserialize($course); } else { - return unserialize($course); + $unserialized = unserialize($course); } + + return $unserialized; } } diff --git a/src/Chamilo/CourseBundle/Component/CourseCopy/CourseSelectForm.php b/src/Chamilo/CourseBundle/Component/CourseCopy/CourseSelectForm.php index b120ab1413..305a4f9cd1 100644 --- a/src/Chamilo/CourseBundle/Component/CourseCopy/CourseSelectForm.php +++ b/src/Chamilo/CourseBundle/Component/CourseCopy/CourseSelectForm.php @@ -274,7 +274,7 @@ class CourseSelectForm } } - //Fixes forum order + // Fixes forum order if (!empty($forum_categories)) { $type = RESOURCE_FORUMCATEGORY; echo '
'; @@ -333,7 +333,10 @@ class CourseSelectForm $course->resources['document'] = null; } - echo ''; + /** @var Course $course */ + $courseSerialized = base64_encode(Course::serialize($course)); + + echo ''; if (is_array($hidden_fields)) { foreach ($hidden_fields as $key => $value) { echo '';