Merge branch 'wip-MDL-51867-master2' of https://github.com/marinaglancy/moodle
authorDan Poltawski <dan@moodle.com>
Tue, 22 Mar 2016 05:12:03 +0000 (13:12 +0800)
committerDan Poltawski <dan@moodle.com>
Tue, 22 Mar 2016 05:13:57 +0000 (13:13 +0800)
lib/deprecatedlib.php
lib/grade/grade_scale.php
lib/moodlelib.php
lib/upgrade.txt

index b787c16..846871a 100644 (file)
@@ -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;
+}
index 46167a9..cd1cb23 100644 (file)
@@ -289,37 +289,11 @@ class grade_scale extends grade_object {
             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;
                 }
             }
index 820d4f2..44dc966 100644 (file)
@@ -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
  *
index 3df2fba..df52457 100644 (file)
@@ -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 ===