Skip to content

Instantly share code, notes, and snippets.

@palpalani
Last active April 2, 2019 04:32
Show Gist options
  • Save palpalani/6433121 to your computer and use it in GitHub Desktop.
Save palpalani/6433121 to your computer and use it in GitHub Desktop.
PliggConnect for WordPress WordPress and Pligg bridge plugin.
<?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