Example #1
0
 public function detail()
 {
     $is_private = false;
     //是否允许显示隐私信息
     if ($this->input['member_id']) {
         $field = 'm.member_id,m.guid,m.member_name,m.signature,m.type,m.type_name,m.gid,m.gradeid,m.groupexpiry,m.avatar,m.credits,m.status,m.isVerify,m.appid,m.appname,m.create_time,m.update_time,m.last_login_time,m.final_login_time,mb.nick_name,g.name as groupname,g.starnum,g.usernamecolor,g.icon as groupicon';
         $condition = " AND m.member_id = " . intval($this->input['member_id']);
     } else {
         if ($this->input['guid']) {
             $field = 'm.member_id,m.guid,m.member_name,m.signature,m.type,m.type_name,m.gid,m.gradeid,m.groupexpiry,m.avatar,m.credits,m.status,m.isVerify,m.appid,m.appname,m.create_time,m.update_time,mb.nick_name,g.name as groupname,g.starnum,g.usernamecolor,g.icon as groupicon';
             $condition = " AND m.guid = '" . trim($this->input['guid']) . "'";
         } else {
             if ($this->user['user_id']) {
                 $field = 'm.*,g.name as groupname,g.starnum,g.usernamecolor,g.icon as groupicon';
                 $is_private = true;
                 //是否只可以取隐私数据
                 $condition = " AND m.member_id = " . intval($this->user['user_id']);
             } else {
                 $this->errorOutput(NO_MEMBER_ID);
             }
         }
     }
     //会员信息
     $leftjoin = '';
     if (!$is_private) {
         $leftjoin = ' LEFT JOIN ' . DB_PREFIX . 'member_bind as mb ON mb.member_id = m.member_id';
     }
     $leftjoin .= ' LEFT JOIN ' . DB_PREFIX . 'group as g ON m.gid=g.id';
     $member = $this->mMember->get_member_info($condition, $field, $leftjoin);
     $member = $member[0];
     if (empty($member)) {
         $this->errorOutput(NO_MEMBER);
     }
     $member_id = $member['member_id'];
     // 积分信息
     $credits = $this->Members->membercredit($member_id, $is_on = 1, true, true);
     $member['credit'] = $credits[$member_id];
     $this->Members->setMemberId($member_id);
     $gradeInfo = $this->Members->getMemberGrade(array($member['gradeid']), $member['credit']);
     if (is_array($gradeInfo)) {
         $member = array_merge($member, $gradeInfo);
     }
     if (empty($member['groupname'])) {
         $group_info = $this->Members->updategroup($member_id, 0);
         if ($group_info && is_array($group_info)) {
             foreach ($group_info as $key => $val) {
                 $member[$key] = $val;
             }
         }
     }
     //获取勋章信息
     $member_medal = $this->Members->get_member_medal(array($member_id), $field = 'member_id,medalid,expiration', 2);
     $medal_info = $this->Members->get_medal(array_keys($member_medal), 'id,name,image,brief');
     $member = $this->Members->make_medal(array($member_id => $member), $medal_info, $member_medal, false);
     //绑定信息
     //星星图标数据开始
     $staricon = $this->Members->staricon();
     $member['showstar'] = $this->Members->showstar($member['starnum'], $staricon);
     unset($member['starnum']);
     //星星图标数据结束
     //获取用户签到信息
     include CUR_CONF_PATH . 'lib/member_sign.class.php';
     $Osign = new sign();
     $member['isSign'] = $Osign->getIsSign($member_id);
     //获取用户签到信息结束
     if ($is_private) {
         $condition = " AND mb.member_id = " . $member_id;
         $bind = $this->mMember->get_bind_info($condition);
         $blacklist = $this->Members->blacklist($member_id);
         $purview = $this->Members->showpurview($member['gid']);
         $is_exist_password = trim($member['password']) ? 1 : 0;
         unset($member['password'], $member['salt']);
     }
     $extension = array();
     if ($member_id) {
         //扩展信息
         $condition = " AND member_id = " . $member_id;
         $member_info = $this->mMemberInfo->show($condition);
         //可以根据分类id和分类字段分别查询,同时传值只有一个有效,分类id具有更高优先级
         $condition = '';
         //根据分类id查询
         if (isset($this->input['extension_sort_id']) && !empty($this->input['extension_sort_id'])) {
             $condition = " AND field.extension_sort_id IN (" . trim($this->input['extension_sort_id']) . ")";
         }
         //根据分类字段查询
         if (empty($condition)) {
             if (isset($this->input['extension_sort']) && !empty($this->input['extension_sort'])) {
                 $extension_sort = trim($this->input['extension_sort']);
                 $condition = " AND sort.extension_sort IN ('" . $extension_sort . "')";
             }
         }
         if (intval($this->input['app_id'])) {
             $extension = $this->mMemberInfo->extendDataProcessByApp($member_info, 1, $this->input['app_id']);
         } else {
             $extension = $this->mMemberInfo->extendDataProcess($member_info, 1, $condition);
         }
     }
     $return = $member;
     if ($is_private) {
         $return['bind'] = $bind;
     }
     if ($is_private) {
         //是否绑定手机
         if ($bind) {
             $this->mMember->ExportbindData($bind, $return);
         }
         if (!$return['nick_name']) {
             $return['nick_name'] = $return['member_name'];
         }
         $return['nick_name'] = hg_hide_mobile($return['nick_name']);
         $return['mobile'] = $member['mobile'] ? $member['mobile'] : $return['mobile'];
         $return['email'] = $member['email'] ? $member['email'] : $return['email'];
         $return['is_exist_password'] = $is_exist_password;
         $return['blacklist'] = $blacklist[$member['member_id']];
         $return['purview'] = $purview[$member['gid']] ? $purview[$member['gid']] : array();
         $return['isComplete'] = isUserComplete($member['type']);
         $return['profilePercent'] = $this->mMember->profilePercentComplete($return);
     }
     //
     if ($this->input['version'] == CLIENT_VERSION) {
         $return = array('nick_name' => $return['member_name'], 'member_id' => $return['member_id'], 'avatar' => $return['avatar'] ? $return['avatar'] : array('host' => "", 'dir' => "", 'filepath' => "", 'filename' => ""));
         if ($is_private) {
             $return['token'] = $this->input['access_token'];
             $return['email'] = $return['email'];
             $return['is_exist_password'] = $is_exist_password;
             $return['is_exist_email'] = $return['email'] ? 1 : 0;
             $return['mobile'] = $return['mobile'];
         }
     }
     $return['extension'] = $extension ? $extension : array();
     //查询好友关系
     if ($this->input['member_id']) {
         $friend_ship = $this->getFriendship($member_id);
         $return['friendship'] = $friend_ship;
     }
     //
     $this->addItem($return);
     $this->output();
 }
Example #2
0
 /**
  * 验证会员
  * $member_name 会员名
  * $password 密码
  * $type 登陆类型
  * $appid
  * $appkey
  */
 public function verify_member()
 {
     try {
         $encrypt = $this->input['encrypt'] ? intval($this->input['encrypt']) : 0;
         $platform_id = trim($this->input['platform_id']);
         $password = $encrypt ? passport_decrypt(trim($this->input['password']), CUSTOM_APPKEY) : trim($this->input['password']);
         $type = trim($this->input['type']);
         $_type = trim($this->input['_type']);
         //防止本地M2O同步至UC后,再次验证本地密码BUG。
         $identifierUserSystem = new identifierUserSystem();
         $identifier = $identifierUserSystem->setIdentifier((int) $this->input['identifier'])->checkIdentifier();
         //多用户系统
         $ip = hg_getip();
         $need_password_type = array('shouji', 'm2o', 'email');
         $appid = intval($this->input['appid']);
         $appkey = trim($this->input['appkey']);
         //会员名
         if (!$platform_id) {
             $this->errorOutput(NO_MEMBER_NAME);
         }
         //密码
         if (!$password && in_array($type, $need_password_type)) {
             $this->errorOutput(NO_PASSWORD);
         }
         $condition = " AND mb.platform_id = '" . $platform_id . "' AND mb.type = '" . $type . "' AND mb.identifier = '" . $identifier . '\'';
         $_bind = $this->mMember->get_bind_info($condition);
         $bind = array();
         if (is_array($_bind) && count($_bind) > 1) {
             foreach ($_bind as $v) {
                 if ($v['inuc'] > 0) {
                     $bind = $v;
                     break;
                 }
             }
         } elseif (is_array($_bind)) {
             $bind = $_bind[0];
         }
         $member_id = intval($bind['member_id']);
         $platform_id = $bind['platform_id'];
         $condition = " AND m.member_id = " . $member_id;
         $fileds_array = array('member_id', 'member_name', 'password', 'salt', 'avatar', 'type', 'type_name', 'gid', 'gradeid', 'guid', 'signature', 'mobile', 'email', 'isVerify', 'identifier', 'last_login_device');
         $fields = implode(',', $fileds_array);
         $member_info = $this->mMember->get_member_info($condition, $fields);
         $member_info = $member_info[0];
         if (empty($member_info)) {
             $this->errorOutput(LOGIN_NOMEMBER_ERROR);
         }
         $isComplete = isUserComplete($member_info['type']);
         if (in_array($type, $need_password_type) && $_type != 'uc') {
             $encrypt_num = intval($this->input['encrypt_num']);
             if ($encrypt_num == 1) {
                 $md5_password = md5($password . $member_info['salt']);
             } else {
                 $md5_password = md5(md5($password) . $member_info['salt']);
             }
             if ($md5_password != $member_info['password']) {
                 $this->errorOutput(PASSWORD_ERROR);
             }
         } else {
             //验证新浪微博、腾讯微博、QQ、人人、豆瓣 等 用户信息
             //暂时不作处理
         }
         //积分规则调用
         $credit_rules = $this->Members->credits_rule('members_login_login', $member_info['member_id'], $coef = 1, $update = 1, APP_UNIQUEID);
         $copywriting_credit = copywriting_credit(array($credit_rules));
         $check_Bind = new check_Bind();
         $inuc = $check_Bind->check_uc($member_id, $type);
         if (!$inuc && ($_type == 'm2o' || $type == 'm2o') && $member_info['email']) {
             if ($inuc = $this->mMember->syncUcRegister($member_id, $member_info['member_name'], $password, $member_info['email'])) {
                 $platform_id = $inuc;
             }
         }
         $return = array('user_id' => $member_info['member_id'], 'platform_id' => (string) $platform_id, 'inuc' => $inuc, 'user_name' => $member_info['member_name'], 'nick_name' => $bind['nick_name'], 'type' => $member_info['type'], 'avatar' => $member_info['avatar'], 'copywriting' => '登录成功', 'copywriting_credit' => $copywriting_credit, 'isVerify' => $member_info['isVerify'], 'identifier' => $member_info['identifier'], 'isComplete' => $isComplete);
         $return = array_merge($return, $member_info);
         $this->addItem($return);
         $this->output();
     } catch (Exception $e) {
         $this->errorOutput($e->getMessage(), $e->getCode());
     }
 }