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);
 }