X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=plugins%2FFacebook%2FFacebookPlugin.php;h=39b2ef28767641e08322256fbca42cc70b9ccc12;hb=4b5e977a7b1c390555d880d3dc7f8b8c6744646c;hp=cf6781cfaf8d85a0c807e12f18442c916d6b96c5;hpb=aa58e8a73800d21d299b8c28d1b466b4d2b9cc70;p=quix0rs-gnu-social.git diff --git a/plugins/Facebook/FacebookPlugin.php b/plugins/Facebook/FacebookPlugin.php index cf6781cfaf..39b2ef2876 100644 --- a/plugins/Facebook/FacebookPlugin.php +++ b/plugins/Facebook/FacebookPlugin.php @@ -34,12 +34,6 @@ if (!defined('STATUSNET')) { define("FACEBOOK_CONNECT_SERVICE", 3); require_once INSTALLDIR . '/plugins/Facebook/facebookutil.php'; -require_once INSTALLDIR . '/plugins/Facebook/FBConnectAuth.php'; -require_once INSTALLDIR . '/plugins/Facebook/FBConnectLogin.php'; -require_once INSTALLDIR . '/plugins/Facebook/FBConnectSettings.php'; -require_once INSTALLDIR . '/plugins/Facebook/FBCLoginGroupNav.php'; -require_once INSTALLDIR . '/plugins/Facebook/FBCSettingsNav.php'; -require_once INSTALLDIR . '/plugins/Facebook/FBC_XDReceiver.php'; /** * Facebook plugin to add a StatusNet Facebook application @@ -64,16 +58,17 @@ class FacebookPlugin extends Plugin * @return boolean hook return */ - function onRouterInitialized(&$m) + function onStartInitializeRouter($m) { // Facebook App stuff - $m->connect('facebook', array('action' => 'facebookhome')); - $m->connect('facebook/index.php', array('action' => 'facebookhome')); - $m->connect('facebook/settings.php', array('action' => 'facebooksettings')); - $m->connect('facebook/invite.php', array('action' => 'facebookinvite')); - $m->connect('facebook/remove', array('action' => 'facebookremove')); + $m->connect('facebook/app', array('action' => 'facebookhome')); + $m->connect('facebook/app/index.php', array('action' => 'facebookhome')); + $m->connect('facebook/app/settings.php', + array('action' => 'facebooksettings')); + $m->connect('facebook/app/invite.php', array('action' => 'facebookinvite')); + $m->connect('facebook/app/remove', array('action' => 'facebookremove')); // Facebook Connect stuff @@ -93,6 +88,7 @@ class FacebookPlugin extends Plugin * @return boolean hook return * */ + function onAutoload($cls) { switch ($cls) { @@ -104,12 +100,33 @@ class FacebookPlugin extends Plugin include_once INSTALLDIR . '/plugins/Facebook/' . strtolower(mb_substr($cls, 0, -6)) . '.php'; return false; + case 'FBConnectAuthAction': + case 'FBConnectLoginAction': + case 'FBConnectSettingsAction': + case 'FBC_XDReceiverAction': + include_once INSTALLDIR . '/plugins/Facebook/' . + mb_substr($cls, 0, -6) . '.php'; + return false; + case 'FBCLoginGroupNav': + include_once INSTALLDIR . '/plugins/Facebook/FBCLoginGroupNav.php'; + return false; + case 'FBCSettingsNav': + include_once INSTALLDIR . '/plugins/Facebook/FBCSettingsNav.php'; + return false; default: return true; } } - // Add in xmlns:fb + /** + * Override normal HTML output to force the content type to + * text/html and add in xmlns:fb + * + * @param Action $action the current action + * + * @return void + */ + function onStartShowHTML($action) { @@ -121,6 +138,7 @@ class FacebookPlugin extends Plugin // text/html even though Facebook Connect uses XHTML. This is // A bug in Facebook Connect, and this is a temporary solution // until they fix their JavaScript libs. + header('Content-Type: text/html'); $action->extraHeaders(); @@ -143,22 +161,30 @@ class FacebookPlugin extends Plugin } } - // Note: this script needs to appear in the + /** + * Add in the Facebook Connect JavaScript stuff + * + * Note: this script needs to appear in the + * + * @param Action $action the current action + * + * @return void + * + */ function onEndShowScripts($action) { if ($this->reqFbScripts($action)) { - $apikey = common_config('facebook', 'apikey'); + $apikey = common_config('facebook', 'apikey'); $plugin_path = common_path('plugins/Facebook'); - $login_url = common_local_url('FBConnectAuth'); + $login_url = common_local_url('FBConnectAuth'); $logout_url = common_local_url('logout'); // XXX: Facebook says we don't need this FB_RequireFeatures(), // but we actually do, for IE and Safari. Gar. - $js = ''; $js = sprintf($js, $apikey, $login_url, $logout_url); // Compress the bugger down a bit + $js = str_replace(' ', '', $js); - $action->raw(" $js"); // leading two spaces to make it line up + $action->inlineScript($js); } } - // Note: this script needs to appear as close as possible to + /** + * Add in an additional Facebook Connect script that's supposed to + * appear as close as possible to + * + * @param Action $action the current action + * + * @return void + * + */ function onEndShowFooter($action) { if ($this->reqFbScripts($action)) { - $action->script('http://static.ak.connect.facebook.com/js/api_lib/v0.4/FeatureLoader.js.php'); + $action->script('http://static.ak.connect.facebook.com' . + '/js/api_lib/v0.4/FeatureLoader.js.php'); } } + /** + * Output Facebook Connect specific CSS link + * + * @param Action $action the current action + * + * @return void + * + */ + function onEndShowStatusNetStyles($action) { if ($this->reqFbScripts($action)) { @@ -220,17 +264,18 @@ class FacebookPlugin extends Plugin } } - /** + /** * Does the Action we're plugged into require the FB Scripts? We only * want to output FB namespace, scripts, CSS, etc. on the pages that * really need them. * - * @param Action the action in question + * @param Action $action the current action * * @return boolean true */ - function reqFbScripts($action) { + function reqFbScripts($action) + { // If you're logged in w/FB Connect, you always need the FB stuff @@ -292,10 +337,19 @@ class FacebookPlugin extends Plugin return null; } + /** + * Add in a Facebook Connect avatar to the primary nav menu + * + * @param Action $action the current action + * + * @return void + * + */ + function onStartPrimaryNav($action) { - $user = common_current_user(); + $connect = 'FBConnectSettings'; if (common_config('xmpp', 'enabled')) { $connect = 'imsettings'; @@ -338,31 +392,55 @@ class FacebookPlugin extends Plugin return true; } - function onStartShowLocalNavBlock($action) + /* + * Add a login tab for Facebook Connect + * + * @param Action &action the current action + * + * @return void + */ + + function onEndLoginGroupNav(&$action) { - $action_name = get_class($action); - $login_actions = array('LoginAction', 'RegisterAction', - 'OpenidloginAction', 'FBConnectLoginAction'); + $action_name = $action->trimmed('action'); - if (in_array($action_name, $login_actions)) { - $nav = new FBCLoginGroupNav($action); - $nav->show(); - return false; - } + $action->menuItem(common_local_url('FBConnectLogin'), + _m('Facebook'), + _m('Login or register using Facebook'), + 'FBConnectLogin' === $action_name); - $connect_actions = array('SmssettingsAction', 'ImsettingsAction', - 'TwittersettingsAction', 'FBConnectSettingsAction'); + return true; + } - if (in_array($action_name, $connect_actions)) { - $nav = new FBCSettingsNav($action); - $nav->show(); - return false; - } + /* + * Add a tab for managing Facebook Connect settings + * + * @param Action &action the current action + * + * @return void + */ + + function onEndConnectSettingsNav(&$action) + { + $action_name = $action->trimmed('action'); + + $action->menuItem(common_local_url('FBConnectSettings'), + _m('Facebook'), + _m('Facebook Connect Settings'), + $action_name === 'FBConnectSettings'); return true; } + /** + * Have the logout process do some Facebook Connect cookie cleanup + * + * @param Action $action the current action + * + * @return void + */ + function onStartLogout($action) { $action->logout(); @@ -382,9 +460,16 @@ class FacebookPlugin extends Plugin return true; } + /** + * Get the URL of the user's Facebook avatar + * + * @param int $fbuid the Facebook user ID + * + * @return string $url the url for the user's Facebook avatar + */ + function getProfilePicURL($fbuid) { - $facebook = getFacebook(); $url = null; @@ -403,8 +488,7 @@ class FacebookPlugin extends Plugin "Facebook client failure requesting profile pic!"); } - return $url; - + return $url; } /** @@ -415,6 +499,7 @@ class FacebookPlugin extends Plugin * * @return boolean hook return */ + function onStartEnqueueNotice($notice, &$transports) { array_push($transports, 'facebook'); @@ -429,6 +514,7 @@ class FacebookPlugin extends Plugin * * @return boolean hook return */ + function onUnqueueHandleNotice(&$notice, $queue) { if (($queue == 'facebook') && ($this->_isLocal($notice))) { @@ -441,10 +527,11 @@ class FacebookPlugin extends Plugin /** * Determine whether the notice was locally created * - * @param Notice $notice + * @param Notice $notice the notice * * @return boolean locality */ + function _isLocal($notice) { return ($notice->is_local == Notice::LOCAL_PUBLIC || @@ -459,6 +546,7 @@ class FacebookPlugin extends Plugin * @return boolean hook return * */ + function onGetValidDaemons($daemons) { array_push($daemons, INSTALLDIR . @@ -466,4 +554,4 @@ class FacebookPlugin extends Plugin return true; } -} \ No newline at end of file +}