public function update() { if (!$this->check_power('interview_question_manage')) { return; } $id = intval($this->input->post('id')); $act = trim($this->input->post('act')); if ($act == 'edit') { $id && ($row = InterviewQuestionModel::get_question($id)); if (empty($row)) { message('试题不存在'); return; } } // 题目基本信息 $class_ids = $this->input->post('class_id'); $row['interview_type'] = intval($this->input->post('interview_type')); $row['lang'] = intval($this->input->post('lang')); $row['content'] = trim($this->input->post('content')); $row['student_content'] = trim($this->input->post('student_content')); // 试题信息验证 $message = array(); if (empty($class_ids) || !is_array($class_ids)) { $message[] = '请选择试题类型'; } else { // 年级段对应类型 $period_class = ClassModel::grade_period_class(); $relate_class = array(); $periods = array(); $ques_cids = array(); foreach ($class_ids as $class) { list($period, $cid) = explode('-', $class); if (!isset($period_class[$period]) or !isset($period_class[$period][$cid])) { continue; } $relate = array('ques_id' => $id, 'grade_period' => $period, 'class_id' => $cid); $periods[$period] = $period; $ques_cids[$cid] = $cid; $relate_class[] = $relate; } if (empty($ques_cids)) { $message[] = '请选择试题类型11'; } else { sort($ques_cids, SORT_NUMERIC); sort($periods, SORT_NUMERIC); $row['class_id'] = ',' . implode(',', $ques_cids) . ','; $row['grade_period'] = ',' . implode(',', $periods) . ','; } } if (empty($row['lang'])) { $message[] = '请选择语言'; } if (empty($row['interview_type'])) { $message[] = '请选择考点'; } if (empty($row['content'])) { $message[] = '请填写试题内容'; } if ($message) { message(implode('<br>', $message), null, null, 10); return; } if ($act == 'edit') { $old_relates = array(); $query = $this->db->get_where('interview_relate_class', array('ques_id' => $id)); foreach ($query->result_array() as $arr) { $old_relates[$arr['grade_period'] . '-' . $arr['class_id']] = $arr['id']; } $this->db->trans_start(); // 更新试题信息 $this->db->update('interview_question', $row, array('id' => $id)); // 更新关联类型 foreach ($relate_class as $k => $relate) { if (isset($old_relates[$relate['grade_period'] . '-' . $relate['class_id']])) { $this->db->update('interview_relate_class', $relate, array('id' => $old_relates[$relate['grade_period'] . '-' . $relate['class_id']])); unset($old_relates[$relate['grade_period'] . '-' . $relate['class_id']]); unset($relate_class[$k]); } } if ($relate_class) { $this->db->insert_batch('interview_relate_class', $relate_class); } if ($old_relates) { $this->db->where_in('id', $old_relates)->delete('interview_relate_class'); } $this->db->trans_complete(); admin_log('edit', 'interview_question', $id); } else { // 关联分组 if ($relate_group = intval($this->input->post('relate_group'))) { $query = $this->db->get_where('relate_group', array('group_id' => $relate_group)); $group = $query->row_array(); if (empty($group)) { $relate_group = 0; } $row['group_id'] = $relate_group; } $row['admin_id'] = $this->session->userdata('admin_id'); $row['addtime'] = time(); $this->db->trans_start(); $this->db->insert('interview_question', $row); $id = $this->db->insert_id(); if ($relate_class) { foreach ($relate_class as &$relate) { $relate['ques_id'] = $id; } $this->db->insert_batch('interview_relate_class', $relate_class); } $this->db->trans_complete(); admin_log('add', 'interview_question', $this->db->insert_id()); } $back_url = trim($this->input->post('back_url')); if (empty($back_url) or strpos($back_url, 'menu') !== false) { $back_url = 'admin/interview_question/index'; } message('面试试题编辑成功', $back_url); }