summaryrefslogtreecommitdiff
path: root/plugins/FBConnect
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/FBConnect')
-rw-r--r--plugins/FBConnect/FBCLoginGroupNav.php22
-rw-r--r--plugins/FBConnect/FBCSettingsNav.php22
-rw-r--r--plugins/FBConnect/FBC_XDReceiver.php11
-rw-r--r--plugins/FBConnect/FBConnectAuth.php75
-rw-r--r--plugins/FBConnect/FBConnectLogin.php4
-rw-r--r--plugins/FBConnect/FBConnectPlugin.css8
-rw-r--r--plugins/FBConnect/FBConnectPlugin.php51
-rw-r--r--plugins/FBConnect/FBConnectSettings.php24
-rw-r--r--plugins/FBConnect/README76
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
+