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
* @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
* @return boolean hook return
*
*/
+
function onAutoload($cls)
{
switch ($cls) {
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)
{
// 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();
}
}
- // Note: this script needs to appear in the <body>
+ /**
+ * Add in the Facebook Connect JavaScript stuff
+ *
+ * Note: this script needs to appear in the <body>
+ *
+ * @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 = '<script type="text/javascript">';
$js .= ' $(document).ready(function () {';
$js .= ' FB_RequireFeatures(';
$js .= ' ["XFBML"], function() {';
$js .= ' }';
$js .= ' );';
$js .= ' });';
- $js .= '</script>';
$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 </body>
+ /**
+ * Add in an additional Facebook Connect script that's supposed to
+ * appear as close as possible to </body>
+ *
+ * @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)) {
}
}
- /**
+ /**
* 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
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';
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();
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;
"Facebook client failure requesting profile pic!");
}
- return $url;
-
+ return $url;
}
/**
*
* @return boolean hook return
*/
+
function onStartEnqueueNotice($notice, &$transports)
{
array_push($transports, 'facebook');
*
* @return boolean hook return
*/
+
function onUnqueueHandleNotice(&$notice, $queue)
{
if (($queue == 'facebook') && ($this->_isLocal($notice))) {
/**
* 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 ||
* @return boolean hook return
*
*/
+
function onGetValidDaemons($daemons)
{
array_push($daemons, INSTALLDIR .
return true;
}
-}
\ No newline at end of file
+}