/** * 试卷加入试题 * * @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); }
/** * @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); }