- <?php
- /**
- *[Discuz!](C)2001-2099ComsenzInc.
- *ThisisNOTafreeware,useissubjecttolicenseterms
- *论坛模块通用函数集合
- *$Id:function_forum.php247232011-10-0912:50:14Zyangli$
- */
- if(!defined(‘IN_DISCUZ‘)){
- exit(‘AccessDenied‘);
- }
- /**
- *
- *@param$uid-用户ID
- *@param$size-头像大小small/middle/big
- *@param$returnsrc-是否返回头像地址
- */
- functiondiscuz_uc_avatar($uid,$size=‘‘,$returnsrc=FALSE){
- global$_G;
- returnavatar($uid,$size,$returnsrc,FALSE,$_G[‘setting‘][‘avatarmethod‘],$_G[‘setting‘][‘ucenterurl‘]);
- }
- /**
- *论坛附件删除
- *@param$attach-单一附件数据
- */
- functiondunlink($attach){
- global$_G;
- $filename=$attach[‘attachment‘];
- $havethumb=$attach[‘thumb‘];
- $remote=$attach[‘remote‘];
- if($remote){
- ftpcmd(‘delete‘,$_G[‘setting‘][‘ftp‘][‘attachdir‘].‘/forum/‘.$filename);
- $havethumb&&ftpcmd(‘delete‘,$_G[‘setting‘][‘ftp‘][‘attachdir‘].‘/forum/‘.getimgthumbname($filename));
- }else{
- @unlink($_G[‘setting‘][‘attachdir‘].‘/forum/‘.$filename);
- $havethumb&&@unlink($_G[‘setting‘][‘attachdir‘].‘/forum/‘.getimgthumbname($filename));
- }
- if($attach[‘aid‘]){
- @unlink($_G[‘setting‘][‘attachdir‘].‘image/‘.$attach[‘aid‘].‘_140_140.jpg‘);
- }
- }
- /**
- 权限表达式
- *@param$formula-权限表达式
- */
- functionformulaperm($formula){
- global$_G;
- $formula=unserialize($formula);
- $medalperm=$formula[‘medal‘];
- $permusers=$formula[‘users‘];
- $permmessage=$formula[‘message‘];
- if($_G[‘setting‘][‘medalstatus‘]&&$medalperm){
- $exists=1;
- $_G[‘forum_formulamessage‘]=‘‘;
- $medalpermc=$medalperm;
- if($_G[‘uid‘]){
- $medals=explode("\t",DB::result_first("SELECTmedalsFROM".DB::table(‘common_member_field_forum‘)."WHEREuid=‘$_G[uid]‘"));
- foreach($medalpermas$k=>$medal){
- foreach($medalsas$r){
- list($medalid)=explode("|",$r);
- if($medalid==$medal){
- $exists=0;
- unset($medalpermc[$k]);
- }
- }
- }
- }else{
- $exists=0;
- }
- if($medalpermc){
- loadcache(‘medals‘);
- foreach($medalpermcas$medal){
- if($_G[‘cache‘][‘medals‘][$medal]){
- $_G[‘forum_formulamessage‘].=‘<imgsrc="‘.STATICURL.‘image/common/‘.$_G[‘cache‘][‘medals‘][$medal][‘image‘].‘"style="vertical-align:middle;"/>‘.$_G[‘cache‘][‘medals‘][$medal][‘name‘].‘‘;
- }
- }
- showmessage(‘forum_permforum_nomedal‘,NULL,array(‘forum_permforum_nomedal‘=>$_G[‘forum_formulamessage‘]),array(‘login‘=>1));
- }
- }
- $formulatext=$formula[0];
- $formula=$formula[1];
- if($_G[‘adminid‘]==1||$_G[‘forum‘][‘ismoderator‘]||in_array($_G[‘groupid‘],explode("\t",$_G[‘forum‘][‘spviewperm‘]))){
- returnFALSE;
- }
- if($permusers){
- $permusers=str_replace(array("\r\n","\r"),array("\n","\n"),$permusers);
- $permusers=explode("\n",trim($permusers));
- if(!in_array($_G[‘member‘][‘username‘],$permusers)){
- showmessage(‘forum_permforum_disallow‘,NULL,array(),array(‘login‘=>1));
- }
- }
- if(!$formula){
- returnFALSE;
- }
- if(strexists($formula,‘$memberformula[‘)){
- preg_match_all("/\\\$memberformula′(\w+?)′/",$formula,$a);
- $fields=$profilefields=array();
- $mfadd=array();
- foreach($a[1]as$field){
- switch($field){
- case‘regdate‘:
- $formula=preg_replace("/\{(\d{4})\-(\d{1,2})\-(\d{1,2})\}/e","‘\‘\\1-‘.sprintf(‘%02d‘,‘\\2‘).‘-‘.sprintf(‘%02d‘,‘\\3‘).‘\‘‘",$formula);
- case‘regday‘:
- $fields[]=‘m.regdate‘;break;
- case‘regip‘:
- case‘lastip‘:
- $formula=preg_replace("/\{([\d\.]+?)\}/","‘\\1‘",$formula);
- $formula=preg_replace(‘/(\$memberformula\‘(regip|lastip)\‘)\s*=+\s*\‘([\d\.]+?)\‘/‘,"strpos(\\1,‘\\3‘)===0",$formula);
- case‘buyercredit‘:
- case‘sellercredit‘:
- $mfadd[‘ms‘]="LEFTJOIN".DB::table(‘common_member_status‘)."msONm.uid=ms.uid";
- $fields[]=‘ms.‘.$field;break;
- casesubstr($field,0,5)==‘field‘:
- $mfadd[‘mp‘]="LEFTJOIN".DB::table(‘common_member_profile‘)."mpONm.uid=mp.uid";
- $fields[]=‘mp.field‘.intval(substr($field,5));
- $profilefields[]=$field;break;
- }
- }
- $memberformula=array();
- if($_G[‘uid‘]){
- $memberformula=DB::fetch_first("SELECT".implode(‘,‘,$fields)."FROM".DB::table(‘common_member‘)."m".implode(‘‘,$mfadd)."WHEREm.uid=‘$_G[uid]‘");
- if(in_array(‘regday‘,$a[1])){
- $memberformula[‘regday‘]=intval((TIMESTAMP-$memberformula[‘regdate‘])/86400);
- }
- if(in_array(‘regdate‘,$a[1])){
- $memberformula[‘regdate‘]=date(‘Y-m-d‘,$memberformula[‘regdate‘]);
- }
- $memberformula[‘lastip‘]=$memberformula[‘lastip‘]?$memberformula[‘lastip‘]:$_G[‘clientip‘];
- }else{
- if(isset($memberformula[‘regip‘])){
- $memberformula[‘regip‘]=$_G[‘clientip‘];
- }
- if(isset($memberformula[‘lastip‘])){
- $memberformula[‘lastip‘]=$_G[‘clientip‘];
- }
- }
- }
- @eval("\$formulaperm=($formula)?TRUE:FALSE;");
- if(!$formulaperm){
- if(!$permmessage){
- $language=lang(‘forum/misc‘);
- $search=array(‘regdate‘,‘regday‘,‘regip‘,‘lastip‘,‘buyercredit‘,‘sellercredit‘,‘digestposts‘,‘posts‘,‘threads‘,‘oltime‘);
- $replace=array($language[‘formulaperm_regdate‘],$language[‘formulaperm_regday‘],$language[‘formulaperm_regip‘],$language[‘formulaperm_lastip‘],$language[‘formulaperm_buyercredit‘],$language[‘formulaperm_sellercredit‘],$language[‘formulaperm_digestposts‘],$language[‘formulaperm_posts‘],$language[‘formulaperm_threads‘],$language[‘formulaperm_oltime‘]);
- for($i=1;$i<=8;$i++){
- $search[]=‘extcredits‘.$i;
- $replace[]=$_G[‘setting‘][‘extcredits‘][$i][‘title‘]?$_G[‘setting‘][‘extcredits‘][$i][‘title‘]:$language[‘formulaperm_extcredits‘].$i;
- }
- if($profilefields){
- loadcache(array(‘fields_required‘,‘fields_optional‘));
- foreach($profilefieldsas$profilefield){
- $search[]=$profilefield;
- $replace[]=!empty($_G[‘cache‘][‘fields_optional‘][‘field_‘.$profilefield])?$_G[‘cache‘][‘fields_optional‘][‘field_‘.$profilefield][‘title‘]:$_G[‘cache‘][‘fields_required‘][‘field_‘.$profilefield][‘title‘];
- }
- }
- $i=0;$_G[‘forum_usermsg‘]=‘‘;
- foreach($searchas$s){
- if(in_array($s,array(‘digestposts‘,‘posts‘,‘threads‘,‘oltime‘,‘extcredits1‘,‘extcredits2‘,‘extcredits3‘,‘extcredits4‘,‘extcredits5‘,‘extcredits6‘,‘extcredits7‘,‘extcredits8‘))){
- $_G[‘forum_usermsg‘].=strexists($formulatext,$s)?‘<br/>‘.$replace[$i].‘:‘.(@eval(‘returnintval(getuserprofile(\‘‘.$s.‘\‘));‘)):‘‘;
- }elseif(in_array($s,array(‘regdate‘,‘regip‘))){
- $_G[‘forum_usermsg‘].=strexists($formulatext,$s)?‘<br/>‘.$replace[$i].‘:‘.(@eval(‘return$memberformula[\‘‘.$s.‘\‘];‘)):‘‘;
- }
- $i++;
- }
- $search=array_merge($search,array(‘and‘,‘or‘,‘>=‘,‘<=‘,‘==‘));
- $replace=array_merge($replace,array(‘<b>‘.$language[‘formulaperm_and‘].‘</b>‘,‘<b>‘.$language[‘formulaperm_or‘].‘</b>‘,‘≥‘,‘≤‘,‘=‘));
- $_G[‘forum_formulamessage‘]=str_replace($search,$replace,$formulatext);
- }else{
- $_G[‘forum_formulamessage‘]=$permmessage;
- }
- if(!$permmessage){
- showmessage(‘forum_permforum_nopermission‘,NULL,array(‘formulamessage‘=>$_G[‘forum_formulamessage‘],‘usermsg‘=>$_G[‘forum_usermsg‘]),array(‘login‘=>1));
- }else{
- showmessage(‘forum_permforum_nopermission_custommsg‘,NULL,array(‘formulamessage‘=>$_G[‘forum_formulamessage‘]),array(‘login‘=>1));
- }
- }
- returnTRUE;
- }
- /**
- 勋章权限表达式
- *@param$formula-勋章权限表达式
- *@param$type-1权限验证2勋章字串
- */
- functionmedalformulaperm($formula,$type){
- global$_G;
- $formula=unserialize($formula);
- $permmessage=$formula[‘message‘];
- $formula=$formula[‘medal‘];
- if(!empty($formula[‘usergroupallow‘])&&is_array($formula[‘usergroups‘])&&!in_array($_G[‘groupid‘],$formula[‘usergroups‘])){
- loadcache(‘usergroups‘);
- $message=array();
- foreach($formula[‘usergroups‘]as$groupid){
- $message[]=$_G[‘cache‘][‘usergroups‘][$groupid][‘grouptitle‘].‘‘;
- }
- $_G[‘forum_formulamessage‘]=implode(‘,‘,$message);
- $_G[‘forum_usermsg‘]=$_G[‘cache‘][‘usergroups‘][$_G[‘groupid‘]][‘grouptitle‘];
- returnFALSE;
- }
- $formulatext=$formula[0];
- $formula=$formula[1];
- if(!$formula){
- returnFALSE;
- }
- if(strexists($formula,‘$memberformula[‘)){
- preg_match_all("/\\\$memberformula′(\w+?)′/",$formula,$a);
- $fields=$profilefields=array();
- $mfadd=array();
- foreach($a[1]as$field){
- switch($field){
- case‘regdate‘:
- $formula=preg_replace("/\{(\d{4})\-(\d{1,2})\-(\d{1,2})\}/e","‘\‘\\1-‘.sprintf(‘%02d‘,‘\\2‘).‘-‘.sprintf(‘%02d‘,‘\\3‘).‘\‘‘",$formula);
- case‘regday‘:
- $fields[]=‘m.regdate‘;break;
- case‘regip‘:
- case‘lastip‘:
- $formula=preg_replace("/\{([\d\.]+?)\}/","‘\\1‘",$formula);
- $formula=preg_replace(‘/(\$memberformula\‘(regip|lastip)\‘)\s*=+\s*\‘([\d\.]+?)\‘/‘,"strpos(\\1,‘\\3‘)===0",$formula);
- case‘buyercredit‘:
- case‘sellercredit‘:
- $mfadd[‘ms‘]="LEFTJOIN".DB::table(‘common_member_status‘)."msONm.uid=ms.uid";
- $fields[]=‘ms.‘.$field;break;
- casesubstr($field,0,5)==‘field‘:
- $mfadd[‘mp‘]="LEFTJOIN".DB::table(‘common_member_profile‘)."mpONm.uid=mp.uid";
- $fields[]=‘mp.field‘.intval(substr($field,5));
- $profilefields[]=$field;break;
- }
- }
- $memberformula=array();
- if($_G[‘uid‘]){
- $memberformula=DB::fetch_first("SELECT".implode(‘,‘,$fields)."FROM".DB::table(‘common_member‘)."m".implode(‘‘,$mfadd)."WHEREm.uid=‘$_G[uid]‘");
- if(in_array(‘regday‘,$a[1])){
- $memberformula[‘regday‘]=intval((TIMESTAMP-$memberformula[‘regdate‘])/86400);
- }
- if(in_array(‘regdate‘,$a[1])){
- $memberformula[‘regdate‘]=date(‘Y-m-d‘,$memberformula[‘regdate‘]);
- }
- $memberformula[‘lastip‘]=$memberformula[‘lastip‘]?$memberformula[‘lastip‘]:$_G[‘clientip‘];
- }else{
- if(isset($memberformula[‘regip‘])){
- $memberformula[‘regip‘]=$_G[‘clientip‘];
- }
- &nbs
【discuzX2】/source/function/function_forum.php论坛模块通用函数集合分析
发布时间:2023-09-06 01:09责任编辑:胡小海关键词:暂无标签
知识推荐
- PHP-5.3.27源码安装及nginx-fastcgi配置
- 【html】行内元素,块级元素
- html 字符实体
- PHP生成zip压缩包
- 手写服务器Httpserver
- jQuery基础应用
- 使用Google的CDN JQuery库(摘录)
- jsp注释
- 上传本地工程到远程Git仓库
- centos 7.3 yum安装 php6.6
- PHP设计模式之适配器模式
- Mvc前后端显示不同的404错误页
- dzx2.5 templatedefaultforumviewthread_node.htm代码调用解放(和我一样的菜鳥版)
- extjs define研究
- [原创]本地解决ViewPager和Webview引起的滑动冲突问题
- css-浮动
- 【Flask】 结合wtforms的文件上传表单
- Ajax发送GET和POST请求案例