Skip to content

Commit

Permalink
Merge branch 'wip-MDL-51867-master2' of https://github.com/marinaglan…
Browse files Browse the repository at this point in the history
  • Loading branch information
danpoltawski committed Mar 22, 2016
2 parents 8c16f34 + 322f314 commit 4a166bf
Show file tree
Hide file tree
Showing 4 changed files with 80 additions and 97 deletions.
74 changes: 74 additions & 0 deletions lib/deprecatedlib.php
Expand Up @@ -4459,3 +4459,77 @@ function course_get_cm_rename_action(cm_info $mod, $sr = null) {
}
return '';
}

/*
* This function returns the number of activities using the given scale in the given course.
*
* @deprecated since Moodle 3.1
* @param int $courseid The course ID to check.
* @param int $scaleid The scale ID to check
* @return int
*/
function course_scale_used($courseid, $scaleid) {
global $CFG, $DB;

debugging('course_scale_used() is deprecated and never used, plugins can implement <modname>_scale_used_anywhere, '.
'all implementations of <modname>_scale_used are now ignored', DEBUG_DEVELOPER);

$return = 0;

if (!empty($scaleid)) {
if ($cms = get_course_mods($courseid)) {
foreach ($cms as $cm) {
// Check cm->name/lib.php exists.
if (file_exists($CFG->dirroot.'/mod/'.$cm->modname.'/lib.php')) {
include_once($CFG->dirroot.'/mod/'.$cm->modname.'/lib.php');
$functionname = $cm->modname.'_scale_used';
if (function_exists($functionname)) {
if ($functionname($cm->instance, $scaleid)) {
$return++;
}
}
}
}
}

// Check if any course grade item makes use of the scale.
$return += $DB->count_records('grade_items', array('courseid' => $courseid, 'scaleid' => $scaleid));

// Check if any outcome in the course makes use of the scale.
$return += $DB->count_records_sql("SELECT COUNT('x')
FROM {grade_outcomes_courses} goc,
{grade_outcomes} go
WHERE go.id = goc.outcomeid
AND go.scaleid = ? AND goc.courseid = ?",
array($scaleid, $courseid));
}
return $return;
}

/**
* This function returns the number of activities using scaleid in the entire site
*
* @deprecated since Moodle 3.1
* @param int $scaleid
* @param array $courses
* @return int
*/
function site_scale_used($scaleid, &$courses) {
$return = 0;

debugging('site_scale_used() is deprecated and never used, plugins can implement <modname>_scale_used_anywhere, '.
'all implementations of <modname>_scale_used are now ignored', DEBUG_DEVELOPER);

if (!is_array($courses) || count($courses) == 0) {
$courses = get_courses("all", false, "c.id, c.shortname");
}

if (!empty($scaleid)) {
if (is_array($courses) && count($courses) > 0) {
foreach ($courses as $course) {
$return += course_scale_used($course->id, $scaleid);
}
}
}
return $return;
}
36 changes: 5 additions & 31 deletions lib/grade/grade_scale.php
Expand Up @@ -289,37 +289,11 @@ public function is_used() {
return true;
}

$legacy_mods = false;
if ($mods = $DB->get_records('modules', array('visible' => 1))) {
foreach ($mods as $mod) {
//Check cm->name/lib.php exists
if (file_exists($CFG->dirroot.'/mod/'.$mod->name.'/lib.php')) {
include_once($CFG->dirroot.'/mod/'.$mod->name.'/lib.php');
$function_name = $mod->name.'_scale_used_anywhere';
$old_function_name = $mod->name.'_scale_used';
if (function_exists($function_name)) {
if ($function_name($this->id)) {
return true;
}

} else if (function_exists($old_function_name)) {
$legacy_mods = true;
debugging('Please notify the developer of module "'.$mod->name.'" that new function module_scale_used_anywhere() should be implemented.', DEBUG_DEVELOPER);
break;
}
}
}
}

// some mods are missing the new xxx_scale_used_anywhere() - use the really slow old way
if ($legacy_mods) {
if (!empty($this->courseid)) {
if (course_scale_used($this->courseid,$this->id)) {
return true;
}
} else {
$courses = array();
if (site_scale_used($this->id,$courses)) {
// Ask all plugins if the scale is used anywhere.
$pluginsfunction = get_plugins_with_function('scale_used_anywhere');
foreach ($pluginsfunction as $plugintype => $plugins) {
foreach ($plugins as $pluginfunction) {
if ($pluginfunction($this->id)) {
return true;
}
}
Expand Down
66 changes: 0 additions & 66 deletions lib/moodlelib.php
Expand Up @@ -8210,72 +8210,6 @@ function make_grades_menu($gradingtype) {
return $grades;
}

/**
* This function returns the number of activities using the given scale in the given course.
*
* @param int $courseid The course ID to check.
* @param int $scaleid The scale ID to check
* @return int
*/
function course_scale_used($courseid, $scaleid) {
global $CFG, $DB;

$return = 0;

if (!empty($scaleid)) {
if ($cms = get_course_mods($courseid)) {
foreach ($cms as $cm) {
// Check cm->name/lib.php exists.
if (file_exists($CFG->dirroot.'/mod/'.$cm->modname.'/lib.php')) {
include_once($CFG->dirroot.'/mod/'.$cm->modname.'/lib.php');
$functionname = $cm->modname.'_scale_used';
if (function_exists($functionname)) {
if ($functionname($cm->instance, $scaleid)) {
$return++;
}
}
}
}
}

// Check if any course grade item makes use of the scale.
$return += $DB->count_records('grade_items', array('courseid' => $courseid, 'scaleid' => $scaleid));

// Check if any outcome in the course makes use of the scale.
$return += $DB->count_records_sql("SELECT COUNT('x')
FROM {grade_outcomes_courses} goc,
{grade_outcomes} go
WHERE go.id = goc.outcomeid
AND go.scaleid = ? AND goc.courseid = ?",
array($scaleid, $courseid));
}
return $return;
}

/**
* This function returns the number of activities using scaleid in the entire site
*
* @param int $scaleid
* @param array $courses
* @return int
*/
function site_scale_used($scaleid, &$courses) {
$return = 0;

if (!is_array($courses) || count($courses) == 0) {
$courses = get_courses("all", false, "c.id, c.shortname");
}

if (!empty($scaleid)) {
if (is_array($courses) && count($courses) > 0) {
foreach ($courses as $course) {
$return += course_scale_used($course->id, $scaleid);
}
}
}
return $return;
}

/**
* make_unique_id_code
*
Expand Down
1 change: 1 addition & 0 deletions lib/upgrade.txt
Expand Up @@ -88,6 +88,7 @@ information provided here is intended especially for developers.
applies antivirus plugins is replacing its functionality.
* Added core_text::str_max_bytes() which safely truncates multi-byte strings to a maximum number of bytes.
* Zend Framework has been removed completely.
* Any plugin can report when a scale is being used with the callback function [pluginname]_scale_used_anywhere(int $scaleid).

=== 3.0 ===

Expand Down

0 comments on commit 4a166bf

Please sign in to comment.