mirror of
https://github.com/Znote/ZnoteAAC.git
synced 2025-04-30 03:09:22 +02:00

It will now import old accounts and players to be compatible with Znote AAC It will also remove duplicates if it finds any
390 lines
12 KiB
PHP
390 lines
12 KiB
PHP
<?php
|
|
$time = time();
|
|
if (!isset($version)) $version = '1.5_SVN';
|
|
|
|
if (!function_exists("elapsedTime")) {
|
|
function elapsedTime($l_start = false, $l_time = false) {
|
|
if ($l_start === false) global $l_start;
|
|
if ($l_time === false) global $l_time;
|
|
|
|
$l_time = explode(' ', microtime());
|
|
$l_finish = $l_time[1] + $l_time[0];
|
|
return round(($l_finish - $l_start), 4);
|
|
}
|
|
}
|
|
|
|
// ALTER TABLE `znote_accounts` ADD `active_email` TINYINT(4) NOT NULL DEFAULT '0' AFTER `active`;
|
|
|
|
$install = "
|
|
<h2>Install:</h2>
|
|
<ol>
|
|
<li>
|
|
<p>
|
|
Make sure you have imported TFS database. (OTdir/schema.sql OR OTdir/schemas/mysql.sql OR OTdir/forgottenserver.sql)
|
|
</p>
|
|
</li>
|
|
<li>
|
|
Import the below schema to a <b>TFS database in phpmyadmin</b>:<br>
|
|
<textarea cols=\"65\" rows=\"10\">
|
|
CREATE TABLE IF NOT EXISTS `znote` (
|
|
`id` int(10) NOT NULL AUTO_INCREMENT,
|
|
`version` varchar(30) NOT NULL COMMENT 'Znote AAC version',
|
|
`installed` int(10) NOT NULL,
|
|
`cached` int(11) DEFAULT NULL,
|
|
PRIMARY KEY (`id`)
|
|
) ENGINE=InnoDB;
|
|
|
|
CREATE TABLE IF NOT EXISTS `znote_accounts` (
|
|
`id` int(11) NOT NULL AUTO_INCREMENT,
|
|
`account_id` int(11) NOT NULL,
|
|
`ip` int(10) UNSIGNED NOT NULL,
|
|
`created` int(10) NOT NULL,
|
|
`points` int(10) DEFAULT 0,
|
|
`cooldown` int(10) DEFAULT 0,
|
|
`active` tinyint(4) NOT NULL DEFAULT '0',
|
|
`active_email` tinyint(4) NOT NULL DEFAULT '0',
|
|
`activekey` int(11) NOT NULL DEFAULT '0',
|
|
`flag` varchar(20) NOT NULL,
|
|
`secret` char(16) DEFAULT NULL,
|
|
PRIMARY KEY (`id`)
|
|
) ENGINE=InnoDB;
|
|
|
|
CREATE TABLE IF NOT EXISTS `znote_news` (
|
|
`id` int(11) NOT NULL AUTO_INCREMENT,
|
|
`title` varchar(30) NOT NULL,
|
|
`text` text NOT NULL,
|
|
`date` int(11) NOT NULL,
|
|
`pid` int(11) NOT NULL,
|
|
PRIMARY KEY (`id`)
|
|
) ENGINE=InnoDB;
|
|
|
|
CREATE TABLE IF NOT EXISTS `znote_images` (
|
|
`id` int(11) NOT NULL AUTO_INCREMENT,
|
|
`title` varchar(30) NOT NULL,
|
|
`desc` text NOT NULL,
|
|
`date` int(11) NOT NULL,
|
|
`status` int(11) NOT NULL,
|
|
`image` varchar(30) NOT NULL,
|
|
`account_id` int(11) NOT NULL,
|
|
PRIMARY KEY (`id`)
|
|
) ENGINE=InnoDB;
|
|
|
|
CREATE TABLE IF NOT EXISTS `znote_paypal` (
|
|
`id` int(11) NOT NULL AUTO_INCREMENT,
|
|
`txn_id` varchar(30) NOT NULL,
|
|
`email` varchar(255) NOT NULL,
|
|
`accid` int(11) NOT NULL,
|
|
`price` int(11) NOT NULL,
|
|
`points` int(11) NOT NULL,
|
|
PRIMARY KEY (`id`)
|
|
) ENGINE=InnoDB;
|
|
|
|
CREATE TABLE IF NOT EXISTS `znote_paygol` (
|
|
`id` int(11) NOT NULL AUTO_INCREMENT,
|
|
`account_id` int(11) NOT NULL,
|
|
`price` int(11) NOT NULL,
|
|
`points` int(11) NOT NULL,
|
|
`message_id` varchar(255) NOT NULL,
|
|
`service_id` varchar(255) NOT NULL,
|
|
`shortcode` varchar(255) NOT NULL,
|
|
`keyword` varchar(255) NOT NULL,
|
|
`message` varchar(255) NOT NULL,
|
|
`sender` varchar(255) NOT NULL,
|
|
`operator` varchar(255) NOT NULL,
|
|
`country` varchar(255) NOT NULL,
|
|
`currency` varchar(255) NOT NULL,
|
|
PRIMARY KEY (`id`)
|
|
) ENGINE=InnoDB;
|
|
|
|
CREATE TABLE IF NOT EXISTS `znote_players` (
|
|
`id` int(11) NOT NULL AUTO_INCREMENT,
|
|
`player_id` int(11) NOT NULL,
|
|
`created` int(11) NOT NULL,
|
|
`hide_char` tinyint(4) NOT NULL,
|
|
`comment` varchar(255) NOT NULL,
|
|
PRIMARY KEY (`id`)
|
|
) ENGINE=InnoDB;
|
|
|
|
CREATE TABLE IF NOT EXISTS `znote_player_reports` (
|
|
`id` int(11) NOT NULL AUTO_INCREMENT,
|
|
`name` varchar(50) NOT NULL,
|
|
`posx` int(6) NOT NULL,
|
|
`posy` int(6) NOT NULL,
|
|
`posz` int(6) NOT NULL,
|
|
`report_description` VARCHAR(255) NOT NULL,
|
|
`date` INT(11) NOT NULL,
|
|
`status` TINYINT(3) NOT NULL DEFAULT '0',
|
|
PRIMARY KEY (`id`)
|
|
) ENGINE=InnoDB;
|
|
|
|
CREATE TABLE IF NOT EXISTS `znote_changelog` (
|
|
`id` int(11) NOT NULL AUTO_INCREMENT,
|
|
`text` VARCHAR(255) NOT NULL,
|
|
`time` INT(11) NOT NULL,
|
|
`report_id` INT(11) NOT NULL,
|
|
`status` TINYINT(3) NOT NULL DEFAULT '0',
|
|
PRIMARY KEY (`id`)
|
|
) ENGINE=InnoDB;
|
|
|
|
CREATE TABLE IF NOT EXISTS `znote_shop` (
|
|
`id` int(11) NOT NULL AUTO_INCREMENT,
|
|
`type` int(11) NOT NULL,
|
|
`itemid` int(11) DEFAULT NULL,
|
|
`count` int(11) NOT NULL DEFAULT '1',
|
|
`description` varchar(255) NOT NULL,
|
|
`points` int(11) NOT NULL DEFAULT '10',
|
|
PRIMARY KEY (`id`)
|
|
) ENGINE=InnoDB;
|
|
|
|
CREATE TABLE IF NOT EXISTS `znote_shop_logs` (
|
|
`id` int(11) NOT NULL AUTO_INCREMENT,
|
|
`account_id` int(11) NOT NULL,
|
|
`player_id` int(11) NOT NULL,
|
|
`type` int(11) NOT NULL,
|
|
`itemid` int(11) NOT NULL,
|
|
`count` int(11) NOT NULL,
|
|
`points` int(11) NOT NULL,
|
|
`time` int(11) NOT NULL,
|
|
PRIMARY KEY (`id`)
|
|
) ENGINE=InnoDB;
|
|
|
|
CREATE TABLE IF NOT EXISTS `znote_shop_orders` (
|
|
`id` int(11) NOT NULL AUTO_INCREMENT,
|
|
`account_id` int(11) NOT NULL,
|
|
`type` int(11) NOT NULL,
|
|
`itemid` int(11) NOT NULL,
|
|
`count` int(11) NOT NULL,
|
|
`time` int(11) NOT NULL DEFAULT '0',
|
|
PRIMARY KEY (`id`)
|
|
) ENGINE=InnoDB;
|
|
|
|
CREATE TABLE IF NOT EXISTS `znote_visitors` (
|
|
`id` int(11) NOT NULL AUTO_INCREMENT,
|
|
`ip` int(11) NOT NULL,
|
|
`value` int(11) NOT NULL,
|
|
PRIMARY KEY (`id`)
|
|
) ENGINE=InnoDB;
|
|
|
|
CREATE TABLE IF NOT EXISTS `znote_visitors_details` (
|
|
`id` int(11) NOT NULL AUTO_INCREMENT,
|
|
`ip` int(11) NOT NULL,
|
|
`time` int(11) NOT NULL,
|
|
`type` tinyint(4) NOT NULL,
|
|
`account_id` int(11) NOT NULL,
|
|
PRIMARY KEY (`id`)
|
|
) ENGINE=InnoDB;
|
|
|
|
CREATE TABLE IF NOT EXISTS `znote_forum` (
|
|
`id` int(11) NOT NULL AUTO_INCREMENT,
|
|
`name` varchar(50) NOT NULL,
|
|
`access` tinyint(4) NOT NULL,
|
|
`closed` tinyint(4) NOT NULL,
|
|
`hidden` tinyint(4) NOT NULL,
|
|
`guild_id` int(11) NOT NULL,
|
|
PRIMARY KEY (`id`)
|
|
) ENGINE=InnoDB;
|
|
|
|
CREATE TABLE IF NOT EXISTS `znote_forum_threads` (
|
|
`id` int(11) NOT NULL AUTO_INCREMENT,
|
|
`forum_id` int(11) NOT NULL,
|
|
`player_id` int(11) NOT NULL,
|
|
`player_name` varchar(50) NOT NULL,
|
|
`title` varchar(50) NOT NULL,
|
|
`text` text NOT NULL,
|
|
`created` int(11) NOT NULL,
|
|
`updated` int(11) NOT NULL,
|
|
`sticky` tinyint(4) NOT NULL,
|
|
`hidden` tinyint(4) NOT NULL,
|
|
`closed` tinyint(4) NOT NULL,
|
|
PRIMARY KEY (`id`)
|
|
) ENGINE=InnoDB;
|
|
|
|
CREATE TABLE IF NOT EXISTS `znote_forum_posts` (
|
|
`id` int(11) NOT NULL AUTO_INCREMENT,
|
|
`thread_id` int(11) NOT NULL,
|
|
`player_id` int(11) NOT NULL,
|
|
`player_name` varchar(50) NOT NULL,
|
|
`text` text NOT NULL,
|
|
`created` int(11) NOT NULL,
|
|
`updated` int(11) NOT NULL,
|
|
PRIMARY KEY (`id`)
|
|
) ENGINE=InnoDB;
|
|
|
|
CREATE TABLE IF NOT EXISTS `znote_deleted_characters` (
|
|
`id` int(11) NOT NULL AUTO_INCREMENT,
|
|
`original_account_id` int(11) NOT NULL,
|
|
`character_name` varchar(255) NOT NULL,
|
|
`time` datetime NOT NULL,
|
|
`done` tinyint(1) NOT NULL,
|
|
PRIMARY KEY (`id`)
|
|
) ENGINE=InnoDB;
|
|
|
|
CREATE TABLE IF NOT EXISTS `znote_guild_wars` (
|
|
`id` int(11) NOT NULL AUTO_INCREMENT,
|
|
`limit` int(11) NOT NULL DEFAULT '0',
|
|
PRIMARY KEY (`id`),
|
|
FOREIGN KEY (`id`) REFERENCES `guild_wars` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
|
|
) ENGINE=InnoDB;
|
|
|
|
CREATE TABLE IF NOT EXISTS `znote_tickets` (
|
|
`id` int(11) NOT NULL AUTO_INCREMENT,
|
|
`owner` int(11) NOT NULL,
|
|
`username` varchar(32) CHARACTER SET latin1 NOT NULL,
|
|
`subject` text CHARACTER SET latin1 NOT NULL,
|
|
`message` text CHARACTER SET latin1 NOT NULL,
|
|
`ip` int(11) NOT NULL,
|
|
`creation` int(11) NOT NULL,
|
|
`status` varchar(20) CHARACTER SET latin1 NOT NULL,
|
|
PRIMARY KEY (`id`)
|
|
) ENGINE=InnoDB;
|
|
|
|
CREATE TABLE IF NOT EXISTS `znote_tickets_replies` (
|
|
`id` int(11) NOT NULL AUTO_INCREMENT,
|
|
`tid` int(11) NOT NULL,
|
|
`username` varchar(32) CHARACTER SET latin1 NOT NULL,
|
|
`message` text CHARACTER SET latin1 NOT NULL,
|
|
`created` int(11) NOT NULL,
|
|
PRIMARY KEY (`id`)
|
|
) ENGINE=InnoDB;
|
|
|
|
CREATE TABLE IF NOT EXISTS `znote_global_storage` (
|
|
`key` VARCHAR(32) NOT NULL,
|
|
`value` TEXT NOT NULL,
|
|
UNIQUE (`key`)
|
|
) ENGINE=InnoDB;
|
|
|
|
CREATE TABLE IF NOT EXISTS `znote_auction_player` (
|
|
`id` int(11) NOT NULL AUTO_INCREMENT,
|
|
`player_id` int(11) NOT NULL,
|
|
`original_account_id` int(11) NOT NULL,
|
|
`bidder_account_id` int(11) NOT NULL,
|
|
`time_begin` int(11) NOT NULL,
|
|
`time_end` int(11) NOT NULL,
|
|
`price` int(11) NOT NULL,
|
|
`bid` int(11) NOT NULL,
|
|
`deposit` int(11) NOT NULL,
|
|
`sold` tinyint(1) NOT NULL,
|
|
`claimed` tinyint(1) NOT NULL,
|
|
PRIMARY KEY (`id`)
|
|
) ENGINE=InnoDB;
|
|
|
|
INSERT INTO `znote` (`version`, `installed`) VALUES
|
|
('$version', UNIX_TIMESTAMP(CURDATE()));
|
|
|
|
INSERT INTO `znote_forum` (`name`, `access`, `closed`, `hidden`, `guild_id`) VALUES
|
|
('Staff Board', '4', '0', '0', '0'),
|
|
('Tutors Board', '2', '0', '0', '0'),
|
|
('Discussion', '1', '0', '0', '0'),
|
|
('Feedback', '1', '0', '1', '0');
|
|
|
|
INSERT INTO `znote_accounts` (`account_id`, `ip`, `created`, `flag`)
|
|
SELECT
|
|
`a`.`id` AS `account_id`,
|
|
0 AS `ip`,
|
|
UNIX_TIMESTAMP(CURDATE()) AS `created`,
|
|
'' AS `flag`
|
|
FROM `accounts` AS `a`
|
|
LEFT JOIN `znote_accounts` AS `z`
|
|
ON `a`.`id` = `z`.`account_id`
|
|
WHERE `z`.`created` IS NULL;
|
|
|
|
INSERT INTO `znote_players` (`player_id`, `created`, `hide_char`, `comment`)
|
|
SELECT
|
|
`p`.`id` AS `player_id`,
|
|
UNIX_TIMESTAMP(CURDATE()) AS `created`,
|
|
0 AS `hide_char`,
|
|
'' AS `comment`
|
|
FROM `accounts` AS `p`
|
|
LEFT JOIN `znote_players` AS `z`
|
|
ON `p`.`id` = `z`.`player_id`
|
|
WHERE `z`.`created` IS NULL;
|
|
|
|
DELETE `d` FROM `znote_accounts` AS `d`
|
|
INNER JOIN (
|
|
SELECT `i`.`account_id`,
|
|
MAX(`i`.`id`) AS `retain`
|
|
FROM `znote_accounts` AS `i`
|
|
GROUP BY `i`.`account_id`
|
|
HAVING COUNT(`i`.`id`) > 1
|
|
) AS `x`
|
|
ON `d`.`account_id` = `x`.`account_id`
|
|
AND `d`.`id` != `x`.`retain`;
|
|
|
|
DELETE `d` FROM `znote_players` AS `d`
|
|
INNER JOIN (
|
|
SELECT `i`.`player_id`,
|
|
MAX(`i`.`id`) AS `retain`
|
|
FROM `znote_players` AS `i`
|
|
GROUP BY `i`.`player_id`
|
|
HAVING COUNT(`i`.`id`) > 1
|
|
) AS `x`
|
|
ON `d`.`player_id` = `x`.`player_id`
|
|
AND `d`.`id` != `x`.`retain`;
|
|
|
|
</textarea>
|
|
</li>
|
|
<li>
|
|
<p>
|
|
Edit config.php with correct mysql connection details.
|
|
</p>
|
|
</li>
|
|
</ol>
|
|
";
|
|
|
|
$connect = new mysqli($config['sqlHost'], $config['sqlUser'], $config['sqlPassword'], $config['sqlDatabase']);
|
|
|
|
if ($connect->connect_errno) {
|
|
die("Failed to connect to MySQL: (" . $connect->connect_errno . ") " . $connect->connect_error . $install);
|
|
}
|
|
|
|
function mysql_znote_escape_string($escapestr) {
|
|
global $connect;
|
|
return mysqli_real_escape_string($connect, $escapestr);
|
|
}
|
|
// Select single row from database
|
|
function mysql_select_single($query) {
|
|
global $connect;
|
|
global $aacQueries;
|
|
$aacQueries++;
|
|
|
|
global $accQueriesData;
|
|
$accQueriesData[] = "[" . elapsedTime() . "] " . $query;
|
|
$result = mysqli_query($connect,$query) or die(var_dump($query)."<br>(query - <font color='red'>SQL error</font>) <br>Type: <b>select_single</b> (select single row from database)<br><br>".mysqli_error($connect));
|
|
$row = mysqli_fetch_assoc($result);
|
|
return !empty($row) ? $row : false;
|
|
}
|
|
|
|
// Selecting multiple rows from database.
|
|
function mysql_select_multi($query){
|
|
global $connect;
|
|
global $aacQueries;
|
|
$aacQueries++;
|
|
global $accQueriesData;
|
|
$accQueriesData[] = "[" . elapsedTime() . "] " . $query;
|
|
$array = array();
|
|
$results = mysqli_query($connect,$query) or die(var_dump($query)."<br>(query - <font color='red'>SQL error</font>) <br>Type: <b>select_multi</b> (select multiple rows from database)<br><br>".mysqli_error($connect));
|
|
while($row = mysqli_fetch_assoc($results)) {
|
|
$array[] = $row;
|
|
}
|
|
return !empty($array) ? $array : false;
|
|
}
|
|
|
|
//////
|
|
// Query database without expecting returned results
|
|
|
|
// - mysql update
|
|
function mysql_update($query){ voidQuery($query); }
|
|
// mysql insert
|
|
function mysql_insert($query){ voidQuery($query); }
|
|
// mysql delete
|
|
function mysql_delete($query){ voidQuery($query); }
|
|
// Send a void query
|
|
function voidQuery($query) {
|
|
global $connect;
|
|
global $aacQueries;
|
|
$aacQueries++;
|
|
global $accQueriesData;
|
|
$accQueriesData[] = "[" . elapsedTime() . "] " . $query;
|
|
mysqli_query($connect,$query) or die(var_dump($query)."<br>(query - <font color='red'>SQL error</font>) <br>Type: <b>voidQuery</b> (voidQuery is used for update, insert or delete from database)<br><br>".mysqli_error($connect));
|
|
}
|
|
?>
|