summaryrefslogtreecommitdiff
path: root/classes/Notice.php
diff options
context:
space:
mode:
authorEvan Prodromou <evan@controlyourself.ca>2009-06-09 21:51:24 -0700
committerEvan Prodromou <evan@controlyourself.ca>2009-06-09 21:51:24 -0700
commit4df1ea49ec75ec9dd64bc8f58c01e64ea18bedc7 (patch)
tree91535b33cd2b62b0726821e4d217d587da7cd61b /classes/Notice.php
parentb3628b78448266fda2368f1317e70d1cca45ac17 (diff)
parented627bb4bd6424325478412055d295b185f9f662 (diff)
Merge branch '0.8.x' into userdesign
Conflicts: actions/designsettings.php
Diffstat (limited to 'classes/Notice.php')
-rw-r--r--classes/Notice.php106
1 files changed, 36 insertions, 70 deletions
diff --git a/classes/Notice.php b/classes/Notice.php
index 1b5c0ab0a..895b5d2c7 100644
--- a/classes/Notice.php
+++ b/classes/Notice.php
@@ -124,6 +124,8 @@ class Notice extends Memcached_DataObject
$profile = Profile::staticGet($profile_id);
+ $final = common_shorten_links($content);
+
if (!$profile) {
common_log(LOG_ERR, 'Problem saving notice. Unknown user.');
return _('Problem saving notice. Unknown user.');
@@ -134,7 +136,7 @@ class Notice extends Memcached_DataObject
return _('Too many notices too fast; take a breather and post again in a few minutes.');
}
- if (common_config('site', 'dupelimit') > 0 && !Notice::checkDupes($profile_id, $content)) {
+ if (common_config('site', 'dupelimit') > 0 && !Notice::checkDupes($profile_id, $final)) {
common_log(LOG_WARNING, 'Dupe posting by profile #' . $profile_id . '; throttled.');
return _('Too many duplicate messages too quickly; take a breather and post again in a few minutes.');
}
@@ -165,8 +167,8 @@ class Notice extends Memcached_DataObject
$notice->reply_to = $reply_to;
$notice->created = common_sql_now();
- $notice->content = $content;
- $notice->rendered = common_render_content($content, $notice);
+ $notice->content = $final;
+ $notice->rendered = common_render_content($final, $notice);
$notice->source = $source;
$notice->uri = $uri;
@@ -202,13 +204,9 @@ class Notice extends Memcached_DataObject
$notice->saveReplies();
$notice->saveTags();
- $notice->saveGroups();
- if (common_config('queue', 'enabled')) {
- $notice->addToAuthorInbox();
- } else {
- $notice->addToInboxes();
- }
+ $notice->addToInboxes();
+ $notice->saveGroups();
$notice->query('COMMIT');
@@ -218,13 +216,7 @@ class Notice extends Memcached_DataObject
# Clear the cache for subscribed users, so they'll update at next request
# XXX: someone clever could prepend instead of clearing the cache
- if (common_config('memcached', 'enabled')) {
- if (common_config('queue', 'enabled')) {
- $notice->blowAuthorCaches();
- } else {
- $notice->blowCaches();
- }
- }
+ $notice->blowCaches();
return $notice;
}
@@ -277,6 +269,18 @@ class Notice extends Memcached_DataObject
return true;
}
+ function getUploadedAttachment() {
+ $post = clone $this;
+ $query = 'select file.url as uploaded from file join file_to_post on file.id = file_id where post_id=' . $post->escape($post->id) . ' and url like "%/notice/%/file"';
+ $post->query($query);
+ $post->fetch();
+ $ret = $post->uploaded;
+// var_dump($post);
+ $post->free();
+// die();
+ return $ret;
+ }
+
function hasAttachments() {
$post = clone $this;
$query = "select count(file_id) as n_attachments from file join file_to_post on (file_id = file.id) join notice on (post_id = notice.id) where post_id = " . $post->escape($post->id);
@@ -297,17 +301,6 @@ class Notice extends Memcached_DataObject
$this->blowGroupCache($blowLast);
}
- function blowAuthorCaches($blowLast=false)
- {
- // Clear the user's cache
- $cache = common_memcache();
- if (!empty($cache)) {
- $cache->delete(common_cache_key('notice_inbox:by_user:'.$this->profile_id));
- }
- $this->blowNoticeCache($blowLast);
- $this->blowPublicCache($blowLast);
- }
-
function blowGroupCache($blowLast=false)
{
$cache = common_memcache();
@@ -443,22 +436,22 @@ class Notice extends Memcached_DataObject
# XXX: too many args; we need to move to named params or even a separate
# class for notice streams
- static function getStream($qry, $cachekey, $offset=0, $limit=20, $since_id=0, $before_id=0, $order=null, $since=null) {
+ static function getStream($qry, $cachekey, $offset=0, $limit=20, $since_id=0, $max_id=0, $order=null, $since=null) {
if (common_config('memcached', 'enabled')) {
- # Skip the cache if this is a since, since_id or before_id qry
- if ($since_id > 0 || $before_id > 0 || $since) {
- return Notice::getStreamDirect($qry, $offset, $limit, $since_id, $before_id, $order, $since);
+ # Skip the cache if this is a since, since_id or max_id qry
+ if ($since_id > 0 || $max_id > 0 || $since) {
+ return Notice::getStreamDirect($qry, $offset, $limit, $since_id, $max_id, $order, $since);
} else {
return Notice::getCachedStream($qry, $cachekey, $offset, $limit, $order);
}
}
- return Notice::getStreamDirect($qry, $offset, $limit, $since_id, $before_id, $order, $since);
+ return Notice::getStreamDirect($qry, $offset, $limit, $since_id, $max_id, $order, $since);
}
- static function getStreamDirect($qry, $offset, $limit, $since_id, $before_id, $order, $since) {
+ static function getStreamDirect($qry, $offset, $limit, $since_id, $max_id, $order, $since) {
$needAnd = false;
$needWhere = true;
@@ -480,7 +473,7 @@ class Notice extends Memcached_DataObject
$qry .= ' notice.id > ' . $since_id;
}
- if ($before_id > 0) {
+ if ($max_id > 0) {
if ($needWhere) {
$qry .= ' WHERE ';
@@ -489,7 +482,7 @@ class Notice extends Memcached_DataObject
$qry .= ' AND ';
}
- $qry .= ' notice.id < ' . $before_id;
+ $qry .= ' notice.id <= ' . $max_id;
}
if ($since) {
@@ -647,17 +640,17 @@ class Notice extends Memcached_DataObject
}
}
- function publicStream($offset=0, $limit=20, $since_id=0, $before_id=0, $since=null)
+ function publicStream($offset=0, $limit=20, $since_id=0, $max_id=0, $since=null)
{
$ids = Notice::stream(array('Notice', '_publicStreamDirect'),
array(),
'public',
- $offset, $limit, $since_id, $before_id, $since);
+ $offset, $limit, $since_id, $max_id, $since);
return Notice::getStreamByIds($ids);
}
- function _publicStreamDirect($offset=0, $limit=20, $since_id=0, $before_id=0, $since=null)
+ function _publicStreamDirect($offset=0, $limit=20, $since_id=0, $max_id=0, $since=null)
{
$notice = new Notice();
@@ -681,8 +674,8 @@ class Notice extends Memcached_DataObject
$notice->whereAdd('id > ' . $since_id);
}
- if ($before_id != 0) {
- $notice->whereAdd('id < ' . $before_id);
+ if ($max_id != 0) {
+ $notice->whereAdd('id <= ' . $max_id);
}
if (!is_null($since)) {
@@ -726,33 +719,6 @@ class Notice extends Memcached_DataObject
return;
}
- function addToAuthorInbox()
- {
- $enabled = common_config('inboxes', 'enabled');
-
- if ($enabled === true || $enabled === 'transitional') {
- $user = User::staticGet('id', $this->profile_id);
- if (empty($user)) {
- return;
- }
- $inbox = new Notice_inbox();
- $UT = common_config('db','type')=='pgsql'?'"user"':'user';
- $qry = 'INSERT INTO notice_inbox (user_id, notice_id, created) ' .
- "SELECT $UT.id, " . $this->id . ", '" . $this->created . "' " .
- "FROM $UT " .
- "WHERE $UT.id = " . $this->profile_id . ' ' .
- 'AND NOT EXISTS (SELECT user_id, notice_id ' .
- 'FROM notice_inbox ' .
- "WHERE user_id = " . $this->profile_id . ' '.
- 'AND notice_id = ' . $this->id . ' )';
- if ($enabled === 'transitional') {
- $qry .= " AND $UT.inboxed = 1";
- }
- $inbox->query($qry);
- }
- return;
- }
-
function saveGroups()
{
$enabled = common_config('inboxes', 'enabled');
@@ -1024,15 +990,15 @@ class Notice extends Memcached_DataObject
}
}
- function stream($fn, $args, $cachekey, $offset=0, $limit=20, $since_id=0, $before_id=0, $since=null, $tag=null)
+ function stream($fn, $args, $cachekey, $offset=0, $limit=20, $since_id=0, $max_id=0, $since=null)
{
$cache = common_memcache();
if (empty($cache) ||
- $since_id != 0 || $before_id != 0 || !is_null($since) ||
+ $since_id != 0 || $max_id != 0 || (!is_null($since) && $since > 0) ||
($offset + $limit) > NOTICE_CACHE_WINDOW) {
return call_user_func_array($fn, array_merge($args, array($offset, $limit, $since_id,
- $before_id, $since, $tag)));
+ $max_id, $since)));
}
$idkey = common_cache_key($cachekey);