mirror of
https://github.com/moodle/moodle.git
synced 2025-04-21 00:12:56 +02:00
Merge branch 'MDL-61932-master' of git://github.com/junpataleta/moodle
This commit is contained in:
commit
b345895a9d
@ -20,7 +20,7 @@
|
||||
// before any action that may take longer time to finish.
|
||||
|
||||
function xmldb_glossary_upgrade($oldversion) {
|
||||
global $CFG;
|
||||
global $CFG, $DB;
|
||||
|
||||
// Automatically generated Moodle v3.2.0 release upgrade line.
|
||||
// Put any upgrade step following this.
|
||||
@ -31,5 +31,71 @@ function xmldb_glossary_upgrade($oldversion) {
|
||||
// Automatically generated Moodle v3.4.0 release upgrade line.
|
||||
// Put any upgrade step following this.
|
||||
|
||||
if ($oldversion < 2018051401) {
|
||||
|
||||
// Fetch the module ID for the glossary module.
|
||||
$glossarymoduleid = $DB->get_field('modules', 'id', ['name' => 'glossary']);
|
||||
|
||||
// Get id of section 1 on the frontpage course.
|
||||
$fpsection1 = $DB->get_field('course_sections', 'id', ['course' => SITEID, 'section' => 1]);
|
||||
|
||||
// Fetch sections for the frontpage not matching 1.
|
||||
$sectionselect = 'course = :course AND section <> 1';
|
||||
$sitesections = $DB->get_recordset_select('course_sections', $sectionselect, ['course' => SITEID]);
|
||||
$newsection1cmids = [];
|
||||
foreach ($sitesections as $section) {
|
||||
// Check if we have anything to process for this section.
|
||||
if (empty($section->sequence)) {
|
||||
// If there's none, ignore.
|
||||
continue;
|
||||
}
|
||||
// Fetch the course module IDs of the course modules in the section.
|
||||
$cmids = explode(',', $section->sequence);
|
||||
$nonglossarycmids = [];
|
||||
// Update the section in the course_modules table for glossary instances if necessary.
|
||||
foreach ($cmids as $cmid) {
|
||||
$params = [
|
||||
'id' => $cmid,
|
||||
'module' => $glossarymoduleid
|
||||
];
|
||||
// Check if the record in the course_modules tables is that of a glossary activity.
|
||||
if ($DB->record_exists('course_modules', $params)) {
|
||||
// If so, move it to front page's section 1.
|
||||
$DB->set_field('course_modules', 'section', $fpsection1, $params);
|
||||
$newsection1cmids[] = $cmid;
|
||||
} else {
|
||||
// Otherwise, ignore this course module as we only want to update glossary items.
|
||||
$nonglossarycmids[] = $cmid;
|
||||
}
|
||||
}
|
||||
// Check if we need to update the section record or we can delete it.
|
||||
if (!empty($nonglossarycmids)) {
|
||||
// Update the section record with a sequence that now excludes the glossary instance(s) (if it changed).
|
||||
$sequence = implode(',', $nonglossarycmids);
|
||||
if ($sequence != $section->sequence) {
|
||||
$DB->set_field('course_sections', 'sequence', $sequence, ['id' => $section->id]);
|
||||
}
|
||||
} else {
|
||||
// This section doesn't contain any items anymore, we can remove this.
|
||||
$DB->delete_records('course_sections', ['id' => $section->id]);
|
||||
}
|
||||
}
|
||||
$sitesections->close();
|
||||
|
||||
// Update the sequence field for the site's section 1 if necessary.
|
||||
if (!empty($newsection1cmids)) {
|
||||
$section1params = [
|
||||
'course' => SITEID,
|
||||
'section' => 1
|
||||
];
|
||||
$section1sequence = $DB->get_field('course_sections', 'sequence', $section1params);
|
||||
$newsection1sequence = implode(',', array_merge([$section1sequence], $newsection1cmids));
|
||||
// Update the sequence field of the first section for the front page.
|
||||
$DB->set_field('course_sections', 'sequence', $newsection1sequence, $section1params);
|
||||
}
|
||||
|
||||
upgrade_mod_savepoint(true, 2018051401, 'glossary');
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
@ -141,8 +141,15 @@ if ($xml = glossary_read_imported_file($result)) {
|
||||
$glossary->assessed = 0;
|
||||
$glossary->availability = null;
|
||||
|
||||
// New glossary is to be inserted in section 0, it is always visible.
|
||||
$glossary->section = 0;
|
||||
// Check if we're creating the new glossary on the front page or inside a course.
|
||||
if ($cm->course == SITEID) {
|
||||
// On the front page, activities are in section 1.
|
||||
$glossary->section = 1;
|
||||
} else {
|
||||
// Inside a course, add to the general section (0).
|
||||
$glossary->section = 0;
|
||||
}
|
||||
// New glossary is always visible.
|
||||
$glossary->visible = 1;
|
||||
$glossary->visibleoncoursepage = 1;
|
||||
|
||||
|
@ -24,7 +24,7 @@
|
||||
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
$plugin->version = 2018051400; // The current module version (Date: YYYYMMDDXX)
|
||||
$plugin->version = 2018051401; // The current module version (Date: YYYYMMDDXX)
|
||||
$plugin->requires = 2018050800; // Requires this Moodle version
|
||||
$plugin->component = 'mod_glossary'; // Full name of the plugin (used for diagnostics)
|
||||
$plugin->cron = 0;
|
||||
|
Loading…
x
Reference in New Issue
Block a user