diff --git a/plugins/TwitterBridge/TwitterBridgePlugin.php b/plugins/TwitterBridge/TwitterBridgePlugin.php index d3efb074bd..21a10775dd 100644 --- a/plugins/TwitterBridge/TwitterBridgePlugin.php +++ b/plugins/TwitterBridge/TwitterBridgePlugin.php @@ -383,7 +383,7 @@ class TwitterBridgePlugin extends Plugin // home_timeline, messages (in), messages (out), ... $schema->ensureTable('twitter_synch_status', - array(new ColumnDef('user_id', 'integer', null, + array(new ColumnDef('foreign_id', 'bigint', null, false, 'PRI'), new ColumnDef('timeline', 'varchar', 255, false, 'PRI'), diff --git a/plugins/TwitterBridge/Twitter_synch_status.php b/plugins/TwitterBridge/Twitter_synch_status.php index 8ac2bdc571..1b3ad48fea 100644 --- a/plugins/TwitterBridge/Twitter_synch_status.php +++ b/plugins/TwitterBridge/Twitter_synch_status.php @@ -52,7 +52,7 @@ require_once INSTALLDIR . '/classes/Memcached_DataObject.php'; class Twitter_synch_status extends Memcached_DataObject { public $__table = 'twitter_synch_status'; // table name - public $user_id; // int(4) primary_key not_null + public $foreign_id; // int(4) primary_key not_null public $timeline; // varchar(255) primary_key not_null public $last_id; // bigint not_null public $created; // datetime not_null @@ -61,7 +61,7 @@ class Twitter_synch_status extends Memcached_DataObject /** * Get an instance by key * - * @param string $k Key to use to lookup (usually 'user_id' for this class) + * @param string $k Key to use to lookup (usually 'foreign_id' for this class) * @param mixed $v Value to lookup * * @return User_greeting_count object found, or null for no hits @@ -84,7 +84,7 @@ class Twitter_synch_status extends Memcached_DataObject function table() { - return array('user_id' => DB_DATAOBJECT_INT + DB_DATAOBJECT_NOTNULL, + return array('foreign_id' => DB_DATAOBJECT_INT + DB_DATAOBJECT_NOTNULL, 'timeline' => DB_DATAOBJECT_STR + DB_DATAOBJECT_NOTNULL, 'last_id' => DB_DATAOBJECT_INT + DB_DATAOBJECT_NOTNULL, 'created' => DB_DATAOBJECT_STR + DB_DATAOBJECT_DATE + DB_DATAOBJECT_TIME + DB_DATAOBJECT_NOTNULL, @@ -122,7 +122,7 @@ class Twitter_synch_status extends Memcached_DataObject function keyTypes() { - return array('user_id' => 'K', + return array('foreign_id' => 'K', 'timeline' => 'K'); } @@ -142,9 +142,9 @@ class Twitter_synch_status extends Memcached_DataObject return array(false, false, false); } - static function getLastId($user_id, $timeline) + static function getLastId($foreign_id, $timeline) { - $tss = self::staticGet(array('user_id' => $user_id, + $tss = self::staticGet(array('foreign_id' => $foreign_id, 'timeline' => $timeline)); if (empty($tss)) { @@ -154,20 +154,20 @@ class Twitter_synch_status extends Memcached_DataObject } } - static function setLastId($user_id, $timeline, $last_id) + static function setLastId($foreign_id, $timeline, $last_id) { - $tss = self::staticGet(array('user_id' => $user_id, + $tss = self::staticGet(array('foreign_id' => $foreign_id, 'timeline' => $timeline)); if (empty($tss)) { $tss = new Twitter_synch_status(); - $tss->user_id = $user_id; - $tss->timeline = $timeline; - $tss->last_id = $last_id; - $tss->created = common_sql_now(); - $tss->modified = $tss->created; + $tss->foreign_id = $foreign_id; + $tss->timeline = $timeline; + $tss->last_id = $last_id; + $tss->created = common_sql_now(); + $tss->modified = $tss->created; $tss->insert(); diff --git a/plugins/TwitterBridge/daemons/twitterstatusfetcher.php b/plugins/TwitterBridge/daemons/twitterstatusfetcher.php index c5c2752212..79c9155035 100755 --- a/plugins/TwitterBridge/daemons/twitterstatusfetcher.php +++ b/plugins/TwitterBridge/daemons/twitterstatusfetcher.php @@ -182,7 +182,7 @@ class TwitterStatusFetcher extends ParallelizingDaemon $timeline = null; - $lastId = Twitter_synch_status::getLastId($flink->user_id, 'home_timeline'); + $lastId = Twitter_synch_status::getLastId($flink->foreign_id, 'home_timeline'); try { $timeline = $client->statusesHomeTimeline($lastId); @@ -200,8 +200,6 @@ class TwitterStatusFetcher extends ParallelizingDaemon common_debug(LOG_INFO, $this->name() . ' - Retrieved ' . sizeof($timeline) . ' statuses from Twitter.'); - $lastSeenId = null; - // Reverse to preserve order foreach (array_reverse($timeline) as $status) { @@ -232,9 +230,11 @@ class TwitterStatusFetcher extends ParallelizingDaemon } } - if (!empty($lastSeenId)) { - Twitter_synch_status::setLastId($flink->user_id, 'home_timeline', $lastSeenId); - } + assert(!empty($timeline)); // checked above + + // First status is last in time + + Twitter_synch_status::setLastId($flink->foreign_id, 'home_timeline', $timeline[0]->id); // Okay, record the time we synced with Twitter for posterity