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.'" onerror="this.onerror=null;this.src=\''.$ucenterurl.'/images/noavatar_'.$size.'.gif\'" />';
}
}
如何设置 $_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[0]] = $value; break;
case 2: $_G[$k[0]][$k[1]] = $value; break;
case 3: $_G[$k[0]][$k[1]][$k[2]] = $value; break;
case 4: $_G[$k[0]][$k[1]][$k[2]][$k[3]] = $value; break;
case 5: $_G[$k[0]][$k[1]][$k[2]][$k[3]][$k[4]] =$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[0]]) ? $_G[$k[0]] : null; break;
case 2: return isset($_G[$k[0]][$k[1]]) ? $_G[$k[0]][$k[1]] : null; break;
case 3: return isset($_G[$k[0]][$k[1]][$k[2]]) ? $_G[$k[0]][$k[1]][$k[2]] : null; break;
case 4: return isset($_G[$k[0]][$k[1]][$k[2]][$k[3]]) ? $_G[$k[0]][$k[1]][$k[2]][$k[3]] : null; break;
case 5: return isset($_G[$k[0]][$k[1]][$k[2]][$k[3]][$k[4]]) ? $_G[$k[0]][$k[1]][$k[2]][$k[3]][$k[4]] : null; break;
}
return null;
}
还没有评论,来说两句吧...