Пример #1
0
 /**
  * Calculate the end time for a paper and record it in the database
  * @param  integer  $invigilator_id ID of the invigilator setting the end time for the paper
  * @param  string   $time           Time at which to end the exam as an interval from midnight in interval_spec format
  * @return DateTime                 DateTime object representing new end time
  */
 public function save($invigilator_id, $time = NULL)
 {
     $this->msg = '';
     $query = 'INSERT INTO log_lab_end_time (labID, invigilatorID, paperID, start_time, end_time) VALUES (?, ?, ?, ?, ?)';
     $stmt = $this->db->prepare($query);
     if (is_null($time)) {
         $start_time_datetime = new DateTime();
         $end_datetime = $this->calculate_end_datetime($start_time_datetime);
         $start_date = time();
     } else {
         if ($this->start_timestamp === false) {
             $this->start_timestamp = $start_date = time();
         } else {
             $start_date = $this->start_timestamp;
         }
         $dispzone = new DateTimeZone($this->property_object->get_timezone());
         $end_datetime = new DateTime("now", $dispzone);
         $end_datetime->setTime(0, 0, 0);
         $dateinterval = new DateInterval($time);
         $end_datetime->add($dateinterval);
         $curtz1 = new DateTime();
         $curtz = $curtz1->getTimezone();
         $end_datetime->setTimezone($curtz);
     }
     $end_time = $end_datetime->getTimestamp();
     $tz = $this->property_object->get_timezone();
     $lab_id = $this->get_lab_id();
     $paper_id = $this->get_paper_id();
     $stmt->bind_param('iiiii', $lab_id, $invigilator_id, $paper_id, $start_date, $end_time);
     $stmt->execute();
     $stmt->close();
     // Update cached end time
     $this->end_datetime_cached = $end_datetime;
     return $end_datetime;
 }