diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/util.php | 42 |
1 files changed, 27 insertions, 15 deletions
diff --git a/lib/util.php b/lib/util.php index b0edb8ef0..a45f4a214 100644 --- a/lib/util.php +++ b/lib/util.php @@ -1107,16 +1107,28 @@ function common_save_replies($notice) { } function common_broadcast_notice($notice, $remote=false) { - + // Check to see if notice should go to Twitter $flink = Foreign_link::getForeignLink($notice->profile_id, 1); // 1 == Twitter - - if ($flink->noticesync == 1) { - if (!common_twitter_broadcast($notice, $flink)) { - common_debug('Unable to send notice: ' . $notice->id . ' to Twitter.', __FILE__); + if ($flink->noticesync >= 1) { + $ok_to_send = true; + + // Check to see whether user wants to filter @-replies + if ($flink->noticesync == 3) { + if (preg_match('/(?:^|\s)@([A-Za-z0-9_\-\.]{1,64})/', $notice->content)) { + $ok_to_send = false; + } + } + + if ($ok_to_send) { + $result = common_twitter_broadcast($notice, $flink); + + if (!$result) { + common_debug('Unable to send notice: ' . $notice->id . ' to Twitter.', __FILE__); + } } } - + if (common_config('queue', 'enabled')) { # Do it later! return common_enqueue_notice($notice); @@ -1125,17 +1137,17 @@ function common_broadcast_notice($notice, $remote=false) { } } -function common_twitter_broadcast($notice, $flink) { +function common_twitter_broadcast($notice, $flink) { global $config; $success = true; $fuser = $flink->getForeignUser(); $twitter_user = $fuser->nickname; $twitter_password = $flink->credentials; $uri = 'http://www.twitter.com/statuses/update.json'; - + // XXX: Hack to get around PHP cURL's use of @ being a a meta character $statustxt = preg_replace('/^@/', ' @', $notice->content); - + $options = array( CURLOPT_USERPWD => "$twitter_user:$twitter_password", CURLOPT_POST => true, @@ -1151,27 +1163,27 @@ function common_twitter_broadcast($notice, $flink) { CURLOPT_CONNECTTIMEOUT => 120, // XXX: Scary!!!! How long should this be? CURLOPT_TIMEOUT => 120 ); - + $ch = curl_init($uri); curl_setopt_array($ch, $options); $data = curl_exec($ch); $errmsg = curl_error($ch); if ($errmsg) { - common_debug("cURL error: $errmsg - trying to send notice for $twitter_user.", + common_debug("cURL error: $errmsg - trying to send notice for $twitter_user.", __FILE__); $success = false; } curl_close($ch); - + if (!$data) { common_debug("No data returned by Twitter's API trying to send update for $twitter_user", __FILE__); $success = false; } - // Twitter should return a status + // Twitter should return a status $status = json_decode($data); if (!$status->id) { @@ -1179,8 +1191,8 @@ function common_twitter_broadcast($notice, $flink) { __FILE__); $success = false; } - - return $status; + + return $success; } # Stick the notice on the queue |