MDL-61932 mod_glossary: Display site-level glossaries on section 1
* Glossary activities created on the front page by importing entries are being added to section 0, but the front page only shows activities on section 1.
This commit is contained in:
@@ -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,61 @@ 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']);
|
||||
|
||||
// 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) {
|
||||
// Fetch the course module IDs of the course modules in the section.
|
||||
$cmids = explode(',', $section->sequence);
|
||||
$newcmids = [];
|
||||
// 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 section 1.
|
||||
$DB->set_field('course_modules', 'section', 1, $params);
|
||||
$newsection1cmids[] = $cmid;
|
||||
} else {
|
||||
// Otherwise, ignore this course module as we only want to update glossary items.
|
||||
$newcmids[] = $cmid;
|
||||
}
|
||||
}
|
||||
// Check if we need to update the section record or we can delete it.
|
||||
if (!empty($newcmids)) {
|
||||
// Update the section record with a sequence that now excludes the glossary instance(s).
|
||||
$sequence = implode(',', $newcmids);
|
||||
$DB->set_field('course_sections', 'section', $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' => 1,
|
||||
'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;
|
||||
|
||||
Reference in New Issue
Block a user