Exemplo n.º 1
0
 public function basic_save()
 {
     $uid = $this->_uinfo['uid'];
     $action = $this->input->post('action');
     if ($uid) {
         $old = StudentModel::get_student($uid);
         if (empty($old)) {
             StudentModel::studentAjaxLogout();
             message('信息不存在', 'student/index/login');
         }
     }
     $message = array();
     $student_fullname = trim($this->input->post('full_name'));
     $len = mb_strlen($student_fullname, 'utf-8');
     $student['last_name'] = mb_substr($student_fullname, 0, 1, 'utf-8');
     $student['first_name'] = mb_substr($student_fullname, 1, $len - 1, 'utf-8');
     $student['sex'] = intval($this->input->post('sex')) == 1 ? 1 : 2;
     $student['birthday'] = strtotime($this->input->post('birthday'));
     $student['idcard'] = trim($this->input->post('idcard'));
     $student['external_account'] = trim($this->input->post('student_ticket'));
     $student['email'] = trim($this->input->post('email'));
     $student['grade_id'] = intval($this->input->post('grade_id'));
     $student['school_id'] = intval($this->input->post('school_id'));
     $student['school_name'] = trim($this->input->post('school_name'));
     $student['mobile'] = trim($this->input->post('mobile'));
     if (empty($student['email']) or !is_email($student['email'])) {
         $message[] = '请正确填写Email地址';
     }
     if (!$uid) {
         $password = trim($this->input->post('password'));
         $password_confirm = trim($this->input->post('password_confirm'));
         if ($action == 'add') {
             if (is_string($passwd_msg = is_password($password))) {
                 $message[] = $passwd_msg;
             } else {
                 $student['password'] = $password;
             }
         } elseif (strlen($password) > 0) {
             $student['password'] = $password;
         }
         if (isset($student['password']) && $password !== $password_confirm) {
             $message[] = '两次密码输入不一致!';
         }
     }
     if (empty($student['first_name']) || empty($student['last_name'])) {
         $message[] = '请填写姓名';
     }
     if (empty($student['birthday'])) {
         $message[] = '请填写出生日期';
     }
     if (empty($student['idcard']) || !is_idcard($student['idcard'])) {
         message('请正确填写身份证号码!');
     }
     if ($student['grade_id'] < 1 or $student['grade_id'] > 12) {
         $message[] = '请选择就读年级';
     }
     if (empty($student['school_id'])) {
         $message[] = '请选择就读学校';
     }
     if (strlen($student['mobile']) > 0 && !is_phone($student['mobile'])) {
         $message[] = '请正确填写手机号码';
     }
     // 检查email是否已注册
     $tmp_student = $this->db->select('uid, email_validate')->get_where('student', array('email' => $student['email']))->row_array();
     if ($tmp_student && $tmp_student['uid'] != $uid) {
         $message[] = '该Email地址已被注册!';
     }
     //检查身份证否已注册
     $student_idcard = $this->db->select('uid')->get_where('student', array('idcard' => $student['idcard']))->row_array();
     if ($student_idcard && $student_idcard['uid'] != $uid) {
         $message[] = '该身份证号码已被注册';
     }
     if ($_FILES['picture']['name']) {
         if ($uid) {
             $config['upload_path'] = _UPLOAD_ROOT_PATH_ . 'uploads/student/' . date('Ym') . '/';
         } else {
             $config['upload_path'] = _UPLOAD_ROOT_PATH_ . 'uploads/student/temp/' . date('Ym') . '/';
         }
         $config['allowed_types'] = 'gif|jpg';
         $config['max_size'] = '1024';
         $config['max_width'] = '2000';
         $config['max_height'] = '2000';
         $config['encrypt_name'] = TRUE;
         $this->load->library('upload', $config);
         if ($this->upload->do_upload('picture')) {
             $student['picture'] = $this->upload->data('file_relative_path');
         } else {
             $msg = array("头像图片限制:", "1、图片大小小于 1M", "2、尺寸不超过2000 x 2000像素", "3、图片格式为 jpg 或 gif");
             $message[] = $this->upload->display_errors() . '<hr/><font style="font-weight:bold;font-size:12px;">' . implode('</br>', $msg) . '</font><hr/>';
         }
     }
     if ($message) {
         if (!empty($student['picture'])) {
             @unlink(_UPLOAD_ROOT_PATH_ . $student['picture']);
         }
         message(implode('<br/>', $message));
     }
     /*************** COPY FROM base_save() START ***********************/
     if ($uid) {
         $student2 = array();
         $student2['grade_id'] = intval($this->input->post('grade_id'));
         //$student2['address']   = trim($this->input->post('address'));
         $student2['zipcode'] = trim($this->input->post('zipcode'));
         $sbinfo = array();
         $sbinfo['sb_addr_provid'] = intval($this->input->post('sb_addr_provid'));
         $sbinfo['sb_addr_cityid'] = intval($this->input->post('sb_addr_cityid'));
         $sbinfo['sb_addr_areaid'] = intval($this->input->post('sb_addr_areaid'));
         $sbinfo['sb_addr_desc'] = trim($this->input->post('sb_addr_desc'));
         // 培训机构、培训课程、授课教师
         $sbcinfo = array();
         $sbcinfo['no_tiid'] = intval($this->input->post('no_tiid'));
         $sbcinfo['sbc_tiid'] = intval($this->input->post('sbc_tiid'));
         $sbcinfo['ti_name'] = trim($this->input->post('ti_name'));
         $sbcinfo['sbc_corsid'] = intval($this->input->post('sbc_corsid'));
         $sbcinfo['cors_cmid'] = intval($this->input->post('cors_cmid'));
         $sbcinfo['cors_name'] = trim($this->input->post('cors_name'));
         $sbcinfo['sbc_teachers'] = trim($this->input->post('sbc_teachers'));
         $sbs_stunumtype = $this->input->post('sbs_stunumtype');
         if (!is_array($sbs_stunumtype)) {
             $sbs_stunumtype = array();
         }
         $sbclassid_classid = $this->input->post('sbclassid_classid');
         if (!is_array($sbclassid_classid)) {
             $sbclassid_classid = array();
         }
         /*if (empty($student2['address']))
           {
               $message[] = '请填写家庭地址';
           }*/
         if (empty($student2['zipcode'])) {
             $message[] = '请填写邮编';
         }
         if ($sbinfo['sb_addr_provid'] == 0) {
             $message[] = '请填写家庭所在省市';
         }
         if ($sbinfo['sb_addr_desc'] == '') {
             $message[] = '请填写家庭住址';
         }
         if (empty($sbcinfo['no_tiid'])) {
             if ($sbcinfo['ti_name'] == '') {
                 $message[] = '请填写培训机构';
             }
             if ($sbcinfo['cors_name'] == '') {
                 $message[] = '请填写培训课程';
             }
             if ($sbcinfo['sbc_teachers'] == '') {
                 $message[] = '请填写授课教师';
             }
         }
         if (empty($sbs_stunumtype)) {
             $message[] = '请选择可接受授课模式';
         }
         if (empty($sbclassid_classid)) {
             $message[] = '请选择希望辅导难度';
         }
         if ($message) {
             message(implode('<br/>', $message));
         }
     }
     /*************** COPY FROM base() END ******************************/
     if ($uid) {
         // 在用户修改信息时才发,注册不发邮件
         if (empty($tmp_student) || !$tmp_student['email_validate']) {
             $student['email_validate'] = 0;
             // 发送邮件
             $email_tpl = C('email_template/register');
             $mail = array('student' => $student, 'hash' => email_hash('encode', $uid));
             send_email($email_tpl['subject'], $this->load->view($email_tpl['tpl'], $mail, TRUE), $student['email']);
         }
     }
     if ($uid) {
         unset($student['password']);
         if (isset($student['external_account'])) {
             unset($student['external_account']);
         }
         // 已注册,更新数据库
         if (isset($student['school_name'])) {
             unset($student['school_name']);
         }
         unset($student['uid']);
         Fn::db()->update('rd_student', $student, 'uid = ' . $uid);
         if (!empty($student['picture']) && $old['picture']) {
             @unlink(_UPLOAD_ROOT_PATH_ . $old['picture']);
         }
         StudentModel::studentUpdateSession();
         /****************** COPY FROM base_save() START ****************/
         unset($student2['grade_id']);
         // 已注册,更新数据库
         $db = Fn::db();
         $bOk = false;
         try {
             if ($db->beginTransaction()) {
                 $db->update('rd_student', $student2, "uid = {$uid}");
                 $db->delete('t_student_base', "sb_uid = {$uid}");
                 $sbinfo['sb_uid'] = $uid;
                 $db->insert('t_student_base', $sbinfo);
                 $db->delete('t_student_base_classid', "sbclassid_uid = {$uid}");
                 foreach ($sbclassid_classid as $v) {
                     $db->insert('t_student_base_classid', array('sbclassid_uid' => $uid, 'sbclassid_classid' => $v));
                 }
                 $db->delete('t_student_base_stunumtype', "sbs_uid = {$uid}");
                 foreach ($sbs_stunumtype as $v) {
                     $db->insert('t_student_base_stunumtype', array('sbs_uid' => $uid, 'sbs_stunumtype' => $v));
                 }
                 $db->delete('t_student_base_course', 'sbc_uid = ' . $uid);
                 if (empty($sbcinfo['no_tiid'])) {
                     $now_time = time();
                     if (!$sbcinfo['sbc_tiid']) {
                         $row = array('ti_name' => $sbcinfo['ti_name'], 'ti_typeid' => 1, 'ti_flag' => $now_time, 'ti_priid' => 0, 'ti_provid' => $sbinfo['sb_addr_provid'], 'ti_cityid' => $sbinfo['sb_addr_cityid'], 'ti_areaid' => $sbinfo['sb_addr_areaid'], 'ti_addtime' => date('Y-m-d H:i:s', $now_time), 'ti_adduid' => 1);
                         $db->insert('t_training_institution', $row);
                         $ti_id = $db->lastInsertId('t_training_institution', 'ti_id');
                         $sbcinfo['sbc_tiid'] = $ti_id;
                     }
                     if (!$sbcinfo['sbc_corsid']) {
                         if ($sbcinfo['cors_cmid'] != 1) {
                             $sbcinfo['cors_cmid'] = 2;
                         }
                         $row = array('cors_name' => $sbcinfo['cors_name'], 'cors_cmid' => $sbcinfo['cors_cmid'], 'cors_flag' => $now_time, 'cors_tiid' => $sbcinfo['sbc_tiid'], 'cors_stunumtype' => $sbcinfo['cors_cmid'], 'cors_addtime' => date('Y-m-d H:i:s', $now_time), 'cors_adduid' => 1, 'cors_lastmodify' => date('Y-m-d H:i:s', $now_time));
                         $db->insert('t_course', $row);
                         $cors_id = $db->lastInsertId('t_course', 'cors_id');
                         $sbcinfo['sbc_corsid'] = $cors_id;
                     }
                     $db->insert('t_student_base_course', array('sbc_uid' => $uid, 'sbc_idx' => 0, 'sbc_tiid' => $sbcinfo['sbc_tiid'], 'sbc_corsid' => $sbcinfo['sbc_corsid'], 'sbc_teachers' => $sbcinfo['sbc_teachers']));
                 }
                 $bOk = $db->commit();
                 if (!$bOk) {
                     $err = $db->errorInfo()[2];
                     $db->rollBack();
                     message('学习概况保存失败(' . $err . ')');
                 }
             }
             if (!$bOk) {
                 message('学习概况保存失败(执行事务处理失败)');
             }
         } catch (Exception $e) {
             message('学习概况保存失败(' . $e->getMessage() . ')');
         }
         /*************** COPY FROM base_save() END ********************/
     } else {
         isset($student['password']) && ($student['password'] = my_md5($student['password']));
         if (!isset($student['picture'])) {
             $student['picture'] = '';
         }
         $old = $this->session->userdata('student');
         if ($old) {
             if (empty($student['password'])) {
                 $student['password'] = $old['password'];
             }
             if (!empty($old['picture'])) {
                 if (empty($student['picture'])) {
                     $student['picture'] = $old['picture'];
                 } else {
                     @unlink(_UPLOAD_ROOT_PATH_ . $old['picture']);
                 }
             }
         }
         // 未注册,更新session
         $this->session->set_userdata(array('student' => $student));
     }
     if (!$uid && C('register_simple')) {
         $this->session->set_userdata('complete', 1);
         redirect('student/profile/submit_simple');
     } else {
         if ($uid or $this->session->userdata('complete')) {
             message('基本信息和学习概况修改成功', 'student/profile/preview', 'success');
         } else {
             redirect('student/profile/preview');
             //redirect('student/profile/base');
         }
     }
 }