]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - plugins/Facebook/facebookutil.php
Merge branch 'master' of gitorious.org:statusnet/mainline
[quix0rs-gnu-social.git] / plugins / Facebook / facebookutil.php
index da53f35e2882eb1a13aa26b4dc40b34f00273cd5..ab2d427264254d4f15b8194f07af1044d8d9533f 100644 (file)
@@ -104,9 +104,13 @@ function facebookBroadcastNotice($notice)
 
             $status = "$prefix $notice->content";
 
+            common_debug("FacebookPlugin - checking for publish_stream permission for user $user->id");
+
             $can_publish = $facebook->api_client->users_hasAppPermission('publish_stream',
                                                                          $fbuid);
 
+            common_debug("FacebookPlugin - checking for status_update permission for user $user->id");
+
             $can_update  = $facebook->api_client->users_hasAppPermission('status_update',
                                                                          $fbuid);
             if (!empty($attachments) && $can_publish == 1) {
@@ -114,15 +118,15 @@ function facebookBroadcastNotice($notice)
                 $facebook->api_client->stream_publish($status, $fbattachment,
                                                       null, null, $fbuid);
                 common_log(LOG_INFO,
-                           "Posted notice $notice->id w/attachment " .
+                           "FacebookPlugin - Posted notice $notice->id w/attachment " .
                            "to Facebook user's stream (fbuid = $fbuid).");
             } elseif ($can_update == 1 || $can_publish == 1) {
                 $facebook->api_client->users_setStatus($status, $fbuid, false, true);
                 common_log(LOG_INFO,
-                           "Posted notice $notice->id to Facebook " .
+                           "FacebookPlugin - Posted notice $notice->id to Facebook " .
                            "as a status update (fbuid = $fbuid).");
             } else {
-                $msg = "Not sending notice $notice->id to Facebook " .
+                $msg = "FacebookPlugin - Not sending notice $notice->id to Facebook " .
                   "because user $user->nickname hasn't given the " .
                   'Facebook app \'status_update\' or \'publish_stream\' permission.';
                 common_log(LOG_WARNING, $msg);
@@ -138,21 +142,23 @@ function facebookBroadcastNotice($notice)
 
             $code = $e->getCode();
 
-            common_log(LOG_WARNING, 'Facebook returned error code ' .
-                       $code . ': ' . $e->getMessage());
-            common_log(LOG_WARNING,
-                       'Unable to update Facebook status for ' .
-                       "$user->nickname (user id: $user->id)!");
+            $msg = "FacebookPlugin - Facebook returned error code $code: " .
+              $e->getMessage() . ' - ' .
+              "Unable to update Facebook status (notice $notice->id) " .
+              "for $user->nickname (user id: $user->id)!";
+
+            common_log(LOG_WARNING, $msg);
 
-            if ($code == 200 || $code == 250) {
+            if ($code == 100 || $code == 200 || $code == 250) {
 
+                // 100 The account is 'inactive' (probably - this is not well documented)
                 // 200 The application does not have permission to operate on the passed in uid parameter.
                 // 250 Updating status requires the extended permission status_update or publish_stream.
                 // see: http://wiki.developers.facebook.com/index.php/Users.setStatus#Example_Return_XML
 
                 remove_facebook_app($flink);
 
-            } else {
+        } else {
 
                 // Try sending again later.
 
@@ -168,7 +174,7 @@ function facebookBroadcastNotice($notice)
 
 function updateProfileBox($facebook, $flink, $notice) {
     $fbaction = new FacebookAction($output = 'php://output',
-                                   $indent = true, $facebook, $flink);
+                                   $indent = null, $facebook, $flink);
     $fbaction->updateProfileBox($notice);
 }
 
@@ -258,3 +264,38 @@ function remove_facebook_app($flink)
     }
 
 }
+
+/**
+ * Send a mail message to notify a user that her Facebook Application
+ * access has been removed.
+ *
+ * @param User $user   user whose Facebook app link has been removed
+ *
+ * @return boolean success flag
+ */
+
+function mail_facebook_app_removed($user)
+{
+    $profile = $user->getProfile();
+
+    $site_name = common_config('site', 'name');
+
+    common_switch_locale($user->language);
+
+    $subject = sprintf(
+        _m('Your %1$s Facebook application access has been disabled.',
+            $site_name));
+
+    $body = sprintf(_m("Hi, %1\$s. We're sorry to inform you that we are " .
+        'unable to update your Facebook status from %2$s, and have disabled ' .
+        'the Facebook application for your account. This may be because ' .
+        'you have removed the Facebook application\'s authorization, or ' .
+        'have deleted your Facebook account.  You can re-enable the ' .
+        'Facebook application and automatic status updating by ' .
+        "re-installing the %2\$s Facebook application.\n\nRegards,\n\n%2\$s"),
+        $user->nickname, $site_name);
+
+    common_switch_locale();
+    return mail_to_user($user, $subject, $body);
+
+}