summaryrefslogtreecommitdiff
path: root/classes
diff options
context:
space:
mode:
Diffstat (limited to 'classes')
-rw-r--r--classes/Avatar.php50
-rw-r--r--classes/Profile.php21
-rwxr-xr-xclasses/User_group.php10
3 files changed, 64 insertions, 17 deletions
diff --git a/classes/Avatar.php b/classes/Avatar.php
index 6a9ea7686..6248a84d3 100644
--- a/classes/Avatar.php
+++ b/classes/Avatar.php
@@ -4,18 +4,18 @@
*/
require_once INSTALLDIR.'/classes/Memcached_DataObject.php';
-class Avatar extends Memcached_DataObject
+class Avatar extends Memcached_DataObject
{
###START_AUTOCODE
/* the code below is auto generated do not remove the above tag */
public $__table = 'avatar'; // table name
public $profile_id; // int(4) primary_key not_null
- public $original; // tinyint(1)
+ public $original; // tinyint(1)
public $width; // int(4) primary_key not_null
public $height; // int(4) primary_key not_null
public $mediatype; // varchar(32) not_null
- public $filename; // varchar(255)
+ public $filename; // varchar(255)
public $url; // varchar(255) unique_key
public $created; // datetime() not_null
public $modified; // timestamp() not_null default_CURRENT_TIMESTAMP
@@ -33,13 +33,51 @@ class Avatar extends Memcached_DataObject
{
$filename = $this->filename;
if (parent::delete()) {
- @unlink(common_avatar_path($filename));
+ @unlink(Avatar::path($filename));
}
}
-
- function &pkeyGet($kv)
+
+ function &pkeyGet($kv)
{
return Memcached_DataObject::pkeyGet('Avatar', $kv);
}
+ // where should the avatar go for this user?
+
+ static function filename($id, $extension, $size=null, $extra=null)
+ {
+ if ($size) {
+ return $id . '-' . $size . (($extra) ? ('-' . $extra) : '') . $extension;
+ } else {
+ return $id . '-original' . (($extra) ? ('-' . $extra) : '') . $extension;
+ }
+ }
+
+ static function path($filename)
+ {
+ return INSTALLDIR . '/avatar/' . $filename;
+ }
+
+ static function url($filename)
+ {
+ return common_path('avatar/'.$filename);
+ }
+
+ function displayUrl()
+ {
+ $server = common_config('avatar', 'server');
+ if ($server) {
+ return 'http://'.$server.'/'.$this->filename;
+ } else {
+ return $this->url;
+ }
+ }
+
+ static function defaultAvatar($size)
+ {
+ static $sizenames = array(AVATAR_PROFILE_SIZE => 'profile',
+ AVATAR_STREAM_SIZE => 'stream',
+ AVATAR_MINI_SIZE => 'mini');
+ return theme_path('default-avatar-'.$sizenames[$size].'.png');
+ }
}
diff --git a/classes/Profile.php b/classes/Profile.php
index 5be632f87..f3bfe299c 100644
--- a/classes/Profile.php
+++ b/classes/Profile.php
@@ -71,7 +71,7 @@ class Profile extends Memcached_DataObject
function setOriginal($filename)
{
- $imagefile = new ImageFile($this->id, common_avatar_path($filename));
+ $imagefile = new ImageFile($this->id, Avatar::path($filename));
$avatar = new Avatar();
$avatar->profile_id = $this->id;
@@ -80,22 +80,22 @@ class Profile extends Memcached_DataObject
$avatar->mediatype = image_type_to_mime_type($imagefile->type);
$avatar->filename = $filename;
$avatar->original = true;
- $avatar->url = common_avatar_url($filename);
+ $avatar->url = Avatar::url($filename);
$avatar->created = DB_DataObject_Cast::dateTime(); # current time
# XXX: start a transaction here
if (!$this->delete_avatars() || !$avatar->insert()) {
- @unlink(common_avatar_path($filename));
+ @unlink(Avatar::path($filename));
return null;
}
foreach (array(AVATAR_PROFILE_SIZE, AVATAR_STREAM_SIZE, AVATAR_MINI_SIZE) as $size) {
# We don't do a scaled one if original is our scaled size
if (!($avatar->width == $size && $avatar->height == $size)) {
-
+
$scaled_filename = $imagefile->resize($size);
-
+
//$scaled = DB_DataObject::factory('avatar');
$scaled = new Avatar();
$scaled->profile_id = $this->id;
@@ -104,7 +104,7 @@ class Profile extends Memcached_DataObject
$scaled->original = false;
$scaled->mediatype = image_type_to_mime_type($imagefile->type);
$scaled->filename = $scaled_filename;
- $scaled->url = common_avatar_url($scaled_filename);
+ $scaled->url = Avatar::url($scaled_filename);
$scaled->created = DB_DataObject_Cast::dateTime(); # current time
if (!$scaled->insert()) {
@@ -194,4 +194,13 @@ class Profile extends Memcached_DataObject
}
}
+ function avatarUrl($size=AVATAR_PROFILE_SIZE)
+ {
+ $avatar = $this->getAvatar($size);
+ if ($avatar) {
+ return $avatar->displayUrl();
+ } else {
+ return Avatar::defaultImage($size);
+ }
+ }
}
diff --git a/classes/User_group.php b/classes/User_group.php
index 340d7f67a..d152f9d56 100755
--- a/classes/User_group.php
+++ b/classes/User_group.php
@@ -90,13 +90,13 @@ class User_group extends Memcached_DataObject
function setOriginal($filename)
{
- $imagefile = new ImageFile($this->id, common_avatar_path($filename));
+ $imagefile = new ImageFile($this->id, Avatar::path($filename));
$orig = clone($this);
- $this->original_logo = common_avatar_url($filename);
- $this->homepage_logo = common_avatar_url($imagefile->resize(AVATAR_PROFILE_SIZE));
- $this->stream_logo = common_avatar_url($imagefile->resize(AVATAR_STREAM_SIZE));
- $this->mini_logo = common_avatar_url($imagefile->resize(AVATAR_MINI_SIZE));
+ $this->original_logo = Avatar::url($filename);
+ $this->homepage_logo = Avatar::url($imagefile->resize(AVATAR_PROFILE_SIZE));
+ $this->stream_logo = Avatar::url($imagefile->resize(AVATAR_STREAM_SIZE));
+ $this->mini_logo = Avatar::url($imagefile->resize(AVATAR_MINI_SIZE));
common_debug(common_log_objstring($this));
return $this->update($orig);
}