private function initUser()
{
$GLOBALS['time_run_detail']['action_init_user_start'] = microtime(true);
// 邀请跳转
if (isset($_GET['invite']) && APP_NAME . '/' . MODULE_NAME != 'public/Register') {
redirect(U('public/Register/index', array('invite' => t($_GET['invite']))));
exit;
}
// 验证登陆
if (intval($_SESSION['mid']) == 0 && model('Passport')->needLogin()) {
if (defined('LOGIN_URL')) {
redirect(LOGIN_URL);
} else {
if (APP_NAME == 'admin') {
if (MODULE_NAME != 'Public' && !model('Passport')->checkAdminLogin()) {
redirect(U('admin/Public/login'));
exit;
}
} else {
redirect(U('public/Passport/login'));
exit;
}
}
}
$GLOBALS['time_run_detail']['action_init_user_login'] = microtime(true);
//判断登录有效期
$activeTime = cookie('TSV4_ACTIVE_TIME');
if (C('COOKIE_EXPIRE') && $activeTime < time() && APP_NAME != 'admin' && ACTION_NAME != 'login') {
unset($_SESSION['mid']);
cookie('TSV4_LOGGED_USER', null);
$this->assign('jumpUrl', U('public/Passport/login'));
$this->error(L('PUBLIC_TIME_OUT'));
exit;
} else {
cookie('TSV4_ACTIVE_TIME', time() + C('COOKIE_EXPIRE'));
}
//当前登录者uid
$GLOBALS['ts']['mid'] = $this->mid = intval($_SESSION['mid']);
//当前访问对象的uid
$GLOBALS['ts']['uid'] = $this->uid = intval($_REQUEST['uid'] == 0 ? $this->mid : $_REQUEST['uid']);
// 验证站点访问权限
// 验证应用访问权限
// 获取用户基本资料
if ($this->mid > 0 || $this->uid > 0) {
$GLOBALS['ts']['user'] = !empty($this->mid) ? $this->user = model('User')->getUserInfo($this->mid) : array();
if ($this->mid != $this->uid) {
$GLOBALS['ts']['_user'] = !empty($this->uid) ? model('User')->getUserInfo($this->uid) : array();
} else {
$GLOBALS['ts']['_user'] = $GLOBALS['ts']['user'];
}
$GLOBALS['time_run_detail']['action_init_user_info'] = microtime(true);
// 未初始化
$module_arr = array('Register' => 1, 'Passport' => 1, 'Account' => 1);
if (0 < $this->mid && 0 == $this->user['is_init'] && APP_NAME != 'admin' && !isset($module_arr[MODULE_NAME])) {
// 注册完成后就开启此功能
if ($this->user['is_active'] == '0') {
U('public/Register/waitForActivation', 'uid=' . $this->mid, true);
} else {
$init_config = model('Xdata')->get('admin_Config:register');
$user_tags = D('app_tag')->where('row_id=' . $this->mid)->findAll();
//若开启资料完善
if ($init_config['personal_open']) {
if (in_array('face', $init_config['personal_required']) && !model('Avatar')->hasAvatar()) {
U('public/Register/step2', '', true);
} elseif (in_array('location', $init_config['personal_required']) && $GLOBALS['ts']['_user']['location'] == '') {
U('public/Register/step3', '', true);
} elseif (in_array('intro', $init_config['personal_required']) && $GLOBALS['ts']['_user']['intro'] == '') {
U('public/Register/step3', '', true);
} elseif (in_array('tag', $init_config['personal_required']) && !$user_tags) {
U('public/Register/step3', '', true);
}
}
/*
if ($init_config ['photo_open']) {
U ( 'public/Register/step2', '', true );
}
if ($init_config ['tag_open']) {
U ( 'public/Register/step3', '', true );
}*/
// 添加双向关注用户
$registerConfig = model('Xdata')->get('admin_Config:register');
$eachFollow = $registerConfig['each_follow'];
if (!empty($eachFollow)) {
model('Follow')->eachDoFollow($this->mid, $eachFollow);
}
// 添加默认关注用户
$defaultFollow = $registerConfig['default_follow'];
$defaultFollow = array_diff(explode(',', $defaultFollow), explode(',', $eachFollow));
if (!empty($defaultFollow)) {
model('Follow')->bulkDoFollow($this->mid, $defaultFollow);
}
model('Register')->overUserInit($GLOBALS['ts']['mid']);
U('square/Index/index', '', true);
}
}
$GLOBALS['time_run_detail']['action_init_user_inition'] = microtime(true);
if ($this->uid > 0 && $this->initUserData) {
//当前用户的所有已添加的应用
$GLOBALS['ts']['_userApp'] = $userApp = model('UserApp')->getUserApp($this->uid);
$GLOBALS['time_run_detail']['action_init_user_data_app'] = microtime(true);
//当前用户的统计数据
$GLOBALS['ts']['_userData'] = $userData = model('UserData')->getUserData($this->uid);
$GLOBALS['time_run_detail']['action_init_user_data_data'] = microtime(true);
$userCredit = model('Credit')->getUserCredit($this->uid);
$GLOBALS['time_run_detail']['action_init_user_data_credit'] = microtime(true);
$this->assign('userCredit', $userCredit);
$this->assign('_userData', $userData);
$this->assign('_userApp', $userApp);
}
$GLOBALS['time_run_detail']['action_init_user_data'] = microtime(true);
$GLOBALS['time_run_detail']['action_init_user_disable'] = microtime(true);
}
$this->user = EmojiFormat::de($this->user);
$this->assign('mid', $this->mid);
//登录者
$this->assign('uid', $this->uid);
//访问对象
$this->assign('user', $this->user);
//当前登陆的人
Addons::hook('core_filter_init_user');
$GLOBALS['time_run_detail']['action_init_user_end'] = microtime(true);
return true;
}