UserApi::save_user_info PHP Method

save_user_info() public method

修改用户信息 --using
public save_user_info ( )
    public function save_user_info()
    {
        $save = array();
        // 修改用户昵称
        if (isset($this->data['uname'])) {
            $uname = t($this->data['uname']);
            $save['uname'] = filter_keyword($uname);
            $oldName = t($this->data['old_name']);
            $res = model('Register')->isValidName($uname);
            if (!$res) {
                $error = model('Register')->getLastError();
                return array('status' => 0, 'msg' => $error);
            }
            // 如果包含中文将中文翻译成拼音
            if (preg_match('/[\\x7f-\\xff]+/', $save['uname'])) {
                // 昵称和呢称拼音保存到搜索字段
                $save['search_key'] = $save['uname'] . ' ' . model('PinYin')->Pinyin($save['uname']);
            } else {
                $save['search_key'] = $save['uname'];
            }
        }
        // 修改性别
        if (isset($this->data['sex'])) {
            $save['sex'] = 1 == intval($this->data['sex']) ? 1 : 2;
        }
        // 修改个人简介
        if (isset($this->data['intro'])) {
            $save['intro'] = formatEmoji(true, t($this->data['intro']));
        }
        // 修改地区
        if ($this->data['city_id']) {
            $area_id = intval($this->data['city_id']);
            $area = D('area')->where('area_id=' . $area_id)->find();
            $city = D('area')->where('area_id=' . $area['pid'])->find();
            $province = D('area')->where('area_id=' . $city['pid'])->find();
            $save['province'] = intval($province['area_id']);
            $save['city'] = intval($city['area_id']);
            $save['area'] = t($area['area_id']);
            $save['location'] = $province['title'] . ' ' . $city['title'] . ' ' . $area['title'];
        }
        // 修改密码
        if ($this->data['password']) {
            $regmodel = model('Register');
            // 验证格式
            if (!$regmodel->isValidPassword($this->data['password'], $this->data['password'])) {
                $msg = $regmodel->getLastError();
                $return = array('status' => 0, 'msg' => $msg);
                return $return;
            }
            // 验证新密码与旧密码是否一致
            if ($this->data['password'] == $this->data['old_password']) {
                $return = array('status' => 0, 'msg' => L('PUBLIC_PASSWORD_SAME'));
                return $return;
            }
            // 验证原密码是否正确
            $user = model('User')->where('`uid`=' . $this->mid)->find();
            if (md5(md5($this->data['old_password']) . $user['login_salt']) != $user['password']) {
                $return = array('status' => 0, 'msg' => L('PUBLIC_ORIGINAL_PASSWORD_ERROR'));
                // 原始密码错误
                return $return;
            }
            $login_salt = rand(11111, 99999);
            $save['login_salt'] = $login_salt;
            $save['password'] = md5(md5($this->data['password']) . $login_salt);
        }
        if (!empty($save)) {
            $res = model('User')->where('`uid`=' . $this->mid)->save($save);
            $res !== false && model('User')->cleanCache($this->mid);
            $user_feeds = model('Feed')->where('uid=' . $this->mid)->field('feed_id')->findAll();
            if ($user_feeds) {
                $feed_ids = getSubByKey($user_feeds, 'feed_id');
                model('Feed')->cleanCache($feed_ids, $this->mid);
            }
        }
        // 修改用户标签
        if (isset($this->data['tags'])) {
            if (empty($this->data['tags'])) {
                return array('status' => 0, 'msg' => L('PUBLIC_TAG_NOEMPTY'));
            }
            $nameList = t($this->data['tags']);
            $nameList = explode(',', $nameList);
            $tagIds = array();
            foreach ($nameList as $name) {
                $tagIds[] = model('Tag')->setAppName('public')->setAppTable('user')->getTagId($name);
            }
            $rowId = intval($this->mid);
            if (!empty($rowId)) {
                $registerConfig = model('Xdata')->get('admin_Config:register');
                if (count($tagIds) > $registerConfig['tag_num']) {
                    return array('status' => 0, 'msg' => '最多只能设置' . $registerConfig['tag_num'] . '个标签');
                }
                model('Tag')->setAppName('public')->setAppTable('user')->updateTagData($rowId, $tagIds);
            }
        }
        return array('status' => 1, 'msg' => '修改成功');
    }