您当前的位置:首页 > 网站建设笔记 >

discuz _init_user() _init_guest()方法代码注释

0
<?php
private function _init_user(){
	if($this->init_user){
		if($auth=getglobal('auth','cookie')){
			$auth=daddslashes(explode("\t", authcode($auth,'DECODE')));
		}
		list($discuz_pw,$discuz_uid)=empty($auth) || count($auth) < 2 ? array('','') : $auth;
		if($discuz_uid)
		{
			//调用getuserbyuid函数得到会员信息, 第二个参数如果是1并且在common_member(用户主表)表中没有该会员就去common_member_archive表中寻找, 否则直接去common_member表中查找
			$user=getuserbyuid($discuz_uid,1);
		}
		if(!empty($user) && $user['password']==$discuz_pw)
		{
			//如果$user数组中有_inarchive元素并且不等于NULL就将当前查到的用户信息插入到用户表common_member表中
			if(isset($user['_inarchive'])){
				C::t('common_member_archive')->move_to_master($discuz_uid);
			}
			//更新$_G["member"]将用户信息压入模板变量中
			$this->var['member']=$user;
		}else{
			//没有登录
			$user=array();
			//设置没登陆的游客的信息
			$this->_init_guest();
		}
		//用户组有效期
		if($user && $user['groupexpiry']>0 && $user['groupexpiry']<TIMESTAMP)
		{
			$memberfieldforum=C::t('common_member_field_forum')->fetch($discuz_uid);
			$groupterms=dunserialize($memberfieldforum['groupterms']);
			if(!empty($groupterms['main']))
			{
				C::t('common_member')->update($user['uid'], array('groupexpiry'=>0,'groupid'=>$groupterms['main']['groupid'],'adminid'=>$groupterms['main']['adminid']));
				$user['groupid']=$groupterms['main']['groupid'];
				$user['adminid']=$groupterms['main']['adminid'];
				unset($groupterms['main'], $groupterms['ext'][$this->var['member']['groupid']]);
				$this->var['member']=$user;
				C::t('common_member_field_forum')->update($discuz_uid, array('groupterms'=>serialize($groupterms)));
			}
			elseif((getgpc('mod')!='spacecp' || CURSCRIPT!='home') && CURSCRIPT!='member')
			{
				dheader('location:home.php?mod=spacecp&ac=usergroup&do=expiry');
			}
		}
		if($user && $user['freeze'] && (getgpc('mod')!='spacecp' && getgpc('mod')!='misc' || CURSCRIPT!='home') && CURSCRIPT!='member' && CURSCRIPT!='misc')
		{
			dheader('location:home.php?mod=spacecp&ac=profile&op=password');
		}
		$this->cachelist[]='usergroup_'.$this->var['member']['groupid'];
		if($user && $user['adminid'] > 0 && $user['groupid']!=$user['adminid'])
		{
			$this->cachelist[]='admingroup_'.$this->var['member']['adminid'];
		}
	}
	else
	{
		$this->_init_guest();
	}
	setglobal('groupid',getglobal('groupid','member'));
	//当访问http://bbs.pinku.com/forum.php时,未登录状态加载的缓存
	//array('announcements','onlinelist','forumlinks','heats','historyposts','onlinerecord','userstats','diytemplatenameforum','plugin','pluginlanguage_system','setting','style_default','cronnextrun','usergroup_7',)

	//当访问http://bbs.pinku.com/plugin.php?id=htt_qqlogin:qqoauth,未登录状态加载的缓存
	//array('plugin','diytemplatename','setting','style_default','cronnextrun','usergroup_7',)

	//加载当前的用户组缓存列表信息
	!empty($this->cachelist) && loadcache($this->cachelist);

	//未登录状态时打印$this->var['member']
	//array('uid'=>0,'username'=>'','adminid'=>0,'groupid'=>7,'credits'=>0,'timeoffset'=>9999,)

	if($this->var['member'] && $this->var['group']['radminid']==0 && $this->var['member']['adminid']>0 && $this->var['member']['groupid']!=$this->var['member']['adminid'] && !empty($this->var['cache']['admingroup_'.$this->var['member']['adminid']]))
	{
		$this->var['group']=array_merge($this->var['group'], $this->var['cache']['admingroup_'.$this->var['member']['adminid']]);
	}
	if($this->var['group']['allowmakehtml'] && isset($_GET['_makehtml']))
	{
		$this->var['makehtml']=1;
		$this->_init_guest();
		loadcache(array('usergroup_7'));
		$this->var['group']=$this->var['cache']['usergroup_7'];
		unset($this->var['inajax']);
	}
	if(empty($this->var['cookie']['lastvisit']))
	{
		$this->var['member']['lastvisit']=TIMESTAMP-3600;
		dsetcookie('lastvisit', TIMESTAMP-3600, 86400*30);
	}
	else
	{
		$this->var['member']['lastvisit']=$this->var['cookie']['lastvisit'];
	}
	setglobal('uid', getglobal('uid','member'));
	setglobal('username', getglobal('username','member'));
	setglobal('adminid', getglobal('adminid','member'));
	setglobal('groupid', getglobal('groupid','member'));
	if($this->var['member']['newprompt'])
	{
		$this->var['member']['newprompt_num']=C::t('common_member_newprompt')->fetch($this->var['member']['uid']);
		$this->var['member']['newprompt_num']=unserialize($this->var['member']['newprompt_num']['data']);
		$this->var['member']['category_num']=helper_notification::get_categorynum($this->var['member']['newprompt_num']);
	}
}
private function _init_guest(){
	$username="";
	$groupid=7;
	if(!empty($this->var["cookie"]["con_auth_hash"]) && ($openid=authcode($this->var["cookie"]["con_auth_hash"])))
	{
		$this->var["connectguest"]=1;
		$username="QQ_".substr($openid,-6);
		$this->var["setting"]["cacheindexlife"]=0;//缓存论坛首页有效期,设置论坛首页缓存更新的时间,单位为秒,0为关闭(此处关闭以后,缓存系数将不再起作用),建议设置为900。此功能只针对游客
		$this->var["setting"]["cachethreadlife"]=0;//缓存帖子有效期,设置帖子页面缓存更新的时间,单位为秒,0 为关闭。请根据实际情况进行调整,建议设置为900。另外,请通过编辑论坛来指定帖子页面缓存系数
		$groupid=$this->var["setting"]["connect"]["guest_groupid"] ? $this->var["setting"]["connect"]["guest_groupid"] : $this->var["setting"]["newusergroupid"];
	}
	setglobal('member',array('uid'=>0,'username'=>$username,'adminid'=>0,'groupid'=>$groupid,'credits'=>0,'timeoffset'=>9999));
}
?>

建站咨询

在线咨询真诚为您提供专业解答服务

咨询热线

137 1731 25507×24小时服务热线

微信交流

二维码终于等到你,还好我没放弃
返回顶部