diff options
Diffstat (limited to 'classes')
-rw-r--r-- | classes/Notice.php | 6 | ||||
-rw-r--r-- | classes/User.php | 2 | ||||
-rwxr-xr-x | classes/User_group.php | 78 |
3 files changed, 84 insertions, 2 deletions
diff --git a/classes/Notice.php b/classes/Notice.php index de7540705..4a06c9258 100644 --- a/classes/Notice.php +++ b/classes/Notice.php @@ -129,6 +129,8 @@ class Notice extends Memcached_DataObject $notice->is_local = $is_local; } + $notice->query('BEGIN'); + $notice->reply_to = $reply_to; $notice->created = common_sql_now(); $notice->content = common_shorten_links($content); @@ -160,6 +162,9 @@ class Notice extends Memcached_DataObject $notice->saveTags(); $notice->saveGroups(); + $notice->addToInboxes(); + $notice->query('COMMIT'); + # Clear the cache for subscribed users, so they'll update at next request # XXX: someone clever could prepend instead of clearing the cache @@ -167,7 +172,6 @@ class Notice extends Memcached_DataObject $notice->blowCaches(); } - $notice->addToInboxes(); return $notice; } diff --git a/classes/User.php b/classes/User.php index 5f4fb9b6f..b1bae8835 100644 --- a/classes/User.php +++ b/classes/User.php @@ -403,7 +403,7 @@ class User extends Memcached_DataObject 'FROM notice JOIN notice_inbox ON notice.id = notice_inbox.notice_id ' . 'WHERE notice_inbox.user_id = %d '; # NOTE: we override ORDER - $order = 'ORDER BY notice_inbox.created DESC, notice_inbox.notice_id DESC '; + $order = null; } return Notice::getStream(sprintf($qry, $this->id), 'user:notices_with_friends:' . $this->id, diff --git a/classes/User_group.php b/classes/User_group.php index 484b2fe0a..98ad77cc0 100755 --- a/classes/User_group.php +++ b/classes/User_group.php @@ -86,4 +86,82 @@ class User_group extends Memcached_DataObject return $members; } + + function setOriginal($filename, $type) + { + $orig = clone($this); + $this->original_logo = common_avatar_url($filename); + $this->homepage_logo = common_avatar_url($this->scale($filename, + AVATAR_PROFILE_SIZE, + $type)); + $this->stream_logo = common_avatar_url($this->scale($filename, + AVATAR_STREAM_SIZE, + $type)); + $this->mini_logo = common_avatar_url($this->scale($filename, + AVATAR_MINI_SIZE, + $type)); + common_debug(common_log_objstring($this)); + return $this->update($orig); + } + + function scale($filename, $size, $type) + { + $filepath = common_avatar_path($filename); + + if (!file_exists($filepath)) { + $this->serverError(_('Lost our file.')); + return; + } + + $info = @getimagesize($filepath); + + switch ($type) { + case IMAGETYPE_GIF: + $image_src = imagecreatefromgif($filepath); + break; + case IMAGETYPE_JPEG: + $image_src = imagecreatefromjpeg($filepath); + break; + case IMAGETYPE_PNG: + $image_src = imagecreatefrompng($filepath); + break; + default: + $this->serverError(_('Unknown file type')); + return; + } + + $image_dest = imagecreatetruecolor($size, $size); + + $background = imagecolorallocate($image_dest, 0, 0, 0); + ImageColorTransparent($image_dest, $background); + imagealphablending($image_dest, false); + + imagecopyresized($image_dest, $image_src, 0, 0, $x, $y, $size, $size, $info[0], $info[1]); + + $cur = common_current_user(); + + $outname = common_avatar_filename($cur->id, + image_type_to_extension($type), + null, + common_timestamp()); + + $outpath = common_avatar_path($outname); + + switch ($type) { + case IMAGETYPE_GIF: + imagegif($image_dest, $outpath); + break; + case IMAGETYPE_JPEG: + imagejpeg($image_dest, $outpath); + break; + case IMAGETYPE_PNG: + imagepng($image_dest, $outpath); + break; + default: + $this->serverError(_('Unknown file type')); + return; + } + + return $outname; + } } |