protected function setNextListening($student_id, $listening_id)
 {
     $current = Current::model()->find('student_id=:student_id', array(':student_id' => $student_id));
     $current_session_id = $current->session_id;
     //set next listening
     $session_listenings = SessionListening::model()->findAll('session_id=:session_id', array(':session_id' => $current_session_id));
     $next_listening_id = $this->getNextListening($session_listenings, $listening_id);
     if ($next_listening_id != -1) {
         if ($current) {
             $current->listening_id = $next_listening_id;
             $current->save();
         }
     }
 }
 public function actionResults()
 {
     $student_id = Yii::app()->request->getQuery("student_id", NULL);
     $current = Current::model()->find('student_id=:student_id', array(':student_id' => $student_id));
     $all_sessions = Session::model()->findAll('mod_id=:mod_id', array(':mod_id' => $current->mod_id));
     $all = array();
     foreach ($all_sessions as $key0 => $session) {
         $session_id = $session->session_id;
         $session_listenings = SessionListening::model()->findAll('session_id=:session_id', array(':session_id' => $session_id));
         $all[$key0]["session_id"] = $session->session_id;
         $all[$key0]["session_name"] = $session->session_name;
         $all[$key0]["session_order"] = $session->session_order;
         $all[$key0]["mod_id"] = $session->mod_id;
         $all[$key0]["listenings"] = array();
         foreach ($session_listenings as $key => $session_listening) {
             $temp_listening_id = $session_listening->listening_id;
             $listening = Listening::model()->find('listening_id=:listening_id', array(':listening_id' => $temp_listening_id));
             $all[$key0]["listenings"][$key] = array('listening_id' => $listening->listening_id, 'listening_name' => $listening->listening_name, 'listening_repeat_number' => $listening->listening_repeat_number, 'listening_learning_guide_availability' => $listening->listening_learning_guide_availability);
             $criteria = new CDbCriteria();
             $criteria->addCondition("listening_id=:listening_id");
             //$criteria->order='RAND()';
             $criteria->params = array(':listening_id' => $listening->listening_id);
             $questions = Question::model()->findAll($criteria);
             //$questions=Question::model()->findAll('listening_id=:listening_id',array('listening_id'=>$listening->listening_id));
             foreach ($questions as $key2 => $question) {
                 $all[$key0]["listenings"][$key]['questions'][$key2] = array('question_id' => $question->question_id, 'question_body' => $question->question_body, 'question_correct_answer_id' => $question->question_correct_answer_id);
                 $criteria = new CDbCriteria();
                 $criteria->addCondition("question_id=:question_id");
                 //$criteria->order='RAND()';
                 $criteria->params = array(':question_id' => $question->question_id);
                 $answers = Answer::model()->findAll($criteria);
                 //$answers=Answer::model()->findAll('question_id=:question_id',array(':question_id'=>$question->question_id));
                 foreach ($answers as $key3 => $answer) {
                     $all[$key0]["listenings"][$key]['questions'][$key2]['answers'][$key3] = array('answer_id' => $answer->answer_id, 'answer_body' => $answer->answer_body);
                 }
             }
         }
     }
     $this->render('results', array('all' => $all, 'student_id' => $student_id));
 }