error("No coursemodule found");
}
+ require_login($course->id, false, $cm);
+ $context = get_context_instance(CONTEXT_MODULE, $cm->id);
+ require_capability('mod/workshop:view', $context);
+
if (!$redirect) {
- $redirect = urlencode($_SERVER["HTTP_REFERER"].'#sid='.$submission->id);
+ //seems not to work properly
+// $redirect = urlencode($_SERVER["HTTP_REFERER"].'#sid='.$submission->id);
}
- require_login($course->id, false, $cm);
$strworkshops = get_string("modulenameplural", "workshop");
$strworkshop = get_string("modulename", "workshop");
if (!$assessment = get_record("workshop_assessments", "submissionid", $submission->id, "userid",
$USER->id)) {
// if it's the teacher see if the user has done a self assessment if so copy it
- if (isteacher($course->id) and ($assessment = get_record("workshop_assessments", "submissionid",
+ if (workshop_is_teacher($workshop) and ($assessment = get_record("workshop_assessments", "submissionid",
$submission->id, "userid", $submission->userid))) {
$assessment = workshop_copy_assessment($assessment, $submission, true);
// need to set owner of assessment
error("Could not insert workshop assessment!");
}
// if it's the teacher and the workshop is error banded set all the elements to Yes
- if (isteacher($course->id) and ($workshop->gradingstrategy == 2)) {
+ if (workshop_is_teacher($workshop) and ($workshop->gradingstrategy == 2)) {
for ($i =0; $i < $workshop->nelements; $i++) {
unset($element);
$element->workshopid = $workshop->id;
print_header('', '', '', '', '<base target="_parent" />');
$title = '"'.$submission->title.'" ';
- if (isteacher($course->id)) {
+ if (workshop_is_teacher($workshop)) {
$title .= ' '.get_string('by', 'workshop').' '.workshop_fullname($submission->userid, $course->id);
}
print_heading($title);
workshop_print_submission($workshop, $submission);
- if (isteacher($course->id)) {
+ if (workshop_is_teacher($workshop)) {
echo '<br /><center><b>'.get_string('assessments', 'workshop').': </b><br />';
echo workshop_print_submission_assessments($workshop, $submission, "all");
echo '</center>';
}
require_login($course->id, false, $cm);
+ $context = get_context_instance(CONTEXT_MODULE, $cm->id);
+ require_capability('mod/workshop:view', $context);
$navigation = "";
if ($course->category) {
error("Workshop Assessment ID and/or Element Number missing");
}
- if (!isteacher($course->id)) {
- error("Only teachers can look at this page");
- }
+ require_capability('mod/workshop:manage', $context);
if (!$assessment = get_record("workshop_assessments", "id", $aid)) {
error("workshop assessment is misconfigured");
/*********************** admin list of asssessments (of a submission) (by teachers)**************/
elseif ($action == 'adminlist') {
- if (!isteacher($course->id)) {
- error("Only teachers can look at this page");
- }
+ require_capability('mod/workshop:manage', $context);
if (empty($sid)) {
error ("Workshop asssessments: adminlist called with no sid");
/*********************** admin list of asssessments by a student (used by teachers only )******************/
elseif ($action == 'adminlistbystudent') {
- if (!isteacher($course->id)) {
- error("Only teachers can look at this page");
- }
+ require_capability('mod/workshop:manage', $context);
if (empty($userid)) {
error ("Workshop asssessments: adminlistbystudent called with no userid");
/*********************** edit assessment elements (for teachers) ***********************/
elseif ($action == 'editelements') {
- if (!isteacher($course->id)) {
- error("Only teachers can look at this page");
- }
+ require_capability('mod/workshop:manage', $context);
$count = count_records("workshop_grades", "workshopid", $workshop->id);
if ($count) {
/*************** grade all assessments (by teacher) ***************************/
elseif ($action == 'gradeallassessments') {
- if (!isteacher($course->id)) {
- error("Only teachers can look at this page");
- }
+ require_capability('mod/workshop:manage', $context);
print_heading(get_string("gradingallassessments", "workshop"));
workshop_grade_assessments($workshop);
/*************** grade (student's) assessment (by teacher) ***************************/
elseif ($action == 'gradeassessment') {
- if (!isteacher($course->id)) {
- error("Only teachers can look at this page");
- }
+ require_capability('mod/workshop:manage', $context);
print_heading_with_help(get_string("gradeassessment", "workshop"), "gradingassessments", "workshop");
// get assessment record
/*********************** insert/update assignment elements (for teachers)***********************/
elseif ($action == 'insertelements') {
- if (!isteacher($course->id)) {
- error("Only teachers can look at this page");
- }
+ require_capability('mod/workshop:manage', $context);
$form = data_submitted();
/*********************** list assessments for grading (Student submissions)(by teachers)***********************/
elseif ($action == 'listungradedstudentsubmissions') {
- if (!isteacher($course->id)) {
- error("Only teachers can look at this page");
- }
+ require_capability('mod/workshop:manage', $context);
+
workshop_list_ungraded_assessments($workshop, "student");
print_continue("view.php?id=$cm->id");
}
/*********************** list assessments for grading (Teacher submissions) (by teachers)***********************/
elseif ($action == 'listungradedteachersubmissions') {
- if (!isteacher($course->id)) {
- error("Only teachers can look at this page");
- }
+ require_capability('mod/workshop:manage', $context);
+
workshop_list_ungraded_assessments($workshop, "teacher");
print_continue("view.php?id=$cm->id");
}
elseif ($action == 'regradestudentassessments' ) {
$timenow = time();
- if (!isteacher($course->id)) {
- error("Only teachers can look at this page");
- }
+ require_capability('mod/workshop:manage', $context);
// get all the submissions...
if ($submissions = get_records("workshop_submissions", "workshopid", $workshop->id)) {
foreach ($submissions as $submission) {
error("Workshop Assessment id and/or Stock Comment id missing");
}
- if (!isteacher($course->id)) {
- error("Only teachers can look at this page");
- }
+ require_capability('mod/workshop:manage', $context);
if (!$assessment = get_record("workshop_assessments", "id", $aid)) {
error("workshop assessment is misconfigured");
workshop_grade_assessments($workshop);
} else { // it could be self assessment....
// now see if there's a corresponding assessment so that the gradinggrade can be set
- if (isteacher($course->id)) {
+ if (workshop_is_teacher($workshop)) {
// see if there's are student assessments, if so set their gradinggrade
if ($assessments = workshop_get_assessments($submission)) {
foreach($assessments as $studentassessment) {
// skip if it's not a student assessment
- if (!isstudent($course->id, $studentassessment->userid)) {
+ if (!workshop_is_student($workshop, $studentassessment->userid)) {
continue;
}
$gradinggrade = workshop_compare_assessments($workshop, $assessment, $studentassessment);
} else { //it's a student assessment, see if there's a corresponding teacher's assessment
if ($assessments = workshop_get_assessments($submission)) {
foreach($assessments as $teacherassessment) {
- if (isteacher($course->id, $teacherassessment->userid)) {
+ if (workshop_is_teacher($workshop, $teacherassessment->userid)) {
$gradinggrade = workshop_compare_assessments($workshop, $assessment, $teacherassessment);
set_field("workshop_assessments", "timegraded", $timenow, "id", $assessment->id);
set_field("workshop_assessments", "gradinggrade", $gradinggrade, "id", $assessment->id);
elseif ($action == 'updategrading') {
$timenow = time();
- if (!isteacher($course->id)) {
- error("Only teachers can look at this page");
- }
+ require_capability('mod/workshop:manage', $context);
$form = (object)$_POST;
--- /dev/null
+<?php // $Id$
+/**
+ * Capability definitions for the workshop module.
+ *
+ * For naming conventions, see lib/db/access.php.
+ */
+$mod_workshop_capabilities = array(
+
+ 'mod/workshop:view' => array(
+
+ 'captype' => 'read',
+ 'contextlevel' => CONTEXT_MODULE,
+ 'legacy' => array(
+ 'guest' => CAP_PREVENT,
+ 'student' => CAP_ALLOW,
+ 'teacher' => CAP_ALLOW,
+ 'editingteacher' => CAP_ALLOW,
+ 'coursecreator' => CAP_ALLOW,
+ 'admin' => CAP_ALLOW
+ )
+ ),
+
+ 'mod/workshop:participate' => array(
+
+ 'captype' => 'write',
+ 'contextlevel' => CONTEXT_MODULE,
+ 'legacy' => array(
+ 'guest' => CAP_PREVENT,
+ 'student' => CAP_ALLOW,
+ 'teacher' => CAP_PREVENT,
+ 'editingteacher' => CAP_PREVENT,
+ 'coursecreator' => CAP_PREVENT,
+ 'admin' => CAP_PREVENT
+ )
+ ),
+
+ 'mod/workshop:manage' => array(
+
+ 'captype' => 'write',
+ 'contextlevel' => CONTEXT_MODULE,
+ 'legacy' => array(
+ 'guest' => CAP_PREVENT,
+ 'student' => CAP_PREVENT,
+ 'teacher' => CAP_ALLOW,
+ 'editingteacher' => CAP_ALLOW,
+ 'coursecreator' => CAP_ALLOW,
+ 'admin' => CAP_ALLOW
+ )
+ )
+);
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8" ?>
-<XMLDB PATH="mod/workshop/db" VERSION="20060812" COMMENT="XMLDB file for Moodle mod/workshop">
+<XMLDB PATH="mod/workshop/db" VERSION="20060905" COMMENT="XMLDB file for Moodle mod/workshop"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:noNamespaceSchemaLocation="../../../lib/xmldb/xmldb.xsd"
+>
<TABLES>
<TABLE NAME="workshop" COMMENT="Defines workshop" NEXT="workshop_elements">
<FIELDS>
<FIELD NAME="timecreated" TYPE="int" LENGTH="10" NOTNULL="true" UNSIGNED="true" DEFAULT="0" SEQUENCE="false" ENUM="false" PREVIOUS="title" NEXT="mailed"/>
<FIELD NAME="mailed" TYPE="int" LENGTH="2" NOTNULL="true" UNSIGNED="true" DEFAULT="0" SEQUENCE="false" ENUM="false" PREVIOUS="timecreated" NEXT="description"/>
<FIELD NAME="description" TYPE="text" LENGTH="small" NOTNULL="true" SEQUENCE="false" ENUM="false" PREVIOUS="mailed" NEXT="gradinggrade"/>
- <FIELD NAME="gradinggrade" TYPE="int" LENGTH="3" NOTNULL="true" UNSIGNED="true" DEFAULT="0" SEQUENCE="false" ENUM="false" PREVIOUS="description" NEXT="finalgrade"/>
- <FIELD NAME="finalgrade" TYPE="int" LENGTH="3" NOTNULL="true" UNSIGNED="true" DEFAULT="0" SEQUENCE="false" ENUM="false" PREVIOUS="gradinggrade" NEXT="late"/>
+ <FIELD NAME="gradinggrade" TYPE="int" LENGTH="3" NOTNULL="true" UNSIGNED="true" DEFAULT="0" SEQUENCE="false" ENUM="false" PREVIOUS="description" NEXT="teachergraded"/>
+ <FIELD NAME="teachergraded" TYPE="int" LENGTH="3" NOTNULL="true" UNSIGNED="true" DEFAULT="0" SEQUENCE="false" ENUM="false" COMMENT="This field was only in upgrade, but not in install file, grrr." PREVIOUS="gradinggrade" NEXT="finalgrade"/>
+ <FIELD NAME="finalgrade" TYPE="int" LENGTH="3" NOTNULL="true" UNSIGNED="true" DEFAULT="0" SEQUENCE="false" ENUM="false" PREVIOUS="teachergraded" NEXT="late"/>
<FIELD NAME="late" TYPE="int" LENGTH="3" NOTNULL="true" UNSIGNED="true" DEFAULT="0" SEQUENCE="false" ENUM="false" PREVIOUS="finalgrade" NEXT="nassessments"/>
<FIELD NAME="nassessments" TYPE="int" LENGTH="10" NOTNULL="true" UNSIGNED="true" DEFAULT="0" SEQUENCE="false" ENUM="false" PREVIOUS="late"/>
</FIELDS>
// This function does anything necessary to upgrade
// older versions to match current functionality
- global $CFG;
+ global $CFG, $db;
if ($oldversion < 2003050400) {
execute_sql(" ALTER TABLE `{$CFG->prefix}workshop` CHANGE `graded` `agreeassessments` TINYINT(2) UNSIGNED DEFAULT '0' NOT NULL");
$wtm->update( 'workshop','description','format' );
}
+ if ($oldversion < 2006090500) {
+ $columns = $db->MetaColumns($CFG->prefix.'workshop_assessments');
+ $columns = array_change_key_case($columns, CASE_LOWER);
+ if (!isset($columns['teachergraded'])) {
+ table_column('workshop_assessments', '', 'teachergraded', 'INTEGER', '4', 'UNSIGNED', '0', 'NOT NULL', 'gradinggrade');
+ }
+ }
+
return true;
}
`timeagreed` int(10) unsigned NOT NULL default '0',
`grade` float NOT NULL default '0',
`gradinggrade` int(3) NOT NULL default '0',
+ `teachergraded` int(3) NOT NULL default '0',
`mailed` tinyint(3) unsigned NOT NULL default '0',
`resubmission` tinyint(3) unsigned NOT NULL default '0',
`donotuse` tinyint(3) unsigned NOT NULL default '0',
// This function does anything necessary to upgrade
// older versions to match current functionality
- global $CFG;
+ global $CFG, $db;
if ($oldversion < 2003050400) {
table_column("workshop","graded", "agreeassessments", "INT","2", "", "0" ,"NOT NULL");
");
}
+ if ($oldversion < 2006090500) {
+ $columns = $db->MetaColumns($CFG->prefix.'workshop_assessments');
+ $columns = array_change_key_case($columns, CASE_LOWER);
+ if (!isset($columns['teachergraded'])) {
+ table_column('workshop_assessments', '', 'teachergraded', 'INTEGER', '4', 'UNSIGNED', '0', 'NOT NULL', 'gradinggrade');
+ }
+ }
+
return true;
}
releasegrades INT8 NOT NULL default'0',
grade INT8 NOT NULL default '0',
gradinggrade INT4 NOT NULL default '0',
+ teachergraded INT4 NOT NULL default '0',
ntassessments INT NOT NULL default '0',
assessmentcomps int4 NOT NULL default '2',
nsassessments INT NOT NULL default '0',
}
require_course_login($course);
+
add_to_log($course->id, "workshop", "view all", "index.php?id=$course->id", "");
$strworkshops = get_string("modulenameplural", "workshop");
$strweek = get_string("week");
$strtopic = get_string("topic");
$strname = get_string("name");
- if (isstudent($course->id)) {
- $strinfo = get_string("grade");
- } else {
- $strinfo = get_string("phase", "workshop");
- }
+ $strinfo = get_string("grade")."/".$strinfo = get_string("phase", "workshop");
$strdeadline = get_string("deadline", "workshop");
$strsubmitted = get_string("submitted", "assignment");
}
foreach ($workshops as $workshop) {
- if (isteacher($course->id, $USER->id)) { // teacher see info (students see grade)
+ if (workshop_is_teacher($workshop, $USER->id)) { // teacher see info (students see grade)
$info = workshop_phase($workshop, 'short');
if (time() > $workshop->submissionstart) {
if ($num = workshop_count_student_submissions_for_assessment($workshop, $USER)) {
//Show normal if the mod is visible
$link = "<a href=\"view.php?id=$workshop->coursemodule\">".format_string($workshop->name,true)."</a><br />";
}
- if (isstudent($course->id)) {
+ if (workshop_is_student($workshop)) {
$link .= " ($submission->title)"; // show students the title of their submission(s)
$gradinggrade = workshop_gradinggrade($workshop, $USER);
$grade = workshop_submission_grade($workshop, $submission);
else {
$table->data[] = array ($link, $info, $submitted, $due);
}
- if (isteacher($course->id)) {
+ if (workshop_is_teacher($workshop)) {
// teacher only needs to see one "submission"
break;
}
//Show normal if the mod is visible
$link = "<a href=\"view.php?id=$workshop->coursemodule\">".format_string($workshop->name,true)."</a>";
}
- if (isstudent($course->id)) {
+ if (workshop_is_student($workshop)) {
$info = '0';
}
if ($course->format == "weeks" or $course->format == "topics") {
4 => array('name' => get_string('verystrict', 'workshop'), 'value' => 0.2) );
+/*** Moodle 1.7 compatibility functions *****
+ *
+ ********************************************/
+function workshop_context($workshop) {
+ //TODO: add some $cm caching if needed
+ if (is_object($workshop)) {
+ $workshop = $workshop->id;
+ }
+ if (! $cm = get_coursemodule_from_instance('workshop', $workshop)) {
+ error('Course Module ID was incorrect');
+ }
+
+ return get_context_instance(CONTEXT_MODULE, $cm->id);
+}
+
+function workshop_is_teacher($workshop, $userid=NULL) {
+ return has_capability('mod/workshop:manage', workshop_context($workshop), $userid);
+}
+
+//TODO: should we make new role for it and fix the code or wait for new workshop?
+function workshop_is_teacheredit($workshop, $userid=NULL) {
+ return has_capability('mod/workshop:manage', workshop_context($workshop), $userid);
+}
+
+function workshop_is_student($workshop, $userid=NULL) {
+ return has_capability('mod/workshop:participate', workshop_context($workshop), $userid);
+}
+
+function workshop_get_students($workshop, $sort='u.lastaccess', $fields='u.*') {
+ return $users = get_users_by_capability(workshop_context($workshop), 'mod/workshop:participate', $fields, $sort);
+}
+
+function workshop_get_teachers($workshop, $sort='u.lastaccess', $fields='u.*') {
+ return $users = get_users_by_capability(workshop_context($workshop), 'mod/workshop:manage', $fields, $sort);
+}
+
/*** Standard Moodle functions ******************
workshop_add_instance($workshop)
echo "Could not find user $assessment->userid\n";
continue;
}
- if (! isstudent($course->id, $submissionowner->id) and !isteacher($course->id,
+ if (! workshop_is_student($workshop, $submissionowner->id) and !workshop_is_teacher($workshop,
$submissionowner->id)) {
continue; // Not an active participant
}
- if (! isstudent($course->id, $assessmentowner->id) and !isteacher($course->id,
+ if (! workshop_is_student($workshop, $assessmentowner->id) and !workshop_is_teacher($workshop,
$assessmentowner->id)) {
continue; // Not an active participant
}
$USER->lang = $submissionowner->lang;
$sendto = $submissionowner;
// "Your assignment \"$submission->title\" has been assessed by"
- if (isstudent($course->id, $assessmentowner->id)) {
+ if (workshop_is_student($workshop, $assessmentowner->id)) {
$msg = get_string("mail1", "workshop", $submission->title)." a $course->student.\n";
}
else {
echo "Could not find user $assessment->userid\n";
continue;
}
- if (! isstudent($course->id, $submissionowner->id) and !isteacher($course->id,
+ if (! workshop_is_student($workshop, $submissionowner->id) and !workshop_is_teacher($workshop,
$submissionowner->id)) {
continue; // Not an active participant
}
- if (! isstudent($course->id, $assessmentowner->id) and !isteacher($course->id,
+ if (! workshop_is_student($workshop, $assessmentowner->id) and !workshop_is_teacher($workshop,
$assessmentowner->id)) {
continue; // Not an active participant
}
echo "Could not find user $assessment->userid\n";
continue;
}
- if (! isstudent($course->id, $submissionowner->id) and !isteacher($course->id,
+ if (! workshop_is_student($workshop, $submissionowner->id) and !workshop_is_teacher($workshop,
$submissionowner->id)) {
continue; // Not an active participant
}
- if (! isstudent($course->id, $assessmentowner->id) and !isteacher($course->id,
+ if (! workshop_is_student($workshop, $assessmentowner->id) and !workshop_is_teacher($workshop,
$assessmentowner->id)) {
continue; // Not an active participant
}
$USER->lang = $submissionowner->lang;
$sendto = $submissionowner;
// "A comment has been added to the assignment \"$submission->title\" by
- if (isstudent($course->id, $assessmentowner->id)) {
+ if (workshop_is_student($workshop, $assessmentowner->id)) {
$msg = get_string("mail4", "workshop", $submission->title)." a $course->student.\n";
}
else {
$USER->lang = $assessmentowner->lang;
$sendto = $assessmentowner;
// "A comment has been added to the assignment \"$submission->title\" by
- if (isstudent($course->id, $submissionowner->id)) {
+ if (workshop_is_student($workshop, $submissionowner->id)) {
$msg = get_string("mail4", "workshop", $submission->title)." a $course->student.\n";
}
else {
$return = null;
if ($workshop = get_record("workshop", "id", $workshopid)) {
if (($workshop->assessmentstart < time()) and $workshop->gradingstrategy) {
- if ($students = get_course_students($workshop->course)) {
+ if ($students = workshop_get_students($workshop)) {
foreach ($students as $student) {
if ($workshop->wtype) {
$gradinggrade = workshop_gradinggrade($workshop, $student);
$tempmod->id = $log->workshopid;
//Obtain the visible property from the instance
if (instance_is_visible("workshop",$tempmod)) {
- if (!isteacher($course->id, $log->userid)) { // don't break anonymous rule
+ if (!workshop_is_teacher($workshop, $log->userid)) { // don't break anonymous rule
$log->firstname = $course->student;
$log->lastname = '';
}
$tempmod->id = $log->workshopid;
//Obtain the visible property from the instance
if (instance_is_visible("workshop",$tempmod)) {
- if (!isteacher($course->id, $log->userid)) { // don't break anonymous rule
+ if (!workshop_is_teacher($tempmod->id, $log->userid)) { // don't break anonymous rule
$log->firstname = $course->student;
$log->lastname = '';
}
if ($assessments = get_records_select("workshop_assessments", "workshopid = $workshop->id AND
(timecreated + $CFG->maxeditingtime) < $timenow AND timegraded = 0")) {
foreach ($assessments as $assessment) {
- if (isstudent($workshop->course, $assessment->userid)) {
+ if (workshop_is_student($workshop, $assessment->userid)) {
$n++;
}
}
if ($order == "time") {
$order = "s.timecreated ASC";
}
- // make sure it works on the site course
- $select = "u.course = '$workshop->course' AND";
- $site = get_site();
- if ($workshop->course == $site->id) {
- $select = '';
+
+ if (!$students = workshop_get_students($workshop)) {
+ return false;
+ }
+ $list = "(";
+ foreach ($students as $student) {
+ $list .= "$student->id,";
}
+ $list = rtrim($list, ',').")";
- return get_records_sql("SELECT s.* FROM {$CFG->prefix}workshop_submissions s,
- {$CFG->prefix}user_students u, {$CFG->prefix}user a
- WHERE $select s.userid = u.userid
- AND a.id = u.userid
+ return get_records_sql("SELECT s.* FROM {$CFG->prefix}workshop_submissions s, {$CFG->prefix}user a
+ WHERE s.userid IN $list
AND s.workshopid = $workshop->id
AND s.timecreated > 0
- ORDER BY $order");
+ AND s.userid = a.id
+ ORDER BY $order");
}
if ($assessments = workshop_get_assessments($submission)) {
foreach ($assessments as $assessment) {
// test if assessment is "good", a teacher assessment always "good", but may be weighted out
- if (isteacher($workshop->course, $assessment->userid)) {
+ if (workshop_is_teacher($workshop, $assessment->userid)) {
if (!$workshop->teacherweight) {
// drop teacher's assessment as weight is zero
continue;
continue;
}
if (isset($num[$submission->id])) {
- if (isteacher($workshop->course, $assessment->userid)) {
+ if (workshop_is_teacher($workshop, $assessment->userid)) {
$num[$submission->id] += $workshop->teacherweight; // weight teacher's assessment
} else {
$num[$submission->id]++; // number of assessments
}
$nassessments[$submission->id]++;
} else {
- if (isteacher($workshop->course, $assessment->userid)) {
+ if (workshop_is_teacher($workshop, $assessment->userid)) {
$num[$submission->id] = $workshop->teacherweight;
} else {
$num[$submission->id] = 1;
$grade = get_field("workshop_grades", "grade",
"assessmentid", $assessment->id, "elementno", $i);
if (isset($sum[$submission->id][$i])) {
- if (isteacher($workshop->course, $assessment->userid)) {
+ if (workshop_is_teacher($workshop, $assessment->userid)) {
$sum[$submission->id][$i] += $workshop->teacherweight * $grade; // teacher's grade
} else {
$sum[$submission->id][$i] += $grade; // student's grade
}
} else {
- if (isteacher($workshop->course, $assessment->userid)) {
+ if (workshop_is_teacher($workshop, $assessment->userid)) {
$sum[$submission->id][$i] = $workshop->teacherweight * $grade; // teacher's grade
} else {
$sum[$submission->id][$i] = $grade; // students's grade
// first calculate the mean grades for each element
foreach ($assessments as $assessment) {
// test if assessment is "good", a teacher assessment always "good", but may be weighted out
- if (isteacher($workshop->course, $assessment->userid)) {
+ if (workshop_is_teacher($workshop, $assessment->userid)) {
if (!$workshop->teacherweight) {
// drop teacher's assessment as weight is zero
continue;
// it's a duff assessment, or it's not been agreed
continue;
}
- if (isteacher($workshop->course, $assessment->userid)) {
+ if (workshop_is_teacher($workshop, $assessment->userid)) {
$num += $workshop->teacherweight; // weight teacher's assessment
} else {
$num++; // student assessment just add one
for ($i = 0; $i < $workshop->nelements; $i++) {
$grade = get_field("workshop_grades", "grade",
"assessmentid", $assessment->id, "elementno", $i);
- if (isteacher($workshop->course, $assessment->userid)) {
+ if (workshop_is_teacher($workshop, $assessment->userid)) {
$sum[$i] += $workshop->teacherweight * $grade; // teacher's grade
} else {
$sum[$i] += $grade; // student's grade
}
if ($assessment->gradinggrade or !$assessment->timegraded) {
// a good assessment (or one that has not been graded yet)
- if (isteacher($workshop->course, $assessment->userid)) {
+ if (workshop_is_teacher($workshop, $assessment->userid)) {
$timenow = time();
if ($timenow > $workshop->releasegrades) {
// teacher's grade is available
if ($assessments = workshop_get_assessments($submission)) {
foreach ($assessments as $assessment) {
// ignore teacher assessments
- if (!isteacher($workshop->course, $assessment->userid)) {
+ if (!workshop_is_teacher($workshop, $assessment->userid)) {
$n++;
}
}
if ($workshop->course == SITEID) {
$select = '';
}
+ if (!$students = workshop_get_students($workshop)) {
+ return 0;
+ }
+ $list = "(";
+ foreach ($students as $student) {
+ $list .= "$student->id,";
+ }
+ $list = rtrim($list, ',').")";
- return count_records_sql("SELECT count(*) FROM {$CFG->prefix}workshop_submissions s,
- {$CFG->prefix}user_students u
- WHERE $select s.userid = u.userid
- AND s.workshopid = $workshop->id
- AND timecreated > 0");
+ return count_records_sql("SELECT count(*) FROM {$CFG->prefix}workshop_submissions s
+ WHERE $select s.userid IN $list
+ AND s.workshopid = $workshop->id
+ AND timecreated > 0");
}
// Return count of (cold) teacher assessments of a submission
global $CFG;
+ if (!$teachers = workshop_get_teachers($submission->workshopid)) {
+ return 0;
+ }
+ $list = "(";
+ foreach ($teachers as $teacher) {
+ $list .= "$teacher->id,";
+ }
+ $list = rtrim($list, ',').")";
$timenow = time();
- return count_records_sql("SELECT count(*) FROM {$CFG->prefix}workshop_assessments a,
- {$CFG->prefix}user_teachers u
- WHERE u.course = $courseid
- AND a.userid = u.userid
- AND a.submissionid = $submission->id
- AND $timenow > (a.timecreated + $CFG->maxeditingtime)");
+ return count_records_sql("SELECT count(*) FROM {$CFG->prefix}workshop_assessments a
+ WHERE a.userid IN $list
+ AND a.submissionid = $submission->id
+ AND $timenow > (a.timecreated + $CFG->maxeditingtime)");
}
if ($assessments = workshop_get_assessments($submission)) {
foreach ($assessments as $assessment) {
// count only teacher assessments
- if (isteacher($workshop->course, $assessment->userid)) {
+ if (workshop_is_teacher($workshop, $assessment->userid)) {
$n++;
}
}
//////////////////////////////////////////////////////////////////////////////////////
function workshop_count_teacher_submissions($workshop) {
global $CFG;
+ if (!$teachers = workshop_get_teachers($workshop)) {
+ return 0;
+ }
+ $list = "(";
+ foreach ($teachers as $teacher) {
+ $list .= "$teacher->id,";
+ }
+ $list = rtrim($list, ',').")";
+ $timenow = time();
- return count_records_sql("SELECT count(*) FROM {$CFG->prefix}workshop_submissions s,
- {$CFG->prefix}user_teachers u
- WHERE u.course = $workshop->course
- AND s.userid = u.userid
- AND s.workshopid = $workshop->id");
+ return count_records_sql("SELECT count(*)
+ FROM {$CFG->prefix}workshop_submissions s
+ WHERE s.userid IN $list
+ AND s.workshopid = $workshop->id");
}
foreach ($assessments as $assessment) {
if ($assessment->timegraded == 0) {
// ignore teacher assessments
- if (!isteacher($workshop->course, $assessment->userid)) {
+ if (!workshop_is_teacher($workshop, $assessment->userid)) {
$n++;
}
}
foreach ($assessments as $assessment) {
if ($assessment->timegraded == 0) {
// ignore teacher assessments
- if (!isteacher($workshop->course, $assessment->userid)) {
+ if (!workshop_is_teacher($workshop, $assessment->userid)) {
// must have created a little time ago
if (($timenow - $assessment->timecreated) > $CFG->maxeditingtime) {
$n++;
break;
case "student" :
$submission = get_record("workshop_submissions", "id", $assessment->submissionid);
- if (isstudent($workshop->course, $submission->userid)) {
+ if (workshop_is_student($workshop, $submission->userid)) {
$n++;
}
break;
case "teacher" :
$submission = get_record("workshop_submissions", "id", $assessment->submissionid);
- if (isteacher($workshop->course, $submission->userid)) {
+ if (workshop_is_teacher($workshop, $submission->userid)) {
$n++;
}
break;
function workshop_get_all_teacher_assessments($workshop) {
// Return all teacher assessments, ordered by timecreated, oldest first
global $CFG;
+ if (!$teachers = workshop_get_teachers($workshop)) {
+ return false;
+ }
+ $list = "(";
+ foreach ($teachers as $teacher) {
+ $list .= "$teacher->id,";
+ }
+ $list = rtrim($list, ',').")";
- return get_records_sql("SELECT a.* FROM {$CFG->prefix}workshop_assessments a,
- {$CFG->prefix}user_teachers u
- WHERE u.course = $workshop->course
- AND a.userid = u.userid
+ return get_records_sql("SELECT a.* FROM {$CFG->prefix}workshop_assessments a
+ WHERE a.userid IN $list
AND a.workshopid = $workshop->id
- ORDER BY a.timecreated");
+ ORDER BY a.timecreated");
}
// Return all assessments on the student submissions by a user, order by youngest first, oldest last
global $CFG;
- // make sure it works on the site course
- $select = "u.course = '$workshop->course' AND";
- if ($workshop->course == SITEID) {
- $select = '';
+ if (!workshop_is_student($workshop, $user->id)) {
+ return false;
}
- return get_records_sql("SELECT a.* FROM {$CFG->prefix}workshop_submissions s,
- {$CFG->prefix}user_students u,
- {$CFG->prefix}workshop_assessments a
- WHERE $select s.userid = u.userid
- AND s.workshopid = $workshop->id
+ return get_records_sql("SELECT a.* FROM {$CFG->prefix}workshop_submissions s, {$CFG->prefix}workshop_assessments a
+ WHERE s.workshopid = $workshop->id
AND a.submissionid = s.id
AND a.userid = $user->id
- ORDER BY a.timecreated DESC");
+ ORDER BY a.timecreated DESC");
}
// Return all assessments on the student submissions, order by youngest first, oldest last
global $CFG;
- // make sure it works on the site course
- $select = "u.course = '$workshop->course' AND";
- if ($workshop->course == SITEID) {
- $select = '';
+
+ if (!$students = workshop_get_students($workshop)) {
+ return false;
+ }
+ $list = "(";
+ foreach ($students as $student) {
+ $list .= "$student->id,";
}
+ $list = rtrim($list, ',').")";
- return get_records_sql("SELECT a.* FROM {$CFG->prefix}workshop_submissions s,
- {$CFG->prefix}user_students u, {$CFG->prefix}workshop_assessments a
- WHERE $select s.userid = u.userid
+ return get_records_sql("SELECT a.* FROM {$CFG->prefix}workshop_submissions s, {$CFG->prefix}workshop_assessments a
+ WHERE s.userid IN $list
AND s.workshopid = $workshop->id
AND a.submissionid = s.id
ORDER BY a.timecreated DESC");
// Return teacher assessments of a submission, ordered by timecreated, oldest first
global $CFG;
- return get_records_sql("SELECT a.* FROM {$CFG->prefix}workshop_assessments a,
- {$CFG->prefix}user_teachers u
- WHERE u.course = $courseid
- AND a.userid = u.userid
+ if (!$teachers = workshop_get_teachers($submission->workshopid)) {
+ return false;
+ }
+ $list = "(";
+ foreach ($teachers as $teacher) {
+ $list .= "$teacher->id,";
+ }
+ $list = rtrim($list, ',').")";
+ return get_records_sql("SELECT a.* FROM {$CFG->prefix}workshop_assessments a
+ WHERE a.userid IN $list
AND a.submissionid = $submission->id
- ORDER BY a.timecreated");
+ ORDER BY a.timecreated");
}
// Return all assessments on the teacher submissions, order by youngest first, oldest last
global $CFG;
- return get_records_sql("SELECT a.* FROM {$CFG->prefix}workshop_submissions s,
- {$CFG->prefix}user_teachers u, {$CFG->prefix}workshop_assessments a
- WHERE u.course = $workshop->course
- AND s.userid = u.userid
+ if (!$teachers = workshop_get_teachers($workshop)) {
+ return false;
+ }
+ $list = "(";
+ foreach ($teachers as $teacher) {
+ $list .= "$teacher->id,";
+ }
+ $list = rtrim($list, ',').")";
+ return get_records_sql("SELECT a.* FROM {$CFG->prefix}workshop_submissions s, {$CFG->prefix}workshop_assessments a
+ WHERE s.userid IN $list
AND s.workshopid = $workshop->id
AND a.submissionid = s.id
- ORDER BY a.timecreated DESC");
+ ORDER BY a.timecreated DESC");
}
// Return all teacher submissions, ordered by title
global $CFG;
- return get_records_sql("SELECT s.* FROM {$CFG->prefix}workshop_submissions s,
- {$CFG->prefix}user_teachers u
- WHERE u.course = $workshop->course
- AND s.userid = u.userid
+ if (!$teachers = workshop_get_teachers($workshop)) {
+ return false;
+ }
+ $list = "(";
+ foreach ($teachers as $teacher) {
+ $list .= "$teacher->id,";
+ }
+ $list = rtrim($list, ',').")";
+ return get_records_sql("SELECT s.* FROM {$CFG->prefix}workshop_submissions s
+ WHERE s.userid IN $list
AND s.workshopid = $workshop->id
- ORDER BY s.title");
+ ORDER BY s.title");
}
global $CFG;
// Return all assessments which have not been graded or just graded of student's submissions
- // make sure it works on the site course
- $select = "u.course = '$workshop->course' AND";
- if ($workshop->course == SITEID) {
- $select = '';
- }
-
$cutofftime = time() - $CFG->maxeditingtime;
- return get_records_sql("SELECT a.* FROM {$CFG->prefix}workshop_submissions s,
- {$CFG->prefix}user_students u, {$CFG->prefix}workshop_assessments a
- WHERE $select s.userid = u.userid
+
+ if (!$students = workshop_get_students($workshop)) {
+ return false;
+ }
+ $list = "(";
+ foreach ($students as $student) {
+ $list .= "$student->id,";
+ }
+ $list = rtrim($list, ',').")";
+ return get_records_sql("SELECT a.* FROM {$CFG->prefix}workshop_submissions s, {$CFG->prefix}workshop_assessments a
+ WHERE s.userid IN $list
AND s.workshopid = $workshop->id
AND a.submissionid = s.id
AND (a.timegraded = 0 OR a.timegraded > $cutofftime)
// Return all assessments which have not been graded or just graded of teacher's submissions
$cutofftime =time() - $CFG->maxeditingtime;
- return get_records_sql("SELECT a.* FROM {$CFG->prefix}workshop_submissions s,
- {$CFG->prefix}user_teachers u, {$CFG->prefix}workshop_assessments a
- WHERE u.course = $workshop->course
- AND s.userid = u.userid
+ if (!$teachers = workshop_get_teachers($workshop)) {
+ return false;
+ }
+ $list = "(";
+ foreach ($teachers as $teacher) {
+ $list .= "$teacher->id,";
+ }
+ $list = rtrim($list, ',').")";
+ return get_records_sql("SELECT a.* FROM {$CFG->prefix}workshop_submissions s, {$CFG->prefix}workshop_assessments a
+ WHERE s.userid IN $list
AND s.workshopid = $workshop->id
AND a.submissionid = s.id
AND (a.timegraded = 0 OR a.timegraded > $cutofftime)
$select = '';
}
- return get_records_sql("SELECT u.*
- FROM {$CFG->prefix}user u, {$CFG->prefix}user_students s,
- {$CFG->prefix}workshop_submissions a
- WHERE $select s.user = u.id
- AND u.id = a.user AND a.workshop = '$workshop->id'
- ORDER BY a.timemodified DESC");
+ if (!$students = workshop_get_students($workshop)) {
+ return false;
+ }
+ $list = "(";
+ foreach ($students as $student) {
+ $list .= "$student->id,";
+ }
+ $list = rtrim($list, ',').")";
+
+ return get_records_sql("SELECT u.* FROM {$CFG->prefix}user u, {$CFG->prefix}workshop_submissions a
+ WHERE $select u.user IN $list
+ AND u.id = a.user AND a.workshop = '$workshop->id'
+ ORDER BY a.timemodified DESC");
}
if ($assessments = workshop_get_ungraded_assessments($workshop)) {
foreach ($assessments as $assessment) {
- if (!isteacher($workshop->course, $assessment->userid)) {
+ if (!workshop_is_teacher($workshop, $assessment->userid)) {
if (($timenow - $assessment->timegraded) < $CFG->maxeditingtime) {
$action = "<a href=\"viewassessment.php?&id=$cm->id&aid=$assessment->id\">".
get_string("edit", "workshop")."</a>";
if ($assessments = workshop_get_assessments($submission)) {
foreach ($assessments as $assessment) {
// assessments by students only and exclude any self assessments
- if (isstudent($workshop->course, $assessment->userid) and
+ if (workshop_is_student($workshop, $assessment->userid) and
($assessment->userid != $user->id)) {
$timenow = time();
if (($timenow - $assessment->timecreated) > $CFG->maxeditingtime) {
$comment .= "; ".get_string("thisisadroppedassessment", "workshop");
}
}
- if (isteacher($workshop->course, $assessment->userid) and $workshop->teacherweight) {
+ if (workshop_is_teacher($workshop, $assessment->userid) and $workshop->teacherweight) {
$comment .= "; ".get_string("thisisadroppedassessment", "workshop");
}
// if peer agreements show whether agreement has been reached
error ("workshop_list_student_submissions: unable to get submission");
}
// submission from a student?
- if (isstudent($workshop->course, $submission->userid)) {
+ if (workshop_is_student($workshop, $submission->userid)) {
$comment = '';
// user assessment has three states: record created but not assessed (date created in the future) [hot];
// just assessed but still editable [warm]; and "static" (may or may not have been graded by teacher, that
workshop_print_assignment_info($workshop);
- if (isteacheredit($course->id)) {
+ if (workshop_is_teacheredit($workshop)) {
// list any teacher submissions
$table->head = array (get_string("title", "workshop"), get_string("submittedby", "workshop"),
get_string("action", "workshop"));
$action .= " | <a href=\"assessments.php?action=adminlist&id=$cm->id&sid=$submission->id\">".
get_string("listassessments", "workshop")."</a>";
}
- if (isteacheredit($course->id)) {
+ if (workshop_is_teacheredit($workshop)) {
$action .= " | <a href=\"submissions.php?action=confirmdelete&id=$cm->id&sid=$submission->id\">".
get_string("delete", "workshop")."</a>";
}
// list student assessments
// Get all the students...
- if ($users = get_course_students($course->id, "u.lastname, u.firstname")) {
+ if ($users = workshop_get_students($workshop, "u.lastname, u.firstname")) {
$timenow = time();
unset($table);
$table->head = array(get_string("name"), get_string("title", "workshop"), get_string("action", "workshop"));
}
$title .= $submission->title;
if ($workshop->agreeassessments and !$assessment->timeagreed and
- isstudent($workshop->course, $submission->userid)) { // agreements for student work only
+ workshop_is_student($workshop, $submission->userid)) { // agreements for student work only
$title .= " <<".number_format($assessment->grade * $workshop->grade / 100, 0)." (".
number_format($assessment->gradinggrade * $workshop->gradinggrade / 100, 0).")>> ";
} elseif ($assessment->timegraded) {
// get the assessments
if ($assessments = workshop_get_assessments($submission)) {
foreach ($assessments as $assessment) {
- if (isteacher($workshop->course, $assessment->userid)) { // assessments by teachers only
+ if (workshop_is_teacher($workshop, $assessment->userid)) { // assessments by teachers only
$action = "<a href=\"viewassessment.php?id=$cm->id&aid=$assessment->id\">".
get_string("view", "workshop")."</a>";
// has teacher commented on teacher's assessment? shouldn't happen but leave test in
error ("workshop_list_teacher_submissions: unable to get submission");
}
// submission from a teacher?
- if (isteacher($workshop->course, $submission->userid)) {
+ if (workshop_is_teacher($workshop, $submission->userid)) {
$comment = '';
// user assessment has two states: record created but not assessed (date created in the future);
// assessed but always available for re-assessment
}
if ($assessments) {
foreach ($assessments as $assessment) {
- if (!isteacher($workshop->course, $assessment->userid)) { // don't let teacher grade their own assessments
+ if (!workshop_is_teacher($workshop, $assessment->userid)) { // don't let teacher grade their own assessments
if (($timenow - $assessment->timegraded) < $CFG->maxeditingtime) {
$action = "<a href=\"viewassessment.php?&id=$cm->id&stype=$stype&aid=$assessment->id\">".
get_string("edit", "workshop")."</a>";
foreach ($comments as $comment) {
echo "<tr valign=\"top\"><td class=\"workshopassessmentheading\"><p><b>".
get_string("commentby","workshop")." ";
- if (isteacher($workshop->course, $comment->userid)) {
+ if (workshop_is_teacher($workshop, $comment->userid)) {
echo $course->teacher;
}
elseif ($assessment->userid == $comment->userid) {
if ($firstcomment and $showcommentlinks and !$assessment->timeagreed) {
// show links depending on who doing the viewing
$firstcomment = FALSE;
- if (isteacher($workshop->course, $USER->id) and ($comment->userid != $USER->id)) {
+ if (workshop_is_teacher($workshop, $USER->id) and ($comment->userid != $USER->id)) {
echo "<p align=\"right\"><a href=\"assessments.php?action=addcomment&id=$cm->id&aid=$assessment->id\">".
get_string("reply", "workshop")."</a></p>\n";
}
<?php
echo "<tr valign=\"top\">\n";
echo " <td colspan=\"2\" class=\"workshopassessmentheading\"><center><b>";
- if ($assessment and isteacher($course->id)) {
+ if ($assessment and workshop_is_teacher($workshop)) {
$user = get_record('user', 'id', $assessment->userid);
print_string("assessmentby", "workshop", fullname($user));
} else {
echo "</tr>\n";
// if active and the teacher show stock comments...
- if ($allowchanges and isteacher($course->id, $USER->id)) {
+ if ($allowchanges and workshop_is_teacher($workshop, $USER->id)) {
echo "<tr><td valign=\"top\" align=\"right\"><input type=\"button\" value=\"".
get_string("addcomment", "workshop")."\"
onclick=\"document.assessmentform.action.value='addstockcomment';
foreach ($stockcomments as $stockcomment) {
echo "<a onclick=\"document.assessmentform.feedback_$i.value+=' '+'".
addslashes($stockcomment->comments)."';\"><<$stockcomment->comments>></a>\n";
- if (isteacheredit($course->id, $USER->id)) {
+ if (workshop_is_teacheredit($workshop, $USER->id)) {
echo " <a onclick=\"document.assessmentform.action.value='removestockcomment';document.assessmentform.stockcommentid.value=$stockcomment->id;document.assessmentform.submit();\"> <small><i><--".get_string("delete","workshop")."</i></small></a>\n";
}
echo "<br />\n";
echo "</tr>\n";
// if active and the teacher show stock comments...
- if ($allowchanges and isteacher($course->id, $USER->id)) {
+ if ($allowchanges and workshop_is_teacher($workshop, $USER->id)) {
echo "<tr><td valign=\"top\" align=\"right\"><input type=\"button\" value=\"".
get_string("addcomment", "workshop")."\"
onclick=\"document.assessmentform.action.value='addstockcomment';
echo "<a onclick=\"document.assessmentform.feedback_$i.value+=' '+'".
addslashes($stockcomment->comments).
"';\"><<$stockcomment->comments>></a>\n";
- if (isteacheredit($course->id, $USER->id)) {
+ if (workshop_is_teacheredit($workshop, $USER->id)) {
echo " <a onclick=\"document.assessmentform.action.value='removestockcomment';document.assessmentform.stockcommentid.value=$stockcomment->id;document.assessmentform.submit();\"> <small><i><--".get_string("delete","workshop")."</i></small></a>\n";
}
echo "<br />\n";
echo "</tr>\n";
// if active and the teacher show stock comments...
- if ($allowchanges and isteacher($course->id, $USER->id)) {
+ if ($allowchanges and workshop_is_teacher($workshop, $USER->id)) {
echo "<tr><td valign=\"top\" align=\"right\"><input type=\"button\" value=\"".
get_string("addcomment", "workshop")."\"
onclick=\"document.assessmentform.action.value='addstockcomment';
echo "<a onclick=\"document.assessmentform.feedback_$i.value+=' '+'".
addslashes($stockcomment->comments).
"';\"><<$stockcomment->comments>></a>\n";
- if (isteacheredit($course->id, $USER->id)) {
+ if (workshop_is_teacheredit($workshop, $USER->id)) {
echo " <a onclick=\"document.assessmentform.action.value='removestockcomment';document.assessmentform.stockcommentid.value=$stockcomment->id;document.assessmentform.submit();\"> <small><i><--".get_string("delete","workshop")."</i></small></a>\n";
}
echo "<br />\n";
echo "</tr>\n";
// if active and the teacher show stock comments...
- if ($allowchanges and isteacher($course->id, $USER->id)) {
+ if ($allowchanges and workshop_is_teacher($workshop, $USER->id)) {
echo "<tr><td valign=\"top\" align=\"right\"><input type=\"button\" value=\"".
get_string("addcomment", "workshop")."\"
onclick=\"document.assessmentform.action.value='addstockcomment';
echo "<a onclick=\"document.assessmentform.feedback_$i.value+=' '+'".
addslashes($stockcomment->comments).
"';\"><<$stockcomment->comments>></a>\n";
- if (isteacheredit($course->id, $USER->id)) {
+ if (workshop_is_teacheredit($workshop, $USER->id)) {
echo " <a onclick=\"document.assessmentform.action.value='removestockcomment';document.assessmentform.stockcommentid.value=$stockcomment->id;document.assessmentform.submit();\"> <small><i><--".get_string("delete","workshop")."</i></small></a>\n";
}
echo "<br />\n";
echo " </td>\n";
echo "</tr>\n";
// if active and the teacher show stock comments...
- if ($allowchanges and isteacher($course->id, $USER->id)) {
+ if ($allowchanges and workshop_is_teacher($workshop, $USER->id)) {
echo "<tr><td valign=\"top\" align=\"right\"><input type=\"button\" value=\"".
get_string("addcomment", "workshop")."\"
onclick=\"document.assessmentform.action.value='addstockcomment';
foreach ($stockcomments as $stockcomment) {
echo "<a onclick=\"document.assessmentform.generalcomment.value+=' '+'".
addslashes($stockcomment->comments)."';\"><<$stockcomment->comments>></a>\n";
- if (isteacheredit($course->id, $USER->id)) {
+ if (workshop_is_teacheredit($workshop, $USER->id)) {
echo " <a onclick=\"document.assessmentform.action.value='removestockcomment';document.assessmentform.stockcommentid.value=$stockcomment->id;document.assessmentform.submit();\"> <small><i><--".get_string("delete","workshop")."</i></small></a>\n";
}
echo "<br />\n";
echo "(<a href=\"assessments.php?id=$cm->id&action=displaygradingform\">".
get_string("specimenassessmentform", "workshop")."</a>";
// print edit icon
- if (isteacheredit($course->id) and $workshop->nelements) {
+ if (workshop_is_teacheredit($workshop) and $workshop->nelements) {
echo " <a href=\"assessments.php?id=$cm->id&action=editelements\">".
"<img src=\"$CFG->pixpath/t/edit.gif\" ".
'height="11" width="11" border="0" alt="'.get_string('amendassessmentelements', 'workshop').'" /></a>';
}
$nentries = $workshop->showleaguetable;
- if ($workshop->anonymous and isstudent($course->id)) {
+ if ($workshop->anonymous and workshop_is_student($workshop)) {
$table->head = array (get_string("title", "workshop"),
get_string("teacherassessments", "workshop", $course->teacher),
get_string("studentassessments", "workshop", $course->student), get_string("overallgrade", "workshop"));
if (!$user = get_record("user", "id", $submission->userid)) {
error("Print league table: user not found");
}
- if ($workshop->anonymous and isstudent($course->id)) {
+ if ($workshop->anonymous and workshop_is_student($workshop)) {
$table->data[] = array(workshop_print_submission_title($workshop, $submission),
workshop_print_submission_assessments($workshop, $submission, "teacher"),
workshop_print_submission_assessments($workshop, $submission, "student"), $grade);
function workshop_print_submission_assessments($workshop, $submission, $type) {
global $USER, $CFG;
// Returns the teacher or peer grade and a hyperlinked list of grades for this submission
-
+ if (! $cm = get_coursemodule_from_instance("workshop", $workshop->id, $workshop->course)) {
+ error("Course Module ID was incorrect");
+ }
$str = '';
// get the assessments in grade order, highest first
if ($assessments = workshop_get_assessments($submission, "", "grade DESC")) {
if ($type == 'teacher' or $type == 'all') {
// students can see teacher assessments only if the release date has passed
$timenow = time();
- if (isteacher($workshop->course, $USER->id) or ($timenow > $workshop->releasegrades)) {
+ if (workshop_is_teacher($workshop, $USER->id) or ($timenow > $workshop->releasegrades)) {
foreach ($assessments as $assessment) {
- if (isteacher($workshop->course, $assessment->userid)) {
+ if (workshop_is_teacher($workshop, $assessment->userid)) {
if ($type == 'all') {
$str .= workshop_fullname($assessment->userid, $workshop->course).': ';
}
$str .= "<a href=\"viewassessment.php?aid=$assessment->id\">"
. "[".number_format($assessment->grade *$workshop->grade / 100, 0)."]</a>";
- if (isteacher($workshop->course, $USER->id)) {
+ if (workshop_is_teacher($workshop, $USER->id)) {
$str .= ' <a title="'.get_string('reassess', 'workshop').
"\" href=\"assess.php?id=$cm->id&sid=$submission->id\"><img src=\"$CFG->pixpath/t/edit.gif\" ".
' height="11" width="11" border="0" alt="'.get_string('reassess', 'workshop').'" /></a>';
}
if ($type == 'student' or $type == 'all') {
foreach ($assessments as $assessment) {
- if (isstudent($workshop->course, $assessment->userid)) {
+ if (workshop_is_student($workshop, $assessment->userid)) {
if ($type == 'all') {
$str .= workshop_fullname($assessment->userid, $workshop->course).': ';
}
$str .= "<a href=\"viewassessment.php?aid=$assessment->id\">";
if ($workshop->agreeassessments and !$assessment->timeagreed and
- isstudent($workshop->course, $submission->userid)) { // agreement on student work only
+ workshop_is_student($workshop, $submission->userid)) { // agreement on student work only
$str .= "<<".number_format($assessment->grade * $workshop->grade / 100, 0)." (".
number_format($assessment->gradinggrade * $workshop->gradinggrade / 100, 0).
")>></a> ";
}
require_login($course->id, false, $cm);
+ $context = get_context_instance(CONTEXT_MODULE, $cm->id);
+ require_capability('mod/workshop:view', $context);
$strworkshops = get_string("modulenameplural", "workshop");
$strworkshop = get_string("modulename", "workshop");
/******************* admin amend title ************************************/
elseif ($action == 'adminamendtitle' ) {
- if (!isteacher($course->id)) {
- error("Only teachers can look at this page");
- }
+ require_capability('mod/workshop:manage', $context);
if (empty($sid)) {
error("Admin Amend Title: submission id missing");
}
/******************* admin clear late (flag) ************************************/
elseif ($action == 'adminclearlate' ) {
- if (!isteacher($course->id)) {
- error("Only teachers can look at this page");
- }
+ require_capability('mod/workshop:manage', $context);
if (empty($sid)) {
error("Admin clear late flag: submission id missing");
}
}
// students are only allowed to delete their own submission and only up to the deadline
- if (!(isteacher($course->id) or
+ if (!(workshop_is_teacher($workshop) or
(($USER->id = $submission->userid) and ($timenow < $workshop->submissionend)
and (($timenow < $workshop->assessmentstart) or ($timenow < $submission->timecreated + $CFG->maxeditingtime))))) {
error("You are not authorized to delete this submission");
/******************* admin (confirm) late flag ************************************/
elseif ($action == 'adminlateflag' ) {
- if (!isteacher($course->id)) {
- error("Only teachers can look at this page");
- }
+ require_capability('mod/workshop:manage', $context);
if (empty($sid)) {
error("Admin confirm late flag: submission id missing");
}
/******************* list all submissions ************************************/
elseif ($action == 'adminlist' ) {
- if (!isteacher($course->id)) {
- error("Only teachers can look at this page");
- }
+ require_capability('mod/workshop:manage', $context);
workshop_list_submissions_for_admin($workshop, $order);
print_continue("view.php?id=$cm->id");
/******************* admin update title ************************************/
elseif ($action == 'adminupdatetitle' ) {
- if (!isteacher($course->id)) {
- error("Only teachers can look at this page");
- }
+ require_capability('mod/workshop:manage', $context);
if (empty($sid)) {
error("Admin Update Title: submission id missing");
}
/******************* list all submissions ************************************/
elseif ($action == 'listallsubmissions' ) {
- if (!$users = get_course_students($course->id)) {
+ if (!$users = workshop_get_students($workshop)) {
print_heading(get_string("nostudentsyet"));
print_footer($course);
exit;
/******************* list for assessment student (submissions) ************************************/
elseif ($action == 'listforassessmentstudent' ) {
- if (!$users = get_course_students($course->id)) {
+ if (!$users = workshop_get_students($workshop)) {
print_heading(get_string("nostudentsyet"));
print_footer($course);
exit;
/******************* list for assessment teacher (submissions) ************************************/
elseif ($action == 'listforassessmentteacher' ) {
- if (!isteacher($course->id)) {
- error("Only teachers can look at this page");
- }
+ require_capability('mod/workshop:manage', $context);
workshop_list_unassessed_teacher_submissions($workshop, $USER);
print_continue("view.php?id=$cm->id");
$submission = get_record("workshop_submissions", "id", $form->sid);
// students are only allowed to remove their own attachments and only up to the deadline
- if (!(isteacher($course->id) or
+ if (!(workshop_is_teacher($workshop) or
(($USER->id = $submission->userid) and ($timenow < $workshop->submissionend)
and (($timenow < $workshop->assessmentstart) or ($timenow < $submission->timecreated + $CFG->maxeditingtime))))) {
error("You are not authorized to delete these attachments");
$submission = get_record("workshop_submissions", "id", $sid);
$title = '"'.$submission->title.'" ';
- if (isteacher($course->id)) {
+ if (workshop_is_teacher($workshop)) {
$title .= get_string('by', 'workshop').' '.workshop_fullname($submission->userid, $course->id);
}
print_heading($title);
/*************** update (league table options teacher) ***************************/
elseif ($action == 'updateleaguetable') {
- if (!isteacher($course->id)) {
- error("Only teachers can look at this page");
- }
+ require_capability('mod/workshop:manage', $context);
// save number of entries in showleaguetable option
if ($nentries == 'All') {
$submission = get_record("workshop_submissions", "id", $sid);
// students are only allowed to update their own submission and only up to the deadline
- if (!(isteacher($course->id) or
+ if (!(workshop_is_teacher($workshop) or
(($USER->id = $submission->userid) and ($timenow < $workshop->submissionend)
and (($timenow < $workshop->assessmentstart) or ($timenow < $submission->timecreated + $CFG->maxeditingtime))))) {
error("You are not authorized to update your submission");
}
require_login($course->id, false, $cm);
+ $context = get_context_instance(CONTEXT_MODULE, $cm->id);
+ require_capability('mod/workshop:view', $context);
$strworkshops = get_string('modulenameplural', 'workshop');
$strworkshop = get_string('modulename', 'workshop');
// check that this is not a "rapid" second submission, caused by using the back button
// only check if a student, teachers may want to submit a set of workshop examples rapidly
- if (isstudent($course->id)) {
+ if (workshop_is_student($workshop)) {
if ($submissions = workshop_get_user_submissions($workshop, $USER)) {
// returns all submissions, newest on first
foreach ($submissions as $submission) {
// This fragment is called by /admin/index.php
////////////////////////////////////////////////////////////////////////////////
-$module->version = 2006080900;
+$module->version = 2006090500;
$module->requires = 2006080900; // Requires this Moodle version
$module->cron = 60;
$action = optional_param('action', '', PARAM_ALPHA);
$sort = optional_param('sort', 'lastname', PARAM_ALPHA);
$dir = optional_param('dir', 'ASC', PARAM_ALPHA);
- $group = optional_param('group', -1, PARAM_INT);
$timenow = time();
}
require_login($course->id, false, $cm);
+ $context = get_context_instance(CONTEXT_MODULE, $cm->id);
+ require_capability('mod/workshop:view', $context);
$strworkshops = get_string("modulenameplural", "workshop");
$strworkshop = get_string("modulename", "workshop");
$straction = ($action) ? '-> '.get_string($action, 'workshop') : '';
- // ...display header...
- print_header_simple(format_string($workshop->name), "",
- "<a href=\"index.php?id=$course->id\">$strworkshops</a> ->
- <a href=\"view.php?id=$cm->id\">".format_string($workshop->name,true)."</a> $straction",
- "", "", true, update_module_button($cm->id, $course->id, $strworkshop), navmenu($course, $cm));
-
// ...and if necessary set default action
-
- if (isteacher($course->id)) {
+ if (workshop_is_teacher($workshop)) {
if (empty($action)) { // no action specified, either go straight to elements page else the admin page
// has the assignment any elements
if (count_records("workshop_elements", "workshopid", $workshop->id) >= $workshop->nelements) {
redirect("assessments.php?action=editelements&id=$cm->id");
}
}
- }
- elseif (!isguest()) { // it's a student then
+ } else { // it's a student then
if (!$cm->visible) {
notice(get_string("activityiscurrentlyhidden"));
}
}
}
}
- else { // it's a guest, oh no!
- $action = 'notavailable';
- }
+
+ // ...display header...
+ print_header_simple(format_string($workshop->name), "",
+ "<a href=\"index.php?id=$course->id\">$strworkshops</a> ->
+ <a href=\"view.php?id=$cm->id\">".format_string($workshop->name,true)."</a> $straction",
+ "", "", true, update_module_button($cm->id, $course->id, $strworkshop), navmenu($course, $cm));
+
// ...log activity...
add_to_log($course->id, "workshop", "view", "view.php?id=$cm->id", $workshop->id, $cm->id);
+ if ($action == 'studentsview' and !workshop_is_student($workshop)) {
+ $action = 'showdescription';
+ }
+
/****************** display final grade (for students) ************************************/
if ($action == 'displayfinalgrade' ) {
+ require_capability('mod/workshop:participate', $context);
print_heading("<b><a href=\"view.php?id=$cm->id&action=showdescription\">".
get_string("showdescription", 'workshop')."</a></b>");
print_heading(get_string("notavailable", "workshop"));
}
-
/****************** student's view could be in 1 of 4 stages ***********************/
elseif ($action == 'studentsview') {
+ require_capability('mod/workshop:participate', $context);
+
// is a password needed?
if ($workshop->usepassword) {
$correctpass = false;
/****************** submission of example by teacher only***********************/
elseif ($action == 'submitexample') {
- if (!isteacher($course->id)) {
- error("Only teachers can look at this page");
- }
+ require_capability('mod/workshop:manage', $context);
// list previous submissions from teacher
workshop_list_user_submissions($workshop, $USER);
/****************** teacher's view - display admin page ************/
elseif ($action == 'teachersview') {
- if (!isteacher($course->id)) {
- error("Only teachers can look at this page");
- }
+ require_capability('mod/workshop:manage', $context);
// automatically grade assessments if workshop has examples and/or peer assessments
if ($workshop->gradingstrategy and ($workshop->ntassessments or $workshop->nsassessments)) {
}
/// Check to see if groups are being used in this workshop
- /// and if so, set $currentgroup to reflect the current group
- // $changegroup = isset($_GET['_param('group',0,PARAM_INT);group']) ? $_GET['group'] : -1; // Group change requested?
- $changegroup = $group;
- $groupmode = groupmode($course, $cm); // Groups are being used?
- $currentgroup = get_and_set_current_group($course, $groupmode, $changegroup);
-
- /// Print settings and things in a table across the top
- echo '<table width="100%" border="0" cellpadding="3" cellspacing="0"><tr valign="top">';
-
- /// Allow the teacher to change groups (for this session)
- if ($groupmode and isteacheredit($course->id)) {
- if ($groups = get_records_menu("groups", "courseid", $course->id, "name ASC", "id,name")) {
- echo '<td>';
- print_group_menu($groups, $groupmode, $currentgroup, "view.php?id=$cm->id");
- echo '</td>';
- }
- }
+ setup_and_print_groups($course, groupmode($course, $cm), "view.php?id=$cm->id");
+ $currentgroup = get_current_group($course->id);
+
/// Print admin links
echo "<td align=\"right\">";
echo "<a href=\"submissions.php?id=$cm->id&action=adminlist\">".
}
// Get all the students
- if (!$users = get_course_students($course->id, "u.lastname, u.firstname")) {
+ if (!$users = workshop_get_students($workshop)) {
print_heading(get_string("nostudentsyet"));
print_footer($course);
exit;
/****************** show description ************/
elseif ($action == 'showdescription') {
+ require_capability('mod/workshop:view', $context);
workshop_print_assignment_info($workshop);
print_simple_box(format_text($workshop->description, $workshop->format), 'center', '70%', '', 5, 'generalbox', 'intro');
- print_continue($_SERVER["HTTP_REFERER"]);
+ if (isset($_SERVER["HTTP_REFERER"])) {
+ print_continue($_SERVER["HTTP_REFERER"]);
+ } else {
+ print_continue("$CFG->wwwroot/course/view.php?id=$cm->id");
+ }
}
/****************** teacher's view - list all submissions ************/
elseif ($action == 'allsubmissions') {
+ require_capability('mod/workshop:manage', $context);
if ($submissions = get_records('workshop_submissions', 'workshopid', $workshop->id)) {
foreach($submissions as $submission) {
// show assessment but don't allow changes
workshop_print_assessment($workshop, $assessment, false, $allowcomments);
- if (isteacher($course->id) and !isteacher($course->id, $assessment->userid)) {
+ if (workshop_is_teacher($workshop) and !workshop_is_teacher($workshop, $assessment->userid)) {
print_heading_with_help(get_string("gradeassessment", "workshop"), "gradingassessments", "workshop");
include('assessment_grading_form.html');
}
print_header('', '', '', '', '<base target="_parent" />');
$title = '"'.$submission->title.'" ';
- if (isteacher($course->id)) {
+ if (workshop_is_teacher($workshop)) {
$title .= ' '.get_string('by', 'workshop').' '.workshop_fullname($submission->userid, $course->id);
}
print_heading($title);