Esempio n. 1
0
 public function checkCode()
 {
     Helpers::normalizeCode($this->code);
     if (!($this->exercise = Exercise::model()->findByAttributes(array('code' => trim($this->code))))) {
         $this->addError('code', Yii::t('swu', 'The code you entered does not exist.'));
     }
 }
Esempio n. 2
0
 public function sendCodes($controller)
 {
     if (!($student = Student::model()->findByAttributes(array('email' => $this->email)))) {
         return false;
     }
     $exercises = Exercise::model()->with('assignment')->sortByDuedate()->findAllByAttributes(array('student_id' => $student->id));
     foreach ($exercises as $exercise) {
         $exercise->link = Yii::app()->controller->createAbsoluteSslUrl('exercise/info', array('k' => $exercise->generateAckKey()));
     }
     $options = array();
     if (Helpers::getYiiParam('addOriginatingIP')) {
         $options['originating_IP'] = sprintf('[%s]', Yii::app()->request->userHostAddress);
     }
     return MailTemplate::model()->mailFromTemplate('send_codes', array($student->email => $student->name), array('student' => $student, 'exercises' => $exercises), $options);
 }
Esempio n. 3
0
 public function checkCode()
 {
     if ($this->getError('verifyCode')) {
         return;
         // we don't provide any information about the code if the captcha is not valid
     }
     Helpers::normalizeCode($this->code);
     if ($this->exercise = Exercise::model()->findByAttributes(array('code' => trim($this->code)))) {
         if (!$this->byteacher and $this->exercise->duedate < date('Y-m-d H:m:s', time() - $this->exercise->assignment->grace * 24 * 60 * 60)) {
             $this->addError('code', Yii::t('swu', 'The code provided is not valid anymore (time expired on %date%).', array('%date%' => $this->exercise->duedate)));
             return;
         }
     } elseif ($this->code) {
         $this->addError('code', Yii::t('swu', 'The code provided is not valid.'));
         return;
     }
 }
Esempio n. 4
0
 public function removeExercises($ids)
 {
     $result = array('removed' => array(), 'left' => array());
     $exercises = Exercise::model()->ofAssignment($this->id)->forStudents($ids)->with('files')->findAll();
     foreach ($exercises as $exercise) {
         $id = $exercise->id;
         if ($exercise && sizeof($exercise->files) > 0) {
             $result['left'][] = $id;
             continue;
             // we won't delete exercises when files are uploaded
         }
         try {
             $exercise->delete();
             $result['removed'][] = $id;
         } catch (Exception $e) {
             $result['left'][] = $id;
             // this should never happen
         }
     }
     return $result;
 }
Esempio n. 5
0
 public function loadModelByCode($code)
 {
     return $model = Exercise::model()->findByAttributes(array('code' => $code));
 }
Esempio n. 6
0
 public function getExercises()
 {
     return Exercise::model()->forStudent($this->id)->with('assignment')->findAll();
 }