summaryrefslogtreecommitdiff
path: root/lib/facebookaction.php
diff options
context:
space:
mode:
authorZach Copley <zach@controlyourself.ca>2009-01-29 05:58:27 +0000
committerZach Copley <zach@controlyourself.ca>2009-01-29 05:58:27 +0000
commitc7d06519f05e8013fcafd5efc44fa095b4c9e5c3 (patch)
treeefb99535092c82674f44594ca3f5e095c8b7466e /lib/facebookaction.php
parent04b3add162674df2ebdb4e4e347b7dbea934580b (diff)
trac750 update Facebook status when posting to Identi.ca from Facebook
Diffstat (limited to 'lib/facebookaction.php')
-rw-r--r--lib/facebookaction.php60
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);
+
+ }
}