summaryrefslogtreecommitdiff
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
parent04b3add162674df2ebdb4e4e347b7dbea934580b (diff)
trac750 update Facebook status when posting to Identi.ca from Facebook
-rw-r--r--actions/facebookhome.php49
-rw-r--r--lib/facebookaction.php60
2 files changed, 61 insertions, 48 deletions
diff --git a/actions/facebookhome.php b/actions/facebookhome.php
index 4eaf0b4f7..7f9c942ea 100644
--- a/actions/facebookhome.php
+++ b/actions/facebookhome.php
@@ -89,7 +89,7 @@ class FacebookhomeAction extends FacebookAction
}
}
-
+
function login()
{
@@ -232,53 +232,6 @@ class FacebookhomeAction extends FacebookAction
$this->elementEnd('div');
}
-
- 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);
-
- }
/**
* Generate pagination links
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);
+
+ }
}