mirror of
https://github.com/moodle/moodle.git
synced 2025-01-17 21:49:15 +01:00
MDL-35339 Deprecate get_all_mods() add get_module_types_names()
- added function get_module_types_names() returning the list of localised strings used for module names; - added function cm_info::get_used_module_names(); - added magic properties cm_info:: and cm_info:: returning human readable module name; - replaced usage of function get_all_mods() with get_fast_modinfo() and get_module_types_names(); - function print_section_add_menus() may now retrieve the modules names list itself; - deprecated function get_all_mods()
This commit is contained in:
parent
722e6ba947
commit
d57aa283f7
@ -63,7 +63,6 @@ class block_site_main_menu extends block_list {
|
||||
$ismoving = ismoving($course->id);
|
||||
$section = get_course_section(0, $course->id);
|
||||
$modinfo = get_fast_modinfo($course);
|
||||
get_all_mods($course->id, $mods, $modnames, $modnamesplural, $modnamesused);
|
||||
|
||||
$groupbuttons = $course->groupmode;
|
||||
$groupbuttonslink = (!$course->groupmodeforce);
|
||||
@ -134,11 +133,7 @@ class block_site_main_menu extends block_list {
|
||||
$this->content->icons[] = '';
|
||||
}
|
||||
|
||||
if (!empty($modnames)) {
|
||||
$this->content->footer = print_section_add_menus($course, 0, $modnames, true, true);
|
||||
} else {
|
||||
$this->content->footer = '';
|
||||
}
|
||||
$this->content->footer = print_section_add_menus($course, 0, null, true, true);
|
||||
|
||||
return $this->content;
|
||||
}
|
||||
|
@ -67,10 +67,6 @@ class block_social_activities extends block_list {
|
||||
$modinfo = get_fast_modinfo($course);
|
||||
$section = $modinfo->get_section_info(0);
|
||||
|
||||
if (!empty($section)) {
|
||||
get_all_mods($course->id, $mods, $modnames, $modnamesplural, $modnamesused);
|
||||
}
|
||||
|
||||
$groupbuttons = $course->groupmode;
|
||||
$groupbuttonslink = (!$course->groupmodeforce);
|
||||
|
||||
@ -141,11 +137,7 @@ class block_social_activities extends block_list {
|
||||
$this->content->icons[] = '';
|
||||
}
|
||||
|
||||
if ($modnames) {
|
||||
$this->content->footer = print_section_add_menus($course, 0, $modnames, true, true);
|
||||
} else {
|
||||
$this->content->footer = '';
|
||||
}
|
||||
$this->content->footer = print_section_add_menus($course, 0, null, true, true);
|
||||
|
||||
return $this->content;
|
||||
}
|
||||
|
@ -271,7 +271,7 @@ abstract class format_section_renderer_base extends plugin_renderer_base {
|
||||
*
|
||||
* @param stdClass $section The course_section entry from DB
|
||||
* @param stdClass $course The course entry from DB
|
||||
* @param array $mods course modules indexed by id (from get_all_mods)
|
||||
* @param array $mods course modules indexed by id (from get_fast_modinfo()->get_cms())
|
||||
* @return string HTML to output.
|
||||
*/
|
||||
protected function section_summary($section, $course, $mods) {
|
||||
@ -318,7 +318,7 @@ abstract class format_section_renderer_base extends plugin_renderer_base {
|
||||
*
|
||||
* @param stdClass $section The course_section entry from DB
|
||||
* @param stdClass $course the course record from DB
|
||||
* @param array $mods course modules indexed by id (from get_all_mods)
|
||||
* @param array $mods course modules indexed by id (from get_fast_modinfo()->get_cms())
|
||||
* @return string HTML to output.
|
||||
*/
|
||||
private function section_activity_summary($section, $course, $mods) {
|
||||
|
@ -1209,56 +1209,30 @@ function get_array_of_activities($courseid) {
|
||||
return $mod;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Returns a number of useful structures for course displays
|
||||
* Returns the localised human-readable names of all used modules
|
||||
*
|
||||
* @param bool $plural if true returns the plural forms of the names
|
||||
* @return array where key is the module name (component name without 'mod_') and
|
||||
* the value is the human-readable string. Array sorted alphabetically by value
|
||||
*/
|
||||
function get_all_mods($courseid, &$mods, &$modnames, &$modnamesplural, &$modnamesused) {
|
||||
global $CFG, $DB, $COURSE;
|
||||
|
||||
$mods = array(); // course modules indexed by id
|
||||
$modnames = array(); // all course module names (except resource!)
|
||||
$modnamesplural= array(); // all course module names (plural form)
|
||||
$modnamesused = array(); // course module names used
|
||||
|
||||
if ($allmods = $DB->get_records("modules")) {
|
||||
foreach ($allmods as $mod) {
|
||||
if (!file_exists("$CFG->dirroot/mod/$mod->name/lib.php")) {
|
||||
continue;
|
||||
function get_module_types_names($plural = false) {
|
||||
static $modnames = null;
|
||||
global $DB, $CFG;
|
||||
if ($modnames === null) {
|
||||
$modnames = array(0 => array(), 1 => array());
|
||||
if ($allmods = $DB->get_records("modules")) {
|
||||
foreach ($allmods as $mod) {
|
||||
if (file_exists("$CFG->dirroot/mod/$mod->name/lib.php") && $mod->visible) {
|
||||
$modnames[0][$mod->name] = get_string("modulename", "$mod->name");
|
||||
$modnames[1][$mod->name] = get_string("modulenameplural", "$mod->name");
|
||||
}
|
||||
}
|
||||
if ($mod->visible) {
|
||||
$modnames[$mod->name] = get_string("modulename", "$mod->name");
|
||||
$modnamesplural[$mod->name] = get_string("modulenameplural", "$mod->name");
|
||||
}
|
||||
}
|
||||
collatorlib::asort($modnames);
|
||||
} else {
|
||||
print_error("nomodules", 'debug');
|
||||
}
|
||||
|
||||
$course = ($courseid==$COURSE->id) ? $COURSE : $DB->get_record('course',array('id'=>$courseid));
|
||||
$modinfo = get_fast_modinfo($course);
|
||||
|
||||
if ($rawmods=$modinfo->cms) {
|
||||
foreach($rawmods as $mod) { // Index the mods
|
||||
if (empty($modnames[$mod->modname])) {
|
||||
continue;
|
||||
}
|
||||
$mods[$mod->id] = $mod;
|
||||
$mods[$mod->id]->modfullname = $modnames[$mod->modname];
|
||||
if (!$mod->visible and !has_capability('moodle/course:viewhiddenactivities', context_course::instance($courseid))) {
|
||||
continue;
|
||||
}
|
||||
// Check groupings
|
||||
if (!groups_course_module_visible($mod)) {
|
||||
continue;
|
||||
}
|
||||
$modnamesused[$mod->modname] = $modnames[$mod->modname];
|
||||
}
|
||||
if ($modnamesused) {
|
||||
collatorlib::asort($modnamesused);
|
||||
collatorlib::asort($modnames[0]);
|
||||
collatorlib::asort($modnames[1]);
|
||||
}
|
||||
}
|
||||
return $modnames[(int)$plural];
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1746,18 +1720,28 @@ function print_section($course, $section, $mods, $modnamesused, $absolute=false,
|
||||
*
|
||||
* @param stdClass $course The course
|
||||
* @param int $section relative section number (field course_sections.section)
|
||||
* @param array $modnames An array containing the list of modules and their names
|
||||
* @param null|array $modnames An array containing the list of modules and their names
|
||||
* if omitted will be taken from get_module_types_names()
|
||||
* @param bool $vertical Vertical orientation
|
||||
* @param bool $return Return the menus or send them to output
|
||||
* @param int $sectionreturn The section to link back to
|
||||
* @return void|string depending on $return
|
||||
*/
|
||||
function print_section_add_menus($course, $section, $modnames, $vertical=false, $return=false, $sectionreturn=null) {
|
||||
function print_section_add_menus($course, $section, $modnames = null, $vertical=false, $return=false, $sectionreturn=null) {
|
||||
global $CFG, $OUTPUT;
|
||||
|
||||
// check to see if user can add menus
|
||||
if (!has_capability('moodle/course:manageactivities', context_course::instance($course->id))) {
|
||||
return false;
|
||||
if ($modnames === null) {
|
||||
$modnames = get_module_types_names();
|
||||
}
|
||||
|
||||
// check to see if user can add menus and there are modules to add
|
||||
if (!has_capability('moodle/course:manageactivities', context_course::instance($course->id))
|
||||
|| empty($modnames)) {
|
||||
if ($return) {
|
||||
return '';
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
// Retrieve all modules with associated metadata
|
||||
|
@ -83,7 +83,7 @@ echo $OUTPUT->heading(format_string($course->fullname) . ": $userinfo", 2);
|
||||
$mform->display();
|
||||
|
||||
$modinfo = get_fast_modinfo($course);
|
||||
get_all_mods($course->id, $mods, $modnames, $modnamesplural, $modnamesused);
|
||||
$modnames = get_module_types_names();
|
||||
|
||||
if (has_capability('moodle/course:viewhiddensections', $context)) {
|
||||
$hiddenfilter = "";
|
||||
|
@ -242,30 +242,17 @@
|
||||
// Course wrapper start.
|
||||
echo html_writer::start_tag('div', array('class'=>'course-content'));
|
||||
|
||||
$modinfo = get_fast_modinfo($COURSE);
|
||||
get_all_mods($course->id, $mods, $modnames, $modnamesplural, $modnamesused);
|
||||
foreach($mods as $modid=>$unused) {
|
||||
if (!isset($modinfo->cms[$modid])) {
|
||||
rebuild_course_cache($course->id);
|
||||
$modinfo = get_fast_modinfo($COURSE);
|
||||
debugging('Rebuilding course cache', DEBUG_DEVELOPER);
|
||||
break;
|
||||
}
|
||||
}
|
||||
// make sure that section 0 exists (this function will create one if it is missing)
|
||||
$section0 = get_course_section(0, $course->id);
|
||||
|
||||
if (!$sections = $modinfo->get_section_info_all()) { // No sections found
|
||||
$section = new stdClass;
|
||||
$section->course = $course->id; // Create a default section.
|
||||
$section->section = 0;
|
||||
$section->visible = 1;
|
||||
$section->summaryformat = FORMAT_HTML;
|
||||
$section->id = $DB->insert_record('course_sections', $section);
|
||||
rebuild_course_cache($course->id);
|
||||
$modinfo = get_fast_modinfo($COURSE);
|
||||
if (!$sections = $modinfo->get_section_info_all()) { // Try again
|
||||
print_error('cannotcreateorfindstructs', 'error');
|
||||
}
|
||||
}
|
||||
// get information about course modules and existing module types
|
||||
// format.php in course formats may rely on presence of these variables
|
||||
$modinfo = get_fast_modinfo($course);
|
||||
$modnames = get_module_types_names();
|
||||
$modnamesplural = get_module_types_names(true);
|
||||
$modnamesused = $modinfo->get_used_module_names();
|
||||
$mods = $modinfo->get_cms();
|
||||
$sections = $modinfo->get_section_info_all();
|
||||
|
||||
// CAUTION, hacky fundamental variable defintion to follow!
|
||||
// Note that because of the way course fromats are constructed though
|
||||
|
30
index.php
30
index.php
@ -98,26 +98,24 @@
|
||||
echo $OUTPUT->header();
|
||||
|
||||
/// Print Section or custom info
|
||||
get_all_mods($SITE->id, $mods, $modnames, $modnamesplural, $modnamesused);
|
||||
$modinfo = get_fast_modinfo($SITE);
|
||||
$modnames = get_module_types_names();
|
||||
$modnamesplural = get_module_types_names(true);
|
||||
$modnamesused = $modinfo->get_used_module_names();
|
||||
$mods = $modinfo->get_cms();
|
||||
|
||||
if (!empty($CFG->customfrontpageinclude)) {
|
||||
include($CFG->customfrontpageinclude);
|
||||
|
||||
} else if ($SITE->numsections > 0) {
|
||||
|
||||
if (!$section = $DB->get_record('course_sections', array('course'=>$SITE->id, 'section'=>1))) {
|
||||
$DB->delete_records('course_sections', array('course'=>$SITE->id, 'section'=>1)); // Just in case
|
||||
$section = new stdClass();
|
||||
$section->course = $SITE->id;
|
||||
$section->section = 1;
|
||||
$section->summary = '';
|
||||
$section->summaryformat = FORMAT_HTML;
|
||||
$section->sequence = '';
|
||||
$section->visible = 1;
|
||||
$section->id = $DB->insert_record('course_sections', $section);
|
||||
rebuild_course_cache($SITE->id, true);
|
||||
} else {
|
||||
if ($editing) {
|
||||
// make sure section with number 1 exists, this function will create section
|
||||
get_course_section(1, $SITE->id);
|
||||
// re-request modinfo in case section was created
|
||||
$modinfo = get_fast_modinfo($SITE);
|
||||
}
|
||||
|
||||
if (!empty($section->sequence) or !empty($section->summary) or $editing) {
|
||||
$section = $modinfo->get_section_info(1);
|
||||
if (($section && (!empty($modinfo->sections[1]) or !empty($section->summary))) or $editing) {
|
||||
echo $OUTPUT->box_start('generalbox sitetopic');
|
||||
|
||||
/// If currently moving a file then show the current clipboard
|
||||
|
@ -2977,3 +2977,39 @@ function add_mod_to_section($mod, $beforemod=NULL) {
|
||||
$course = $DB->get_record('course', array('id' => $courseid), '*', MUST_EXIST);
|
||||
return course_add_cm_to_section($course, $mod->coursemodule, $mod->section, $beforemod);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a number of useful structures for course displays
|
||||
*
|
||||
* Function get_all_mods() is deprecated in 2.4
|
||||
* Instead of:
|
||||
* <code>
|
||||
* get_all_mods($course->id, $mods, $modnames, $modnamesplural, $modnamesused);
|
||||
* </code>
|
||||
* please use:
|
||||
* <code>
|
||||
* $mods = get_fast_modinfo($course)->get_cms();
|
||||
* $modnames = get_module_types_names();
|
||||
* $modnamesplural = get_module_types_names(true);
|
||||
* $modnamesused = get_fast_modinfo($course)->get_used_module_names();
|
||||
* </code>
|
||||
*
|
||||
* @deprecated since 2.4
|
||||
*
|
||||
* @param int $courseid id of the course to get info about
|
||||
* @param array $mods (return) list of course modules
|
||||
* @param array $modnames (return) list of names of all module types installed and available
|
||||
* @param array $modnamesplural (return) list of names of all module types installed and available in the plural form
|
||||
* @param array $modnamesused (return) list of names of all module types used in the course
|
||||
*/
|
||||
function get_all_mods($courseid, &$mods, &$modnames, &$modnamesplural, &$modnamesused) {
|
||||
debugging('Function get_all_mods() is deprecated. Use get_fast_modinfo() and get_module_types_names() instead. See phpdocs for details', DEBUG_DEVELOPER);
|
||||
|
||||
global $COURSE;
|
||||
$modnames = get_module_types_names();
|
||||
$modnamesplural= get_module_types_names(true);
|
||||
$course = ($courseid==$COURSE->id) ? $COURSE : $DB->get_record('course',array('id'=>$courseid));
|
||||
$modinfo = get_fast_modinfo($course);
|
||||
$mods = $modinfo->get_cms();
|
||||
$modnamesused = $modinfo->get_used_module_names();
|
||||
}
|
||||
|
@ -158,6 +158,24 @@ class course_modinfo extends stdClass {
|
||||
return $this->instances;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns array of localised human-readable module names used in this course
|
||||
*
|
||||
* @param bool $plural if true returns the plural form of modules names
|
||||
* @return array
|
||||
*/
|
||||
public function get_used_module_names($plural = false) {
|
||||
$modnames = get_module_types_names($plural);
|
||||
$modnamesused = array();
|
||||
foreach ($this->get_cms() as $cmid => $mod) {
|
||||
if (isset($modnames[$mod->modname]) && $mod->uservisible) {
|
||||
$modnamesused[$mod->modname] = $modnames[$mod->modname];
|
||||
}
|
||||
}
|
||||
collatorlib::asort($modnamesused);
|
||||
return $modnamesused;
|
||||
}
|
||||
|
||||
/**
|
||||
* Obtains all instances of a particular module on this course.
|
||||
* @param $modname Name of module (not full frankenstyle) e.g. 'label'
|
||||
@ -610,14 +628,6 @@ class cm_info extends stdClass {
|
||||
*/
|
||||
public $conditionsfield;
|
||||
|
||||
/**
|
||||
* Plural name of module type, e.g. 'Forums' - from lang file
|
||||
* @deprecated Do not use this value (you can obtain it by calling get_string instead); it
|
||||
* will be removed in a future version (see later TODO in this file)
|
||||
* @var string
|
||||
*/
|
||||
public $modplural;
|
||||
|
||||
/**
|
||||
* True if this course-module is available to students i.e. if all availability conditions
|
||||
* are met - obtained dynamically
|
||||
@ -692,6 +702,24 @@ class cm_info extends stdClass {
|
||||
*/
|
||||
private $afterediticons;
|
||||
|
||||
/**
|
||||
* Magic method getter
|
||||
*
|
||||
* @param string $name
|
||||
* @return mixed
|
||||
*/
|
||||
public function __get($name) {
|
||||
switch ($name) {
|
||||
case 'modplural':
|
||||
return $this->get_module_type_name(true);
|
||||
case 'modfullname':
|
||||
return $this->get_module_type_name();
|
||||
default:
|
||||
debugging('Invalid cm_info property accessed: '.$name);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @return bool True if this module has a 'view' page that should be linked to in navigation
|
||||
* etc (note: modules may still have a view.php file, but return false if this is not
|
||||
@ -793,6 +821,21 @@ class cm_info extends stdClass {
|
||||
return $icon;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a localised human-readable name of the module type
|
||||
*
|
||||
* @param bool $plural return plural form
|
||||
* @return string
|
||||
*/
|
||||
public function get_module_type_name($plural = false) {
|
||||
$modnames = get_module_types_names($plural);
|
||||
if (isset($modnames[$this->modname])) {
|
||||
return $modnames[$this->modname];
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @return course_modinfo Modinfo object that this came from
|
||||
*/
|
||||
@ -1013,16 +1056,6 @@ class cm_info extends stdClass {
|
||||
$this->conditionsfield = isset($mod->conditionsfield)
|
||||
? $mod->conditionsfield : array();
|
||||
|
||||
// Get module plural name.
|
||||
// TODO This was a very old performance hack and should now be removed as the information
|
||||
// certainly doesn't belong in modinfo. On a 'normal' page this is only used in the
|
||||
// activity_modules block, so if it needs caching, it should be cached there.
|
||||
static $modplurals;
|
||||
if (!isset($modplurals[$this->modname])) {
|
||||
$modplurals[$this->modname] = get_string('modulenameplural', $this->modname);
|
||||
}
|
||||
$this->modplural = $modplurals[$this->modname];
|
||||
|
||||
static $modviews;
|
||||
if (!isset($modviews[$this->modname])) {
|
||||
$modviews[$this->modname] = !plugin_supports('mod', $this->modname,
|
||||
|
@ -3427,10 +3427,9 @@ class settings_navigation extends navigation_node {
|
||||
*/
|
||||
protected function get_course_modules($course) {
|
||||
global $CFG;
|
||||
$mods = $modnames = $modnamesplural = $modnamesused = array();
|
||||
// This function is included when we include course/lib.php at the top
|
||||
// of this file
|
||||
get_all_mods($course->id, $mods, $modnames, $modnamesplural, $modnamesused);
|
||||
$modnames = get_module_types_names();
|
||||
$resources = array();
|
||||
$activities = array();
|
||||
foreach($modnames as $modname=>$modnamestr) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user