static function getByForeignID($foreign_id, $service) { $flink = new Foreign_link(); $flink->service = $service; $flink->foreign_id = $foreign_id; $flink->limit(1); if ($flink->find(true)) { return $flink; } return null; }
static function getByForeignID($foreign_id, $service) { if (empty($foreign_id) || empty($service)) { return null; } else { $flink = new Foreign_link(); $flink->service = $service; $flink->foreign_id = $foreign_id; $flink->limit(1); $result = $flink->find(true); return empty($result) ? null : $flink; } }
static function getByForeignID($foreign_id, $service) { if (empty($foreign_id) || empty($service)) { throw new ServerException('Empty foreign_id or service for Foreign_link::getByForeignID'); } $flink = new Foreign_link(); $flink->service = $service; $flink->foreign_id = $foreign_id; $flink->limit(1); if (!$flink->find(true)) { throw new NoResultException($flink); } return $flink; }
/** * Find all the Twitter foreign links for users who have requested * automatically subscribing to their Twitter friends locally. * * @return array flinks an array of Foreign_link objects */ function getObjects() { $flinks = array(); $flink = new Foreign_link(); $conn =& $flink->getDatabaseConnection(); $flink->service = TWITTER_SERVICE; $flink->orderBy('last_friendsync'); $flink->limit(25); // sync this many users during this run $flink->find(); while ($flink->fetch()) { if (($flink->friendsync & FOREIGN_FRIEND_RECV) == FOREIGN_FRIEND_RECV) { $flinks[] = clone $flink; } } $conn->disconnect(); global $_DB_DATAOBJECT; unset($_DB_DATAOBJECT['CONNECTIONS']); return $flinks; }
function dumpMessage($flink, $data) { $msg = prepMessage($flink, $data); print json_encode($msg) . "\r\n"; } function prepMessage($flink, $data) { $msg->for_user = $flink->foreign_id; $msg->message = $data; return $msg; } if (have_option('all')) { $users = array(); $flink = new Foreign_link(); $flink->service = TWITTER_SERVICE; $flink->find(); while ($flink->fetch()) { if (($flink->noticesync & FOREIGN_NOTICE_RECV) == FOREIGN_NOTICE_RECV) { $users[] = $flink->user_id; } } } else { $user = User::getKV('nickname', $nickname); $users = array($user->id); } $output = array(); foreach ($users as $id) { $user = User::getKV('id', $id); if (!$user) { throw new Exception("No user for id {$id}"); }
/** * Saves a Foreign_link between Twitter user and local user, * which includes the access token and secret. * * @param int $user_id StatusNet user ID * @param int $twuid Twitter user ID * @param OAuthToken $token the access token to save * * @return nothing */ function saveForeignLink($user_id, $twuid, $access_token) { $flink = new Foreign_link(); $flink->user_id = $user_id; $flink->service = TWITTER_SERVICE; // delete stale flink, if any $result = $flink->find(true); if (!empty($result)) { $flink->safeDelete(); } $flink->user_id = $user_id; $flink->foreign_id = $twuid; $flink->service = TWITTER_SERVICE; $creds = TwitterOAuthClient::packToken($access_token); $flink->credentials = $creds; $flink->created = common_sql_now(); // Defaults: noticesync on, everything else off $flink->set_flags(true, false, false, false); $flink_id = $flink->insert(); if (empty($flink_id)) { common_log_db_error($flink, 'INSERT', __FILE__); // TRANS: Server error displayed when linking to a Twitter account fails. $this->serverError(_m('Could not link your Twitter account.')); } return $flink_id; }
/** * Find all the Twitter foreign links for users who have requested * importing of their friends' timelines * * @return array flinks an array of Foreign_link objects */ function getObjects() { global $_DB_DATAOBJECT; $flink = new Foreign_link(); $conn =& $flink->getDatabaseConnection(); $flink->service = TWITTER_SERVICE; $flink->orderBy('last_noticesync'); $flink->find(); $flinks = array(); while ($flink->fetch()) { if (($flink->noticesync & FOREIGN_NOTICE_RECV) == FOREIGN_NOTICE_RECV) { $flinks[] = clone $flink; common_log(LOG_INFO, "sync: foreign id {$flink->foreign_id}"); } else { common_log(LOG_INFO, "nothing to sync"); } } $flink->free(); unset($flink); $conn->disconnect(); unset($_DB_DATAOBJECT['CONNECTIONS']); return $flinks; }
function siteStreamForOwner(User $user) { // The user we auth as must be the owner of the application. $auth = twitterAuthForUser($user); if (have_option('apiroot')) { $stream = new TwitterSiteStream($auth, get_option_value('apiroot')); } else { $stream = new TwitterSiteStream($auth); } // Pull Twitter user IDs for all users we want to pull data for $userIds = array(); $flink = new Foreign_link(); $flink->service = TWITTER_SERVICE; $flink->find(); while ($flink->fetch()) { if (($flink->noticesync & FOREIGN_NOTICE_RECV) == FOREIGN_NOTICE_RECV) { $userIds[] = $flink->foreign_id; } } $stream->followUsers($userIds); return $stream; }
/** * Pull the site's active Twitter-importing users and start spawning * some data streams for them! * * @fixme check their last-id and check whether we'll need to do a manual pull. * @fixme abstract out the fetching so we can work over multiple sites. */ protected function initStreams() { common_log(LOG_INFO, 'init...'); // Pull Twitter user IDs for all users we want to pull data for $flink = new Foreign_link(); $flink->service = TWITTER_SERVICE; // @fixme probably should do the bitfield check in a whereAdd but it's ugly :D $flink->find(); $userIds = array(); while ($flink->fetch()) { if (($flink->noticesync & FOREIGN_NOTICE_RECV) == FOREIGN_NOTICE_RECV) { $userIds[] = $flink->foreign_id; if (count($userIds) >= self::USERS_PER_STREAM) { $this->spawnStream($userIds); $userIds = array(); } } } if (count($userIds)) { $this->spawnStream($userIds); } }
/** * Refresh the foreign links for this user * * @return void */ function refreshFlinks() { $flink = new Foreign_link(); $flink->service = 1; // Twitter $flink->orderBy('last_noticesync'); $cnt = $flink->find(); if (defined('SCRIPT_DEBUG')) { common_debug('Updating Twitter friends subscriptions' . " for {$cnt} users."); } $flinks = array(); while ($flink->fetch()) { if (($flink->noticesync & FOREIGN_NOTICE_RECV) == FOREIGN_NOTICE_RECV) { $flinks[] = clone $flink; } } $flink->free(); unset($flink); return $flinks; }