summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrion Vibber <brion@pobox.com>2009-10-12 22:36:17 +0000
committerBrion Vibber <brion@pobox.com>2009-10-16 14:49:46 -0700
commitd3bbf3ad24c27522694bfaed437897273069a1e8 (patch)
tree1766f0963aca7fcb71f65ff6ec9cad56f9887e45
parentd1e70b4e37149e09b2189957e2a869b4014a05c5 (diff)
Workaround for Facebook data store API behavior regression, fixes saving
of empty notice prefix text in facebook settings. Filed bug upstream at http://bugs.developers.facebook.com/show_bug.cgi?id=7110 Per documentation, saving a pref value of "" or "0" will delete the pref key: http://wiki.developers.facebook.com/index.php/Data.setUserPreference which used to do what we want... Now Facebook throws back an error "Parameter value is required" when we do this. Workaround appends a space to empty string or "0" at save time, then trims the string when we load it. The input string was already trimmed at pref save time, so this won't alter any user-visible behavior. Thanks to ^demon in #mediawiki for pointing out the behavior regression after testing the identi.ca Facebook app!
-rw-r--r--actions/facebooksettings.php11
-rw-r--r--lib/facebookutil.php4
2 files changed, 11 insertions, 4 deletions
diff --git a/actions/facebooksettings.php b/actions/facebooksettings.php
index 84bdde910..b2b1d6807 100644
--- a/actions/facebooksettings.php
+++ b/actions/facebooksettings.php
@@ -58,8 +58,15 @@ class FacebooksettingsAction extends FacebookAction
$this->flink->set_flags($noticesync, $replysync, false, false);
$result = $this->flink->update($original);
+ if ($prefix == '' || $prefix == '0') {
+ // Facebook bug: saving empty strings to prefs now fails
+ // http://bugs.developers.facebook.com/show_bug.cgi?id=7110
+ $trimmed = $prefix . ' ';
+ } else {
+ $trimmed = substr($prefix, 0, 128);
+ }
$this->facebook->api_client->data_setUserPreference(FACEBOOK_NOTICE_PREFIX,
- substr($prefix, 0, 128));
+ $trimmed);
if ($result === false) {
$this->showForm(_('There was a problem saving your sync preferences!'));
@@ -101,7 +108,7 @@ class FacebooksettingsAction extends FacebookAction
$this->elementStart('li');
- $prefix = $this->facebook->api_client->data_getUserPreference(FACEBOOK_NOTICE_PREFIX);
+ $prefix = trim($this->facebook->api_client->data_getUserPreference(FACEBOOK_NOTICE_PREFIX));
$this->input('prefix', _('Prefix'),
($prefix) ? $prefix : null,
diff --git a/lib/facebookutil.php b/lib/facebookutil.php
index ad61b6f0a..c29576b64 100644
--- a/lib/facebookutil.php
+++ b/lib/facebookutil.php
@@ -99,8 +99,8 @@ function facebookBroadcastNotice($notice)
// XXX: Does this call count against our per user FB request limit?
// If so we should consider storing verb elsewhere or not storing
- $prefix = $facebook->api_client->data_getUserPreference(FACEBOOK_NOTICE_PREFIX,
- $fbuid);
+ $prefix = trim($facebook->api_client->data_getUserPreference(FACEBOOK_NOTICE_PREFIX,
+ $fbuid));
$status = "$prefix $notice->content";