Example #1
0
 protected function save(ORM_Admin_Member_Data $member)
 {
     try {
         if (!$member->id > 0) {
             # 创建新用户
             if (!$_POST['username']) {
                 throw new Exception('用户名不能空', -1);
             }
             if (!$_POST['new_password']) {
                 throw new Exception('密码不能空', -1);
             }
             if ($_POST['new_password'] != $_POST['new_password_2']) {
                 throw new Exception('两次输入的密码不一致,请重新确认', -1);
             }
             $model_admin = new Model_Admin_Administrator();
             if ($model_admin->get_by_username($_POST['username'])) {
                 throw new Exception('此用户名已存在,请换一个', -1);
             }
         }
         $member->nickname = $_POST['nickname'];
         $setting = HttpIO::POST('setting');
         # 修改权限模式
         if ($this->show_edit_perm) {
             # _group_admin 保留项
             if (isset($setting['_group_admin'])) {
                 unset($setting['_group_admin']);
             }
             # 修改权限
             $this->change_member_perm($member);
         } elseif (!$member->id > 0) {
             $member->perm_setting = null;
         }
         if ($setting) {
             if ($member->setting) {
                 $member->setting = array_merge($member->setting, $setting);
             } else {
                 $member->setting = $setting;
             }
         }
         # 修改用户其它信息
         $this->change_member_other_info($member);
         $tr = $member->orm()->db()->transaction();
         $tr->start();
         try {
             # 保存数据
             if ($member->id > 0) {
                 $is_add = false;
                 # 修改用户
                 $member->update();
             } else {
                 $is_add = true;
                 # 设置用户名
                 $member->username = $_POST['username'];
                 # 密码,在更新数据时会由ORM进行加密处理
                 $member->password = $_POST['new_password'];
                 # 所属项目
                 $member->project = Core::$project;
                 # 锁定=否
                 $member->shielded = 0;
                 # 插入用户数据
                 $member->insert();
             }
             if ($this->show_edit_perm) {
                 # 保存组权限设置
                 $this->save_member_group_perm($member, $is_add);
             }
             $tr->commit();
             $msg = '操作成功';
             $code = 1;
         } catch (Exception $e) {
             $tr->rollback();
             throw $e;
         }
     } catch (Exception $e) {
         $code = $e->getCode();
         $msg = $e->getMessage();
     }
     $this->message($msg, $code);
 }