FacebookBridge - fail gracefully if the user has already deleted a

linked notice on Facebook.
This commit is contained in:
Zach Copley 2010-11-22 21:40:47 +00:00
parent 2b0d1d9fc4
commit 7e6c0e542f

View File

@ -103,6 +103,7 @@ class Facebookclient
*/ */
static function facebookBroadcastNotice($notice) static function facebookBroadcastNotice($notice)
{ {
common_debug('Facebook broadcast');
$client = new Facebookclient($notice); $client = new Facebookclient($notice);
return $client->sendNotice(); return $client->sendNotice();
} }
@ -424,12 +425,6 @@ class Facebookclient
); );
return true; return true;
break; 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 200: // Permissions error
case 250: // Updating status requires the extended permission status_update case 250: // Updating status requires the extended permission status_update
$this->disconnect(); $this->disconnect();
@ -979,40 +974,48 @@ BODY;
if (!empty($this->flink) && !empty($n2i)) { if (!empty($this->flink) && !empty($n2i)) {
$result = $this->facebook->api( try {
array(
'method' => 'stream.remove',
'post_id' => $n2i->item_id,
'uid' => $this->flink->foreign_id
)
);
if (!empty($result) && result == true) { $result = $this->facebook->api(
array(
common_log( 'method' => 'stream.remove',
LOG_INFO, 'post_id' => $n2i->item_id,
sprintf( 'uid' => $this->flink->foreign_id
'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(); 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( common_log(
LOG_WARNING, LOG_WARNING,
sprintf( 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, $n2i->item_id,
$this->user->nickname, $this->user->nickname,
$this->user->id, $this->user->id,
$this->flink->foreign_id $this->flink->foreign_id,
$e
), ),
__FILE__ __FILE__
); );
@ -1030,38 +1033,45 @@ BODY;
if (!empty($this->flink) && !empty($n2i)) { if (!empty($this->flink) && !empty($n2i)) {
$result = $this->facebook->api( try {
array(
'method' => 'stream.addlike',
'post_id' => $n2i->item_id,
'uid' => $this->flink->foreign_id
)
);
if (!empty($result) && result == true) { $result = $this->facebook->api(
array(
common_log( 'method' => 'stream.addlike',
LOG_INFO, 'post_id' => $n2i->item_id,
sprintf( 'uid' => $this->flink->foreign_id
'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 { 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( common_log(
LOG_WARNING, LOG_WARNING,
sprintf( 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, $n2i->item_id,
$this->user->nickname, $this->user->nickname,
$this->user->id, $this->user->id,
$this->flink->foreign_id $this->flink->foreign_id,
$e
), ),
__FILE__ __FILE__
); );
@ -1079,38 +1089,45 @@ BODY;
if (!empty($this->flink) && !empty($n2i)) { if (!empty($this->flink) && !empty($n2i)) {
$result = $this->facebook->api( try {
array(
'method' => 'stream.removeLike',
'post_id' => $n2i->item_id,
'uid' => $this->flink->foreign_id
)
);
if (!empty($result) && result == true) { $result = $this->facebook->api(
array(
common_log( 'method' => 'stream.removeLike',
LOG_INFO, 'post_id' => $n2i->item_id,
sprintf( 'uid' => $this->flink->foreign_id
'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 { if (!empty($result) && result == true) {
common_log( 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));
}
} catch (FacebookApiException $e) {
common_log(
LOG_WARNING, LOG_WARNING,
sprintf( 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, $n2i->item_id,
$this->user->nickname, $this->user->nickname,
$this->user->id, $this->user->id,
$this->flink->foreign_id $this->flink->foreign_id,
$e
), ),
__FILE__ __FILE__
); );