. */ if (!defined('LACONICA')) { exit(1); } /** * Table Definition for profile */ require_once INSTALLDIR.'/classes/Memcached_DataObject.php'; class Profile extends Memcached_DataObject { ###START_AUTOCODE /* the code below is auto generated do not remove the above tag */ public $__table = 'profile'; // table name public $id; // int(4) primary_key not_null public $nickname; // varchar(64) multiple_key not_null public $fullname; // varchar(255) multiple_key public $profileurl; // varchar(255) public $homepage; // varchar(255) multiple_key public $bio; // varchar(140) multiple_key public $location; // varchar(255) multiple_key public $created; // datetime() not_null public $modified; // timestamp() not_null default_CURRENT_TIMESTAMP /* Static get */ function staticGet($k,$v=null) { return Memcached_DataObject::staticGet('Profile',$k,$v); } /* the code above is auto generated do not remove the tag below */ ###END_AUTOCODE function getAvatar($width, $height=null) { if (is_null($height)) { $height = $width; } return Avatar::pkeyGet(array('profile_id' => $this->id, 'width' => $width, 'height' => $height)); } function getOriginalAvatar() { $avatar = DB_DataObject::factory('avatar'); $avatar->profile_id = $this->id; $avatar->original = true; if ($avatar->find(true)) { return $avatar; } else { return null; } } function setOriginal($source) { $info = @getimagesize($source); if (!$info) { return null; } $filename = common_avatar_filename($this->id, image_type_to_extension($info[2]), null, common_timestamp()); $filepath = common_avatar_path($filename); copy($source, $filepath); $avatar = new Avatar(); $avatar->profile_id = $this->id; $avatar->width = $info[0]; $avatar->height = $info[1]; $avatar->mediatype = image_type_to_mime_type($info[2]); $avatar->filename = $filename; $avatar->original = true; $avatar->url = common_avatar_url($filename); $avatar->created = DB_DataObject_Cast::dateTime(); # current time # XXX: start a transaction here if (!$this->delete_avatars()) { @unlink($filepath); return null; } if (!$avatar->insert()) { @unlink($filepath); 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)) { $s = $avatar->scale($size); if (!$s) { return null; } } } return $avatar; } function crop_avatars($x, $y, $w, $h) { $avatar = $this->getOriginalAvatar(); $this->delete_avatars(false); # don't delete original 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)) { $s = $avatar->scale_and_crop($size, $x, $y, $w, $h); if (!$s) { return NULL; } } } return true; } function delete_avatars($original=true) { $avatar = new Avatar(); $avatar->profile_id = $this->id; $avatar->find(); while ($avatar->fetch()) { if ($avatar->original) { if ($original == false) { continue; } } $avatar->delete(); } return true; } function getBestName() { return ($this->fullname) ? $this->fullname : $this->nickname; } # Get latest notice on or before date; default now function getCurrentNotice($dt=null) { $notice = new Notice(); $notice->profile_id = $this->id; if ($dt) { $notice->whereAdd('created < "' . $dt . '"'); } $notice->orderBy('created DESC, notice.id DESC'); $notice->limit(1); if ($notice->find(true)) { return $notice; } return null; } function getNotices($offset=0, $limit=NOTICES_PER_PAGE, $since_id=0, $before_id=0) { $qry = 'SELECT * ' . 'FROM notice ' . 'WHERE profile_id = %d '; return Notice::getStream(sprintf($qry, $this->id), 'profile:notices:'.$this->id, $offset, $limit, $since_id, $before_id); } }