diff options
Diffstat (limited to 'plugins/FBConnect')
-rw-r--r-- | plugins/FBConnect/FBCLoginGroupNav.php | 22 | ||||
-rw-r--r-- | plugins/FBConnect/FBCSettingsNav.php | 22 | ||||
-rw-r--r-- | plugins/FBConnect/FBC_XDReceiver.php | 11 | ||||
-rw-r--r-- | plugins/FBConnect/FBConnectAuth.php | 75 | ||||
-rw-r--r-- | plugins/FBConnect/FBConnectLogin.php | 4 | ||||
-rw-r--r-- | plugins/FBConnect/FBConnectPlugin.css | 8 | ||||
-rw-r--r-- | plugins/FBConnect/FBConnectPlugin.php | 51 | ||||
-rw-r--r-- | plugins/FBConnect/FBConnectSettings.php | 24 | ||||
-rw-r--r-- | plugins/FBConnect/README | 76 |
9 files changed, 182 insertions, 111 deletions
diff --git a/plugins/FBConnect/FBCLoginGroupNav.php b/plugins/FBConnect/FBCLoginGroupNav.php index 6eb09c3c0..782f7198a 100644 --- a/plugins/FBConnect/FBCLoginGroupNav.php +++ b/plugins/FBConnect/FBCLoginGroupNav.php @@ -1,6 +1,6 @@ <?php /** - * Laconica, the distributed open-source microblogging tool + * StatusNet, the distributed open-source microblogging tool * * Menu for login group of actions * @@ -20,15 +20,15 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. * * @category Menu - * @package Laconica - * @author Evan Prodromou <evan@controlyourself.ca> - * @author Zach Copley <zach@controlyourself.ca> - * @copyright 2009 Control Yourself, Inc. + * @package StatusNet + * @author Evan Prodromou <evan@status.net> + * @author Zach Copley <zach@status.net> + * @copyright 2009 StatusNet, Inc. * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 - * @link http://laconi.ca/ + * @link http://status.net/ */ -if (!defined('LACONICA')) { +if (!defined('STATUSNET')) { exit(1); } @@ -38,11 +38,11 @@ require_once INSTALLDIR . '/lib/widget.php'; * Menu for login group of actions * * @category Output - * @package Laconica - * @author Evan Prodromou <evan@controlyourself.ca> - * @author Zach Copley <zach@controlyourself.ca> + * @package StatusNet + * @author Evan Prodromou <evan@status.net> + * @author Zach Copley <zach@status.net> * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 - * @link http://laconi.ca/ + * @link http://status.net/ * * @see Widget */ diff --git a/plugins/FBConnect/FBCSettingsNav.php b/plugins/FBConnect/FBCSettingsNav.php index 8b8411853..a4ecbada1 100644 --- a/plugins/FBConnect/FBCSettingsNav.php +++ b/plugins/FBConnect/FBCSettingsNav.php @@ -1,6 +1,6 @@ <?php /** - * Laconica, the distributed open-source microblogging tool + * StatusNet, the distributed open-source microblogging tool * * Menu for login group of actions * @@ -20,15 +20,15 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. * * @category Menu - * @package Laconica - * @author Evan Prodromou <evan@controlyourself.ca> - * @author Zach Copley <zach@controlyourself.ca> - * @copyright 2009 Control Yourself, Inc. + * @package StatusNet + * @author Evan Prodromou <evan@status.net> + * @author Zach Copley <zach@status.net> + * @copyright 2009 StatusNet, Inc. * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 - * @link http://laconi.ca/ + * @link http://status.net/ */ -if (!defined('LACONICA')) { +if (!defined('STATUSNET')) { exit(1); } @@ -38,11 +38,11 @@ require_once INSTALLDIR . '/lib/widget.php'; * A widget for showing the connect group local nav menu * * @category Output - * @package Laconica - * @author Evan Prodromou <evan@controlyourself.ca> - * @author Zach Copley <zach@controlyourself.ca> + * @package StatusNet + * @author Evan Prodromou <evan@status.net> + * @author Zach Copley <zach@status.net> * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 - * @link http://laconi.ca/ + * @link http://status.net/ * * @see Widget */ diff --git a/plugins/FBConnect/FBC_XDReceiver.php b/plugins/FBConnect/FBC_XDReceiver.php index 57c98b4f1..50c525c75 100644 --- a/plugins/FBConnect/FBC_XDReceiver.php +++ b/plugins/FBConnect/FBC_XDReceiver.php @@ -1,6 +1,6 @@ <?php -if (!defined('LACONICA')) { +if (!defined('STATUSNET')) { exit(1); } @@ -47,9 +47,7 @@ class FBC_XDReceiverAction extends Action header('Expires:'); header('Pragma:'); - $this->startXML('html', - '-//W3C//DTD XHTML 1.0 Strict//EN', - 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'); + $this->startXML('html'); $language = $this->getLanguage(); @@ -58,10 +56,7 @@ class FBC_XDReceiverAction extends Action 'lang' => $language)); $this->elementStart('head'); $this->element('title', null, 'cross domain receiver page'); - $this->element('script', - array('src' => - 'http://static.ak.connect.facebook.com/js/api_lib/v0.4/XdCommReceiver.debug.js', - 'type' => 'text/javascript'), ''); + $this->script('http://static.ak.connect.facebook.com/js/api_lib/v0.4/XdCommReceiver.debug.js'); $this->elementEnd('head'); $this->elementStart('body'); $this->elementEnd('body'); diff --git a/plugins/FBConnect/FBConnectAuth.php b/plugins/FBConnect/FBConnectAuth.php index 3cf9fefc1..647d5def8 100644 --- a/plugins/FBConnect/FBConnectAuth.php +++ b/plugins/FBConnect/FBConnectAuth.php @@ -1,6 +1,6 @@ <?php /** - * Laconica, the distributed open-source microblogging tool + * StatusNet, the distributed open-source microblogging tool * * Plugin to enable Facebook Connect * @@ -20,38 +20,36 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. * * @category Plugin - * @package Laconica - * @author Zach Copley <zach@controlyourself.ca> - * @copyright 2009 Control Yourself, Inc. + * @package StatusNet + * @author Zach Copley <zach@status.net> + * @copyright 2009 StatusNet, Inc. * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 - * @link http://laconi.ca/ + * @link http://status.net/ */ require_once INSTALLDIR . '/plugins/FBConnect/FBConnectPlugin.php'; class FBConnectauthAction extends Action { - var $fbuid = null; var $fb_fields = null; function prepare($args) { parent::prepare($args); - try { + $this->fbuid = getFacebook()->get_loggedin_user(); - $this->fbuid = getFacebook()->get_loggedin_user(); + if ($this->fbuid > 0) { + $this->fb_fields = $this->getFacebookFields($this->fbuid, + array('first_name', 'last_name', 'name')); + } else { + list($proxy, $ip) = common_client_ip(); - if ($this->fbuid > 0) { - $this->fb_fields = $this->getFacebookFields($this->fbuid, - array('first_name', 'last_name', 'name')); - } else { - common_debug("No Facebook User found."); - } + common_log(LOG_WARNING, 'Facebook Connect Plugin - ' . + "Failed auth attempt, proxy = $proxy, ip = $ip."); - } catch (Exception $e) { - common_log(LOG_WARNING, 'Problem getting Facebook uid: ' . - $e->getMessage()); + $this->clientError(_('You must be logged into Facebook to ' . + 'use Facebook Connect.')); } return true; @@ -69,8 +67,9 @@ class FBConnectauthAction extends Action if (!empty($flink)) { // User already has a linked Facebook account and shouldn't be here - common_debug('There is already a local user (' . $flink->user_id . - ') linked with this Facebook (' . $this->fbuid . ').'); + common_debug('Facebook Connect Plugin - ' . + 'There is already a local user (' . $flink->user_id . + ') linked with this Facebook (' . $this->fbuid . ').'); // We don't want these cookies getFacebook()->clear_cookie_state(); @@ -101,7 +100,8 @@ class FBConnectauthAction extends Action } else if ($this->arg('connect')) { $this->connectNewUser(); } else { - common_debug(print_r($this->args, true), __FILE__); + common_debug('Facebook Connect Plugin - ' . + print_r($this->args, true)); $this->showForm(_('Something weird happened.'), $this->trimmed('newname')); } @@ -211,7 +211,6 @@ class FBConnectauthAction extends Action function createNewUser() { - if (common_config('site', 'closed')) { $this->clientError(_('Registration not allowed.')); return; @@ -238,7 +237,7 @@ class FBConnectauthAction extends Action if (!Validate::string($nickname, array('min_length' => 1, 'max_length' => 64, - 'format' => VALIDATE_NUM . VALIDATE_ALPHA_LOWER))) { + 'format' => NICKNAME_FMT))) { $this->showForm(_('Nickname must have only lowercase letters and numbers and no spaces.')); return; } @@ -274,7 +273,8 @@ class FBConnectauthAction extends Action common_set_user($user); common_real_login(true); - common_debug("Registered new user $user->id from Facebook user $this->fbuid"); + common_debug('Facebook Connect Plugin - ' . + "Registered new user $user->id from Facebook user $this->fbuid"); common_redirect(common_local_url('showstream', array('nickname' => $user->nickname)), 303); @@ -292,8 +292,9 @@ class FBConnectauthAction extends Action $user = User::staticGet('nickname', $nickname); - if ($user) { - common_debug("Legit user to connect to Facebook: $nickname"); + if (!empty($user)) { + common_debug('Facebook Connect Plugin - ' . + "Legit user to connect to Facebook: $nickname"); } $result = $this->flinkUser($user->id, $this->fbuid); @@ -303,7 +304,8 @@ class FBConnectauthAction extends Action return; } - common_debug("Connected Facebook user $this->fbuid to local user $user->id"); + common_debug('Facebook Connnect Plugin - ' . + "Connected Facebook user $this->fbuid to local user $user->id"); common_set_user($user); common_real_login(true); @@ -317,12 +319,13 @@ class FBConnectauthAction extends Action $result = $this->flinkUser($user->id, $this->fbuid); - if (!$result) { + if (empty($result)) { $this->serverError(_('Error connecting user to Facebook.')); return; } - common_debug("Connected Facebook user $this->fbuid to local user $user->id"); + common_debug('Facebook Connect Plugin - ' . + "Connected Facebook user $this->fbuid to local user $user->id"); // Return to Facebook connection settings tab common_redirect(common_local_url('FBConnectSettings'), 303); @@ -330,16 +333,18 @@ class FBConnectauthAction extends Action function tryLogin() { - common_debug("Trying Facebook Login..."); + common_debug('Facebook Connect Plugin - ' . + "Trying login for Facebook user $this->fbuid."); $flink = Foreign_link::getByForeignID($this->fbuid, FACEBOOK_CONNECT_SERVICE); - if ($flink) { + if (!empty($flink)) { $user = $flink->getUser(); if (!empty($user)) { - common_debug("Logged in Facebook user $flink->foreign_id as user $user->id ($user->nickname)"); + common_debug('Facebook Connect Plugin - ' . + "Logged in Facebook user $flink->foreign_id as user $user->id ($user->nickname)"); common_set_user($user); common_real_login(true); @@ -348,7 +353,8 @@ class FBConnectauthAction extends Action } else { - common_debug("No flink found for fbuid: $this->fbuid"); + common_debug('Facebook Connect Plugin - ' . + "No flink found for fbuid: $this->fbuid - new user"); $this->showForm(null, $this->bestNewNickname()); } @@ -418,7 +424,7 @@ class FBConnectauthAction extends Action { if (!Validate::string($str, array('min_length' => 1, 'max_length' => 64, - 'format' => VALIDATE_NUM . VALIDATE_ALPHA_LOWER))) { + 'format' => NICKNAME_FMT))) { return false; } if (!User::allowed_nickname($str)) { @@ -444,7 +450,8 @@ class FBConnectauthAction extends Action return reset($infos); } catch (Exception $e) { - common_log(LOG_WARNING, "Facebook client failure when requesting " . + common_log(LOG_WARNING, 'Facebook Connect Plugin - ' . + "Facebook client failure when requesting " . join(",", $fields) . " on uid " . $fb_uid . " : ". $e->getMessage()); return null; diff --git a/plugins/FBConnect/FBConnectLogin.php b/plugins/FBConnect/FBConnectLogin.php index 205086cd8..ae304f242 100644 --- a/plugins/FBConnect/FBConnectLogin.php +++ b/plugins/FBConnect/FBConnectLogin.php @@ -1,6 +1,6 @@ <?php /* - * Laconica - a distributed open-source microblogging tool + * StatusNet - a distributed open-source microblogging tool * Copyright (C) 2008, Controlez-Vous, Inc. * * This program is free software: you can redistribute it and/or modify @@ -17,7 +17,7 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ -if (!defined('LACONICA')) { +if (!defined('STATUSNET')) { exit(1); } diff --git a/plugins/FBConnect/FBConnectPlugin.css b/plugins/FBConnect/FBConnectPlugin.css index e52675459..49217bf13 100644 --- a/plugins/FBConnect/FBConnectPlugin.css +++ b/plugins/FBConnect/FBConnectPlugin.css @@ -1,10 +1,10 @@ /** Styles for Facebook logo and Facebook user profile avatar. * - * @package Laconica - * @author Sarven Capadisli <csarven@controlyourself.ca> - * @copyright 2009 Control Yourself, Inc. + * @package StatusNet + * @author Sarven Capadisli <csarven@status.net> + * @copyright 2009 StatusNet, Inc. * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 - * @link http://laconi.ca/ + * @link http://status.net/ */ #site_nav_global_primary #nav_fb { diff --git a/plugins/FBConnect/FBConnectPlugin.php b/plugins/FBConnect/FBConnectPlugin.php index 6788793b2..fb50cc4c9 100644 --- a/plugins/FBConnect/FBConnectPlugin.php +++ b/plugins/FBConnect/FBConnectPlugin.php @@ -1,6 +1,6 @@ <?php /** - * Laconica, the distributed open-source microblogging tool + * StatusNet, the distributed open-source microblogging tool * * Plugin to enable Facebook Connect * @@ -20,14 +20,14 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. * * @category Plugin - * @package Laconica - * @author Zach Copley <zach@controlyourself.ca> - * @copyright 2009 Control Yourself, Inc. + * @package StatusNet + * @author Zach Copley <zach@status.net> + * @copyright 2009 StatusNet, Inc. * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 - * @link http://laconi.ca/ + * @link http://status.net/ */ -if (!defined('LACONICA')) { +if (!defined('STATUSNET')) { exit(1); } @@ -45,10 +45,10 @@ require_once INSTALLDIR . '/plugins/FBConnect/FBC_XDReceiver.php'; * Plugin to enable Facebook Connect * * @category Plugin - * @package Laconica - * @author Zach Copley <zach@controlyourself.ca> + * @package StatusNet + * @author Zach Copley <zach@status.net> * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 - * @link http://laconi.ca/ + * @link http://status.net/ */ class FBConnectPlugin extends Plugin @@ -82,9 +82,7 @@ class FBConnectPlugin extends Plugin $action->extraHeaders(); - $action->startXML('html', - '-//W3C//DTD XHTML 1.0 Strict//EN', - 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'); + $action->startXML('html'); $language = $action->getLanguage(); @@ -118,13 +116,13 @@ class FBConnectPlugin extends Plugin // but we actually do, for IE and Safari. Gar. $html = sprintf('<script type="text/javascript"> - window.onload = function () { + $(document).ready(function () { FB_RequireFeatures( ["XFBML"], function() { FB.init("%s", "../xd_receiver.html"); } - ); } + ); }); function goto_login() { window.location = "%s"; @@ -146,22 +144,15 @@ class FBConnectPlugin extends Plugin function onEndShowFooter($action) { if ($this->reqFbScripts($action)) { - - $action->element('script', - array('type' => 'text/javascript', - 'src' => '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'); } } - function onEndShowLaconicaStyles($action) + function onEndShowStatusNetStyles($action) { if ($this->reqFbScripts($action)) { - - $action->element('link', array('rel' => 'stylesheet', - 'type' => 'text/css', - 'href' => common_path('plugins/FBConnect/FBConnectPlugin.css'))); + $action->cssLink('plugins/FBConnect/FBConnectPlugin.css'); } } @@ -223,7 +214,7 @@ class FBConnectPlugin extends Plugin $fbuid = $facebook->get_loggedin_user(); } catch (Exception $e) { - common_log(LOG_WARNING, + common_log(LOG_WARNING, 'Facebook Connect Plugin - ' . 'Problem getting Facebook user: ' . $e->getMessage()); } @@ -351,7 +342,7 @@ class FBConnectPlugin extends Plugin } function onStartLogout($action) - { +{ $action->logout(); $fbuid = $this->loggedIn(); @@ -360,8 +351,9 @@ class FBConnectPlugin extends Plugin $facebook = getFacebook(); $facebook->expire_session(); } catch (Exception $e) { - common_log(LOG_WARNING, 'Could\'t logout of Facebook: ' . - $e->getMessage()); + common_log(LOG_WARNING, 'Facebook Connect Plugin - ' . + 'Could\'t logout of Facebook: ' . + $e->getMessage()); } } @@ -385,7 +377,8 @@ class FBConnectPlugin extends Plugin } } catch (Exception $e) { - common_log(LOG_WARNING, "Facebook client failure requesting profile pic!"); + common_log(LOG_WARNING, 'Facebook Connect Plugin - ' . + "Facebook client failure requesting profile pic!"); } return $url; diff --git a/plugins/FBConnect/FBConnectSettings.php b/plugins/FBConnect/FBConnectSettings.php index 034ecebae..fbb419980 100644 --- a/plugins/FBConnect/FBConnectSettings.php +++ b/plugins/FBConnect/FBConnectSettings.php @@ -1,6 +1,6 @@ <?php /** - * Laconica, the distributed open-source microblogging tool + * StatusNet, the distributed open-source microblogging tool * * Facebook Connect settings * @@ -20,14 +20,14 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. * * @category Settings - * @package Laconica - * @author Zach Copley <zach@controlyourself.ca> - * @copyright 2009 Control Yourself, Inc. + * @package StatusNet + * @author Zach Copley <zach@status.net> + * @copyright 2009 StatusNet, Inc. * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 - * @link http://laconi.ca/ + * @link http://status.net/ */ -if (!defined('LACONICA')) { +if (!defined('STATUSNET')) { exit(1); } @@ -37,10 +37,10 @@ require_once INSTALLDIR.'/lib/connectsettingsaction.php'; * Facebook Connect settings action * * @category Settings - * @package Laconica - * @author Zach Copley <zach@controlyourself.ca> + * @package StatusNet + * @author Zach Copley <zach@status.net> * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 - * @link http://laconi.ca/ + * @link http://status.net/ */ class FBConnectSettingsAction extends ConnectSettingsAction @@ -186,9 +186,9 @@ class FBConnectSettingsAction extends ConnectSettingsAction $facebook->clear_cookie_state(); } catch (Exception $e) { - common_log(LOG_WARNING, - 'Couldn\'t clear Facebook cookies: ' . - $e->getMessage()); + common_log(LOG_WARNING, 'Facebook Connect Plugin - ' . + 'Couldn\'t clear Facebook cookies: ' . + $e->getMessage()); } $this->showForm(_('You have disconnected from Facebook.'), true); diff --git a/plugins/FBConnect/README b/plugins/FBConnect/README new file mode 100644 index 000000000..77d57eff9 --- /dev/null +++ b/plugins/FBConnect/README @@ -0,0 +1,76 @@ +This plugin allows you to utilize Facebook Connect with StatusNet. +Supported Facebook Connect features: + +- Authenticate (register/login/logout -- works similar to OpenID) +- Associate an existing StatusNet account with a Facebook account +- Disconnect a Facebook account from a StatusNet account + +Future planned functionality: + +- Invite Facebook friends to use your StatusNet installation +- Auto-subscribe Facebook friends already using StatusNet +- Share StatusNet favorite notices to your Facebook stream + +To use the plugin you will need to configure a Facebook application +to point to your StatusNet installation (see the Installation section +below). + +Installation +============ + +If you don't already have the built-in Facebook application configured, +you'll need to log into Facebook and create/configure a new application. +Please follow the instructions in the section titled, "Setting Up Your +Application and Getting an API Key," on the following page of the +Facebook developer wiki: + + http://wiki.developers.facebook.com/index.php/Connect/Setting_Up_Your_Site + +If you already are using the build-in StatusNet Facebook application, +you can modify your existing application's configuration using the +Facebook Developer Application on Facebook. Use it to edit your +application settings, and under the 'Connect' tab, change the 'Connect +URL' to be the main URL for your StatusNet site. E.g.: + + http://SITE/PATH_TO_STATUSNET/ + +After you application is created and configured, you'll need to add its +API key and secret to your StatusNet config.php file: + + $config['facebook']['apikey'] = 'APIKEY'; + $config['facebook']['secret'] = 'SECRET'; + +Finally, to enable the plugin, add the following stanza to your +config.php: + + addPlugin('FBConnect'); + +To try out the plugin, fire up your browser and connect to: + + http://SITE/PATH_TO_STATUSNET/main/facebooklogin + +or, if you do not have fancy URLs turned on: + + http://SITE/PATH_TO_STATUSNET/index.php/main/facebooklogin + +You should see a page with a blue button that says: "Connect with +Facebook". + +Connect/Disconnect existing account +=================================== + +If the Facebook Connect plugin is enabled, there will be a new Facebook +Connect Settings tab under each user's Connect menu. Users can connect +and disconnect to their Facebook accounts from it. Note: Before a user +can disconnect from Facebook, she must set a normal StatusNet password. +Otherwise, she might not be able to login in to her account in the +future. This is usually only required for users who have used Facebook +Connect to register their StatusNet account, and therefore haven't +already set a local password. + +Helpful links +============= + +Facebook Connect Homepage: +http://developers.facebook.com/connect.php + |