修改一下头像,发现无法修改,又是写文件的问题。
首先下载api文件saestorage.class.php.
修改1:inc/functions_upload.php, 修改function remove_avatars($uid, $exclude="")为
function remove_avatars($uid, $exclude="")
{
global $mybb, $plugins;
if(defined('IN_ADMINCP'))
{
$avatarpath = $mybb->settings['avataruploadpath'];
}
else
{
$avatarpath = $mybb->settings['avataruploadpath'];
}
$file = "avatar_".$uid.".png";
if ($file != $exclude)
{
@unlink($avatarpath."/".$file);
}
$file = "avatar_".$uid.".jpg";
if ($file != $exclude)
{
@unlink($avatarpath."/".$file);
}
$file = "avatar_".$uid.".gif";
if ($file != $exclude)
{
@unlink($avatarpath."/".$file);
}
}
修改2:把所有的
if(defined('IN_ADMINCP'))
{
$avatarpath = '../'.$mybb->settings['avataruploadpath'];
$lang->load("messages", true);
}
替换成
if(defined('IN_ADMINCP'))
{
$avatarpath = $mybb->settings['avataruploadpath'];
$lang->load("messages", true);
}
在function upload_avatar($avatar=array(), $uid=0)最后加上
$ret['avatar'] = str_replace("saestor://uploads/", "", $ret['avatar']);
这是使得保存到数据库中时不包含saestor://uploads前缀,
修改3:inc/class_session.php,在function load_user($uid, $password='')中,添加如下代码
//get the real avatar url
if ($mybb->user['avatar'] != '')
{
if (stristr($mybb->user['avatar'], "://") == false)
{
require_once MYBB_ROOT."saelib/saestorage.class.php";
$s = new SaeStorage();
$mybb->user['avatar'] = $s->getUrl("uploads", $mybb->user['avatar']);
}
}
目的是获取头像在storage中的真正url位置
在inc/functions_user.php的function get_usertitle($uid="")中添加同样代码
//get the real avatar url
if ($user['avatar'] != '')
{
if (stristr($user['avatar'], "://") == false)
{
require_once MYBB_ROOT."saelib/saestorage.class.php";
$s = new SaeStorage();
$user['avatar'] = $s->getUrl("uploads", $user['avatar']);
}
}
在inc/functions_post.php的第304行后加上
if (stristr($post['avatar'], "://") == false)
{
require_once MYBB_ROOT."saelib/saestorage.class.php";
$s = new SaeStorage();
$post['avatar'] = $s->getUrl("uploads", $post['avatar']);
}
在memberlist.php的第331行后加上
if (stristr($user['avatar'], "://") == false)
{
require_once MYBB_ROOT."saelib/saestorage.class.php";
$s = new SaeStorage();
$user['avatar'] = $s->getUrl("uploads", $user['avatar']);
}
在admin\modules\user\users.php中,
替换"../".$mybb->settings['avatardir']为$mybb->settings['avatardir']。
在576行和3437行分别加上
//get the real avatar url
if ($user['avatar'] != '')
{
if (stristr($user['avatar'], "://") == false)
{
require_once MYBB_ROOT."saelib/saestorage.class.php";
$s = new SaeStorage();
$user['avatar'] = $s->getUrl("uploads", $user['avatar']);
}
}
修改@unlink("../".substr($user['avatar'], 2, -20));为@unlink("saestor://uploads/".$user{'avatar'});
完成。上传代码,再试一下更改头像,终于可以了。