Class to handle migration of TBSource accounts to gazelle

Started by cm27, April 14, 2013, 11:14:42 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

cm27

Just found this not sure if anyone wants to use it but here it is for archives

Code (php) Select

<?php

/* Class to handle migration of TBSource accounts to gazelle */

class USER_MIGRATE {

var $MysqlDb 'lrh_libble';
var $MinClass 0;
var $IsUser;
var $UserID;
var $Username;
var $Password;
var $Email;
var $DateAdded;
var $Class;
var $Avatar;
var $Uploaded;
var $Downloaded;
var $Title;
var $Country;
var $ModComment;
var $Donor;
var $Invites;
var $Inviter;
var $Passkey;
var $ForumPosts;
var $Donated;
var $DonorTime;
var $Gender;
var $Info;


function login($Username,$Password) {
global $DB;
$this->Username $Username;
$this->Password $Password;

// get user info from database.
mysql_select_db($this->MysqlDb) or die('dbconn: mysql_select_db: ' mysql_error());

/* much nicer solution which doesn't work for some reason...
$DB->query("SELECT id, passhash, secret, enabled FROM users WHERE username = '" . db_string($this->Username) . "' AND status = 'confirmed'");
list($id,$PassHash,$Secret,$Enabled) = $DB->next_record();

$this->IsUser = true;

if ($DB->record_count() == 0)
$this->IsUser = false;

if ($PassHash != md5($Secret . $this->Password . $Secret))
$this->IsUser = false;

if ($Enabled == "no")
$this->IsUser = false;

if($this->IsUser) {
$this->UserID = $id;
$this->get_user_info($id);
}
*/

/* old style solution */
$res mysql_query("SELECT id, passhash, secret, enabled FROM users WHERE username = '" db_string($this->Username) . "' AND status = 'confirmed'");
$row mysql_fetch_array($res);


$this->IsUser true;

if(!$row)
$this->IsUser false;

if($row["passhash"] != md5($row["secret"] . $this->Password $row["secret"]))
$this->IsUser false;

if ($row['enabled'] == "no")
$this->IsUser false;

if($this->IsUser) {
$this->UserID $row['id'];
$this->get_user_info($row['id']);
}

mysql_select_db(SQLDB) or die('dbconn: mysql_select_db: ' mysql_error());
}

function recover($Email) {
global $DB;
$this->Email $Email;
$this->Password 'LibMig05';

// get user info from database.
mysql_select_db($this->MysqlDb) or die('dbconn: mysql_select_db: ' mysql_error());

$DB->query("SELECT id, enabled FROM users WHERE email = '"db_string($Email) ."'");

list($this->UserID$Enabled) = $DB->next_record();

$this->IsUser true;

if($Enabled == "no")
$this->IsUser false;

if(!$this->UserID)
$this->IsUser false;

if($this->IsUser) {
$this->get_user_info($this->UserID);
}

mysql_select_db(SQLDB) or die('dbconn: mysql_select_db: ' mysql_error());
}

function get_user_info($id) {
global $DB;

//mysql_select_db($this->MysqlDb) or die('dbconn: mysql_select_db: ' + mysql_error());

$query "Select `id`,`username`,`email`,`added`,`class`,`avatar`,`uploaded`,`downloaded`,
`title`,`country`,`modcomment`,`donor`,`invites`,`inviter`,`passkey`,`forumpost`,`donated`,
`donortime`,`gender`,`gazelle_migrated` ,`info`
from users where id = " 
db_string($id) . " AND status = 'confirmed'";
$DB->query($query);

list($this->UserID,$this->Username,$this->Email,$this->DateAdded,$this->Class,$this->avatar,$this->Uploaded,$this->Downloaded,$this->Title,$this->Country,$this->ModComment,$this->Donor,$this->Invites,$this->Inviter,$this->Passkey,$this->ForumPosts,$this->Donated,$this->DonorTime,$this->Gender,$GazelleMigrated,$this->Info) = $DB->next_record();

if($GazelleMigrated == 'yes') {
$this->IsUser false;
}

if($this->Class $this->MinClass) {
$this->IsUser false;
}


//mysql_select_db(SQLDB) or die('dbconn: mysql_select_db: ' + mysql_error());
}

function not_migrated() {
 return $this->IsUser;
}

function register() {
global $DB;
// gazelle registration from /sections/register/index.php

$DB->query("SELECT COUNT(ID) FROM users_main WHERE Username LIKE '".db_string($this->Username)."'
UNION ALL SELECT COUNT(ID) FROM users_main WHERE Email LIKE '"
.db_string($this->Email)."'");

list($UserCount)=$DB->next_record();
list($EmailCount)=$DB->next_record();

if($UserCount) {
$Err='There is already someone registered with that username.';
} elseif($EmailCount) {
$Err='There is already someone registered with that email address.';


if(!$Err) {
$InviterID $this->Inviter;
$UserID $this->UserID;

$Secret=make_secret();
$torrent_pass=make_secret();

// converting TBsource user levels to gazelle
switch($this->Class) {
case '0'$Class MEMBER; break;
case '1'$Class POWER; break;
case '2'$Class VIP; break;
case '3'$Class VIP; break;
case '4'$Class MOD; break;
case '5'$Class ADMIN; break;
case '6'$Class SYSOP; break;
default: $Class USER; break;
}
// Donortime
if($this->DonorTime time())
$this->DonorTime == NULL;


$DB->query("INSERT INTO users_main 
(ID, Username,Email,PassHash,Secret,torrent_pass,IP,PermissionID,Enabled,Invites) VALUES
('
$UserID','".db_string($this->Username)."','".db_string($this->Email)."','".db_string(make_hash($this->Password,$Secret))."','".db_string($Secret)."','".db_string($torrent_pass)."','".db_string($_SERVER['REMOTE_ADDR'])."','".$Class."','0','".$this->Invites."')");

$DB->query("SELECT ID FROM stylesheets WHERE `Default`='1'");
list($StyleID)=$DB->next_record();

// Commented out for hax
//$UserID=$DB->inserted_id();

$AuthKey make_secret();

$DB->query("INSERT INTO users_info (UserID,StyleID,AuthKey, Inviter, JoinDate) VALUES ('$UserID','$StyleID','".db_string($AuthKey)."', '$InviterID', '".$this->DateAdded."')");


$DB->query("INSERT INTO users_history_ips
(UserID, IP, StartTime) VALUES
('
$UserID', '".db_string($_SERVER['REMOTE_ADDR'])."', '".sqltime()."')");

$DB->query("INSERT INTO users_history_emails
(UserID, OldEmail, NewEmail, ChangerIP, ChangeTime) VALUES 
('
$UserID', '".db_string($this->Email)."', '".db_string($this->Email)."', '".db_string($_SERVER['REMOTE_ADDR'])."', '".sqltime()."')");

if($InviterID) {
//$DB->query("DELETE FROM invites WHERE InviteKey='".db_string($_REQUEST['invite'])."'");

$DB->query("SELECT 
TreePosition, TreeID, TreeLevel 
FROM invite_tree WHERE UserID='
$InviterID'");
list($InviterTreePosition$TreeID$TreeLevel) = $DB->next_record();

// If the inviter doesn't have an invite tree
// Note - this should never happen unless you've transfered from another db, like we have
if($DB->record_count() == 0) {
$DB->query("SELECT MAX(TreeID)+1 FROM invite_tree");
list($TreeID) = $DB->next_record();

$DB->query("INSERT INTO invite_tree
(UserID, InviterID, TreePosition, TreeID, TreeLevel)
VALUES ('
$InviterID', '0', '1', '$TreeID', '1')");

$TreePosition 2;
$TreeLevel 2;
} else {
$DB->query("SELECT 
TreePosition 
FROM invite_tree 
WHERE TreePosition>'
$InviterTreePosition'
AND TreeLevel<='
$TreeLevel
AND TreeID='
$TreeID'
ORDER BY TreePosition 
LIMIT 1"
);
list($TreePosition) = $DB->next_record();

if($TreePosition) {
$DB->query("UPDATE invite_tree SET TreePosition=TreePosition+1 WHERE TreeID='$TreeID' AND TreePosition>='$TreePosition'");
} else {
$DB->query("SELECT 
TreePosition+1 
FROM invite_tree 
WHERE TreeID='
$TreeID'
ORDER BY TreePosition DESC 
LIMIT 1"
);
list($TreePosition) = $DB->next_record();
}
$TreeLevel++;
}
} else { // No inviter (open registration)
$DB->query("SELECT MAX(TreeID) FROM invite_tree");
list($TreeID) = $DB->next_record();
$TreeID++;
$InviterID 0;
$TreePosition=1;
$TreeLevel=1;
}

// Create invite tree record
$DB->query("SELECT * FROM invite_tree WHERE UserID = '$UserID'");
if($DB->record_count() == 0) {
$DB->query("INSERT INTO invite_tree 
(UserID, InviterID, TreePosition, TreeID, TreeLevel) VALUES
('
$UserID', '$InviterID', '$TreePosition', '$TreeID', '$TreeLevel')");
}

// add user data to account
$DB->query("UPDATE users_info SET 
Info = '"
db_string($this->Info) ."', 
Avatar = '"
db_string($this->Avatar) ."', 
AdminComment = '"
db_string(addslashes($this->ModComment)) ."', 
Donor = '"
. ($this->Donated '1' '0') . "',
DonorTime = FROM_UNIXTIME('"
$this->DonorTime ."')
WHERE UserID = '"
db_string($UserID) . "'");

$DB->query("UPDATE users_main SET
Uploaded = '"
$this->Uploaded ."',
Downloaded = '"
$this->Downloaded ."',
Title = '"
$this->Title ."',
passkey = '"
$this->Passkey ."'
WHERE ID = '"
db_string($UserID) . "'");

$DB->query("UPDATE users_main SET Enabled='1' WHERE ID='$UserID'");

}
else die($Err);

}

}

?>
Never fall to those that just sit there.. Always look for the way to the top even if you have to code it your self and mistakes and all... quote from BonZO...