Пример #1
0
 /**
  * 练习题
  */
 function practiseAction()
 {
     $practiseModel = new PractiseModel();
     $rs = $practiseModel->isUserPractiseFinished($this->uid, $this->sectionId);
     //不能重复答题
     if ($rs) {
         header("Location:/practise/report/section_id/" . $this->sectionId);
         exit;
     }
     $seq = (int) $this->get('seq', 1);
     $practise = $practiseModel->getPractiseBySeq($this->sectionId, $seq);
     $tree = $practise['nested_node_tree'];
     $subjectUrl = sprintf("%s/practise/subject/section_id/%d/practise_id/%d", Common_Config::BASE_URL, $this->sectionId, $practise['item_id']);
     $data = array("subject_id" => $practise["item_id"], "subject_title" => $tree["node_content"], "subject_seq" => $seq, "url" => $subjectUrl);
     $practiseNum = $practiseModel->getSectionPractiseNum($this->sectionId);
     $data["subject_num"] = $practiseNum;
     $data["section_id"] = $this->sectionId;
     //上一题下一题
     $prev = $seq - 1;
     $next = $seq + 1;
     if ($prev >= 1) {
         $data['prev_seq'] = $prev;
     }
     if ($next <= $data['subject_num']) {
         $data['next_seq'] = $next;
     }
     foreach ($tree['nested_node_children'] as $option) {
         $letter = chr(320 + $option["node_index"]);
         $optionUrl = sprintf("%s/practise/option/section_id/%d/practise_id/%d/option_id/%d", Common_Config::BASE_URL, $this->sectionId, $practise['item_id'], $option["node_index"]);
         $data['option_list'][] = array("id" => $option["node_index"], "letter_seq" => $letter, "content" => $option["node_content"], "url" => $optionUrl);
     }
     if ($this->isMobile || $this->ajax) {
         if ($this->platform == 'ios') {
             $data['subject_title'] = '';
             foreach ($data['option_list'] as &$opt) {
                 $opt['content'] = '';
             }
         }
         $this->displayJson(Common_Error::ERROR_SUCCESS, $data);
     }
     $this->section['practise_num'] = $practiseModel->getSectionPractiseNum($this->sectionId);
     $this->assign('section', $this->section);
     $this->assign('chapter', $this->chapter);
     $this->assign('course', $this->course);
 }
Пример #2
0
 /**
  * web专用
  */
 function examAction()
 {
     $seq = (int) $this->get('seq', 1);
     $practiseModel = new PractiseModel();
     $practise = $practiseModel->getPractiseBySeq($this->sectionId, $seq);
     //需要验证是否有错题
     if (!$practise) {
         $this->redirect("/error/?errno=" . Common_Error::ERROR_PRACTISE_NOT_EXISTS);
     }
     $id = $practiseModel->insertAnswer($this->sectionId, $this->uid, $practise['practise_id'], 0, 0);
     $tree = $practise['nested_node_tree'];
     $data = array("subject_id" => $practise["item_id"], "subject_seq" => $seq, "answer" => $practise['answer'], "parse" => $practise['parse'], "video_id" => $practise['video_id'], "type_name" => $practise['type_name']);
     $data["subject_title"] = in_array($practise['type_name'], Common_Config::$practiseChoice) ? $practise["nested_content_raw"][0]['content'] : $practiseModel->getSubject($practise["nested_content_raw"]);
     $practiseNum = $practiseModel->getSectionPractiseNum($this->sectionId);
     $data["subject_num"] = $practiseNum;
     $data["section_id"] = $this->sectionId;
     if (in_array($practise['type_name'], Common_Config::$practiseChoice)) {
         foreach ($tree['nested_node_children'] as $option) {
             $letter = chr(320 + $option["node_index"]);
             $data['option_list'][] = array("id" => $option["node_index"], "letter_seq" => $letter, "content" => $option["node_content"]);
         }
     }
     if ($this->ajax) {
         $this->displayJson(Common_Error::ERROR_SUCCESS, $data);
     }
     $this->assign("practise", $data);
     $this->assign("section", $this->section);
     if ($this->platform == 'ios' || $this->platform == 'android') {
         $this->getView()->display("practise/exam-app.phtml");
         exit;
     }
 }