Exemplo n.º 1
0
 /**
  * 试卷加入试题
  *
  * @param int $paper_id 试卷id
  * @param int $ques_ids 试题id
  * @return void
  */
 public function insert()
 {
     if (!$this->check_power('exam_manage')) {
         return;
     }
     $paper_id = intval($this->input->post('paper_id'));
     $ques_ids = trim($this->input->post('ques_ids'));
     if (empty($ques_ids)) {
         message('请选择要添加的试题');
         return;
     }
     $paper = ExamPaperModel::detail($paper_id);
     if (empty($paper)) {
         message('试卷不存在');
         return;
     }
     $exam = ExamModel::get_exam($paper['exam_id'], 'exam_pid,subject_id,grade_id,class_id');
     if (empty($exam)) {
         message('考试不存在');
         return;
     }
     //判断该试卷已经被考试过 或 正在被考
     $is_mini_test = ExamModel::is_mini_test($exam['exam_pid']);
     if (!$is_mini_test) {
         $be_tested = QuestionModel::paper_has_test_action($paper_id);
         if ($be_tested) {
             message('该试卷已经被考生考过 或者 正在被考, 无法修改');
         }
     }
     $ques_ids = my_intval(explode(',', $ques_ids));
     $this->check_total_score($paper_id, $ques_ids);
     $sql = "SELECT q.ques_id,q.group_id FROM {pre}question q,{pre}relate_class rc\n                WHERE q.ques_id=rc.ques_id AND q.subject_id={$exam['subject_id']} AND rc.grade_id={$exam['grade_id']}\n                AND rc.class_id={$exam['class_id']} AND q.ques_id IN (" . my_implode($ques_ids) . ")";
     $query = $this->db->query($sql);
     $inserts = array();
     $fail = $success = 0;
     $msg = array();
     foreach ($query->result_array() as $row) {
         if (in_array($row['ques_id'], $paper['ques_ids']) or $row['group_id'] && in_array($row['group_id'], $paper['group_ids'])) {
             $fail++;
             $msg[] = '该试卷同一试题已存在或者同一分组中的试题已存在!';
             continue;
         }
         $success++;
         $item = array('paper_id' => $paper['paper_id'], 'exam_id' => $paper['exam_id'], 'ques_id' => $row['ques_id']);
         $inserts[] = $item;
         $paper['ques_ids'][] = $row['ques_id'];
         if ($row['group_id']) {
             $paper['group_ids'][] = $row['group_id'];
         }
     }
     if ($inserts) {
         $this->db->insert_batch('exam_question', $inserts);
         ExamPaperModel::renew($paper_id);
         if ($is_mini_test) {
             SummaryModel::summary_paper($exam['exam_pid'], 0, $paper_id, true);
         }
     }
     $msg = '成功' . $success . '个,失败' . $fail . '个失败原因:<br>' . implode('<br>', $msg);
     message('试卷试题添加成功' . $msg, 'admin/exam_question/index/' . $paper_id);
 }
Exemplo n.º 2
0
 /**
  * @description 试卷对比
  * @author
  * @final
  * @param int $id1 试卷id
  * @param int $id2 试卷id
  */
 public function compare($id1 = 0, $id2 = 0)
 {
     if (!$this->check_power('exam_manage')) {
         return;
     }
     $ids = $this->input->post('ids');
     if (!($id1 = intval($id1)) or !($id2 = intval($id2))) {
         message('请选择两个试卷对比');
         return;
     }
     $paper1 = ExamPaperModel::detail($id1, 1, 1);
     $paper2 = ExamPaperModel::detail($id2, 1, 1);
     if (empty($paper1) or empty($paper2)) {
         message('试卷不存在');
         return;
     }
     // 相同试题数、分组数
     $paper1['ques_intersect'] = count(array_intersect($paper1['ques_ids'], $paper2['ques_ids']));
     $paper1['group_intersect'] = count(array_intersect($paper1['group_ids'], $paper2['group_ids']));
     $data['paper1'] = $paper1;
     $data['paper2'] = $paper2;
     // 模版
     $this->load->view('paper/compare', $data);
 }