Index: temp_moodle_dev/moodle/mod/assignment/lib.php
===================================================================
RCS file: /usr/local/cvsroot/temp_moodle_dev/moodle/mod/assignment/lib.php,v
diff -u -r1.1 -r1.2
--- temp_moodle_dev/moodle/mod/assignment/lib.php	14 Nov 2008 06:29:50 -0000	1.1
+++ temp_moodle_dev/moodle/mod/assignment/lib.php	10 Dec 2008 23:13:08 -0000	1.2
@@ -97,22 +97,22 @@
      * This in turn calls the methods producing individual parts of the page
      */
     function view() {
-
         $context = get_context_instance(CONTEXT_MODULE,$this->cm->id);
         require_capability('mod/assignment:view', $context);
 
         add_to_log($this->course->id, "assignment", "view", "view.php?id={$this->cm->id}",
                    $this->assignment->id, $this->cm->id);
-
-        $this->view_header();
-
-        $this->view_intro();
-
-        $this->view_dates();
-
-        $this->view_feedback();
-
-        $this->view_footer();
+		
+	    $this->view_header();
+	
+	    $this->view_intro();
+	
+	    $this->view_dates();
+	
+	    $this->view_feedback();
+	
+	    $this->view_footer();
+		
     }
 
     /**
@@ -126,24 +126,29 @@
      * @param $subpage string Description of subpage to be used in navigation trail
      */
     function view_header($subpage='') {
-
+		
         global $CFG;
-
-
+		
         if ($subpage) {
             $navigation = build_navigation($subpage, $this->cm);
         } else {
             $navigation = build_navigation('', $this->cm);
         }
-
-        print_header($this->pagetitle, $this->course->fullname, $navigation, '', '',
-                     true, update_module_button($this->cm->id, $this->course->id, $this->strassignment),
-                     navmenu($this->course, $this->cm));
-
+        //lams: if is a lams sequence don't display the moodle's navigation menus
+		if($this->cm->is_lams==1){
+			 print_header($this->pagetitle, '', '', '', '',
+	                     true, update_module_button($this->cm->id, $this->course->id, $this->strassignment));
+		}else{
+	        print_header($this->pagetitle, $this->course->fullname, $navigation, '', '',
+	                     true, update_module_button($this->cm->id, $this->course->id, $this->strassignment),
+	                     navmenu($this->course, $this->cm));
+		}
+		
         groups_print_activity_menu($this->cm, 'view.php?id=' . $this->cm->id);
 
         echo '
'.$this->submittedlink().'
';
         echo '';
+        
     }
 
 
@@ -194,7 +199,8 @@
      * This will be suitable for most assignment types
      */
     function view_footer() {
-        print_footer($this->course);
+        //we pass a new parameter to the function so it won't we printed if is_lams=1
+        print_footer($this->course,null, false,$this->cm->is_lams);
     }
 
     /**
@@ -3060,4 +3066,187 @@
     return array('moodle/site:accessallgroups', 'moodle/site:viewfullnames');
 }
 
+/**
+ * LAMS Function
+ * This function clones an existing instance of Moodle assignment
+ * replacing the course and the userid
+ */
+function assignment_clone_instance($id, $sectionref, $courseid) {
+	global $CFG;
+	$cm = get_record('course_modules', 'id', $id);
+	
+	
+	if ( ! $cm ) {
+        // create a new assignment with default content
+        $existingassignment->course = $courseid;
+        $existingassignment->name = "assignment offline";
+        $existingassignment->description = "";
+        $existingassignment->is_lams = 1;
+        $existingassignment->format = 0;
+        $existingassignment->assignmenttype = "offline";
+        $existingassignment->grade = 100;
+        
+        //
+        
+          $event->name        = $assignment->name;
+                $event->description = $assignment->description;
+                $event->courseid    = $assignment->course;
+                $event->groupid     = 0;
+                $event->userid      = 0;
+                $event->modulename  = 'assignment';
+                $event->instance    = $returnid;
+                $event->eventtype   = 'due';
+                $event->timestart   = $assignment->timedue;
+                $event->timeduration = 0;
+        
+        
+        
+        //
+    } else {
+        // make a copy of an existing assignment
+        $existingassignment = get_record('assignment', 'id', $cm->instance);
+        $existingassignment->oldid = $existingassignment->id;
+    	unset($existingassignment->id);
+        $existingassignment->name = addslashes($existingassignment->name);
+        $existingassignment->description = addslashes($existingassignment->description);
+        $existingassignment->course = $courseid;
+        $existingassignment->is_lams = 1;
+        
+    }
+	$existingassignment->id = insert_record('assignment', $existingassignment);
+    $module = get_record('modules', 'name', 'assignment');
+    $section = get_course_section($sectionref, $courseid);
+
+    
+    // module parameters
+    $cm->course = $courseid;
+    $cm->module = $module->id;
+    $cm->instance = $existingassignment->id;
+    $cm->added = time();
+    $cm->section = $section->section;
+	$cm->is_lams = 1; 
+    $cm->id = insert_record('course_modules', $cm);
+	
+    //adds the new assignment to the sequence variable in section table   
+    $existingassignment->section = $sectionref;
+    $existingassignment->coursemodule = $cm->id;
+    $existingassignment->instance = $cm->instance;
+          
+    require_once($CFG->dirroot.'/course/lib.php');
+    add_mod_to_section($existingassignment);
+    
+    return $cm->id;
+}
+
+/**
+ * LAMS Function
+ * Serialize a assignment instance and return serialized string to LAMS
+ */
+function assignment_export_instance($id) {
+    $cm = get_record('course_modules', 'id', $id);
+    if ($cm) {
+        if ($assignment = get_record('assignment', 'id', $cm->instance)) {
+           //get all submissions from the assignment
+            $submissions = get_records('assignment_submissions', 'assignment', $assignment->id);
+            
+            //our file will contain the assignment, its entries and categories 
+            $all=array($assignment,$submissions);
+             // serialize assignment into a string; assuming assignment object
+            // doesn't contain binary data in any of its columns
+			$s = serialize($all);
+            header('Content-Description: File Transfer');
+            header('Content-Type: text/plain');
+            header('Content-Length: ' . strlen($s));
+            echo $s;
+            exit;
+        }
+    }
+
+    header('HTTP/1.1 500 Internal Error');
+    exit;
+}
+
+/**
+ * LAMS Function
+ * Deserializes a serialized Moodle assignment, and creates a new instance of it
+ */
+function assignment_import_instance($filepath, $userid, $courseid, $sectionid) {
+    // file contents contains serialized assignment object
+     $filestr = file_get_contents($filepath);
+     $all=unserialize($filestr);
+    
+    //we split the array so we can get the assignment and its submissions
+    $assignment = $all[0];
+    $submissions = $all[1];
+    
+    // import this assignment into a new course
+    $assignment->course = $courseid;
+
+    // escape text columns for saving into database
+    $assignment->name = addslashes($assignment->name);
+    $assignment->description = addslashes($assignment->description);
+    
+
+    if ( ! $assignment->id = insert_record('assignment', $assignment) ) {
+        return 0; 
+    }
+    
+    $module = get_record('modules', 'name', 'assignment');
+    $section = get_course_section($sectionid, $courseid);
+
+    $cm->course = $courseid;
+    $cm->module = $module->id;
+    $cm->instance = $assignment->id;
+    $cm->added = time();
+    $cm->section = $section->id;
+	$cm->is_lams = 1; 
+    $cm->id = insert_record('course_modules', $cm);
+    
+    //if the assignment havesubmissions we copy them and insert them to the database with the new assignment id
+    $newcategoryid=array();
+    if($submissions!=''){
+	    foreach ($submissions as $submission) {
+	    	$submission->assignment=$assignment->id;
+	    	insert_record('assignment_submissions', $submission);
+	    }
+	 
+    }
+    
+
+    return $cm->id;
+}
+
+/**
+ * LAMS Function
+ * Return a statistic for a given user in this Moodle assignment for use in branching
+ */
+function assignment_get_tool_output($id, $userid) {
+
+     $cm = get_record('course_modules', 'id', $id);
+    
+     if ($cm) {
+        $submission = get_record('assignment_submissions', 'assignment',$cm->instance,'userid',$userid);
+         if ($submission) {
+			return $submission->numfiles; 
+         }else{
+         	return 0;
+         }
+    }
+    return 0;
+}
+
+/**
+ * LAMS Function
+ * Return an HTML representation of a user's activity in this assignment
+ */
+function assignment_export_portfolio($id, $userid) {
+    global $CFG;
+    $text = 'This tool does not support export portfolio.  It may be accessible via ';
+    $text .= 'this link.';
+    return $text;
+
+}
+
+
+
 ?>