From dc6cb74efdffcc542f961cce884363e8b4c795a2 Mon Sep 17 00:00:00 2001 From: toyomoyo Date: Fri, 16 Nov 2007 02:52:48 +0000 Subject: [PATCH] MDL-11672, hide hidden assignment descriptions from calendar --- calendar/lib.php | 25 +++++++++++++++++++ mod/assignment/lib.php | 18 ++++++++++++- .../type/upload/assignment.class.php | 10 ++++++++ 3 files changed, 52 insertions(+), 1 deletion(-) diff --git a/calendar/lib.php b/calendar/lib.php index e1f2e40eb65..1a156faef3e 100644 --- a/calendar/lib.php +++ b/calendar/lib.php @@ -419,12 +419,37 @@ function calendar_get_upcoming($courses, $groups, $users, $daysinfuture, $maxeve if($events !== false) { foreach($events as $event) { + if(!empty($event->modulename)) { $mod = get_coursemodule_from_instance($event->modulename, $event->instance); if (!groups_course_module_visible($mod)) { continue; } } + + + if ($event->modulename == 'assignment'){ + if(!calendar_edit_event_allowed($event)){ // cannot manage entries, eg. student + if(!$assignment = get_record('assignment','id',$event->instance)){ + // error("assignment ID was incorrect"); + continue; + } + // assign assignment to assignment object to use hidden_is_hidden method + require_once($CFG->dirroot.'/mod/assignment/lib.php'); + + if (!file_exists($CFG->dirroot.'/mod/assignment/type/'.$assignment->assignmenttype.'/assignment.class.php')) { + continue; + } + require_once ($CFG->dirroot.'/mod/assignment/type/'.$assignment->assignmenttype.'/assignment.class.php'); + + $assignmentclass = 'assignment_'.$assignment->assignmenttype; + $assignmentinstance = new $assignmentclass($mod->id,$assignment); + + if ($assignmentinstance->description_is_hidden()){//force not to show description before availability + $event->description = get_string('notavailableyet', 'assignment'); + } + } + } if($processed >= $display->maxevents) { break; diff --git a/mod/assignment/lib.php b/mod/assignment/lib.php index e173d5c3514..64805884b72 100644 --- a/mod/assignment/lib.php +++ b/mod/assignment/lib.php @@ -245,7 +245,7 @@ class assignment_base { } $graded_date = $grade->dategraded; - $graded_by = $grade->usermodified; + $graded_by = $grade->usermodified; /// We need the teacher info $teacher = get_record('user', 'id', $graded_by); @@ -1729,6 +1729,22 @@ class assignment_base { } } + + /* + * Return true if is set description is hidden till available date + * + * This is needed by calendar so that hidden descriptions do not + * come up in upcoming events. + * + * Check that description is hidden till available date + * By default return false + * Assignments types should implement this method if needed + * @return boolen + */ + function description_is_hidden() { + return false; + } + /** * Return an outline of the user's interaction with the assignment * diff --git a/mod/assignment/type/upload/assignment.class.php b/mod/assignment/type/upload/assignment.class.php index 607a4dcde6a..1ce0894870d 100644 --- a/mod/assignment/type/upload/assignment.class.php +++ b/mod/assignment/type/upload/assignment.class.php @@ -204,6 +204,16 @@ class assignment_upload extends assignment_base { //no submission yet } } + + + /* + * Return true if var3 == hide description till available day + * + *@return boolean + */ + function description_is_hidden() { + return ($this->assignment->var3 && (time() <= $this->assignment->timeavailable)); + } function custom_feedbackform($submission, $return=false) { global $CFG;