c320c4d5 by Chris Boden

Cleaning up FB code, added Twitter (front-end only)

1 parent e90c5db6
......@@ -59,7 +59,8 @@ function login($username, $password, $remember = true) {
));
if (get_class($auth) == 'WP_User') {
_set_current_user($auth->ID); // Not sure why I had to do this, oh well
// This is done to ensure the auth'd user is logged in; cookie is not yet readable, redirect needed
_set_current_user($auth->ID);
return $auth;
}
......@@ -102,6 +103,7 @@ function logout() {
}
_logout();
// I might need to do _set_current_user(0);
return true;
}
......@@ -160,7 +162,7 @@ function register($username, $email, $password, $meta = Array()) {
* @see wpmu_activate_signup
*/
function activate($key) {
global $wpdb, $current_site;
global $wpdb, $current_blog;
$signup = $wpdb->get_row($wpdb->prepare("SELECT * FROM {$wpdb->signups} WHERE activation_key = %s", $key));
if (empty($signup)) {
......@@ -183,8 +185,8 @@ function activate($key) {
}
$wpdb->update($wpdb->signups, Array('active' => 1, 'activated' => current_time('mysql', true)), Array('activation_key' => $key));
$user_site = get_site_option('dashboard_blog', $current_site->blog_id);
add_user_to_blog(($user_site ?: 1), $id, get_site_option('default_user_role', 'subscriber'));
// $user_site = get_site_option('dashboard_blog', $current_site->blog_id);
add_user_to_blog($current_blog->blog_id, $id, get_site_option('default_user_role', 'subscriber'));
// If use these, fix variables, they're wrong
//add_new_user_to_blog( $id, $user_email, $meta );
......
......@@ -29,6 +29,7 @@ const OPTION_NAME = 'tz_auth_fb';
Vars::$options = new Tools\WP_Option(OPTION_NAME, Array('button_title' => 'Login', 'ext_perms' => Array('email' => 1)));
Tools\add_actions(__NAMESPACE__ . '\Actions');
Tools\add_filters(__NAMESPACE__ . '\Filters');
Tools\add_shortcodes(__NAMESPACE__ . '\ShortCodes');
if (is_admin()) {
......@@ -105,15 +106,18 @@ function load() {
class Actions {
public static function send_headers() {
/*
// This SHOULD work, but FB is being stupid and not passing back, so I have to use 2 cookies instead
if (isset($_GET['nofb'])) {
return;
}
*/
$sdk = getSDK();
// User is not logged in to Facebook
if (null === ($sess = $sdk->getSession())) {
// In case FB enabled, but not used by this user, remove useless cookies
setcookie(COOKIE_LOGOUT, '', time() - 3600, '/');
setcookie(COOKIE_DENY, '', time() - 3600, '/');
......@@ -138,30 +142,28 @@ class Actions {
die;
}
$fb_user = get_user_by_fbuid($sess['uid']);
if (is_user_logged_in()) {
global $current_user;
get_currentuserinfo();
// User has already logged into WP with his FB acct
if ($fb_user->ID == $current_user->ID) {
return;
}
// User logged in with a native WP account then logged in with FB, merge
if (false === $fb_user) {
update_user_meta($current_user->ID, 'fbuid', $sess['uid']);
return;
}
// User has already logged into WP with his FB acct
if ($fb_user->ID == $current_user->ID) {
return;
}
// FB user exists, but the logged in user has different fbuid?
// user created 2 accounts?
}
// if (username_exists($username)) {
// Welcome back!
if (false !== $fb_user) {
$user = Auth\signin($fb_user->user_login);
} else {
......@@ -195,6 +197,7 @@ class Actions {
, 'nickname' => $info['name']
, 'display_name' => $info['name']
, 'user_url' => ($info['user_website'] ?: '')
, 'facebook' => $info['link']
));
update_user_meta($user->ID, 'fbuid', $info['id']);
......@@ -205,7 +208,7 @@ class Actions {
}
public static function wp_enqueue_scripts() {
_enqueue_script('tz-facebook', Tools\url('tz-facebook.js', __FILE__), Array('addEvent','Cookie'));
_enqueue_script('tz-facebook', Tools\url('tz-facebook.js', __FILE__), Array('addEvent'));
_localize_script('tz-facebook', 'TzFBData', Array('ext_perms' => implode(',', array_keys(Vars::$options['ext_perms']))));
}
......@@ -219,6 +222,13 @@ class Actions {
}
}
class Filters {
public static function user_contactmethods($methods) {
$methods['facebook'] = 'Facebook';
return $methods;
}
}
class ShortCodes {
public static function fb_login_button() {
$sdk = getSDK();
......
......@@ -2,8 +2,6 @@ addEvent(window, 'load', function() {
var oBtn = document.getElementById('TzFB');
if (oBtn) {
addEvent(oBtn, 'click', function() {
// Cookie.create('wpfb_login', 1, 1);
FB.login(function() {}, {perms: TzFBData.ext_perms});
});
}
......
......@@ -75,6 +75,10 @@ class Fields {
public static function Facebook() {
echo '<input type="checkbox" id="' . __FUNCTION__ . '" name="' . Auth\OPTION_NAME . '[third_party][' . __FUNCTION__ . ']" value="1" ' . checked('1', Auth\Vars::$options['third_party'][__FUNCTION__], false) . ' />';
}
public static function Twitter() {
echo '<input type="checkbox" id="' . __FUNCTION__ . '" name="' . Auth\OPTION_NAME . '[third_party][' . __FUNCTION__ . ']" value="1" ' . checked('1', Auth\Vars::$options['third_party'][__FUNCTION__], false) . ' />';
}
}
class Validation extends Common\Validation {
......
<?php
namespace Tz\WordPress\Tools\Twitter\Settings;
use Tz\WordPress\Tools, Tz\WordPress\Tools\Auth, Tz\WordPress\Tools\Auth\Twitter;
const OPTION_SECTION = 'twit_creds';
call_user_func(function() {
Tools\add_actions(__NAMESPACE__ . '\Actions');
});
function dipslayPage() {
require_once(__DIR__ . DIRECTORY_SEPARATOR . 'settings_view.php');
}
function validate($data) {
return $data;
}
class Actions {
public static function admin_init() {
register_setting(Auth\Settings\OPTION_GROUP, Twitter\OPTION_NAME, __NAMESPACE__ . '\validate');
add_settings_section(OPTION_SECTION, 'Twitter Credentials', function() {}, Auth\Settings\ADMIN_PAGE);
Tools\add_settings_fields(__NAMESPACE__ . '\Fields', Auth\Settings\ADMIN_PAGE, OPTION_SECTION);
}
}
class Fields {
public static function api_key() {
echo '<input type="text" id="' . __FUNCTION__ . '" name="' . Twitter\OPTION_NAME . '[' . __FUNCTION__ . ']" value="' . Twitter\Vars::$options[__FUNCTION__] . '" size="30" />';
}
public static function secret() {
echo '<input type="text" id="' . __FUNCTION__ . '" name="' . Twitter\OPTION_NAME . '[' . __FUNCTION__ . ']" value="' . Twitter\Vars::$options[__FUNCTION__] . '" size="45" />';
}
}
?>
\ No newline at end of file
<?php
/**
*
*/
namespace Tz\WordPress\Tools\Auth\Twitter;
use Tz\WordPress\Tools, Tz\WordPress\Tools\Auth;
use Exception;
const VERSION = 0.1;
const OPTION_NAME = 'tz_auth_twit';
call_user_func(function() {
Vars::$options = new Tools\WP_Option(OPTION_NAME);
Tools\add_actions(__NAMESPACE__ . '\Actions');
Tools\add_filters(__NAMESPACE__ . '\Filters');
Tools\add_shortcodes(__NAMESPACE__ . '\ShortCodes');
if (is_admin()) {
require_once(__DIR__ . DIRECTORY_SEPARATOR . 'Settings.php');
}
});
class Actions {
public static function wp_enqueue_scripts() {
_enqueue_script('anywhere', 'http://platform.twitter.com/anywhere.js?id=' . Vars::$options['api_key'] . '&v=1');
_enqueue_script('tz-twitter', Tools\url('tz-twitter.js', __FILE__), Array('anywhere'));
}
}
class Filters {
public static function user_contactmethods($methods) {
$methods['twitter'] = 'Twitter';
return $methods;
}
}
class ShortCodes {
public static function twitter_login_button() {
return '<div id="TwtLogin"></div>';
}
}
class Vars {
public static $options;
}
?>
\ No newline at end of file
twttr.anywhere(function(T) {
T('#TwtLogin').connectButton();
T.bind('authComplete', function(e, user) {
console.log(e);
console.log(user);
});
if (T.isConnected()) {
console.log(T.currentUser.data('screen_name'));
}
});
\ No newline at end of file