Last active
April 2, 2019 04:32
-
-
Save palpalani/6433121 to your computer and use it in GitHub Desktop.
PliggConnect for WordPress WordPress and Pligg bridge plugin.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/* | |
* 1. create wp plugin for pligg | |
* 2. create file wpconnect.php at pligg root | |
*/ | |
$pligg_url = ''; | |
$pligg_path = ''; | |
/* | |
* When user log-in from WP, also log-in to Pligg. | |
*/ | |
add_filter( 'authenticate', 'pligg_auth_signon', 30, 3 ); | |
function pligg_auth_signon( $user, $username, $password ) { | |
//return $user; | |
require_once( $pligg_path .'/wpconnect.php'); | |
m3_pligg_user_auth($username, $password); | |
} | |
/* | |
* When user created from WP, Register with Pligg | |
*/ | |
add_action('user_register', 'pligg_registration_save'); | |
function pligg_registration_save($user_id) { | |
//Collect user data | |
//register with Pligg | |
require_once( $pligg_path .'/wpconnect.php'); | |
m3_pligg_user_register($username, $password); | |
} | |
/* | |
* When user update his profile, Update Pligg details | |
*/ | |
add_action( 'profile_update', 'pligg_profile_update', 10, 2 ); | |
function pligg_profile_update( $user_id, $old_user_data ) { | |
require_once( $pligg_path .'/wpconnect.php'); | |
m3_pligg_user_update($username, $password); | |
} | |
/* | |
* When user delete from WP, delete from Pligg | |
*/ | |
add_action( 'delete_user', 'pligg_delete_user' ); | |
function pligg_delete_user( $user_id ) { | |
global $wpdb; | |
$user_obj = get_userdata( $user_id ); | |
$email = $user_obj->user_email; | |
//Delete Pligg user | |
require_once( $pligg_path .'/wpconnect.php'); | |
m3_pligg_user_delete($username, $password); | |
//Send email | |
$headers = 'From: ' . get_bloginfo( "name" ) . ' <' . get_bloginfo( "admin_email" ) . '>' . "\r\n"; | |
wp_mail( $email, 'You are being deleted, brah', 'Your account at ' . get_bloginfo("name") . ' is being deleted right now.', $headers ); | |
} | |
/* | |
* When user logout from WP, make logout from Pligg | |
*/ | |
add_action('wp_logout', 'pligg_logout'); | |
function pligg_logout() { | |
require_once( $pligg_path .'/wpconnect.php'); | |
m3_pligg_user_logout($username, $password); | |
} | |
Pligg changes | |
1. Redirect register.php to wp-register.php | |
2. Redirect login.php to wp-login.php | |
3. Redirect logout.php to wp-logout.php | |
wpconnect.php | |
function m3_pligg_user_auth($username, $password){ | |
} | |
function m3_pligg_user_register($username, $password){ | |
} | |
function m3_pligg_user_update($username, $password){ | |
} | |
function m3_pligg_user_delete($username, $password){ | |
} | |
function m3_pligg_user_logout(){ | |
} | |
function get_pligg_user(){ | |
if(isset($_COOKIE['mnm_user']) && isset($_COOKIE['mnm_key']) && $_COOKIE['mnm_user'] !== '') { | |
$userInfo=explode(':', base64_decode($_REQUEST['mnm_key'])); | |
if(crypt($userInfo[0], 22) === $userInfo[1] && $_COOKIE['mnm_user'] === $userInfo[0]) { | |
$pligg_username = $db->escape($_COOKIE['mnm_user']); | |
} | |
} | |
} | |
function Authenticate($username, $pass, $remember=false) { | |
global $db; | |
$dbusername=$db->escape($username); | |
$user=$db->get_row("SELECT user_id, user_pass, user_login FROM users WHERE user_login = '$dbusername'"); | |
$saltedpass=generateHash($pass, substr($user->user_pass, 0, SALT_LENGTH)); | |
if ($user->user_id > 0 && $user->user_pass === $saltedpass) { | |
$this->user_login = $user->user_login; | |
$this->user_id = $user->user_id; | |
$this->authenticated = TRUE; | |
$this->md5_pass = md5($user->user_pass); | |
$this->SetIDCookie(1, $remember); | |
$lastip=$_SERVER['REMOTE_ADDR']; | |
mysql_query("UPDATE users SET user_lastip = '$lastip' WHERE user_id = {$user->user_id} LIMIT 1?); | |
mysql_query("UPDATE users SET user_lastlogin = now() WHERE user_id = {$user->user_id} LIMIT 1?); | |
return true; | |
} | |
return false; | |
} | |
function Logout($url='./') { | |
$this->user_login = ""; | |
$this->authenticated = FALSE; | |
$this->SetIDCookie (0); | |
//header("Pragma: no-cache"); | |
header("Cache-Control: no-cache, must-revalidate"); | |
header("Location: $url"); | |
header("Expires: " . gmdate("r", time()-3600)); | |
header("ETag: \"logingout" . time(). "\""); | |
die; | |
} | |
function SetIDCookie($what, $remember) { | |
switch ($what) { | |
case 0: // Borra cookie, logout | |
setcookie ("mnm_user", "", time()-3600, "/"); // Expiramos el cookie | |
setcookie ("mnm_key", "", time()-3600, "/"); // Expiramos el cookie | |
break; | |
case 1: //Usuario logeado, actualiza el cookie | |
// Atencion, cambiar aqu?cuando se cambie el password de base de datos a MD5 | |
$strCookie=base64_encode(join(':', | |
array( | |
$this->user_login, | |
crypt($this->user_login, 22), | |
$this->md5_pass) | |
) | |
); | |
if($remember) $time = time() + 3600000; // Lo dejamos v?idos por 1000 horas | |
else $time = 0; | |
setcookie("mnm_user", $this->user_login, $time, "/"); | |
setcookie("mnm_key", $strCookie, $time, "/"); | |
break; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment