summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZach Copley <zach@status.net>2010-11-22 21:40:47 +0000
committerZach Copley <zach@status.net>2010-11-22 21:40:47 +0000
commit7e6c0e542f61008831b9eae93a1a45869645d3cf (patch)
tree033bfa442867606ef403b2ece95c3c87004fc554
parent2b0d1d9fc4cc2f8d297a14ed0708bcb64a1f070d (diff)
FacebookBridge - fail gracefully if the user has already deleted a
linked notice on Facebook.
-rw-r--r--plugins/FacebookBridge/lib/facebookclient.php165
1 files changed, 91 insertions, 74 deletions
diff --git a/plugins/FacebookBridge/lib/facebookclient.php b/plugins/FacebookBridge/lib/facebookclient.php
index 907c7537e..20d8aef7e 100644
--- a/plugins/FacebookBridge/lib/facebookclient.php
+++ b/plugins/FacebookBridge/lib/facebookclient.php
@@ -103,6 +103,7 @@ class Facebookclient
*/
static function facebookBroadcastNotice($notice)
{
+ common_debug('Facebook broadcast');
$client = new Facebookclient($notice);
return $client->sendNotice();
}
@@ -424,12 +425,6 @@ class Facebookclient
);
return true;
break;
-
- // @fixme: Facebook returns these 2xx permission errors sometimes
- // FOR NO GOOD REASON AT ALL! It would be better to retry a few times
- // over an extended period of time to instead of immediately
- // disconnecting.
-
case 200: // Permissions error
case 250: // Updating status requires the extended permission status_update
$this->disconnect();
@@ -979,40 +974,48 @@ BODY;
if (!empty($this->flink) && !empty($n2i)) {
- $result = $this->facebook->api(
- array(
- 'method' => 'stream.remove',
- 'post_id' => $n2i->item_id,
- 'uid' => $this->flink->foreign_id
- )
- );
-
- if (!empty($result) && result == true) {
+ try {
- common_log(
- LOG_INFO,
- sprintf(
- 'Deleted Facebook item: %s for %s (%d), fbuid %d',
- $n2i->item_id,
- $this->user->nickname,
- $this->user->id,
- $this->flink->foreign_id
- ),
- __FILE__
+ $result = $this->facebook->api(
+ array(
+ 'method' => 'stream.remove',
+ 'post_id' => $n2i->item_id,
+ 'uid' => $this->flink->foreign_id
+ )
);
- $n2i->delete();
+ if (!empty($result) && result == true) {
- } else {
+ common_log(
+ LOG_INFO,
+ sprintf(
+ 'Deleted Facebook item: %s for %s (%d), fbuid %d',
+ $n2i->item_id,
+ $this->user->nickname,
+ $this->user->id,
+ $this->flink->foreign_id
+ ),
+ __FILE__
+ );
+
+ $n2i->delete();
+ } else {
+ throw new FaceboookApiException(var_export($result, true));
+ }
+
+ } catch (FacebookApiException $e) {
common_log(
LOG_WARNING,
sprintf(
- 'Could not deleted Facebook item: %s for %s (%d), fbuid %d',
+ 'Could not deleted Facebook item: %s for %s (%d), '
+ . 'fbuid %d - (API error: %s) item already deleted '
+ . 'on Facebook? ',
$n2i->item_id,
$this->user->nickname,
$this->user->id,
- $this->flink->foreign_id
+ $this->flink->foreign_id,
+ $e
),
__FILE__
);
@@ -1030,38 +1033,45 @@ BODY;
if (!empty($this->flink) && !empty($n2i)) {
- $result = $this->facebook->api(
- array(
- 'method' => 'stream.addlike',
- 'post_id' => $n2i->item_id,
- 'uid' => $this->flink->foreign_id
- )
- );
+ try {
- if (!empty($result) && result == true) {
-
- common_log(
- LOG_INFO,
- sprintf(
- 'Added like for item: %s for %s (%d), fbuid %d',
- $n2i->item_id,
- $this->user->nickname,
- $this->user->id,
- $this->flink->foreign_id
- ),
- __FILE__
+ $result = $this->facebook->api(
+ array(
+ 'method' => 'stream.addlike',
+ 'post_id' => $n2i->item_id,
+ 'uid' => $this->flink->foreign_id
+ )
);
- } else {
+ if (!empty($result) && result == true) {
+
+ common_log(
+ LOG_INFO,
+ sprintf(
+ 'Added like for item: %s for %s (%d), fbuid %d',
+ $n2i->item_id,
+ $this->user->nickname,
+ $this->user->id,
+ $this->flink->foreign_id
+ ),
+ __FILE__
+ );
+
+ } else {
+ throw new FacebookApiException(var_export($result, true));
+ }
+ } catch (FacebookApiException $e) {
common_log(
LOG_WARNING,
sprintf(
- 'Could not like Facebook item: %s for %s (%d), fbuid %d',
+ 'Could not like Facebook item: %s for %s (%d), '
+ . 'fbuid %d (API error: %s)',
$n2i->item_id,
$this->user->nickname,
$this->user->id,
- $this->flink->foreign_id
+ $this->flink->foreign_id,
+ $e
),
__FILE__
);
@@ -1079,38 +1089,45 @@ BODY;
if (!empty($this->flink) && !empty($n2i)) {
- $result = $this->facebook->api(
- array(
- 'method' => 'stream.removeLike',
- 'post_id' => $n2i->item_id,
- 'uid' => $this->flink->foreign_id
- )
- );
-
- if (!empty($result) && result == true) {
+ try {
- common_log(
- LOG_INFO,
- sprintf(
- 'Removed like for item: %s for %s (%d), fbuid %d',
- $n2i->item_id,
- $this->user->nickname,
- $this->user->id,
- $this->flink->foreign_id
- ),
- __FILE__
+ $result = $this->facebook->api(
+ array(
+ 'method' => 'stream.removeLike',
+ 'post_id' => $n2i->item_id,
+ 'uid' => $this->flink->foreign_id
+ )
);
- } else {
+ if (!empty($result) && result == true) {
+
+ common_log(
+ LOG_INFO,
+ sprintf(
+ 'Removed like for item: %s for %s (%d), fbuid %d',
+ $n2i->item_id,
+ $this->user->nickname,
+ $this->user->id,
+ $this->flink->foreign_id
+ ),
+ __FILE__
+ );
+
+ } else {
+ throw new FacebookApiException(var_export($result, true));
+ }
- common_log(
+ } catch (FacebookApiException $e) {
+ common_log(
LOG_WARNING,
sprintf(
- 'Could not remove like for Facebook item: %s for %s (%d), fbuid %d',
+ 'Could not remove like for Facebook item: %s for %s '
+ . '(%d), fbuid %d (API error: %s)',
$n2i->item_id,
$this->user->nickname,
$this->user->id,
- $this->flink->foreign_id
+ $this->flink->foreign_id,
+ $e
),
__FILE__
);