207 lines
10 KiB
PHP
207 lines
10 KiB
PHP
<?php
|
|
/**
|
|
* Project: astat - simple site engine
|
|
* File: /modules/mybb_bridge/mybb_bridge.plugins.php
|
|
*
|
|
* This library is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU Lesser General Public
|
|
* License as published by the Free Software Foundation; either
|
|
* version 2.1 of the License, or (at your option) any later version.
|
|
*
|
|
* This library is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
* Lesser General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU Lesser General Public
|
|
* License along with this library; if not, write to the Free Software
|
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
*
|
|
* @link http://www.astat.org SVN: $URL$
|
|
* @copyright 2009 becast.at
|
|
* @author Bernhard Jaud <bernhard at becast dot at>
|
|
* @package astat core
|
|
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
|
* @version $Id$
|
|
*/
|
|
If (!defined("in_astat")) {
|
|
die("Dieses Script kann nicht ausserhalb des Frameworks laufen!");
|
|
}
|
|
class plugins_mybb {
|
|
|
|
private $mybb_conf = array();
|
|
|
|
function __construct(){
|
|
$this->mybb_conf = $this->fetchboardconfig();
|
|
}
|
|
|
|
function register_plugins(& $plugin){
|
|
$plugin->use_hook('admin_user_before_delete',array($this,"delete"));
|
|
$plugin->use_hook('login_end',array($this,"login"));
|
|
$plugin->use_hook('login_openid_end',array($this,"login"));
|
|
$plugin->use_hook('register_openid_login',array($this,"login"));
|
|
$plugin->use_hook('register_end',array($this,"register"));
|
|
$plugin->use_hook('register_openid_end',array($this,"register"));
|
|
$plugin->use_hook('logout_end',array($this,"logout"));
|
|
$plugin->use_hook('lostpass_mail_pw',array($this,"lostpwd"));
|
|
$plugin->use_hook('usercp_end',array($this,"usercp"));
|
|
$plugin->use_hook('admin_user_after_update',array($this,"update"));
|
|
$plugin->use_hook('admin_user_after_create',array($this,"add"));
|
|
}
|
|
|
|
function login($pdata){
|
|
global $db, $config, $session;
|
|
$resultf = $db->query("SELECT fu.`loginkey`, fu.`uid` FROM `" . $config["prefix"] . "users` u LEFT JOIN `" . $this->mybb_conf["prefix"] . "users` fu ON fu.`uid`=u.`fuid` WHERE u.`uid`='" . $pdata["uid"] . "' LIMIT 1");
|
|
$fud=$db->fetch_array($resultf); //fear, uncertainty and doubt
|
|
if($pdata["remember"]=="on"){
|
|
$session->setcookie($this->mybb_conf["cookieprefix"]."mybbuser", $fud['uid']."_".$fud['loginkey'],time() + 60 * 60 * 24 * 365,$this->mybb_conf["cookiepath"],$this->mybb_conf['cookiedomain'],true,true);
|
|
}else{
|
|
$session->setcookie($this->mybb_conf["cookieprefix"]."mybbuser", $fud['uid']."_".$fud['loginkey'],0,$this->mybb_conf["cookiepath"],$this->mybb_conf['cookiedomain'],true,true);
|
|
}
|
|
}
|
|
|
|
function logout($ldata){
|
|
global $db, $config, $session;
|
|
$session->setcookie($this->mybb_conf["cookieprefix"]."mybbuser","0",time() -3600,$this->mybb_conf["cookiepath"],$this->mybb_conf['cookiedomain']);
|
|
}
|
|
|
|
function register($sdata){
|
|
global $db, $config, $session, $functions;
|
|
$salt=$session->generate_Key(8);
|
|
if($sdata["pwd_sha2'"]!=''){
|
|
$saltetpass=md5(md5($salt).md5($session->generate_Key(15)));
|
|
|
|
}else{
|
|
$saltetpass=md5(md5($sdata["salt"]).$sdata["pwd_md5"]);
|
|
}
|
|
$db->query("INSERT INTO `" . $this->mybb_conf["prefix"] . "users` (`username`,`salt`,`password`,`loginkey`,`email`,`usergroup`,`birthday`,`regdate`,`regip`,`showsigs`,`showavatars`,`showquickreply`,`showredirect`,`style`,`receivepms`,`allownotices`,`pmnotice`,`pmnotify`,`birthdayprivacy`,`signature`,`buddylist`,`ignorelist`,`pmfolders`,`notepad`,`usernotes`) VALUES ('".$sdata["username"]."','".$salt."','".$saltetpass."','".$session->generate_Key(50)."','".$sdata["email"]."','2','".date('j-n-Y',$sdata['birthday'])."','".time()."',".$db->escape_binary($functions->my_inet_pton($session->ip)).",'1','1','1','1','3','1','1','1','1','none','','','','0**$%%$1**$%%$2**$%%$3**$%%$4**','','')");
|
|
$lid=$db->last_id();
|
|
$db->query("UPDATE `" . $config["prefix"] . "users` SET `fuid`='".$lid."' WHERE `uid`='".$sdata["uid"]."'");
|
|
$db->query("INSERT INTO `" . $this->mybb_conf["prefix"] . "userfields` (`ufid`, `fid1`,`fid2`, `fid3`) VALUES ('".$lid."','".$sdata["from"]."','', '".$sdata["gender"]."')");
|
|
}
|
|
|
|
function add($rdata){
|
|
global $db, $config, $session, $functions;
|
|
$salt=$session->generate_Key(8);
|
|
if($rdata["pwd_sha2'"]!=''){
|
|
$saltetpass=md5(md5($salt).md5($session->generate_Key(15)));
|
|
|
|
}else{
|
|
$saltetpass=md5(md5($rdata["salt"]).$rdata["pwd_md5"]);
|
|
}
|
|
$db->query("INSERT INTO `" . $this->mybb_conf["prefix"] . "users` (`username`,`salt`,`password`,`loginkey`,`email`,`usergroup`,`regdate`,`regip`,`showsigs`,`showavatars`,`showquickreply`,`showredirect`,`style`,`receivepms`,`allownotices`,`pmnotice`,`pmnotify`,`birthdayprivacy`,`signature`,`buddylist`,`ignorelist`,`pmfolders`,`notepad`,`usernotes`) VALUES ('".$rdata["name"]."','".$salt."','".$saltetpass."','".$session->generate_Key(50)."','".$rdata["email"]."','2','".time()."',".$db->escape_binary($functions->my_inet_pton($session->ip)).",'1','1','1','1','3','1','1','1','1','none','','','','0**$%%$1**$%%$2**$%%$3**$%%$4**','','')");
|
|
$lid=$db->last_id();
|
|
$db->query("UPDATE `" . $config["prefix"] . "users` SET `fuid`='".$lid."' WHERE `uid`='".$rdata["uid"]."'");
|
|
}
|
|
|
|
function lostpwd($sdata){
|
|
global $db, $config, $session;
|
|
$salt=$session->generate_Key(8);
|
|
$saltetpass=md5(md5($salt).$sdata["pwd_md5"]);
|
|
$result = $db->query("SELECT `fuid` FROM `" . $config["prefix"] . "users` WHERE `uid`='".$sdata["uid"]."' LIMIT 1");
|
|
$u=$db->fetch_array($result);
|
|
$db->query("UPDATE `" . $this->mybb_conf["prefix"] . "users` SET `salt`='".$salt."',`password`='".$saltetpass."',`loginkey`='".$session->generate_Key(50)."' WHERE `uid`='".$u["fuid"]."'");
|
|
}
|
|
|
|
function usercp($rdata){
|
|
global $db, $config, $session;
|
|
$result = $db->query("SELECT `fuid` FROM `" . $config["prefix"] . "users` WHERE `uid`='".$rdata["uid"]."' LIMIT 1");
|
|
$u=$db->fetch_array($result);
|
|
if($rdata['pwd_sha2']!=NULL){
|
|
$salt=$session->generate_Key(8);
|
|
$saltetpass=md5(md5($salt).$rdata["pwd_md5"]);
|
|
$pwd=",`password`='".$saltetpass."',`salt`='".$salt."',`loginkey`='".$session->generate_Key(50)."'";
|
|
|
|
}
|
|
$db->query("UPDATE `" . $this->mybb_conf["prefix"] . "users` SET `email`='".$rdata["email"]."'".$pwd." WHERE `uid`='".$u["fuid"]."'");
|
|
}
|
|
|
|
function update($rdata){
|
|
global $db, $config, $session;
|
|
$result = $db->query("SELECT `fuid` FROM `" . $config["prefix"] . "users` WHERE `uid`='".$rdata["uid"]."' LIMIT 1");
|
|
$u=$db->fetch_array($result);
|
|
if($rdata['password']!=""){
|
|
$salt=$session->generate_Key(8);
|
|
$saltetpass=md5(md5($salt).md5($rdata["password"]));
|
|
$pwd=",`password`='".$saltetpass."',`salt`='".$salt."',`loginkey`='".$session->generate_Key(50)."'";
|
|
|
|
}
|
|
$db->query("UPDATE `" . $this->mybb_conf["prefix"] . "users` SET `username`='".$rdata["name"]."',`email`='".$rdata["email"]."'".$pwd." WHERE `uid`='".$u["fuid"]."'");
|
|
|
|
if($rdata['active']==2){
|
|
$db->query("DELETE FROM `" . $this->mybb_conf["prefix"] . "banned` WHERE `uid`='".$u["fuid"]."'");
|
|
$db->query("UPDATE `" . $this->mybb_conf["prefix"] . "users` SET `usergroup`='7' WHERE `uid`='".$u["fuid"]."'");
|
|
$db->query("INSERT INTO `" . $this->mybb_conf["prefix"] . "banned` (`uid`,`gid`,`oldgroup`,`oldadditionalgroups`,`olddisplaygroup`,`admin`,`dateline`,`bantime`,`lifted`,`reason`) VALUES ('".$u["fuid"]."','7','2','','0','".$rdata['user_fid']."','".time()."','---','0','')");
|
|
}
|
|
}
|
|
|
|
function delete($data){
|
|
global $db, $config, $cache, $log;
|
|
$fdata=$db->query("SELECT * FROM `" . $this->mybb_conf["prefix"] . "users` WHERE `uid`='".$data['fuid']."'");
|
|
$forumdata = $db->fetch_array($fdata);
|
|
|
|
$this->delete_query("userfields", "ufid='".$data['fuid']."'");
|
|
$this->delete_query("privatemessages", "uid='".$data['fuid']."'");
|
|
$this->delete_query("events", "uid='".$data['fuid']."'");
|
|
$this->delete_query("forumsubscriptions", "uid='".$data['fuid']."'");
|
|
$this->delete_query("threadsubscriptions", "uid='".$data['fuid']."'");
|
|
$this->delete_query("sessions", "uid='".$data['fuid']."'");
|
|
$this->delete_query("banned", "uid='".$data['fuid']."'");
|
|
$this->delete_query("threadratings", "uid='".$data['fuid']."'");
|
|
$this->delete_query("users", "uid='".$data['fuid']."'");
|
|
$this->delete_query("joinrequests", "uid='".$data['fuid']."'");
|
|
$this->delete_query("warnings", "uid='".$data['fuid']."'");
|
|
$this->delete_query("reputation", "uid='".$data['fuid']."' OR adduid='".$data['fuid']."'");
|
|
$this->delete_query("awaitingactivation", "uid='".$data['fuid']."'");
|
|
$this->delete_query("posts", "uid = '".$data['fuid']."' AND visible = '-2'");
|
|
$this->delete_query("threads", "uid = '".$data['fuid']."' AND visible = '-2'");
|
|
if($forumdata['avatartype'] == "upload")
|
|
{
|
|
// Removes the ./ at the beginning the timestamp on the end...
|
|
@unlink("/var/www/forum.archer.agency/web/htdocs/uploads/avatars/".substr($user['avatar'], 2, -20));
|
|
}
|
|
|
|
$db->query("UPDATE `" . $this->mybb_conf["prefix"] . "posts` SET `uid`=0 WHERE `uid`='".$data['fuid']."'");
|
|
$db->query("UPDATE `" . $this->mybb_conf["prefix"] . "forums` SET `lastposteruid`=0 WHERE `lastposteruid`='".$data['fuid']."'");
|
|
$db->query("UPDATE `" . $this->mybb_conf["prefix"] . "threads` SET `lastposteruid`=0 WHERE `lastposteruid`='".$data['fuid']."'");
|
|
|
|
|
|
}
|
|
|
|
function fetchboardconfig(){
|
|
global $db, $config, $cache, $log;
|
|
$mybb=$cache->read('mybbconfig');
|
|
try{
|
|
$result = $db->query("SELECT `name`, `value` FROM " . $mybb['prefix'] . "settings");
|
|
if(!$result){
|
|
throw new Exception($db->error());
|
|
}
|
|
while ($row = $db->fetch_array($result)){
|
|
$boardconfig[$row['name']] = $row['value'];
|
|
}
|
|
$boardconfig['prefix']=$mybb['prefix'];
|
|
return $boardconfig;
|
|
}catch(Exception $e){
|
|
$log->write($e,2,__LINE__,__FILE__);
|
|
return NULL;
|
|
}
|
|
}
|
|
|
|
function delete_query($table, $where="", $limit="")
|
|
{
|
|
global $db, $config, $cache, $log;
|
|
$query = "";
|
|
if(!empty($where))
|
|
{
|
|
$query .= " WHERE $where";
|
|
}
|
|
if(!empty($limit))
|
|
{
|
|
$query .= " LIMIT $limit";
|
|
}
|
|
$db->query('DELETE FROM `' . $this->mybb_conf["prefix"] . $table .'`'. $query) or die($db->error());
|
|
}
|
|
}
|
|
|
|
|
|
?>
|