? config.php Index: course/scales.php =================================================================== RCS file: /cvsroot/moodle/moodle/course/scales.php,v retrieving revision 1.30.2.1 diff -u -r1.30.2.1 scales.php --- course/scales.php 28 Feb 2007 05:36:14 -0000 1.30.2.1 +++ course/scales.php 24 Sep 2007 05:58:20 -0000 @@ -146,15 +146,15 @@ $scale->description = ""; } - //Calculate the uses + //Check if the scale is in use if ($scale->courseid == 0) { - $scale_uses = site_scale_used($scale->id,$courses); + $scale_used = site_scale_used($scale->id,$courses); } else { - $scale_uses = course_scale_used($course->id,$scale->id); + $scale_used = course_scale_used($course->id,$scale->id); } - //Check for scale_uses - if (!empty($scale_uses)) { + //Check for scale use + if ($scale_used)) { error("Scale is in use and cannot be modified",$CFG->wwwroot.'/course/scales.php?id='.$course->id); } @@ -210,7 +210,7 @@ echo ""; echo ""; echo ""; - echo "".get_string("usedinnplaces","",$scale_uses); + echo "$stractivities: ".($scale_used ? get_string("yes") : get_string("no")); echo ""; echo ""; } @@ -240,15 +240,15 @@ error("Scale ID was incorrect"); } - //Calculate the uses + //Check if the scale is in use if ($scale->courseid == 0) { - $scale_uses = site_scale_used($scale->id,$courses); + $scale_used = site_scale_used($scale->id,$courses); } else { - $scale_uses = course_scale_used($course->id,$scale->id); + $scale_used = course_scale_used($course->id,$scale->id); } - //Check for scale_uses - if (!empty($scale_uses)) { + //Check for scale use + if ($scale_used) { error("Scale is in use and cannot be deleted",$CFG->wwwroot.'/course/scales.php?id='.$course->id); } @@ -271,15 +271,15 @@ error("Scale ID was incorrect"); } - //Calculate the uses + //Check if the scale is in use if ($scale->courseid == 0) { - $scale_uses = site_scale_used($scale->id,$courses); + $scale_used = site_scale_used($scale->id,$courses); } else { - $scale_uses = course_scale_used($course->id,$scale->id); + $scale_used = course_scale_used($course->id,$scale->id); } - //Check for scale_uses - if (!empty($scale_uses)) { + //Check for scale use + if ($scale_used)) { error("Scale is in use and cannot be moved",$CFG->wwwroot.'/course/scales.php?id='.$course->id); } @@ -424,18 +424,18 @@ $line = array(); $line[] = "name\" href=\"$CFG->wwwroot/course/scales.php?id=$course->id&scaleid=$scale->id&action=details\" "."onclick=\"return openpopup('/course/scales.php?id=$course->id\&scaleid=$scale->id&action=details', 'scale', 'menubar=0,location=0,scrollbars,resizable,width=600,height=450', 0);\">".$scale->name."
".str_replace(",",", ",$scale->scale).""; if (!empty($scale->courseid)) { - $scales_uses = course_scale_used($course->id,$scale->id); + $scale_used = course_scale_used($course->id,$scale->id); } else { - $scales_uses = site_scale_used($scale->id,$courses); + $scale_used = site_scale_used($scale->id,$courses); } - $line[] = $scales_uses; + $line[] = $scale_used ? get_string("yes") : get_string("no"); if ($incustom) { $line[] = $strcustomscale; } else { $line[] = $strstandardscale; } $buttons = ""; - if (empty($scales_uses) && ($incustom || has_capability('moodle/course:managescales', get_context_instance(CONTEXT_SYSTEM, SITEID)))) { + if (!$scale_used && ($incustom || has_capability('moodle/course:managescales', get_context_instance(CONTEXT_SYSTEM, SITEID)))) { $buttons .= "id&scaleid=$scale->id&action=edit\">pixpath/t/edit.gif\" class=\"iconsmall\" alt=\"$stredit\" /> "; if ($incustom && has_capability('moodle/course:managescales', get_context_instance(CONTEXT_SYSTEM, SITEID))) { Index: lib/moodlelib.php =================================================================== RCS file: /cvsroot/moodle/moodle/lib/moodlelib.php,v retrieving revision 1.837.2.67 diff -u -r1.837.2.67 moodlelib.php --- lib/moodlelib.php 21 Sep 2007 02:19:26 -0000 1.837.2.67 +++ lib/moodlelib.php 24 Sep 2007 06:05:08 -0000 @@ -5953,12 +5953,11 @@ } /** - * This function returns the nummber of activities - * using scaleid in a courseid + * Returns true if a scale is in use in the given course. * - * @param int $courseid ? - * @param int $scaleid ? - * @return int + * @param int $courseid The course to be checked. + * @param int $scaleid The scale to be checked. + * @return boolean * @todo Finish documenting this function */ function course_scale_used($courseid, $scaleid) { @@ -5976,42 +5975,69 @@ $function_name = $cm->modname.'_scale_used'; if (function_exists($function_name)) { if ($function_name($cm->instance,$scaleid)) { - $return++; + return true; } } } } } } - return $return; + return false; } /** - * This function returns the nummber of activities - * using scaleid in the entire site + * Returns true if a scale is in use anywhere on the site. * - * @param int $scaleid ? - * @return int - * @todo Finish documenting this function. Is return type correct? + * @param int $scaleid The scale to be checked. + * @param array $courses The site courses, needed is the old way to check has to be used. + * @return boolean */ function site_scale_used($scaleid,&$courses) { + if (empty($scaleid)) { + return false; + } + global $CFG; $return = 0; - if (!is_array($courses) || count($courses) == 0) { - $courses = get_courses("all",false,"c.id,c.shortname"); + $legacy_mods = false; + if ($mods = get_records('modules', 'visible', 1)) { + foreach ($mods as $mod) { + //Check $mod->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($scaleid)) { + 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; + } + } + } } - if (!empty($scaleid)) { + // some mods are missing the new xxx_scale_used_anywhere() - use the really slow old way + if ($legacy_mods) { + if (!is_array($courses) || count($courses) == 0) { + $courses = get_courses("all",false,"c.id,c.shortname"); + } if (is_array($courses) && count($courses) > 0) { foreach ($courses as $course) { - $return += course_scale_used($course->id,$scaleid); + if (course_scale_used($course->id,$scaleid)) { + return true; + } } } } - return $return; + + return false; } /** Index: mod/assignment/lib.php =================================================================== RCS file: /cvsroot/moodle/moodle/mod/assignment/lib.php,v retrieving revision 1.219.2.16 diff -u -r1.219.2.16 lib.php --- mod/assignment/lib.php 17 Sep 2007 16:58:54 -0000 1.219.2.16 +++ mod/assignment/lib.php 20 Sep 2007 10:06:48 -0000 @@ -1981,6 +1981,16 @@ } /** + * Returns true if the scale is in use in the system. + * + * @param $scaleid int The scale to be counted. + * @return boolean + */ +function assignment_scale_used_anywhere($scaleid) { + return record_exists("assignment","grade","-$scaleid"); +} + +/** * Make sure up-to-date events are created for all assignment instances * * This standard function will check all instances of this module Index: mod/forum/lib.php =================================================================== RCS file: /cvsroot/moodle/moodle/mod/forum/lib.php,v retrieving revision 1.536.2.37 diff -u -r1.536.2.37 lib.php --- mod/forum/lib.php 23 Aug 2007 13:38:21 -0000 1.536.2.37 +++ mod/forum/lib.php 20 Sep 2007 10:11:16 -0000 @@ -1222,6 +1222,16 @@ return $return; } +/** + * Returns true if the scale is in use in the system. + * + * @param $scaleid int The scale to be counted. + * @return boolean + */ +function forum_scale_used_anywhere($scaleid) { + return record_exists("forum","scale","-$scaleid"); +} + // SQL FUNCTIONS /////////////////////////////////////////////////////////// /** Index: mod/glossary/lib.php =================================================================== RCS file: /cvsroot/moodle/moodle/mod/glossary/lib.php,v retrieving revision 1.168.2.5 diff -u -r1.168.2.5 lib.php --- mod/glossary/lib.php 15 Jul 2007 22:24:44 -0000 1.168.2.5 +++ mod/glossary/lib.php 20 Sep 2007 10:13:00 -0000 @@ -401,6 +401,16 @@ return $return; } +/** + * Returns true if the scale is in use in the system. + * + * @param $scaleid int The scale to be counted. + * @return boolean + */ +function glossary_scale_used_anywhere($scaleid) { + return record_exists("glossary","scale","-$scaleid"); +} + ////////////////////////////////////////////////////////////////////////////////////// /// Any other glossary functions go here. Each of them must have a name that /// starts with glossary_ Index: mod/hotpot/lib.php =================================================================== RCS file: /cvsroot/moodle/moodle/mod/hotpot/lib.php,v retrieving revision 1.66.2.7 diff -u -r1.66.2.7 lib.php --- mod/hotpot/lib.php 26 Jun 2007 12:04:00 -0000 1.66.2.7 +++ mod/hotpot/lib.php 20 Sep 2007 10:13:40 -0000 @@ -1225,6 +1225,17 @@ return $report; } +/** + * Returns true if the scale is in use in the system. + * + * @param $scaleid int The scale to be counted. + * @return boolean + */ +function hotpot_scale_used_anywhere($scaleid) { +// return record_exists("hotpot","scale","-$scaleid"); + return false; // Scales are not used by Hotpot module +} + ////////////////////////////////////////////////////////// /// Any other hotpot functions go here. /// Each of them must have a name that starts with hotpot Index: mod/journal/lib.php =================================================================== RCS file: /cvsroot/moodle/moodle/mod/journal/lib.php,v retrieving revision 1.79.2.1 diff -u -r1.79.2.1 lib.php --- mod/journal/lib.php 15 May 2007 18:26:53 -0000 1.79.2.1 +++ mod/journal/lib.php 20 Sep 2007 10:14:32 -0000 @@ -307,6 +307,16 @@ return $return; } +/** + * Returns true if the scale is in use in the system. + * + * @param $scaleid int The scale to be counted. + * @return boolean + */ +function journal_scale_used_anywhere($scaleid) { + return record_exists("journal","assessed","-$scaleid"); +} + // SQL FUNCTIONS /////////////////////////////////////////////////////////////////// function journal_get_users_done($journal) { Index: mod/lams/lib.php =================================================================== RCS file: /cvsroot/moodle/moodle/mod/lams/lib.php,v retrieving revision 1.5.2.2 diff -u -r1.5.2.2 lib.php --- mod/lams/lib.php 20 Feb 2007 17:31:37 -0000 1.5.2.2 +++ mod/lams/lib.php 20 Sep 2007 10:15:46 -0000 @@ -140,6 +140,17 @@ return $return; } +/** + * Returns true if the scale is in use in the system. + * + * @param $scaleid int The scale to be counted. + * @return boolean + */ +function lams_scale_used_anywhere($scaleid) { +// return record_exists("lams","scale","-$scaleid"); + return false; +} + ////////////////////////////////////////////////////////////////////////////////////// /// Any other lams functions go here. Each of them must have a name that /// starts with lams_