Initial switch of public timeline stream to use timestamps for internal sorting

This commit is contained in:
Brion Vibber 2010-12-17 12:38:38 -08:00
parent 7c84c35587
commit 5de86f0ccc

View File

@ -654,7 +654,7 @@ class Notice extends Memcached_DataObject
$notice->selectAdd(); // clears it $notice->selectAdd(); // clears it
$notice->selectAdd('id'); $notice->selectAdd('id');
$notice->orderBy('id DESC'); $notice->orderBy('created DESC, id DESC');
if (!is_null($offset)) { if (!is_null($offset)) {
$notice->limit($offset, $limit); $notice->limit($offset, $limit);
@ -668,12 +668,14 @@ class Notice extends Memcached_DataObject
$notice->whereAdd('is_local !='. Notice::GATEWAY); $notice->whereAdd('is_local !='. Notice::GATEWAY);
} }
if ($since_id != 0) { $since = Notice::getAsTimestamp($since_id);
$notice->whereAdd('id > ' . $since_id); if ($since) {
$notice->whereAdd(sprintf("(created = '%s' and id > %d) or (created > '%s')", $since, $since_id, $since));
} }
if ($max_id != 0) { $max = Notice::getAsTimestamp($max_id);
$notice->whereAdd('id <= ' . $max_id); if ($max) {
$notice->whereAdd(sprintf("(created < '%s') or (created = '%s' and id <= %d)", $max, $max, $max_id));
} }
$ids = array(); $ids = array();
@ -1988,16 +1990,20 @@ class Notice extends Memcached_DataObject
*/ */
public static function getAsTimestamp($id) public static function getAsTimestamp($id)
{ {
if (!$id) {
return false;
}
$notice = Notice::staticGet('id', $id); $notice = Notice::staticGet('id', $id);
if ($notice) { if ($notice) {
return $notice->created; return $notice->created;
} else { }
$deleted = Deleted_notice::staticGet('id', $id); $deleted = Deleted_notice::staticGet('id', $id);
if ($deleted) { if ($deleted) {
return $deleted->created; return $deleted->created;
} else { }
return false; return false;
} }
} }
}
}