/** * 会员编辑 * $member_id * $member_name * $password * $old_password * $signature * $avatar file * $member_info json */ public function edit() { $this->input = hg_mermber2members_compatible(array('new_password' => 'password'), $this->input, false); $member_id = intval($this->user['user_id']); $app_id = $this->input['app_id']; //应用id if (!$member_id) { $this->errorOutput(NO_MEMBER_ID); } //检测该会员是否存在 $condition = " AND m.member_id = '" . $member_id . "' "; $field = 'm.member_id , m.member_name, m.password, m.salt, m.avatar, m.type,mb.nick_name'; $_member_info = $this->mMember->get_member_info($condition, $field, ' LEFT JOIN ' . DB_PREFIX . 'member_bind as mb ON mb.member_id = m.member_id'); $member_info = array(); $member_info = $_member_info[0]; if (empty($member_info)) { $this->errorOutput(NO_MEMBER); } $this->ReplaceCheck($member_info); //判定是否有值不更新 $member_name = trim($this->input['member_name']); if ($this->input['nick_name']) { $nick_name = trim($this->input['nick_name']); } if (!$nick_name && $this->settings['memberNameToNickName']) { $nick_name = $member_name; unset($member_name, $this->input['member_name']); } $password = trim($this->input['password']) ? trim($this->input['password']) : ''; $old_password = trim($this->input['old_password']); $signature = trim($this->input['signature']); $mobile = trim($this->input['mobile']); $email = trim($this->input['email']) ? trim($this->input['email']) : ''; $verifycode = trim($this->input['verifycode']); $device_token = $this->Members->check_device_token(trim($this->input['device_token'])); $udid = $this->Members->check_udid(trim($this->input['uuid'])); //检查唯一设备号 if ($device_token === 0) { $this->errorOutput(ERROR_DEVICE_TOKEN); } if ($udid === 0) { $this->errorOutput(ERROR_UDID); } //会员名、更新时间 $data = array('member_id' => $member_id, 'update_time' => TIMENOW); $check_bind = new check_Bind(); if ($mobile) { if (!hg_verify_mobile($mobile)) { $this->errorOutput(MOBILE_NUMBER_FORMAT_ERROR); } else { if ($check_bind->checkMobileBind($member_id) != $mobile) { $this->errorOutput(MOBILE_BIND_NOT_UPDATE); } } $data['mobile'] = $mobile; } if ($email) { if (!hg_check_email_format($email)) { $this->errorOutput(EMAIL_FORMAT_ERROR); } elseif ($check_bind->checkEmailBind($member_id) == $email) { $this->errorOutput(EMAIL_BIND_NOT_UPDATE); } $data['email'] = $email; } if ($member_name && !$this->mMember->isMemberNameUpdate($member_id)) { $this->errorOutput(NOT_EDIT_MEMBERNAME); } else { if ($member_name) { $member_name_exists = $this->mMember->member_name_exists($member_name, $member_id); if (!empty($member_name_exists)) { $this->errorOutput(MEMBER_NAME_EXISTS); } $data['member_name'] = $member_name; } } if ($this->settings['App_banword']) { include ROOT_PATH . 'lib/class/banword.class.php'; $banword = new banword(); $signature_banword = $banword->exists($signature); //个性签名检测 if ($signature_banword && is_array($signature_banword)) { $this->errorOutput(SIGNATURE_INVALID); } $nick_name_banword = $banword->exists($nick_name); //个性签名检测 if ($nick_name_banword && is_array($nick_name_banword)) { $this->errorOutput(NICKNAME_ILLEGAL); } } //如果是m2o注册类型屏蔽字检测 if (in_array($member_info['type'], array('m2o', 'uc')) && $this->settings['App_banword']) { $member_name_banword = $banword->exists($member_name); if ($member_name_banword && is_array($member_name_banword)) { //$this->errorOutput(var_export($banword,1)); $this->errorOutput(MEMBER_NAME_INVALID); } } $_old_password = ''; //用户原始密码 $is_no_old_password = 1; //是否需要旧密码修改资料,不涉及用户密码操作直接修改 //密码、随机串 if (isset($this->input['password']) && $password || isset($this->input['verifycode']) && $verifycode) { if (!$old_password && !$verifycode) { $this->errorOutput(OLD_PASSWORD_ERROR); } //根据原始密码修改密码 if ($old_password) { $is_no_old_password = 0; $_old_password = $old_password; //用作uc更改密码 $old_password = md5(md5($old_password) . $member_info['salt']); if ($old_password != $member_info['password']) { $this->errorOutput(OLD_PASSWORD_ERROR); } } //根据验证码修改密码 if ($verifycode) { if ($this->mSmsServer->get_verifycode_info($member_name, $verifycode)) { //验证成功之后删除 $this->mSmsServer->mobile_verifycode_delete($member_name, $verifycode); } else { $this->errorOutput(VERIFY_FAILED); } } } /** * 同步UC信息 */ if ($this->settings['ucenter']['open'] && in_array($member_info['type'], array('m2o', 'uc'))) { $_member_name = $this->user['user_name']; $is_password = $this->mMember->uc_user_edit($_member_name, $_old_password, $password, $email, $is_no_old_password); if ($is_password < 0) { if ($is_password == -1) { $this->errorOutput(OLD_PASSWORD_ERROR); } else { if ($is_password == -4) { $this->errorOutput(EMAIL_FORMAT_ERROR); } elseif ($is_password == -5) { $this->errorOutput(EMAIL_NO_REGISTER); } elseif ($is_password == -6) { $this->errorOutput(EMAIL_HAS_BINDED); } } } } if ($password) { $salt = hg_generate_salt(); $md5_password = md5(md5($password) . $salt); $data['password'] = $md5_password; $data['salt'] = $salt; } //个性签名 if (isset($this->input['signature'])) { $data['signature'] = $signature; } //头像 if ($_FILES['avatar']['tmp_name']) { $avatar = $_FILES['avatar']; } elseif ($this->input['avatar']) { $avatar = $this->input['avatar']; } //背景图 if ($_FILES['background']['tmp_name']) { $background = $_FILES['background']; } elseif ($this->input['background']) { $background = $this->input['background']; } $_avatar = array(); $_background = array(); //编辑头像 if (!empty($avatar) && is_array($avatar)) { if ($this->input['version'] == CLIENT_VERSION) { $avatar['name'] .= '.png'; } $_avatar = $this->mMember->add_material($avatar, $member_id); } elseif ($avatar && is_string($avatar) && is_url($avatar)) { $_avatar = $this->mMember->update_avatar($avatar, array(), $member_id, true); } //叮当更换头像时刷新im用户信息 if ($_avatar && $this->input['platformMark'] && $this->input['platformMark'] == 'dingdone' && $app_id) { $param = array('app_id' => $app_id, 'member_id' => $member_id, 'member_name' => $member_info['member_name']); $param['avatar_url'] = $_avatar['host'] . $_avatar['dir'] . $_avatar['filepath'] . $_avatar['filename']; $imInfo = $this->refreshImInfo($param); } //编辑背景图 if (!empty($background) && is_array($background)) { $_background = $this->mMember->add_material($background, $member_id); } if (!empty($_avatar)) { $data['avatar'] = serialize($_avatar); } $bind_info = array(); if ($nick_name) { $bind_info = array('nick_name' => $nick_name); } if ($_background) { $bind_info['background'] = serialize($_background); } $copywriting_credit = $this->editCreditRules($member_id, $data, $bind_info); //判断积分规则 //会员数据入库 $ret = $this->mMember->update($data); if ($bind_info) { $this->mMember->bind_update($bind_info, 'WHERE member_id = \'' . $member_id . '\''); } if (!$ret['member_id']) { $this->errorOutput(EDIT_FAILED); } //编辑扩展信息 if ($this->input['platformMark'] && $this->input['platformMark'] == 'dingdone' && $app_id) { //为叮当注册根据app配置不同的扩展信息 $extension = $this->mMemberInfo->extension_editByApp($member_id, $this->input['member_info'], $app_id, $_FILES); } else { $extension = $this->mMemberInfo->extension_edit($member_id, $this->input['member_info'], $_FILES); } //会员痕迹 $member_trace_data = array('member_id' => $member_id, 'member_name' => $member_name ? $member_name : $member_info['member_name'], 'content_id' => $member_id, 'title' => $member_name ? $member_name : $member_info['member_name'], 'type' => 'editmember', 'op_type' => '修改会员资料', 'appid' => $this->user['appid'], 'appname' => $this->user['display_name'], 'create_time' => TIMENOW, 'ip' => hg_getip(), 'device_token' => $device_token, 'udid' => $udid); $this->mMember->member_trace_create($member_trace_data); $return = array('member_id' => $member_id, 'member_name' => !$member_name ? $member_info['member_name'] : $member_name, 'nick_name' => !$nick_name ? $member_info['nick_name'] : $nick_name, 'type' => $member_info['type'], 'avatar' => !$_avatar ? $member_info['avatar'] : $_avatar, 'access_token' => $this->user['token'], 'update_avatar' => $avatar ? 1 : 0, 'copywriting_credit' => $copywriting_credit, 'background' => $_background ? $_background : array(), 'email' => $email ? $email : ''); if (isset($this->input['signature'])) { $return['signature'] = $signature; } //获取扩展信息 if ($app_id) { $extension = $this->getExtensionInfo($member_id, $app_id); $return['extension'] = $extension; } //获取会员基本信息返回 $condition = ''; $condition = " AND m.member_id = '" . $member_id . "' AND mb.is_primary=1"; $field = 'm.member_id , m.member_name, m.signature, m.email,m.mobile, mb.background, m.salt, m.avatar, m.type,mb.nick_name'; $memberBaseInfo = $this->mMember->get_member_info($condition, $field, ' LEFT JOIN ' . DB_PREFIX . 'member_bind as mb ON mb.member_id = m.member_id'); if (!empty($memberBaseInfo[0])) { foreach ($memberBaseInfo[0] as $k => $v) { $return[$k] = $v; } } if ($this->input['version'] == CLIENT_VERSION) { //头像 if ($this->input['m_avatar']) { $return = $return['avatar']; } //昵称 if ($this->input['m_name']) { if ($this->input['appid'] == 7 && $this->input['appkey'] == 'upnKAycZKVw4D7QSXH7D8uFrFOpRQyXb') { $return = 'success'; } else { $return = array('nick_name' => $return['member_name'], 'update_time' => '', 'member_name' => $return['member_name'], 'member_id' => $return['member_id']); } } //密码 if ($this->input['m_password']) { $return = array('member_id' => $return['member_id']); } //邮箱 if ($this->input['m_mail'] || $this->input['m_mobile']) { $return = "success"; } } $this->addItem($return); $this->output(); }