Session: Fix course tool intro is removed when duplicate a session - refs BT#20657

pull/4660/head^2
Christian 3 years ago
parent c6f7cb98f3
commit 79bb45fa16
  1. 7
      main/inc/lib/course.lib.php
  2. 3
      main/inc/lib/sessionmanager.lib.php
  3. 8
      src/Chamilo/CourseBundle/Component/CourseCopy/CourseRestorer.php

@ -4706,7 +4706,8 @@ class CourseManager
$destination_course_code, $destination_course_code,
$destination_session_id, $destination_session_id,
$params = [], $params = [],
$withBaseContent = true $withBaseContent = true,
$copySessionContent = false
) { ) {
$course_info = api_get_course_info($source_course_code); $course_info = api_get_course_info($source_course_code);
@ -4714,6 +4715,7 @@ class CourseManager
$cb = new CourseBuilder('', $course_info); $cb = new CourseBuilder('', $course_info);
$course = $cb->build($source_session_id, $source_course_code, $withBaseContent); $course = $cb->build($source_session_id, $source_course_code, $withBaseContent);
$restorer = new CourseRestorer($course); $restorer = new CourseRestorer($course);
$restorer->copySessionContent = $copySessionContent;
$restorer->skip_content = $params; $restorer->skip_content = $params;
$restorer->restore( $restorer->restore(
$destination_course_code, $destination_course_code,
@ -4764,7 +4766,8 @@ class CourseManager
$new_course_info['code'], $new_course_info['code'],
$destination_session_id, $destination_session_id,
$params, $params,
true true,
$copySessionContent
); );
if ($result) { if ($result) {
return $new_course_info; return $new_course_info;

@ -4692,7 +4692,8 @@ class SessionManager
$course['code'], $course['code'],
$sid, $sid,
[], [],
false false,
true
); );
} }
} }

@ -77,6 +77,8 @@ class CourseRestorer
public $add_text_in_items = false; public $add_text_in_items = false;
public $destination_course_id; public $destination_course_id;
public $copySessionContent = false;
/** /**
* CourseRestorer constructor. * CourseRestorer constructor.
* *
@ -1512,11 +1514,13 @@ class CourseRestorer
$tool_intro_table = Database::get_course_table(TABLE_TOOL_INTRO); $tool_intro_table = Database::get_course_table(TABLE_TOOL_INTRO);
$resources = $this->course->resources; $resources = $this->course->resources;
foreach ($resources[RESOURCE_TOOL_INTRO] as $id => $tool_intro) { foreach ($resources[RESOURCE_TOOL_INTRO] as $id => $tool_intro) {
$sql = "DELETE FROM $tool_intro_table if (!$this->copySessionContent) {
$sql = "DELETE FROM $tool_intro_table
WHERE WHERE
c_id = ".$this->destination_course_id." AND c_id = ".$this->destination_course_id." AND
id='".self::DBUTF8escapestring($tool_intro->id)."'"; id='".self::DBUTF8escapestring($tool_intro->id)."'";
Database::query($sql); Database::query($sql);
}
$tool_intro->intro_text = DocumentManager::replaceUrlWithNewCourseCode( $tool_intro->intro_text = DocumentManager::replaceUrlWithNewCourseCode(
$tool_intro->intro_text, $tool_intro->intro_text,

Loading…
Cancel
Save