/** * @description 更新试卷统计 * @author * @final * @param int $id 试卷id */ public function renew($id = 0) { $id = intval($id); $exam_id = ExamPaperModel::get_paper($id, 'exam_id'); if (empty($exam_id)) { message('试卷不存在'); return; } if (QuestionModel::paper_has_test_action($id)) { message('该试卷已经被考生考过 或者 正在被考中,因此无法操作'); return; } $back_url = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : 'admin/paper/index/' . $exam_id; if (ExamPaperModel::renew($id)) { message('更新成功', $back_url); } else { message('更新失败'); } }
/** * 试卷加入试题 * * @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 $ids 试卷id * @param int $exam_id 考试期次id */ public function delete_batch() { $admin_info = $this->session->all_userdata(); /* 录入人员 只能查看自己录入的题目 管理员可以看到所有题目 */ $admin_id = $this->session->userdata('admin_id'); if (!$admin_id) { message('获取管理员数据失败,请从新登陆后重试!'); } $ids = $this->input->post('ids'); if (empty($ids) or !is_array($ids)) { message('请选择要操作的项目!'); return; } //print_r($ids) ; $tmp_ids = array(); $count_success = 0; $count_fail = 0; foreach ($ids as $id) { $paper = PaperModel::get_paper_by_id($id); if (QuestionModel::paper_has_test_action($id) || $paper['admin_id'] != $admin_info['admin_id'] && !$admin_info['is_super'] || empty($paper)) { $count_fail++; } else { $count_success++; $tmp_ids[] = $id; } } $back_url = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : 'admin/paper_diy/index'; if (count($tmp_ids) > 0) { $this->db->where_in('paper_id', $tmp_ids)->delete('exam_paper'); admin_log('delete', 'exam_paper', implode(',', $tmp_ids)); } message("批量操作完成,成功删除:" . $count_success . "个,失败:" . $count_fail . "个 (可能原因:这些试卷已经被考生考过 或者 正在被考中 或者试卷不存在 或者没有权限)。", $back_url); }