summaryrefslogtreecommitdiff
path: root/classes
diff options
context:
space:
mode:
authorZach Copley <zach@controlyourself.ca>2008-12-09 00:53:45 -0500
committerZach Copley <zach@controlyourself.ca>2008-12-09 00:53:45 -0500
commit92ea88fd6030b3def92e100291102187be032490 (patch)
tree75aa8f8579c702191c4929bd1ebdf16faba33a87 /classes
parent84457969088363e5c3ddd0c88e82a7638392f3c2 (diff)
trac540 - Add 'since' param to Twitter-compatible API calls
darcs-hash:20081209055345-7b5ce-e48fd4c87963b8ae15859fd03d2f1f86a16f3a2b.gz
Diffstat (limited to 'classes')
-rw-r--r--classes/Notice.php64
-rw-r--r--classes/User.php10
2 files changed, 43 insertions, 31 deletions
diff --git a/classes/Notice.php b/classes/Notice.php
index 8de34f39c..456e9deb6 100644
--- a/classes/Notice.php
+++ b/classes/Notice.php
@@ -10,11 +10,11 @@
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
if (!defined('LACONICA')) { exit(1); }
@@ -31,27 +31,27 @@ define('NOTICE_CACHE_WINDOW', 61);
class Notice extends Memcached_DataObject
{
- ###START_AUTOCODE
- /* the code below is auto generated do not remove the above tag */
+ ###START_AUTOCODE
+ /* the code below is auto generated do not remove the above tag */
public $__table = 'notice'; // table name
public $id; // int(4) primary_key not_null
public $profile_id; // int(4) not_null
public $uri; // varchar(255) unique_key
- public $content; // varchar(140)
- public $rendered; // text()
- public $url; // varchar(255)
+ public $content; // varchar(140)
+ public $rendered; // text()
+ public $url; // varchar(255)
public $created; // datetime() not_null
public $modified; // timestamp() not_null default_CURRENT_TIMESTAMP
- public $reply_to; // int(4)
- public $is_local; // tinyint(1)
- public $source; // varchar(32)
+ public $reply_to; // int(4)
+ public $is_local; // tinyint(1)
+ public $source; // varchar(32)
- /* Static get */
- function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('Notice',$k,$v); }
+ /* Static get */
+ function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('Notice',$k,$v); }
- /* the code above is auto generated do not remove the tag below */
- ###END_AUTOCODE
+ /* the code above is auto generated do not remove the tag below */
+ ###END_AUTOCODE
function getProfile() {
return Profile::staticGet('id', $this->profile_id);
@@ -293,25 +293,25 @@ 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) {
+ static function getStream($qry, $cachekey, $offset=0, $limit=20, $since_id=0, $before_id=0, $order=NULL, $since=NULL) {
if (common_config('memcached', 'enabled')) {
- # Skip the cache if this is a since_id or before_id qry
- if ($since_id > 0 || $before_id > 0) {
- return Notice::getStreamDirect($qry, $offset, $limit, $since_id, $before_id, $order);
+ # 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);
} else {
return Notice::getCachedStream($qry, $cachekey, $offset, $limit, $order);
}
}
- return Notice::getStreamDirect($qry, $offset, $limit, $since_id, $before_id, $order);
+ return Notice::getStreamDirect($qry, $offset, $limit, $since_id, $before_id, $order, $since);
}
- static function getStreamDirect($qry, $offset, $limit, $since_id, $before_id, $order) {
+ static function getStreamDirect($qry, $offset, $limit, $since_id, $before_id, $order, $since) {
$needAnd = FALSE;
- $needWhere = TRUE;
+ $needWhere = TRUE;
if (preg_match('/\bWHERE\b/i', $qry)) {
$needWhere = FALSE;
@@ -321,19 +321,19 @@ class Notice extends Memcached_DataObject
if ($since_id > 0) {
if ($needWhere) {
- $qry .= ' WHERE ';
+ $qry .= ' WHERE ';
$needWhere = FALSE;
} else {
$qry .= ' AND ';
}
- $qry .= ' notice.id > ' . $since_id;
+ $qry .= ' notice.id > ' . $since_id;
}
if ($before_id > 0) {
if ($needWhere) {
- $qry .= ' WHERE ';
+ $qry .= ' WHERE ';
$needWhere = FALSE;
} else {
$qry .= ' AND ';
@@ -342,6 +342,18 @@ class Notice extends Memcached_DataObject
$qry .= ' notice.id < ' . $before_id;
}
+ if ($since) {
+
+ if ($needWhere) {
+ $qry .= ' WHERE ';
+ $needWhere = FALSE;
+ } else {
+ $qry .= ' AND ';
+ }
+
+ $qry .= ' notice.created > \'' . date('Y-m-d H:i:s', $since) . '\'';
+ }
+
# Allow ORDER override
if ($order) {
@@ -465,7 +477,7 @@ class Notice extends Memcached_DataObject
return $wrapper;
}
- function publicStream($offset=0, $limit=20, $since_id=0, $before_id=0) {
+ function publicStream($offset=0, $limit=20, $since_id=0, $before_id=0, $since=NULL) {
$parts = array();
@@ -484,7 +496,7 @@ class Notice extends Memcached_DataObject
return Notice::getStream($qry,
'public',
- $offset, $limit, $since_id, $before_id);
+ $offset, $limit, $since_id, $before_id, NULL, $since);
}
function addToInboxes() {
diff --git a/classes/User.php b/classes/User.php
index ddb2e3310..7ac975007 100644
--- a/classes/User.php
+++ b/classes/User.php
@@ -344,7 +344,7 @@ class User extends Memcached_DataObject
return $user;
}
- function getReplies($offset=0, $limit=NOTICES_PER_PAGE, $since_id=0, $before_id=0) {
+ function getReplies($offset=0, $limit=NOTICES_PER_PAGE, $since_id=0, $before_id=0, $since=NULL) {
$qry =
'SELECT notice.* ' .
'FROM notice JOIN reply ON notice.id = reply.notice_id ' .
@@ -352,10 +352,10 @@ class User extends Memcached_DataObject
return Notice::getStream(sprintf($qry, $this->id),
'user:replies:'.$this->id,
- $offset, $limit, $since_id, $before_id);
+ $offset, $limit, $since_id, $before_id, NULL, $since);
}
- function getNotices($offset=0, $limit=NOTICES_PER_PAGE, $since_id=0, $before_id=0) {
+ function getNotices($offset=0, $limit=NOTICES_PER_PAGE, $since_id=0, $before_id=0, $since=NULL) {
$qry =
'SELECT * ' .
'FROM notice ' .
@@ -377,7 +377,7 @@ class User extends Memcached_DataObject
$offset, $limit);
}
- function noticesWithFriends($offset=0, $limit=NOTICES_PER_PAGE, $since_id=0, $before_id=0) {
+ function noticesWithFriends($offset=0, $limit=NOTICES_PER_PAGE, $since_id=0, $before_id=0, $since=NULL) {
$enabled = common_config('inboxes', 'enabled');
# Complicated code, depending on whether we support inboxes yet
@@ -403,7 +403,7 @@ class User extends Memcached_DataObject
return Notice::getStream(sprintf($qry, $this->id),
'user:notices_with_friends:' . $this->id,
$offset, $limit, $since_id, $before_id,
- $order);
+ $order, $since);
}
function blowFavesCache() {