Skip to content

Commit c552d08

Browse files
committed
Adding session support see BT#8986
1 parent d0ed859 commit c552d08

File tree

1 file changed

+60
-22
lines changed

1 file changed

+60
-22
lines changed

main/coursecopy/classes/CourseRestorer.class.php

Lines changed: 60 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -894,7 +894,7 @@ public function restore_forums($sessionId = 0)
894894
foreach ($resources[RESOURCE_FORUM] as $id => $forum) {
895895
$params = (array)$forum->obj;
896896
if ($this->course->resources[RESOURCE_FORUMCATEGORY][$params['forum_category']]->destination_id == -1) {
897-
$cat_id = $this->restore_forum_category($params['forum_category']);
897+
$cat_id = $this->restore_forum_category($params['forum_category'], $sessionId);
898898
} else {
899899
$cat_id = $this->course->resources[RESOURCE_FORUMCATEGORY][$params['forum_category']]->destination_id;
900900
}
@@ -929,7 +929,7 @@ public function restore_forums($sessionId = 0)
929929
if (is_array($this->course->resources[RESOURCE_FORUMTOPIC])) {
930930
foreach ($this->course->resources[RESOURCE_FORUMTOPIC] as $topic_id => $topic) {
931931
if ($topic->obj->forum_id == $id) {
932-
$this->restore_topic($topic_id, $new_id);
932+
$this->restore_topic($topic_id, $new_id, $sessionId);
933933
$forum_topics ++;
934934
}
935935
}
@@ -946,7 +946,7 @@ public function restore_forums($sessionId = 0)
946946
/**
947947
* Restore forum-categories
948948
*/
949-
public function restore_forum_category($my_id = null)
949+
public function restore_forum_category($my_id = null, $sessionId = 0)
950950
{
951951
$forum_cat_table = Database :: get_course_table(TABLE_FORUM_CATEGORY);
952952
$resources = $this->course->resources;
@@ -969,7 +969,14 @@ public function restore_forum_category($my_id = null)
969969
}
970970
$params = (array) $forum_cat->obj;
971971
$params['c_id'] = $this->destination_course_id;
972-
$params['cat_comment'] = DocumentManager::replace_urls_inside_content_html_from_copy_course($params['cat_comment'], $this->course->code, $this->course->destination_path, $this->course->backup_path, $this->course->info['path']);
972+
$params['cat_comment'] = DocumentManager::replace_urls_inside_content_html_from_copy_course(
973+
$params['cat_comment'],
974+
$this->course->code,
975+
$this->course->destination_path,
976+
$this->course->backup_path,
977+
$this->course->info['path']
978+
);
979+
$params['session_id'] = intval($sessionId);
973980
unset($params['cat_id']);
974981
$params = self::DBUTF8_array($params);
975982
$new_id = Database::insert($forum_cat_table, $params);
@@ -985,34 +992,46 @@ public function restore_forum_category($my_id = null)
985992
/**
986993
* Restore a forum-topic
987994
*/
988-
public function restore_topic($thread_id, $forum_id)
995+
public function restore_topic($thread_id, $forum_id, $sessionId = 0)
989996
{
990997
$table = Database :: get_course_table(TABLE_FORUM_THREAD);
991998
$topic = $this->course->resources[RESOURCE_FORUMTOPIC][$thread_id];
992999

9931000
$params = (array)$topic->obj;
9941001
$params = self::DBUTF8_array($params);
995-
$params['c_id'] = $this->destination_course_id;
1002+
$params['c_id'] = $this->destination_course_id;
9961003
$params['forum_id'] = $forum_id;
9971004
$params['thread_poster_id'] = $this->first_teacher_id;
9981005
$params['thread_date'] = api_get_utc_datetime();
9991006
$params['thread_close_date'] = '0000-00-00 00:00:00';
10001007
$params['thread_last_post'] = 0;
10011008
$params['thread_replies'] = 0;
10021009
$params['thread_views'] = 0;
1010+
$params['session_id'] = intval($sessionId);
10031011
unset($params['thread_id']);
10041012

10051013
$new_id = Database::insert($table, $params);
1006-
api_item_property_update($this->destination_course_info, TOOL_FORUM_THREAD, $new_id, 'ThreadAdded', api_get_user_id(), 0, 0, null, null);
1014+
api_item_property_update(
1015+
$this->destination_course_info,
1016+
TOOL_FORUM_THREAD,
1017+
$new_id,
1018+
'ThreadAdded',
1019+
api_get_user_id(),
1020+
0,
1021+
0,
1022+
null,
1023+
null,
1024+
$sessionId
1025+
);
10071026

10081027
$this->course->resources[RESOURCE_FORUMTOPIC][$thread_id]->destination_id = $new_id;
10091028

10101029
$topic_replies = -1;
10111030

1012-
foreach ($this->course->resources[RESOURCE_FORUMPOST] as $post_id => $post){
1031+
foreach ($this->course->resources[RESOURCE_FORUMPOST] as $post_id => $post) {
10131032
if ($post->obj->thread_id == $thread_id) {
10141033
$topic_replies++;
1015-
$this->restore_post($post_id, $new_id, $forum_id);
1034+
$this->restore_post($post_id, $new_id, $forum_id, $sessionId);
10161035
}
10171036
}
10181037
return $new_id;
@@ -1022,7 +1041,7 @@ public function restore_topic($thread_id, $forum_id)
10221041
* Restore a forum-post
10231042
* @TODO Restore tree-structure of posts. For example: attachments to posts.
10241043
*/
1025-
public function restore_post($id, $topic_id, $forum_id)
1044+
public function restore_post($id, $topic_id, $forum_id, $sessionId = 0)
10261045
{
10271046
$table_post = Database :: get_course_table(TABLE_FORUM_POST);
10281047
$post = $this->course->resources[RESOURCE_FORUMPOST][$id];
@@ -1033,9 +1052,26 @@ public function restore_post($id, $topic_id, $forum_id)
10331052
$params['poster_id'] = $this->first_teacher_id;
10341053
$params['post_date'] = api_get_utc_datetime();
10351054
unset($params['post_id']);
1036-
$params['post_text'] = DocumentManager::replace_urls_inside_content_html_from_copy_course($params['post_text'], $this->course->code, $this->course->destination_path, $this->course->backup_path, $this->course->info['path']);
1055+
$params['post_text'] = DocumentManager::replace_urls_inside_content_html_from_copy_course(
1056+
$params['post_text'],
1057+
$this->course->code,
1058+
$this->course->destination_path,
1059+
$this->course->backup_path,
1060+
$this->course->info['path']
1061+
);
10371062
$new_id = Database::insert($table_post, $params);
1038-
api_item_property_update($this->destination_course_info, TOOL_FORUM_POST, $new_id, 'PostAdded', api_get_user_id(), 0, 0, null, null);
1063+
api_item_property_update(
1064+
$this->destination_course_info,
1065+
TOOL_FORUM_POST,
1066+
$new_id,
1067+
'PostAdded',
1068+
api_get_user_id(),
1069+
0,
1070+
0,
1071+
null,
1072+
null,
1073+
$sessionId
1074+
);
10391075
$this->course->resources[RESOURCE_FORUMPOST][$id]->destination_id = $new_id;
10401076
return $new_id;
10411077
}
@@ -1050,7 +1086,8 @@ public function restore_links($session_id = 0)
10501086
$resources = $this->course->resources;
10511087
foreach ($resources[RESOURCE_LINK] as $id => $link) {
10521088
$cat_id = $this->restore_link_category($link->category_id, $session_id);
1053-
$sql = "SELECT MAX(display_order) FROM $link_table WHERE c_id = ".$this->destination_course_id." AND category_id='" . self::DBUTF8escapestring($cat_id). "'";
1089+
$sql = "SELECT MAX(display_order) FROM $link_table
1090+
WHERE c_id = ".$this->destination_course_id." AND category_id='" . self::DBUTF8escapestring($cat_id). "'";
10541091
$result = Database::query($sql);
10551092
list($max_order) = Database::fetch_array($result);
10561093

@@ -1060,13 +1097,13 @@ public function restore_links($session_id = 0)
10601097
}
10611098

10621099
$sql = "INSERT INTO ".$link_table." SET
1063-
c_id = ".$this->destination_course_id." ,
1064-
url = '".self::DBUTF8escapestring($link->url)."',
1065-
title = '".self::DBUTF8escapestring($link->title)."',
1066-
description = '".self::DBUTF8escapestring($link->description)."',
1067-
category_id = '".$cat_id."',
1068-
on_homepage = '".$link->on_homepage."',
1069-
display_order = '".($max_order+1)."' $condition_session";
1100+
c_id = ".$this->destination_course_id." ,
1101+
url = '".self::DBUTF8escapestring($link->url)."',
1102+
title = '".self::DBUTF8escapestring($link->title)."',
1103+
description = '".self::DBUTF8escapestring($link->description)."',
1104+
category_id = '".$cat_id."',
1105+
on_homepage = '".$link->on_homepage."',
1106+
display_order = '".($max_order+1)."' $condition_session";
10701107

10711108
Database::query($sql);
10721109
$this->course->resources[RESOURCE_LINK][$id]->destination_id = Database::insert_id();
@@ -2597,14 +2634,15 @@ public function restore_works($sessionId = 0)
25972634
api_get_user_id(),
25982635
$this->destination_course_info,
25992636
0,
2600-
0
2637+
$sessionId
26012638
);
26022639
} else {
26032640
$workId = $workData['id'];
26042641
updateWork(
26052642
$workId,
26062643
$obj->params,
2607-
$this->destination_course_info
2644+
$this->destination_course_info,
2645+
$sessionId
26082646
);
26092647
updatePublicationAssignment(
26102648
$workId,

0 commit comments

Comments
 (0)