/** * Returns if scale used anywhere - activities, grade items, outcomes, etc. * @return bool */ function is_used() { global $CFG; // count grade items excluding the $sql = "SELECT COUNT(id) FROM {$CFG->prefix}grade_items WHERE scaleid = {$this->id} AND outcomeid IS NULL"; if (count_records_sql($sql)) { return true; } // count outcomes $sql = "SELECT COUNT(id) FROM {$CFG->prefix}grade_outcomes WHERE scaleid = {$this->id}"; if (count_records_sql($sql)) { return true; } $legacy_mods = false; if ($mods = get_records('modules', '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)) { return true; } } } return false; }
/** * 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; }
function backup_scales_info($bf, $preferences) { global $CFG; $status = true; //Counter, points to current record $counter = 0; //Get scales (common and course scales) $scales = get_records_sql("SELECT id, courseid, userid, name, scale, description, timemodified\n FROM {$CFG->prefix}scale\n WHERE courseid = 0 OR courseid = {$preferences->backup_course}"); //Copy only used scales to $backupscales. They will be in backup (unused no). See Bug 1223. $backupscales = array(); if ($scales) { foreach ($scales as $scale) { if (course_scale_used($preferences->backup_course, $scale->id)) { $backupscales[] = $scale; } } } //Pring scales header if ($backupscales) { //Pring scales header fwrite($bf, start_tag("SCALES", 2, true)); //Iterate foreach ($backupscales as $scale) { //Begin scale tag fwrite($bf, start_tag("SCALE", 3, true)); //Output scale tag fwrite($bf, full_tag("ID", 4, false, $scale->id)); fwrite($bf, full_tag("COURSEID", 4, false, $scale->courseid)); fwrite($bf, full_tag("USERID", 4, false, $scale->userid)); fwrite($bf, full_tag("NAME", 4, false, $scale->name)); fwrite($bf, full_tag("SCALETEXT", 4, false, $scale->scale)); fwrite($bf, full_tag("DESCRIPTION", 4, false, $scale->description)); fwrite($bf, full_tag("TIMEMODIFIED", 4, false, $scale->timemodified)); //End scale tag fwrite($bf, end_tag("SCALE", 3, true)); } //End scales tag $status = fwrite($bf, end_tag("SCALES", 2, true)); } return $status; }
/** * 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; }
if ($scales) { //Calculate the base path $path = "{$CFG->wwwroot}/course"; $data = array(); $incustom = true; foreach ($scales as $scale) { //Check the separator if (empty($scale->courseid) && $incustom) { $incustom = false; $line = "hr"; $data[] = $line; } $line = array(); $line[] = "<a target=\"scale\" title=\"{$scale->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 . "</a><br /><font size=\"-1\">" . str_replace(",", ", ", $scale->scale) . "</font>"; if (!empty($scale->courseid)) { $scale_used = course_scale_used($course->id, $scale->id); } else { $scale_used = site_scale_used($scale->id, $courses); } $line[] = $scale_used ? get_string("yes") : get_string("no"); if ($incustom) { $line[] = $strcustomscale; } else { $line[] = $strstandardscale; } $buttons = ""; if (!$scale_used && ($incustom || has_capability('moodle/course:managescales', get_context_instance(CONTEXT_SYSTEM, SITEID)))) { $buttons .= "<a title=\"{$stredit}\" href=\"{$path}/scales.php?id={$course->id}&scaleid={$scale->id}&action=edit\"><img" . " src=\"{$CFG->pixpath}/t/edit.gif\" class=\"iconsmall\" alt=\"{$stredit}\" /></a> "; if ($incustom && has_capability('moodle/course:managescales', get_context_instance(CONTEXT_SYSTEM, SITEID))) { $buttons .= "<a title=\"{$strdown}\" href=\"{$path}/scales.php?id={$course->id}&scaleid={$scale->id}&action=down&sesskey={$USER->sesskey}\"><img" . " src=\"{$CFG->pixpath}/t/down.gif\" class=\"iconsmall\" alt=\"{$strdown}\" /></a> "; }
/** * Returns true if a scale is in use anywhere on the site. * * @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; $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; } } } } } // 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) { if (course_scale_used($course->id, $scaleid)) { return true; } } } } return false; }