]> git.mjollnir.org Git - moodle.git/commitdiff
MDL-11672, hide hidden assignment descriptions from calendar
authortoyomoyo <toyomoyo>
Fri, 16 Nov 2007 02:52:48 +0000 (02:52 +0000)
committertoyomoyo <toyomoyo>
Fri, 16 Nov 2007 02:52:48 +0000 (02:52 +0000)
calendar/lib.php
mod/assignment/lib.php
mod/assignment/type/upload/assignment.class.php

index e1f2e40eb65b53a54595d72ecdb84c1ad20277dd..1a156faef3e6da4c65bdeb21a303afa475bfcb8c 100644 (file)
@@ -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;
index e173d5c3514c2895c71eb45f557d6bbfd6794f8b..64805884b7224c190eac43c3f479f7147af4064d 100644 (file)
@@ -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
      *
index 607a4dcde6a2c0c796db09a411117fa6b7e02f53..1ce0894870d09e0b9b6098fede05708e913e6a9a 100644 (file)
@@ -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;