asp老师 发表于 2015-1-15 13:29:05

discuz X1.5 取得论坛的头像

discuz X1.5 取得论坛的头像的程序分析


/**
   * 头像方法
   * @param string $uid 用户ID
   * @param string $size 头像显示尺寸
   * @param string $ucenterurl 删除条目数
   * @param boolean $returnsrc 是否删除表缓存
* @param boolean $real 是否删除表缓存
* @param boolean $static 是否删除表缓存
   */


// \source\function\function_core.php    340行
function avatar($uid, $size = 'middle', $returnsrc = FALSE, $real = FALSE, $static = FALSE, $ucenterurl = '')
{


global $_G;
// \source\class\class_core.php
/*
class discuz_core {


// 134行处
//全局变量 $_G初始化定义
global $_G;
$_G = array(


//论坛全局定义


//UCHome全局定义


//portal 全局定义


//系统参数
//相对主目录的相对地址及文件名


//基本脚本名,每个功能脚本首页前都会定义


);


}


*/


// function setglobal
($key , $value, $group = null)   \source\function\function_core.php    70行    增加设置全局变量


static $staticavatar;
if($staticavatar === null) {
$staticavatar = $_G['setting']['avatarmethod'];
}
$ucenterurl = empty($ucenterurl) ? $_G['setting']['ucenterurl'] : $ucenterurl;
$size = in_array($size, array('big', 'middle', 'small')) ? $size : 'middle';
$uid = abs(intval($uid));
if(!$staticavatar && !$static)
{
// 设置使用 动态取头像
// http://bbs.eic.org.cn/uc_server/avatar.php?uid=1&size=middle
return $returnsrc ? $ucenterurl.'/avatar.php?uid='.$uid.'&size='.$size : '<img src="'.$ucenterurl.'/avatar.php?uid='.$uid.'&size='.$size.($real ? '&type=real' : '').'" />';
}
else
{
// 设置使用静态头像地址 通过$uid做一些规则
$uid = sprintf("%09d", $uid); // 格式化为9位的数字
$dir1 = substr($uid, 0, 3);
$dir2 = substr($uid, 3, 2);
$dir3 = substr($uid, 5, 2);
$file = $ucenterurl.'/data/avatar/'.$dir1.'/'.$dir2.'/'.$dir3.'/'.substr($uid, -2).($real ? '_real' : '').'_avatar_'.$size.'.jpg';
// http://bbs.eic.org.cn/uc_server/ ... 1_avatar_middle.jpg
return $returnsrc ? $file : '<img src="'.$file.'" />';
}
}














如何设置 $_G的呢?




// \source\function\function_core.php    70行
//设置全局变量
function setglobal($key , $value, $group = null) {
global $_G;
$k = explode('/', $group === null ? $key : $group.'/'.$key);
switch (count($k)) {
case 1: $_G[$k] = $value; break;
case 2: $_G[$k][$k] = $value; break;
case 3: $_G[$k][$k][$k] = $value; break;
case 4: $_G[$k][$k][$k][$k] = $value; break;
case 5: $_G[$k][$k][$k][$k][$k] =$value; break;
}
return true;
}


function getglobal($key, $group = null) {
global $_G;
$k = explode('/', $group === null ? $key : $group.'/'.$key);
switch (count($k)) {
case 1: return isset($_G[$k]) ? $_G[$k] : null; break;
case 2: return isset($_G[$k][$k]) ? $_G[$k][$k] : null; break;
case 3: return isset($_G[$k][$k][$k]) ? $_G[$k][$k][$k] : null; break;
case 4: return isset($_G[$k][$k][$k][$k]) ? $_G[$k][$k][$k][$k] : null; break;
case 5: return isset($_G[$k][$k][$k][$k][$k]) ? $_G[$k][$k][$k][$k][$k] : null; break;
}
return null;
}


页: [1]
查看完整版本: discuz X1.5 取得论坛的头像