summaryrefslogtreecommitdiff
path: root/classes
diff options
context:
space:
mode:
Diffstat (limited to 'classes')
-rw-r--r--classes/Notice.php6
-rw-r--r--classes/User.php2
-rwxr-xr-xclasses/User_group.php78
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;
+ }
}