/** * Send a retweet to Twitter for a notice that has been previously bridged * in or out. * * Warning: the return value is not guaranteed to be an object; some error * conditions will return a 'true' which should be passed on to a calling * queue handler. * * No local information about the resulting retweet is saved: it's up to * caller to save new mappings etc if appropriate. * * @param Foreign_link $flink * @param Notice $notice * @return mixed object with resulting Twitter status data on success, or true/false/null on error conditions. */ function retweet_notice($flink, $notice) { $token = TwitterOAuthClient::unpackToken($flink->credentials); $client = new TwitterOAuthClient($token->key, $token->secret); $id = twitter_status_id($notice); if (empty($id)) { common_log(LOG_WARNING, "Trying to retweet notice {$notice->id} with no known status id."); return null; } try { $status = $client->statusesRetweet($id); return $status; } catch (OAuthClientException $e) { return process_error($e, $flink, $notice); } }