Configurable avatar directory

Avatar directory and path are configurable.
This commit is contained in:
Evan Prodromou 2009-06-15 10:45:50 -07:00
parent eb6a60ef88
commit c077ad0775
3 changed files with 36 additions and 4 deletions

6
README
View File

@ -1008,6 +1008,12 @@ avatar
For configuring avatar access.
dir: Directory to look for avatar files and to put them into.
Defaults to avatar subdirectory of install directory; if
you change it, make sure to change path, too.
path: Path to avatars. Defaults to path for avatar subdirectory,
but you can change it if you wish. Note that this will
be included with the avatar server, too.
server: If set, defines another server where avatars are stored in the
root directory. Note that the 'avatar' subdir still has to be
writeable. You'd typically use this to split HTTP requests on

View File

@ -55,19 +55,43 @@ class Avatar extends Memcached_DataObject
static function path($filename)
{
return INSTALLDIR . '/avatar/' . $filename;
$dir = common_config('avatar', 'dir');
if ($dir[strlen($dir)-1] != '/') {
$dir .= '/';
}
return $dir . $filename;
}
static function url($filename)
{
return common_path('avatar/'.$filename);
$path = common_config('avatar', 'path');
if ($path[strlen($path)-1] != '/') {
$path .= '/';
}
if ($path[0] != '/') {
$path = '/'.$path;
}
$server = common_config('avatar', 'server');
if (empty($server)) {
$server = common_config('site', 'server');
}
// XXX: protocol
return 'http://'.$server.$path.$filename;
}
function displayUrl()
{
$server = common_config('avatar', 'server');
if ($server) {
return 'http://'.$server.'/'.$this->filename;
return Avatar::url($this->filename);
} else {
return $this->url;
}

View File

@ -108,7 +108,9 @@ $config =
'profile' =>
array('banned' => array()),
'avatar' =>
array('server' => null),
array('server' => null,
'dir' => INSTALLDIR . '/avatar/',
'path' => $_path . '/avatar/'),
'public' =>
array('localonly' => true,
'blacklist' => array(),