forked from GNUsocial/gnu-social
Merge branch 'defat-fbconnect' into 0.8.x
This commit is contained in:
commit
424dd56b2a
@ -69,95 +69,153 @@ class FBConnectPlugin extends Plugin
|
||||
// Add in xmlns:fb
|
||||
function onStartShowHTML($action)
|
||||
{
|
||||
// XXX: Horrible hack to make Safari, FF2, and Chrome work with
|
||||
// Facebook Connect. These browser cannot use Facebook's
|
||||
// DOM parsing routines unless the mime type of the page is
|
||||
// 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();
|
||||
if ($this->requiresFB($action)) {
|
||||
|
||||
$action->startXML('html',
|
||||
'-//W3C//DTD XHTML 1.0 Strict//EN',
|
||||
'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd');
|
||||
// XXX: Horrible hack to make Safari, FF2, and Chrome work with
|
||||
// Facebook Connect. These browser cannot use Facebook's
|
||||
// DOM parsing routines unless the mime type of the page is
|
||||
// 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');
|
||||
|
||||
$language = $action->getLanguage();
|
||||
$action->extraHeaders();
|
||||
|
||||
$action->elementStart('html',
|
||||
array('xmlns' => 'http://www.w3.org/1999/xhtml',
|
||||
'xmlns:fb' => 'http://www.facebook.com/2008/fbml',
|
||||
'xml:lang' => $language,
|
||||
'lang' => $language));
|
||||
$action->startXML('html',
|
||||
'-//W3C//DTD XHTML 1.0 Strict//EN',
|
||||
'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd');
|
||||
|
||||
return false;
|
||||
$language = $action->getLanguage();
|
||||
|
||||
$action->elementStart('html',
|
||||
array('xmlns' => 'http://www.w3.org/1999/xhtml',
|
||||
'xmlns:fb' => 'http://www.facebook.com/2008/fbml',
|
||||
'xml:lang' => $language,
|
||||
'lang' => $language));
|
||||
|
||||
return false;
|
||||
|
||||
} else {
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
// Note: this script needs to appear in the <body>
|
||||
|
||||
function onStartShowHeader($action)
|
||||
{
|
||||
$apikey = common_config('facebook', 'apikey');
|
||||
$plugin_path = common_path('plugins/FBConnect');
|
||||
if ($this->requiresFB($action)) {
|
||||
|
||||
$login_url = common_local_url('FBConnectAuth');
|
||||
$logout_url = common_local_url('logout');
|
||||
$apikey = common_config('facebook', 'apikey');
|
||||
$plugin_path = common_path('plugins/FBConnect');
|
||||
|
||||
// XXX: Facebook says we don't need this FB_RequireFeatures(),
|
||||
// but we actually do, for IE and Safari. Gar.
|
||||
$login_url = common_local_url('FBConnectAuth');
|
||||
$logout_url = common_local_url('logout');
|
||||
|
||||
$html = sprintf('<script type="text/javascript">
|
||||
window.onload = function () {
|
||||
FB_RequireFeatures(
|
||||
["XFBML"],
|
||||
function() {
|
||||
FB.Facebook.init("%s", "../xd_receiver.html");
|
||||
}
|
||||
); }
|
||||
// XXX: Facebook says we don't need this FB_RequireFeatures(),
|
||||
// but we actually do, for IE and Safari. Gar.
|
||||
|
||||
function goto_login() {
|
||||
window.location = "%s";
|
||||
}
|
||||
$html = sprintf('<script type="text/javascript">
|
||||
window.onload = function () {
|
||||
FB_RequireFeatures(
|
||||
["XFBML"],
|
||||
function() {
|
||||
FB.Facebook.init("%s", "../xd_receiver.html");
|
||||
}
|
||||
); }
|
||||
|
||||
function goto_logout() {
|
||||
window.location = "%s";
|
||||
}
|
||||
</script>', $apikey,
|
||||
$login_url, $logout_url);
|
||||
function goto_login() {
|
||||
window.location = "%s";
|
||||
}
|
||||
|
||||
function goto_logout() {
|
||||
window.location = "%s";
|
||||
}
|
||||
</script>', $apikey,
|
||||
$login_url, $logout_url);
|
||||
|
||||
$action->raw($html);
|
||||
}
|
||||
|
||||
$action->raw($html);
|
||||
}
|
||||
|
||||
// Note: this script needs to appear as close as possible to </body>
|
||||
|
||||
function onEndShowFooter($action)
|
||||
{
|
||||
if ($this->requiresFB($action)) {
|
||||
|
||||
$action->element('script',
|
||||
array('type' => 'text/javascript',
|
||||
'src' => 'http://static.ak.connect.facebook.com/js/api_lib/v0.4/FeatureLoader.js.php'),
|
||||
'');
|
||||
$action->element('script',
|
||||
array('type' => 'text/javascript',
|
||||
'src' => 'http://static.ak.connect.facebook.com/js/api_lib/v0.4/FeatureLoader.js.php'),
|
||||
'');
|
||||
}
|
||||
}
|
||||
|
||||
function onEndShowLaconicaStyles($action)
|
||||
{
|
||||
$action->element('link', array('rel' => 'stylesheet',
|
||||
'type' => 'text/css',
|
||||
'href' => common_path('plugins/FBConnect/FBConnectPlugin.css')));
|
||||
|
||||
if ($this->requiresFB($action)) {
|
||||
|
||||
$action->element('link', array('rel' => 'stylesheet',
|
||||
'type' => 'text/css',
|
||||
'href' => common_path('plugins/FBConnect/FBConnectPlugin.css')));
|
||||
}
|
||||
}
|
||||
|
||||
function onStartPrimaryNav($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
|
||||
*
|
||||
* @return boolean true
|
||||
*/
|
||||
|
||||
function requiresFB($action) {
|
||||
|
||||
// If you're logged in w/FB Connect, you always need the FB stuff
|
||||
|
||||
$fbuid = $this->loggedIn();
|
||||
|
||||
if (!empty($fbuid)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
// List of actions that require FB stuff
|
||||
|
||||
$needy = array('FBConnectLoginAction',
|
||||
'FBConnectauthAction',
|
||||
'FBConnectSettingsAction');
|
||||
|
||||
if (in_array(get_class($action), $needy)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Is the user currently logged in with FB Connect?
|
||||
*
|
||||
* @return mixed $fbuid the Facebook ID of the logged in user, or null
|
||||
*/
|
||||
|
||||
function loggedIn()
|
||||
{
|
||||
$user = common_current_user();
|
||||
|
||||
if ($user) {
|
||||
if (!empty($user)) {
|
||||
|
||||
$flink = Foreign_link::getByUserId($user->id,
|
||||
FACEBOOK_CONNECT_SERVICE);
|
||||
$fbuid = 0;
|
||||
|
||||
if ($flink) {
|
||||
if (!empty($flink)) {
|
||||
|
||||
try {
|
||||
|
||||
@ -170,24 +228,39 @@ class FBConnectPlugin extends Plugin
|
||||
$e->getMessage());
|
||||
}
|
||||
|
||||
// Display Facebook Logged in indicator w/Facebook favicon
|
||||
|
||||
if ($fbuid > 0) {
|
||||
|
||||
$action->elementStart('li', array('id' => 'nav_fb'));
|
||||
$action->elementStart('fb:profile-pic', array('uid' => $flink->foreign_id,
|
||||
'linked' => 'false',
|
||||
'width' => 16,
|
||||
'height' => 16));
|
||||
$action->elementEnd('fb:profile-pic');
|
||||
|
||||
$iconurl = common_path('/plugins/FBConnect/fbfavicon.ico');
|
||||
$action->element('img', array('src' => $iconurl));
|
||||
|
||||
$action->elementEnd('li');
|
||||
|
||||
return $fbuid;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
function onStartPrimaryNav($action)
|
||||
{
|
||||
|
||||
$user = common_current_user();
|
||||
|
||||
if (!empty($user)) {
|
||||
|
||||
$fbuid = $this->loggedIn();
|
||||
|
||||
if (!empty($fbuid)) {
|
||||
|
||||
$action->elementStart('li', array('id' => 'nav_fb'));
|
||||
$action->elementStart('fb:profile-pic', array('uid' => $fbuid,
|
||||
'linked' => 'false',
|
||||
'width' => 16,
|
||||
'height' => 16));
|
||||
$action->elementEnd('fb:profile-pic');
|
||||
|
||||
$iconurl = common_path('/plugins/FBConnect/fbfavicon.ico');
|
||||
$action->element('img', array('src' => $iconurl));
|
||||
|
||||
$action->elementEnd('li');
|
||||
|
||||
}
|
||||
|
||||
$action->menuItem(common_local_url('all', array('nickname' => $user->nickname)),
|
||||
_('Home'), _('Personal profile and friends timeline'), false, 'nav_home');
|
||||
@ -207,7 +280,7 @@ class FBConnectPlugin extends Plugin
|
||||
false, 'nav_invitecontact');
|
||||
|
||||
// Need to override the Logout link to make it do FB stuff
|
||||
if ($flink && $fbuid > 0) {
|
||||
if (!empty($fbuid)) {
|
||||
|
||||
$logout_url = common_local_url('logout');
|
||||
$title = _('Logout from the site');
|
||||
@ -270,23 +343,13 @@ class FBConnectPlugin extends Plugin
|
||||
|
||||
function onStartLogout($action)
|
||||
{
|
||||
$user = common_current_user();
|
||||
|
||||
$flink = Foreign_link::getByUserId($user->id, FACEBOOK_CONNECT_SERVICE);
|
||||
|
||||
$action->logout();
|
||||
$fbuid = $this->loggedIn();
|
||||
|
||||
if ($flink) {
|
||||
|
||||
$facebook = getFacebook();
|
||||
|
||||
if (!empty($fbuid)) {
|
||||
try {
|
||||
$fbuid = $facebook->get_loggedin_user();
|
||||
|
||||
if ($fbuid > 0) {
|
||||
$facebook->logout(common_local_url('public'));
|
||||
}
|
||||
|
||||
$facebook = getFacebook();
|
||||
$facebook->expire_session();
|
||||
} catch (Exception $e) {
|
||||
common_log(LOG_WARNING, 'Could\'t logout of Facebook: ' .
|
||||
$e->getMessage());
|
||||
|
Loading…
Reference in New Issue
Block a user