diff options
author | Zach Copley <zach@controlyourself.ca> | 2009-01-29 05:58:27 +0000 |
---|---|---|
committer | Zach Copley <zach@controlyourself.ca> | 2009-01-29 05:58:27 +0000 |
commit | c7d06519f05e8013fcafd5efc44fa095b4c9e5c3 (patch) | |
tree | efb99535092c82674f44594ca3f5e095c8b7466e /lib | |
parent | 04b3add162674df2ebdb4e4e347b7dbea934580b (diff) |
trac750 update Facebook status when posting to Identi.ca from Facebook
Diffstat (limited to 'lib')
-rw-r--r-- | lib/facebookaction.php | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/lib/facebookaction.php b/lib/facebookaction.php index 63ac66250..bfba702e6 100644 --- a/lib/facebookaction.php +++ b/lib/facebookaction.php @@ -441,6 +441,66 @@ class FacebookAction extends Action } } + function updateFacebookStatus($notice) + { + $prefix = $this->facebook->api_client->data_getUserPreference(FACEBOOK_NOTICE_PREFIX, $this->fbuid); + $content = "$prefix $notice->content"; + + if ($this->facebook->api_client->users_hasAppPermission('status_update', $this->fbuid)) { + $this->facebook->api_client->users_setStatus($content, $this->fbuid, false, true); + } + } + + function saveNewNotice() + { + + $user = $this->flink->getUser(); + + $content = $this->trimmed('status_textarea'); + + if (!$content) { + $this->showPage(_('No notice content!')); + return; + } else { + $content_shortened = common_shorten_links($content); + + if (mb_strlen($content_shortened) > 140) { + common_debug("Content = '$content_shortened'", __FILE__); + common_debug("mb_strlen(\$content) = " . mb_strlen($content_shortened), __FILE__); + $this->showPage(_('That\'s too long. Max notice size is 140 chars.')); + return; + } + } + + $inter = new CommandInterpreter(); + + $cmd = $inter->handle_command($user, $content_shortened); + + if ($cmd) { + + // XXX fix this + + $cmd->execute(new WebChannel()); + return; + } + + $replyto = $this->trimmed('inreplyto'); + + $notice = Notice::saveNew($user->id, $content, + 'Facebook', 1, ($replyto == 'false') ? null : $replyto); + + if (is_string($notice)) { + $this->showPage($notice); + return; + } + + common_broadcast_notice($notice); + + // Also update the user's Facebook status + $this->updateFacebookStatus($notice); + $this->updateProfileBox($notice); + + } } |