Build and restore course respect base content or session content - refs BT#8986

1.9.x
Angel Fernando Quiroz Campos 12 years ago
parent d3ad9f521a
commit d3c39e1213
  1. 45
      main/coursecopy/classes/CourseBuilder.class.php
  2. 25
      main/coursecopy/classes/CourseRestorer.class.php
  3. 13
      main/coursecopy/copy_course_session_selected.php

@ -284,7 +284,9 @@ class CourseBuilder
$table = Database :: get_course_table(TABLE_FORUM);
$sql = "SELECT * FROM $table WHERE c_id = $course_id ";
$sessionCodition = api_get_session_condition($session_id, true, $with_base_content);
$sql = "SELECT * FROM $table WHERE c_id = $course_id $sessionCodition";
$sql .= " ORDER BY forum_title, forum_category";
$db_result = Database::query($sql);
while ($obj = Database::fetch_object($db_result)) {
@ -302,7 +304,10 @@ class CourseBuilder
$course_info = api_get_course_info($course_code);
$course_id = $course_info['real_id'];
$sql = "SELECT * FROM $table WHERE c_id = $course_id ORDER BY cat_title";
$sessionCodition = api_get_session_condition($session_id, true, $with_base_content);
$sql = "SELECT * FROM $table WHERE c_id = $course_id $sessionCodition ORDER BY cat_title";
$db_result = Database::query($sql);
while ($obj = Database::fetch_object($db_result)) {
$forum_category = new ForumCategory($obj);
@ -318,7 +323,11 @@ class CourseBuilder
$table = Database :: get_course_table(TABLE_FORUM_THREAD);
$course_info = api_get_course_info($course_code);
$course_id = $course_info['real_id'];
$sessionCodition = api_get_session_condition($session_id, true, $with_base_content);
$sql = "SELECT * FROM $table WHERE c_id = $course_id
$sessionCodition
ORDER BY thread_title ";
$db_result = Database::query($sql);
while ($obj = Database::fetch_object($db_result)) {
@ -403,7 +412,11 @@ class CourseBuilder
{
$table = Database :: get_course_table(TABLE_TOOL_INTRO);
$course_id = api_get_course_int_id();
$sql = "SELECT * FROM $table WHERE c_id = $course_id ";
$sessionCodition = api_get_session_condition($session_id, true, $with_base_content);
$sql = "SELECT * FROM $table WHERE c_id = $course_id $sessionCodition";
$db_result = Database::query($sql);
while ($obj = Database::fetch_object($db_result)) {
$tool_intro = new ToolIntro($obj->id, $obj->intro_text);
@ -728,7 +741,9 @@ class CourseBuilder
$table_question = Database :: get_course_table(TABLE_SURVEY_QUESTION);
$course_id = api_get_course_int_id();
$sql = 'SELECT * FROM '.$table_survey.' WHERE c_id = '.$course_id.' AND session_id = ' . $session_id;
$sessionCondition = api_get_session_condition($session_id, true, $with_base_content);
$sql = 'SELECT * FROM '.$table_survey.' WHERE c_id = '.$course_id.' ' . $sessionCondition;
$db_result = Database::query($sql);
while ($obj = Database::fetch_object($db_result)) {
$survey = new Survey($obj->survey_id, $obj->code,$obj->title,
@ -787,7 +802,9 @@ class CourseBuilder
$table = Database :: get_course_table(TABLE_ANNOUNCEMENT);
$course_id = api_get_course_int_id();
$sql = 'SELECT * FROM '.$table.' WHERE c_id = '.$course_id.' AND session_id = 0';
$sessionCondition = api_get_session_condition($session_id, true, $with_base_content);
$sql = 'SELECT * FROM '.$table.' WHERE c_id = '.$course_id.' ' . $sessionCondition;
$db_result = Database::query($sql);
$table_attachment = Database :: get_course_table(TABLE_ANNOUNCEMENT_ATTACHMENT);
while ($obj = Database::fetch_object($db_result)) {
@ -826,7 +843,9 @@ class CourseBuilder
$table = Database :: get_course_table(TABLE_AGENDA);
$course_id = api_get_course_int_id();
$sql = 'SELECT * FROM '.$table.' WHERE c_id = '.$course_id.' AND session_id = 0';
$sessionCondition = api_get_session_condition($session_id, true, $with_base_content);
$sql = 'SELECT * FROM '.$table.' WHERE c_id = '.$course_id.' ' . $sessionCondition;
$db_result = Database::query($sql);
while ($obj = Database::fetch_object($db_result)) {
$table_attachment = Database :: get_course_table(TABLE_AGENDA_ATTACHMENT);
@ -1159,7 +1178,9 @@ class CourseBuilder
$course_id = api_get_course_int_id();
$sql = 'SELECT * FROM '.$table_attendance.' WHERE c_id = '.$course_id.' AND session_id = 0 ';
$sessionCondition = api_get_session_condition($session_id, true, $with_base_content);
$sql = 'SELECT * FROM '.$table_attendance.' WHERE c_id = '.$course_id.' ' . $sessionCondition;
$db_result = Database::query($sql);
while ($row = Database::fetch_array($db_result,'ASSOC')) {
$obj = new Attendance($row);
@ -1183,13 +1204,15 @@ class CourseBuilder
$course_id = api_get_course_int_id();
$sql = 'SELECT * FROM '.$table_work.'
$sessionCondition = api_get_session_condition($session_id, true, $with_base_content);
$sql = "SELECT * FROM $table_work
WHERE
c_id = '.$course_id.' AND
session_id = 0 AND
c_id = $course_id
$sessionCondition AND
filetype = \'folder\' AND
parent_id = 0 AND
active = 1';
active = 1";
$db_result = Database::query($sql);
while ($row = Database::fetch_array($db_result,'ASSOC')) {
$obj = new Work($row);

@ -885,9 +885,10 @@ class CourseRestorer
/**
* Restore forums
*/
public function restore_forums()
public function restore_forums($sessionId = 0)
{
if ($this->course->has_resources(RESOURCE_FORUM)) {
$sessionId = intval($sessionId);
$table_forum = Database::get_course_table(TABLE_FORUM);
$resources = $this->course->resources;
foreach ($resources[RESOURCE_FORUM] as $id => $forum) {
@ -901,6 +902,7 @@ class CourseRestorer
$params = self::DBUTF8_array($params);
$params['c_id'] = $this->destination_course_id;
$params['forum_category'] = $cat_id;
$params['session_id'] = $sessionId;
unset($params['forum_id']);
$params['forum_comment'] = DocumentManager::replace_urls_inside_content_html_from_copy_course(
@ -1075,9 +1077,10 @@ class CourseRestorer
/**
* Restore tool intro
*/
public function restore_tool_intro()
public function restore_tool_intro($sessionId = 0)
{
if ($this->course->has_resources(RESOURCE_TOOL_INTRO)) {
$sessionId = intval($sessionId);
$tool_intro_table = Database :: get_course_table(TABLE_TOOL_INTRO);
$resources = $this->course->resources;
foreach ($resources[RESOURCE_TOOL_INTRO] as $id => $tool_intro) {
@ -1085,7 +1088,8 @@ class CourseRestorer
Database::query($sql);
$tool_intro->intro_text = DocumentManager::replace_urls_inside_content_html_from_copy_course($tool_intro->intro_text,$this->course->code, $this->course->destination_path, $this->course->backup_path, $this->course->info['path']);
$sql = "INSERT INTO ".$tool_intro_table." SET c_id = ".$this->destination_course_id." , id='".self::DBUTF8escapestring($tool_intro->id)."', intro_text = '".self::DBUTF8escapestring($tool_intro->intro_text)."'";
Database::query($sql);
$sql.= ", session_id = $sessionId";
Database::query($sql);
$this->course->resources[RESOURCE_TOOL_INTRO][$id]->destination_id = Database::insert_id();
}
@ -1125,9 +1129,10 @@ class CourseRestorer
/**
* Restore events
*/
public function restore_events()
public function restore_events($sessionId = 0)
{
if ($this->course->has_resources(RESOURCE_EVENT)) {
$sessionId = intval($sessionId);
$table = Database :: get_course_table(TABLE_AGENDA);
$resources = $this->course->resources;
foreach ($resources[RESOURCE_EVENT] as $id => $event) {
@ -1141,6 +1146,7 @@ class CourseRestorer
all_day = '".$event->all_day."',
start_date = '".$event->start_date."',
end_date = '".$event->end_date."'";
$sql.= ", session_id = $sessionId";
Database::query($sql);
$new_event_id = Database::insert_id();
@ -1219,9 +1225,10 @@ class CourseRestorer
/**
* Restore announcements
*/
public function restore_announcements()
public function restore_announcements($sessionId = 0)
{
if ($this->course->has_resources(RESOURCE_ANNOUNCEMENT)) {
$sessionId = intval($sessionId);
$table = Database :: get_course_table(TABLE_ANNOUNCEMENT);
$resources = $this->course->resources;
foreach ($resources[RESOURCE_ANNOUNCEMENT] as $id => $announcement) {
@ -1235,7 +1242,8 @@ class CourseRestorer
"content = '".self::DBUTF8escapestring($announcement->content)."', " .
"end_date = '".$announcement->date."', " .
"display_order = '".$announcement->display_order."', " .
"email_sent = '".$announcement->email_sent."'";
"email_sent = '".$announcement->email_sent."', "
. "session_id = $sessionId";
Database::query($sql);
$new_announcement_id = Database::insert_id();
$this->course->resources[RESOURCE_ANNOUNCEMENT][$id]->destination_id = $new_announcement_id;
@ -2202,8 +2210,9 @@ class CourseRestorer
* @deprecated use restore_works
*
*/
public function restore_student_publication()
public function restore_student_publication($sessionId = 0)
{
$sessionId = intval($sessionId);
$work_assignment_table = Database :: get_course_table(TABLE_STUDENT_PUBLICATION_ASSIGNMENT);
$work_table = Database :: get_course_table(TABLE_STUDENT_PUBLICATION);
$item_property_table = Database :: get_course_table(TABLE_ITEM_PROPERTY);
@ -2220,6 +2229,7 @@ class CourseRestorer
unset($folder['id']);
$folder['c_id'] = $this->destination_course_id;
$folder['parent_id'] = 0;
$folder['session_id'] = $sessionId;
$new_id = Database::insert($work_table, $folder);
if ($new_id) {
@ -2249,6 +2259,7 @@ class CourseRestorer
foreach ($sub_folders as $sub_folder) {
$sub_folder['c_id'] = $this->destination_course_id;
$sub_folder['ref'] = $new_id;
$sub_folder['session_id'] = $sessionId;
$new_item_id = Database::insert($item_property_table, $sub_folder);
}

@ -190,9 +190,7 @@ function displayForm()
$html .= '<label class="radio"><input type="radio" id="copy_option_2" name="copy_option" value="select_items"/>';
$html .= ' ' . get_lang('LetMeSelectItems') . '</label><br/>';
$html .= '<label class="checkbox"><input type="checkbox" id="copy_base_content_id" name="copy_only_session_items" />' . get_lang(
'CopyOnlySessionItems'
) . '</label><br /><br/>';
$html .= '<p>' . get_lang('CopyOnlySessionItems') . '</p>';
$html .= '<button class="save" type="submit" onclick="javascript:if(!confirm(' . "'" . addslashes(
api_htmlentities(get_lang('ConfirmYourChoice'), ENT_QUOTES)
@ -285,11 +283,6 @@ $htmlHeadXtra[] = '<script>
Display::display_header($nameTools);
$withBaseContent = true;
if (isset($_POST['copy_only_session_items']) && $_POST['copy_only_session_items']) {
$withBaseContent = false;
}
/* MAIN CODE */
if ((isset($_POST['action']) && $_POST['action'] == 'course_select_form') ||
@ -345,7 +338,7 @@ if ((isset($_POST['action']) && $_POST['action'] == 'course_select_form') ||
$cb = new CourseBuilder('', $courseInfo);
$course = $cb->build(
$originSession, $courseCode, $withBaseContent
$originSession, $courseCode
);
$cr = new CourseRestorer($course);
$cr->restore($courseDestination, $destinationSession);
@ -385,7 +378,7 @@ if ((isset($_POST['action']) && $_POST['action'] == 'course_select_form') ||
);
$cb = new CourseBuilder('', $courseInfo);
$course = $cb->build($sessionId, $courseCode, $withBaseContent);
$course = $cb->build($sessionId, $courseCode);
$hiddenFields['destination_course'] = $arrCourseDestination[0];
$hiddenFields['destination_session'] = $destinationSession;
$hiddenFields['origin_course'] = api_get_course_id();

Loading…
Cancel
Save