X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=classes%2FAvatar.php;h=6edc81768551e00780ae2cb3b2803bb94ab0bd82;hb=cab75224761b675e70b4ebd1fc31601270d91177;hp=3c754ec2d52385907372e512ee31afa07a077e3a;hpb=04ef1ba8eee7a9e2a565d7b4b747ef607665d562;p=quix0rs-gnu-social.git diff --git a/classes/Avatar.php b/classes/Avatar.php index 3c754ec2d5..6edc817685 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,68 +33,87 @@ class Avatar extends Memcached_DataObject { $filename = $this->filename; if (parent::delete()) { - @unlink(common_avatar_path($filename)); + @unlink(Avatar::path($filename)); } } - # Create and save scaled version of this avatar - # XXX: maybe break into different methods + 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; + } + } - function scale($size) + static function path($filename) { + $dir = common_config('avatar', 'dir'); - $image_s = imagecreatetruecolor($size, $size); - $image_a = $this->to_image(); - $square = min($this->width, $this->height); - imagecolortransparent($image_s, imagecolorallocate($image_s, 0, 0, 0)); - imagealphablending($image_s, false); - imagesavealpha($image_s, true); - imagecopyresampled($image_s, $image_a, 0, 0, 0, 0, - $size, $size, $square, $square); + if ($dir[strlen($dir)-1] != '/') { + $dir .= '/'; + } - $ext = ($this->mediattype == 'image/jpeg') ? ".jpeg" : ".png"; + return $dir . $filename; + } - $filename = common_avatar_filename($this->profile_id, $ext, $size, common_timestamp()); + static function url($filename) + { + $path = common_config('avatar', 'path'); - if ($this->mediatype == 'image/jpeg') { - imagejpeg($image_s, common_avatar_path($filename)); - } else { - imagepng($image_s, common_avatar_path($filename)); + if ($path[strlen($path)-1] != '/') { + $path .= '/'; } - $scaled = DB_DataObject::factory('avatar'); - $scaled->profile_id = $this->profile_id; - $scaled->width = $size; - $scaled->height = $size; - $scaled->original = false; - $scaled->mediatype = ($this->mediattype == 'image/jpeg') ? 'image/jpeg' : 'image/png'; - $scaled->filename = $filename; - $scaled->url = common_avatar_url($filename); - $scaled->created = DB_DataObject_Cast::dateTime(); # current time - - if ($scaled->insert()) { - return $scaled; - } else { - return null; + if ($path[0] != '/') { + $path = '/'.$path; + } + + $server = common_config('avatar', 'server'); + + if (empty($server)) { + $server = common_config('site', 'server'); } + + $ssl = common_config('avatar', 'ssl'); + + if (is_null($ssl)) { // null -> guess + if (common_config('site', 'ssl') == 'always' && + !common_config('avatar', 'server')) { + $ssl = true; + } else { + $ssl = false; + } + } + + $protocol = ($ssl) ? 'https' : 'http'; + + return $protocol.'://'.$server.$path.$filename; } - function to_image() + function displayUrl() { - $filepath = common_avatar_path($this->filename); - if ($this->mediatype == 'image/gif') { - return imagecreatefromgif($filepath); - } else if ($this->mediatype == 'image/jpeg') { - return imagecreatefromjpeg($filepath); - } else if ($this->mediatype == 'image/png') { - return imagecreatefrompng($filepath); + $server = common_config('avatar', 'server'); + if ($server) { + return Avatar::url($this->filename); } else { - return null; + return $this->url; } } - - function &pkeyGet($kv) + + static function defaultImage($size) { - return Memcached_DataObject::pkeyGet('Avatar', $kv); + static $sizenames = array(AVATAR_PROFILE_SIZE => 'profile', + AVATAR_STREAM_SIZE => 'stream', + AVATAR_MINI_SIZE => 'mini'); + return Theme::path('default-avatar-'.$sizenames[$size].'.png'); } }