id);
$context = get_context_instance(CONTEXT_COURSE, $course->id);
$strscale = get_string("scale");
$strscales = get_string("scales");
$strcustomscale = get_string("scalescustom");
$strstandardscale = get_string("scalesstandard");
$strcustomscales = get_string("scalescustom");
$strstandardscales = get_string("scalesstandard");
$strname = get_string("name");
$strdescription = get_string("description");
$strsavechanges = get_string("savechanges");
$strchangessaved = get_string("changessaved");
$strdeleted = get_string("deleted");
$strdelete = get_string("delete");
$stredit = get_string("edit");
$strdown = get_string("movedown");
$strup = get_string("moveup");
$strmoved = get_string("changessaved");
$srtcreatenewscale = get_string("scalescustomcreate");
$strhelptext = get_string("helptext");
$stractivities = get_string("activities");
$stroptions = get_string("action");
$strtype = get_string("group");
/// init this here so we can pass it by reference to every call to site_scale_used to avoid getting the courses out of the db over and over again
$courses = array();
/// If scale data is being submitted, then save it and continue
$focus = "";
$errors = NULL;
if ($action == 'sendform' and confirm_sesskey()) {
if ($form = data_submitted()) {
if (empty($form->name)) {
$errors[$scaleid]->name = true;
$focus = "form$scaleid.save";
}
if (empty($form->scalescale)) {
$errors[$scaleid]->scalescale = true;
$focus = "form$scaleid.save";
}
if (!$errors) {
$newscale=NULL;
$newscale->name = $form->name;
$newscale->scale = $form->scalescale;
$newscale->description = $form->description;
$newscale->courseid = $form->courseid;
$newscale->userid = $USER->id;
$newscale->timemodified = time();
if (empty($scaleid)) {
$newscale->courseid = $course->id;
if (!insert_record("scale", $newscale)) {
error("Could not insert the new scale!");
}
} else {
$newscale->id = $scaleid;
if (!update_record("scale", $newscale)) {
error("Could not update that scale!");
}
}
$notify = "$newscale->name: $strchangessaved";
$focus = "form$scaleid.save";
} else {
if (!empty($scaleid)) {
$action = "edit";
} else {
$action = "new";
}
}
}
}
//If action is details, show the popup info
if ($action == "details") {
//Check for teacher edit
require_capability('moodle/course:managescales', $context);
//Check for scale
if (! $scale = get_record("scale", "id", $scaleid)) {
error("Scale ID was incorrect");
}
// $scales_course_uses = course_scale_used($course->id,$scale->id);
// $scales_site_uses = site_scale_used($scale->id,$courses);
$scalemenu = make_menu_from_list($scale->scale);
print_header("$course->shortname: $strscales", $course->fullname,
"$course->shortname -> $strscales -> $scale->name", "", "", true, " ", " ");
close_window_button();
echo "
";
print_simple_box_start("center");
print_heading($scale->name);
echo "";
choose_from_menu($scalemenu, "", "", "");
echo "";
echo text_to_html($scale->description);
print_simple_box_end();
echo "";
close_window_button();
print_footer();
exit;
}
//If action is edit or new, show the form
if ($action == "edit" || $action == "new") {
$sesskey = !empty($USER->id) ? $USER->sesskey : '';
require_capability('moodle/course:managescales', $context);
//Check for scale if action = edit
if ($action == "edit") {
if (! $scale = get_record("scale", "id", $scaleid)) {
error("Scale ID was incorrect");
}
} else {
$scale = new object();
$scale->id = 0;
$scale->courseid = $course->id;
$scale->name = "";
$scale->scale = "";
$scale->description = "";
}
//Calculate the uses
if ($scale->courseid == 0) {
$scale_uses = site_scale_used($scale->id,$courses);
} else {
$scale_uses = course_scale_used($course->id,$scale->id);
}
//Check for scale_uses
if (!empty($scale_uses)) {
error("Scale is in use and cannot be modified",$CFG->wwwroot.'/course/scales.php?id='.$course->id);
}
//Check for standard scales
if ($scale->courseid == 0 and !has_capability('moodle/course:managescales', get_context_instance(CONTEXT_SYSTEM, SITEID))) {
error("Only administrators can edit this scale",$CFG->wwwroot.'/course/scales.php?id='.$course->id);
}
//Print out the headers
print_header("$course->shortname: $strscales", $course->fullname,
"id\">$course->shortname".
" -> id\">$strscales".
" -> ".get_string("editinga","",$strscale), $focus);
//Title
print_heading_with_help($strscales, "scales");
if (!empty($errors) and ($form->scaleid == $scale->id)) {
$scale->name = $form->name;
$scale->scale = $form->scalescale;
$scale->description = $form->description;
}
echo "";
echo "
";
print_footer($course);
exit;
}
//If action is delete, do it
if ($action == "delete" and confirm_sesskey()) {
//Check for teacher edit
require_capability('moodle/course:managescales', $context);
//Check for scale if action = edit
if (! $scale = get_record("scale", "id", $scaleid)) {
error("Scale ID was incorrect");
}
//Calculate the uses
if ($scale->courseid == 0) {
$scale_uses = site_scale_used($scale->id,$courses);
} else {
$scale_uses = course_scale_used($course->id,$scale->id);
}
//Check for scale_uses
if (!empty($scale_uses)) {
error("Scale is in use and cannot be deleted",$CFG->wwwroot.'/course/scales.php?id='.$course->id);
}
//Check for standard scales
if ($scale->courseid == 0 and !has_capability('moodle/course:managescales', get_context_instance(CONTEXT_SYSTEM, SITEID))) {
error("Only administrators can delete this scale",$CFG->wwwroot.'/course/scales.php?id='.$course->id);
}
if (delete_records("scale", "id", $scaleid)) {
$notify = "$scale->name: $strdeleted";
}
}
//If action is down or up, do it
if (($action == "down" || $action == "up") and confirm_sesskey()) {
//Check for teacher edit
require_capability('moodle/course:managescales', $context);
//Check for scale if action = edit
if (! $scale = get_record("scale", "id", $scaleid)) {
error("Scale ID was incorrect");
}
//Calculate the uses
if ($scale->courseid == 0) {
$scale_uses = site_scale_used($scale->id,$courses);
} else {
$scale_uses = course_scale_used($course->id,$scale->id);
}
//Check for scale_uses
if (!empty($scale_uses)) {
error("Scale is in use and cannot be moved",$CFG->wwwroot.'/course/scales.php?id='.$course->id);
}
if ($action == "down") {
$scale->courseid = 0;
} else {
$scale->courseid = $course->id;
}
if (set_field("scale", "courseid", $scale->courseid, "id", $scale->id)) {
$notify = "$scale->name: $strmoved";
}
}
if ($list) { /// Just list the scales (in a helpwindow)
require_capability('moodle/course:viewscales', $context);
print_header($strscales);
if (!empty($scaleid)) {
if ($scale = get_record("scale", "id", "$scaleid")) {
$scalemenu = make_menu_from_list($scale->scale);
print_simple_box_start("center");
print_heading($scale->name);
echo "";
choose_from_menu($scalemenu, "", "", "");
echo "";
echo text_to_html($scale->description);
print_simple_box_end();
}
echo "
";
close_window_button();
exit;
}
if ($scales = get_records("scale", "courseid", "$course->id", "name ASC")) {
print_heading($strcustomscales);
if (has_capability('moodle/course:managescales', get_context_instance(CONTEXT_COURSE, $course->id))) {
echo "(";
print_string("scalestip");
echo ")
";
}
foreach ($scales as $scale) {
$scalemenu = make_menu_from_list($scale->scale);
print_simple_box_start("center");
print_heading($scale->name);
echo "";
choose_from_menu($scalemenu, "", "", "");
echo "";
echo text_to_html($scale->description);
print_simple_box_end();
echo "
";
}
} else {
if (has_capability('moodle/course:managescales', $context)) {
echo "(";
print_string("scalestip");
echo ")
";
}
}
if ($scales = get_records("scale", "courseid", "0", "name ASC")) {
print_heading($strstandardscales);
foreach ($scales as $scale) {
$scalemenu = make_menu_from_list($scale->scale);
print_simple_box_start("center");
print_heading($scale->name);
echo "";
choose_from_menu($scalemenu, "", "", "");
echo "";
echo text_to_html($scale->description);
print_simple_box_end();
echo "
";
}
}
close_window_button();
exit;
}
/// The rest is all about editing the scales
require_capability('moodle/course:managescales', $context);
/// Print out the main page
print_header("$course->shortname: $strscales", $course->fullname,
"id\">$course->shortname
-> $strscales");
print_heading_with_help($strscales, "scales");
$options = array();
$options['id'] = $course->id;
$options['scaleid'] = 0;
$options['action'] = 'new';
print_simple_box_start('center');
print_single_button($CFG->wwwroot.'/course/scales.php',$options,$srtcreatenewscale,'POST');
print_simple_box_end();
echo "";
if (!empty($notify)) {
notify($notify, "green");
}
$scales = array();
$customscales = get_records("scale", "courseid", "$course->id", "name ASC");
$standardscales = get_records("scale", "courseid", "0", "name ASC");
if ($customscales) {
foreach($customscales as $scale) {
$scales[] = $scale;
}
}
if ($standardscales) {
foreach($standardscales as $scale) {
$scales[] = $scale;
}
}
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[] = "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);
} else {
$scales_uses = site_scale_used($scale->id,$courses);
}
$line[] = $scales_uses;
if ($incustom) {
$line[] = $strcustomscale;
} else {
$line[] = $strstandardscale;
}
$buttons = "";
if (empty($scales_uses) && ($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))) {
$buttons .= "id&scaleid=$scale->id&action=down&sesskey=$USER->sesskey\">pixpath/t/down.gif\" class=\"iconsmall\" alt=\"$strdown\" /> ";
}
if (!$incustom && has_capability('moodle/course:managescales', get_context_instance(CONTEXT_SYSTEM, SITEID))) {
$buttons .= "id&scaleid=$scale->id&action=up&sesskey=$USER->sesskey\">pixpath/t/up.gif\" class=\"iconsmall\" alt=\"$strup\" /> ";
}
$buttons .= "id&scaleid=$scale->id&action=delete&sesskey=$USER->sesskey\">pixpath/t/delete.gif\" class=\"iconsmall\" alt=\"$strdelete\" /> ";
}
$line[] = $buttons;
$data[] = $line;
}
$head = $strscale.",".$stractivities.",".$strtype.",".$stroptions;
$table->head = explode(",",$head);
$size = "50%,20%,20%,10%";
$table->size = explode(",",$size);
$align = "left,center,center,center";
$table->align = explode(",",$align);
$wrap = ",nowrap,nowrap,nowrap";
$table->wrap = explode(",",$wrap);
$table->width = "90%";
$table->data = $data;
print_table ($table);
}
print_footer($course);
?>