MDL-31651 course/info: Fix hardcoded string
[moodle.git] / admin / bloglevelupgrade.php
blob0c069c12011fdb7829560d87a5ac647097eeab29
1 <?php
2 /// Create "blog" forums in each course and copy blog entries from these courses' participants in these forums
4 define('NO_OUTPUT_BUFFERING', true);
6 require_once('../config.php');
7 require_once($CFG->dirroot.'/course/lib.php');
8 require_once($CFG->dirroot.'/blog/lib.php');
9 require_once($CFG->dirroot.'/mod/forum/lib.php');
10 require_once($CFG->libdir.'/adminlib.php');
12 admin_externalpage_setup('bloglevelupgrade');
13 $PAGE->set_pagelayout('maintenance');
15 $go = optional_param('go', 0, PARAM_BOOL);
17 echo $OUTPUT->header();
18 echo $OUTPUT->heading(get_string('bloglevelupgrade', 'admin'));
20 $strbloglevelupgrade = get_string('bloglevelupgradeinfo', 'admin');
22 if (!$go or !data_submitted() or !confirm_sesskey()) { /// Print a form
23 $optionsyes = array('go'=>1, 'sesskey'=>sesskey());
24 echo $OUTPUT->confirm($strbloglevelupgrade, new moodle_url('bloglevelupgrade.php', $optionsyes), 'index.php');
25 echo $OUTPUT->footer();
26 die;
29 echo $OUTPUT->box_start();
31 /// Turn off time limits, sometimes upgrades can be slow.
33 set_time_limit(0);
35 $i = 0;
37 // If $CFG->bloglevel is set to BLOG_GROUP_LEVEL or BLOG_COURSE_LEVEL, create a new "blog" forum in each course
38 // whose enrolled students have written blog entries, copy these entries in that forum and switch off blogs at site level
40 if ($CFG->bloglevel == BLOG_COURSE_LEVEL || $CFG->bloglevel == BLOG_GROUP_LEVEL) {
41 $pbar = new progress_bar('bloglevelupgrade', 500, true);
43 $bloggers = $DB->get_records_sql("SELECT userid FROM {post} WHERE module = 'blog' GROUP BY userid");
44 require_once($CFG->dirroot.'/mod/forum/lib.php');
46 $a = new stdClass();
47 $a->userscount = 0;
48 $a->blogcount = 0;
50 foreach ($bloggers as $blogger) {
51 $courses = enrol_get_users_courses($blogger->userid, true, 'groupmode,groupmodeforce');
52 $blogentries = $DB->get_records('post', array('module' => 'blog', 'userid' => $blogger->userid));
54 foreach ($courses as $course) {
55 $forum = forum_get_course_forum($course->id, 'blog');
56 $cm = get_coursemodule_from_instance('forum', $forum->id);
58 if ($CFG->bloglevel == BLOG_GROUP_LEVEL && $course->groupmode != NOGROUPS) {
59 // Unless the course is set to separate groups forced, force the forum to Separate groups
60 if (!($course->groupmode == SEPARATEGROUPS && $course->groupmodeforce)) {
61 $cm->groupmode = SEPARATEGROUPS;
62 $DB->update_record('course_modules', $cm);
65 $groups = groups_get_user_groups($course->id, $blogger->userid);
66 foreach ($groups[0] as $groupid) { // [0] is for all groupings combined
67 $a->blogcount += bloglevelupgrade_entries($blogentries, $forum, $cm, $groupid);
69 } else {
70 $a->blogcount += bloglevelupgrade_entries($blogentries, $forum, $cm);
74 $a->userscount = $i . '/' . count($bloggers);
75 $pbar->update($i, count($bloggers), get_string('bloglevelupgradeprogress', 'admin', $a));
76 $i++;
80 function bloglevelupgrade_entries($blogentries, $forum, $cm, $groupid=-1) {
81 $count = 0;
83 $forumcontext = get_context_instance(CONTEXT_MODULE, $cm->id);
84 $sitecontext = get_context_instance(CONTEXT_SYSTEM);
86 foreach ($blogentries as $blogentry) {
87 $discussion = new stdClass();
88 $discussion->course = $forum->course;
89 $discussion->forum = $forum->id;
90 $discussion->name = $blogentry->subject;
91 $discussion->assessed = $forum->assessed;
92 $discussion->message = $blogentry->summary;
93 $discussion->messageformat = $blogentry->summaryformat;
94 $discussion->messagetrust = 0;
95 $discussion->attachments = 0;
96 $discussion->mailnow = false;
97 $discussion->timemodified = $blogentry->created;
98 $discussion->itemid = null;
99 $discussion->groupid = $groupid;
100 $message = '';
102 $discussionid = forum_add_discussion($discussion, null, $message);
104 // Copy file attachment records
105 $fs = get_file_storage();
106 $files = $fs->get_area_files($sitecontext->id, 'blog', 'attachment', $blogentry->id);
108 if (!empty($files)) {
109 foreach ($files as $storedfile) {
110 $newfile = new stdClass();
111 $newfile->component = 'mod_forum';
112 $newfile->filearea = 'attachment';
113 $newfile->itemid = $discussion->firstpost;
114 $newfile->contextid = $forumcontext->id;
115 $fs->create_file_from_storedfile($newfile, $storedfile->get_id());
119 $files = $fs->get_area_files($sitecontext->id, 'blog', 'post', $blogentry->id);
121 if (!empty($files)) {
122 foreach ($files as $storedfile) {
123 $newfile = new stdClass();
124 $newfile->component = 'mod_forum';
125 $newfile->filearea = 'post';
126 $newfile->itemid = $discussion->firstpost;
127 $newfile->contextid = $forumcontext->id;
128 $fs->create_file_from_storedfile($newfile, $storedfile->get_id());
131 $count++;
133 return $count;
135 // END OF LOOP
137 // set conversion flag - switches to new plugin automatically
138 set_config('bloglevel_upgrade_complete', 1);
139 // Finally switch bloglevel to 0 (disabled)
140 set_config('bloglevel', 0);
142 echo $OUTPUT->box_end();
144 /// Rebuild course cache which might be incorrect now
145 echo $OUTPUT->notification('Rebuilding course cache...', 'notifysuccess');
146 rebuild_course_cache();
147 echo $OUTPUT->notification('...finished', 'notifysuccess');
149 echo $OUTPUT->continue_button('index.php');
151 echo $OUTPUT->footer();
152 die;