summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEvan Prodromou <evan@controlyourself.ca>2009-06-15 10:45:50 -0700
committerEvan Prodromou <evan@controlyourself.ca>2009-06-15 10:45:50 -0700
commitc077ad0775218e6aa8660ba97129ad74b5d54773 (patch)
tree665f2f378c585de2c16e70bf8accd2f6cc6aebe9
parenteb6a60ef8833d0a34768f2717f2a34fdcd52e5ce (diff)
Configurable avatar directory
Avatar directory and path are configurable.
-rw-r--r--README6
-rw-r--r--classes/Avatar.php30
-rw-r--r--lib/common.php4
3 files changed, 36 insertions, 4 deletions
diff --git a/README b/README
index 8fb4a941c..5b6b847c8 100644
--- a/README
+++ b/README
@@ -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
diff --git a/classes/Avatar.php b/classes/Avatar.php
index db9d78e47..5e8b315fe 100644
--- a/classes/Avatar.php
+++ b/classes/Avatar.php
@@ -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;
}
diff --git a/lib/common.php b/lib/common.php
index b4e87445e..ab61c812f 100644
--- a/lib/common.php
+++ b/lib/common.php
@@ -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(),