X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=classes%2FAvatar.php;h=6edc81768551e00780ae2cb3b2803bb94ab0bd82;hb=fbd8052d05fda7a967d8440574d2b5013d4e7be1;hp=7af42c617e021ec23a5cab2ff653868e8ceeb506;hpb=52600ce0b063e68e622b19699841e41b5ddbf2d1;p=quix0rs-gnu-social.git diff --git a/classes/Avatar.php b/classes/Avatar.php index 7af42c617e..6edc817685 100644 --- a/classes/Avatar.php +++ b/classes/Avatar.php @@ -2,9 +2,9 @@ /** * Table Definition for avatar */ -require_once 'DB/DataObject.php'; +require_once INSTALLDIR.'/classes/Memcached_DataObject.php'; -class Avatar extends DB_DataObject +class Avatar extends Memcached_DataObject { ###START_AUTOCODE /* the code below is auto generated do not remove the above tag */ @@ -21,20 +21,99 @@ class Avatar extends DB_DataObject public $modified; // timestamp() not_null default_CURRENT_TIMESTAMP /* Static get */ - function staticGet($k,$v=NULL) { return DB_DataObject::staticGet('Avatar',$k,$v); } + function staticGet($k,$v=null) + { return Memcached_DataObject::staticGet('Avatar',$k,$v); } /* the code above is auto generated do not remove the tag below */ ###END_AUTOCODE - function validateMediatype() { - return Validate::string($this->mediatype, array('min_length' => 1, 'max_length' => 32)); - } + # We clean up the file, too - function validateFilename() { - return Validate::string($this->filename, array('min_length' => 1, 'max_length' => 255)); - } + function delete() + { + $filename = $this->filename; + if (parent::delete()) { + @unlink(Avatar::path($filename)); + } + } - function validateUrl() { - return Validate::uri($this->url, array('allowed_schemes' => array('http', 'https'))); - } + 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) + { + $dir = common_config('avatar', 'dir'); + + if ($dir[strlen($dir)-1] != '/') { + $dir .= '/'; + } + + return $dir . $filename; + } + + static function url($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'); + } + + $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 displayUrl() + { + $server = common_config('avatar', 'server'); + if ($server) { + return Avatar::url($this->filename); + } else { + return $this->url; + } + } + + static function defaultImage($size) + { + static $sizenames = array(AVATAR_PROFILE_SIZE => 'profile', + AVATAR_STREAM_SIZE => 'stream', + AVATAR_MINI_SIZE => 'mini'); + return Theme::path('default-avatar-'.$sizenames[$size].'.png'); + } }