From 4803bf612caf501678bc64625861c376cdfcc60a Mon Sep 17 00:00:00 2001 From: paintballrefjosh Date: Wed, 1 Feb 2017 09:43:52 -0600 Subject: [PATCH 1/5] Database Optimization & Account Creation Modification Optimized DB install .sql file adding unsigned to most ID's and other INT columns. Also modified inc\account\account.login.php to check mw_account_extend to make sure account exists in this table at time of login. If you create an account in the game's console they weren't replicated to this table which caused login issues. --- inc/account/account.login.php | 8 ++- install/sql/full_install.sql | 99 +++++++++++++++++------------------ 2 files changed, 55 insertions(+), 52 deletions(-) diff --git a/inc/account/account.login.php b/inc/account/account.login.php index 91cb3fa..e652e9b 100644 --- a/inc/account/account.login.php +++ b/inc/account/account.login.php @@ -43,7 +43,7 @@ { $login = $_POST['login']; $pass = $Account->sha_password($login, $_POST['pass']); - $EMAIL = $DB->selectCell("SELECT `email` FROM `account` WHERE `username` LIKE '".$_POST['login']."' LIMIT 1"); + $account_id = $DB->selectCell("SELECT `id` FROM `account` WHERE `username` LIKE '".$_POST['login']."' LIMIT 1"); // initiate the login array, and send it in $params = array('username' => $login, 'sha_pass_hash' => $pass); @@ -52,6 +52,12 @@ // If account login was successful if($Login == 1) { + // Make sure account exists in mw_account_extend table, if not then insert one of type "member" aka registered user + $mw_account = $DB->selectCell("SELECT account_id FROM mw_account_extend WHERE account_id = '".$account_id."'"); + if(!$mw_account) + { + $DB->query("INSERT INTO mw_account_extend (account_id, account_level) VALUES ($account_id, 2)"); + } // Once finished, redirect to the page we came from redirect($_SERVER['HTTP_REFERER'],1); } diff --git a/install/sql/full_install.sql b/install/sql/full_install.sql index a799ceb..847e346 100644 --- a/install/sql/full_install.sql +++ b/install/sql/full_install.sql @@ -5,8 +5,8 @@ SET FOREIGN_KEY_CHECKS=0; DROP TABLE IF EXISTS `mw_account_extend`; CREATE TABLE `mw_account_extend` ( `account_id` int(10) unsigned NOT NULL, - `account_level` smallint(3) NOT NULL DEFAULT '1', - `theme` smallint(3) NOT NULL DEFAULT '0', + `account_level` smallint(3) unsigned NOT NULL DEFAULT '1', + `theme` smallint(3) unsigned NOT NULL DEFAULT '0', `last_visit` int(25) DEFAULT NULL, `registration_ip` varchar(15) NOT NULL DEFAULT '0.0.0.0', `activation_code` varchar(255) DEFAULT NULL, @@ -34,7 +34,7 @@ CREATE TABLE `mw_account_extend` ( -- ---------------------------- DROP TABLE IF EXISTS `mw_account_groups`; CREATE TABLE `mw_account_groups` ( - `account_level` smallint(2) NOT NULL DEFAULT '1', + `account_level` smallint(2) unsigned NOT NULL DEFAULT '1', `title` text, PRIMARY KEY (`account_level`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; @@ -55,7 +55,7 @@ DROP TABLE IF EXISTS `mw_account_keys`; CREATE TABLE `mw_account_keys` ( `id` int(11) unsigned NOT NULL, `key` varchar(40) CHARACTER SET utf8 DEFAULT NULL, - `assign_time` int(11) DEFAULT NULL, + `assign_time` int(11) unsigned DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci; @@ -80,7 +80,7 @@ DROP TABLE IF EXISTS `mw_db_version`; CREATE TABLE `mw_db_version` ( `dbver` varchar(20) NOT NULL DEFAULT '', `dbdate` int(10) unsigned NOT NULL DEFAULT '0', - `entry` int(5) NOT NULL DEFAULT '1', + `entry` int(5) unsigned NOT NULL DEFAULT '1', PRIMARY KEY (`entry`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; @@ -94,7 +94,7 @@ INSERT INTO `mw_db_version` VALUES ('1.0a', '1292781212', '1'); -- ---------------------------- DROP TABLE IF EXISTS `mw_donate_packages`; CREATE TABLE `mw_donate_packages` ( - `id` smallint(5) NOT NULL AUTO_INCREMENT, + `id` smallint(5) unsigned NOT NULL AUTO_INCREMENT, `desc` varchar(255) DEFAULT NULL, `cost` varchar(11) NOT NULL DEFAULT '1.00', `points` int(11) NOT NULL DEFAULT '1', @@ -110,17 +110,17 @@ CREATE TABLE `mw_donate_packages` ( -- ---------------------------- DROP TABLE IF EXISTS `mw_donate_transactions`; CREATE TABLE `mw_donate_transactions` ( - `id` int(11) NOT NULL AUTO_INCREMENT, + `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `trans_id` varchar(255) DEFAULT NULL, - `account` int(8) DEFAULT NULL, - `item_number` int(11) DEFAULT NULL, + `account` int(8) unsigned DEFAULT NULL, + `item_number` int(11) unsigned DEFAULT NULL, `buyer_email` varchar(255) DEFAULT NULL, `payment_type` varchar(255) DEFAULT NULL, `payment_status` varchar(255) DEFAULT NULL, `pending_reason` varchar(255) DEFAULT NULL, `reason_code` varchar(255) DEFAULT NULL, `amount` varchar(10) DEFAULT NULL, - `item_given` tinyint(1) NOT NULL DEFAULT '0', + `item_given` tinyint(1) unsigned NOT NULL DEFAULT '0', PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; @@ -133,7 +133,7 @@ CREATE TABLE `mw_donate_transactions` ( -- ---------------------------- DROP TABLE IF EXISTS `mw_faq`; CREATE TABLE `mw_faq` ( - `id` smallint(3) NOT NULL AUTO_INCREMENT, + `id` smallint(3) unsigned NOT NULL AUTO_INCREMENT, `question` text NOT NULL, `answer` text NOT NULL, PRIMARY KEY (`id`) @@ -148,11 +148,11 @@ CREATE TABLE `mw_faq` ( -- ---------------------------- DROP TABLE IF EXISTS `mw_gallery`; CREATE TABLE `mw_gallery` ( - `id` int(3) NOT NULL AUTO_INCREMENT, + `id` int(3) unsigned NOT NULL AUTO_INCREMENT, `img` text NOT NULL, `comment` text NOT NULL, `autor` text NOT NULL, - `date` date NOT NULL, + `date` int(11) unsigned NOT NULL, `cat` varchar(255) NOT NULL, UNIQUE KEY `id` (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=cp1251 ROW_FORMAT=DYNAMIC; @@ -160,8 +160,8 @@ CREATE TABLE `mw_gallery` ( -- ---------------------------- -- Records of mw_gallery -- ---------------------------- -INSERT INTO `mw_gallery` VALUES ('1', 'Mangosweb_wall.jpg', 'Test Wallpaper', 'MangosWeb', '0000-00-00', 'wallpaper'); -INSERT INTO `mw_gallery` VALUES ('2', 'Mangosweb_scr.jpg', 'Test Screenshot', 'MangosWeb', '0000-00-00', 'screenshot'); +INSERT INTO `mw_gallery` VALUES ('1', 'Mangosweb_wall.jpg', 'Test Wallpaper', 'MangosWeb', '1485927282', 'wallpaper'); +INSERT INTO `mw_gallery` VALUES ('2', 'Mangosweb_scr.jpg', 'Test Screenshot', 'MangosWeb', '1485927282', 'screenshot'); -- ---------------------------- -- Table structure for `mw_gallery_ssotd` @@ -169,26 +169,26 @@ INSERT INTO `mw_gallery` VALUES ('2', 'Mangosweb_scr.jpg', 'Test Screenshot', 'M DROP TABLE IF EXISTS `mw_gallery_ssotd`; CREATE TABLE `mw_gallery_ssotd` ( `image` varchar(50) NOT NULL, - `date` varchar(8) NOT NULL + `date` int(11) unsigned NOT NULL ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -- ---------------------------- -- Records of mw_gallery_ssotd -- ---------------------------- -INSERT INTO `mw_gallery_ssotd` VALUES ('Mangosweb_scr.jpg', '10.10.19'); +INSERT INTO `mw_gallery_ssotd` VALUES ('Mangosweb_scr.jpg', '1485927282'); -- ---------------------------- -- Table structure for `mw_menu_items` -- ---------------------------- DROP TABLE IF EXISTS `mw_menu_items`; CREATE TABLE `mw_menu_items` ( - `menu_id` int(3) NOT NULL DEFAULT '1', + `menu_id` int(3) unsigned NOT NULL DEFAULT '1', `link_title` varchar(100) DEFAULT NULL, `link` varchar(255) DEFAULT NULL, - `order` int(3) NOT NULL DEFAULT '1', + `order` int(3) unsigned NOT NULL DEFAULT '1', `account_level` int(3) NOT NULL DEFAULT '1', `guest_only` int(3) NOT NULL DEFAULT '0', - `id` int(3) NOT NULL AUTO_INCREMENT, + `id` int(3) unsigned NOT NULL AUTO_INCREMENT, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; @@ -215,18 +215,18 @@ INSERT INTO `mw_menu_items` VALUES ('4', 'Top Kills', '?p=server&sub=topkills', -- ---------------------------- DROP TABLE IF EXISTS `mw_news`; CREATE TABLE `mw_news` ( - `id` smallint(3) NOT NULL AUTO_INCREMENT, + `id` smallint(3) unsigned NOT NULL AUTO_INCREMENT, `title` text, `message` longtext, `posted_by` text, - `post_time` int(15) DEFAULT NULL, + `post_time` int(15) unsigned DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=latin1; -- ---------------------------- -- Records of mw_news -- ---------------------------- -INSERT INTO `mw_news` VALUES ('1', 'Welcome!', '

Thank you for installing MangosWeb v3!

Please login with your Admin account username and password to configure the CMS further.

', 'Wilson212', '1288727884'); +INSERT INTO `mw_news` VALUES ('1', 'Welcome!', '

Thank you for installing MangosWeb v3!

Please login with your Admin account username and password to configure the CMS further.

', 'Mistvale.com Dev', '1485753669'); -- ---------------------------- @@ -235,10 +235,10 @@ INSERT INTO `mw_news` VALUES ('1', 'Welcome!', '

Thank you for inst DROP TABLE IF EXISTS `mw_online`; CREATE TABLE `mw_online` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `user_id` int(10) NOT NULL DEFAULT '0', + `user_id` int(10) unsigned NOT NULL DEFAULT '0', `user_name` varchar(200) NOT NULL DEFAULT 'Guest', `user_ip` varchar(15) NOT NULL DEFAULT '0.0.0.0', - `logged` int(10) NOT NULL DEFAULT '0', + `logged` int(10) unsigned NOT NULL DEFAULT '0', `currenturl` varchar(255) NOT NULL DEFAULT './', PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; @@ -272,7 +272,7 @@ CREATE TABLE `mw_pms` ( -- ---------------------------- DROP TABLE IF EXISTS `mw_regkeys`; CREATE TABLE `mw_regkeys` ( - `id` smallint(9) NOT NULL AUTO_INCREMENT, + `id` smallint(9) unsigned NOT NULL AUTO_INCREMENT, `key` varchar(255) NOT NULL DEFAULT '0', `used` smallint(3) NOT NULL DEFAULT '0', PRIMARY KEY (`id`) @@ -287,7 +287,7 @@ CREATE TABLE `mw_regkeys` ( -- ---------------------------- DROP TABLE IF EXISTS `mw_secret_questions`; CREATE TABLE `mw_secret_questions` ( - `id` int(3) NOT NULL AUTO_INCREMENT, + `id` int(3) unsigned NOT NULL AUTO_INCREMENT, `question` varchar(60) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; @@ -306,14 +306,14 @@ INSERT INTO `mw_secret_questions` VALUES ('5', 'What is the name of your first p -- ---------------------------- DROP TABLE IF EXISTS `mw_shop_items`; CREATE TABLE `mw_shop_items` ( - `id` smallint(3) NOT NULL AUTO_INCREMENT, + `id` smallint(3) unsigned NOT NULL AUTO_INCREMENT, `item_number` varchar(255) NOT NULL DEFAULT '0', - `itemset` int(10) NOT NULL DEFAULT '0', + `itemset` int(10) unsigned NOT NULL DEFAULT '0', `gold` int(25) NOT NULL DEFAULT '0', - `quanity` int(25) NOT NULL DEFAULT '1', + `quanity` int(25) unsigned NOT NULL DEFAULT '1', `desc` varchar(255) DEFAULT NULL, `wp_cost` varchar(5) NOT NULL DEFAULT '0', - `realms` int(100) NOT NULL DEFAULT '1', + `realms` int(100) unsigned NOT NULL DEFAULT '1', PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; @@ -326,12 +326,12 @@ CREATE TABLE `mw_shop_items` ( -- ---------------------------- DROP TABLE IF EXISTS `mw_vote_sites`; CREATE TABLE `mw_vote_sites` ( - `id` int(11) NOT NULL AUTO_INCREMENT, + `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `hostname` varchar(255) NOT NULL, `votelink` varchar(255) NOT NULL, `image_url` varchar(255) DEFAULT NULL, `points` int(11) DEFAULT NULL, - `reset_time` int(16) NOT NULL DEFAULT '1', + `reset_time` int(16) unsigned NOT NULL DEFAULT '1', PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; @@ -344,7 +344,7 @@ CREATE TABLE `mw_vote_sites` ( -- ---------------------------- DROP TABLE IF EXISTS `mw_voting`; CREATE TABLE `mw_voting` ( - `id` int(10) NOT NULL AUTO_INCREMENT, + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `user_ip` varchar(30) NOT NULL, `site` int(10) unsigned NOT NULL DEFAULT '0', `time` int(10) unsigned NOT NULL DEFAULT '0', @@ -355,11 +355,6 @@ CREATE TABLE `mw_voting` ( -- Records of mw_voting -- ---------------------------- --- ---------------------------- --- Insert account data from "account" table --- ---------------------------- -INSERT INTO `mw_account_extend` (`account_id`) SELECT account.id FROM account; - -- ---------------------------- -- Instead of rebuilding this file, we will just alter the tables for utf-8 -- ---------------------------- @@ -374,16 +369,18 @@ ALTER TABLE `mw_news` DEFAULT CHARACTER SET 'utf8' COLLATE 'utf8_unicode_ci'; ALTER TABLE `mw_online` DEFAULT CHARACTER SET 'utf8' COLLATE 'utf8_unicode_ci'; ALTER TABLE `mw_shop_items` DEFAULT CHARACTER SET 'utf8' COLLATE 'utf8_unicode_ci'; --- --- Add dbinfo to realmlist table --- Very important that this is in the end, along with ADD ALTERS. Because if --- file gets applied again, it gets an error here. --- -ALTER TABLE `realmlist` -ADD `site_enabled` int(3) NOT NULL default '0'; - -ALTER TABLE `realmlist` -ADD `ra_info` VARCHAR( 355 ) NOT NULL default 'type;port;username;password'; +-- ---------------------------- +-- Table structure for `mw_realmlist` +-- ---------------------------- +DROP TABLE IF EXISTS `mw_realmlist`; +CREATE TABLE `mw_realmlist` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `site_enabled` int(3) NOT NULL default '0', + `ra_info` VARCHAR( 355 ) NOT NULL default 'type;port;username;password', + `dbinfo` VARCHAR( 355 ) NOT NULL default '127.0.0.1;3306;username;password;DBCharacter;127.0.0.1;3306;username;password;DBWorld' COMMENT 'Database info to THIS row', + PRIMARY KEY (`id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; -ALTER TABLE `realmlist` -ADD `dbinfo` VARCHAR( 355 ) NOT NULL default '127.0.0.1;3306;username;password;DBCharacter;127.0.0.1;3306;username;password;DBWorld' COMMENT 'Database info to THIS row'; \ No newline at end of file +-- ---------------------------- +-- Records of mw_realmlist +-- ---------------------------- From 6bab83110fa0ad3c18f6f924e98157b0b482c995 Mon Sep 17 00:00:00 2001 From: paintballrefjosh Date: Wed, 1 Feb 2017 11:15:51 -0600 Subject: [PATCH 2/5] Revert DB script Revert DB script back to original. Went down the path of separating the main database from the realm database but there are too many hooks into it to complete at this time. --- install/sql/full_install.sql | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/install/sql/full_install.sql b/install/sql/full_install.sql index 847e346..6b13be9 100644 --- a/install/sql/full_install.sql +++ b/install/sql/full_install.sql @@ -355,6 +355,8 @@ CREATE TABLE `mw_voting` ( -- Records of mw_voting -- ---------------------------- +INSERT INTO `mw_account_extend` (`account_id`) SELECT account.id FROM account; + -- ---------------------------- -- Instead of rebuilding this file, we will just alter the tables for utf-8 -- ---------------------------- @@ -369,18 +371,16 @@ ALTER TABLE `mw_news` DEFAULT CHARACTER SET 'utf8' COLLATE 'utf8_unicode_ci'; ALTER TABLE `mw_online` DEFAULT CHARACTER SET 'utf8' COLLATE 'utf8_unicode_ci'; ALTER TABLE `mw_shop_items` DEFAULT CHARACTER SET 'utf8' COLLATE 'utf8_unicode_ci'; --- ---------------------------- --- Table structure for `mw_realmlist` --- ---------------------------- -DROP TABLE IF EXISTS `mw_realmlist`; -CREATE TABLE `mw_realmlist` ( - `id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `site_enabled` int(3) NOT NULL default '0', - `ra_info` VARCHAR( 355 ) NOT NULL default 'type;port;username;password', - `dbinfo` VARCHAR( 355 ) NOT NULL default '127.0.0.1;3306;username;password;DBCharacter;127.0.0.1;3306;username;password;DBWorld' COMMENT 'Database info to THIS row', - PRIMARY KEY (`id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8; +-- +-- Add dbinfo to realmlist table +-- Very important that this is in the end, along with ADD ALTERS. Because if +-- file gets applied again, it gets an error here. +-- +ALTER TABLE `realmlist` +ADD `site_enabled` int(3) NOT NULL default '0'; --- ---------------------------- --- Records of mw_realmlist --- ---------------------------- +ALTER TABLE `realmlist` +ADD `ra_info` VARCHAR( 355 ) NOT NULL default 'type;port;username;password'; + +ALTER TABLE `realmlist` +ADD `dbinfo` VARCHAR( 355 ) NOT NULL default '127.0.0.1;3306;username;password;DBCharacter;127.0.0.1;3306;username;password;DBWorld' COMMENT 'Database info to THIS row'; \ No newline at end of file From fc8b7fcad2296e9261d900f9b5cbdf7ff206b3dc Mon Sep 17 00:00:00 2001 From: paintballrefjosh Date: Wed, 1 Feb 2017 22:48:30 -0600 Subject: [PATCH 3/5] Fixed screenshot of the day bug SSOTD random screenshot on the home page did not show an image due to some outdated or incorrect code. Fixed null issues and changed date to use unix timestamp. --- modules/ssotd/thumbnail.inc.php | 13 ++++++------- templates/blizzlike/body_right.php | 2 +- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/modules/ssotd/thumbnail.inc.php b/modules/ssotd/thumbnail.inc.php index e01be75..a94ef21 100644 --- a/modules/ssotd/thumbnail.inc.php +++ b/modules/ssotd/thumbnail.inc.php @@ -164,7 +164,6 @@ public function __construct($fileName) { if($this->error == true) { $this->showErrorImage(); - break; } } @@ -458,10 +457,10 @@ public function crop($startX,$startY,$width,$height) { * @param int $quality * @param string $name */ - public function show($quality=100,$name = '') { + public function show($quality=100,$name = null) { switch($this->format) { case 'GIF': - if($name != '') { + if($name != null) { ImageGif($this->newImage,$name); } else { @@ -470,16 +469,16 @@ public function show($quality=100,$name = '') { } break; case 'JPG': - if($name != '') { - ImageJpeg($this->newImage,$name,$quality); + if($name != null) { + ImageIpeg($this->newImage,$name,$quality); } else { header('Content-type: image/jpeg'); - ImageJpeg($this->newImage,'',$quality); + ImageJpeg($this->newImage,null,$quality); } break; case 'PNG': - if($name != '') { + if($name != null) { ImagePng($this->newImage,$name); } else { diff --git a/templates/blizzlike/body_right.php b/templates/blizzlike/body_right.php index 9fb80bc..c796338 100644 --- a/templates/blizzlike/body_right.php +++ b/templates/blizzlike/body_right.php @@ -67,7 +67,7 @@ if ($Config->get('module_fp_ssotd') == 1) { $date_ssotd = $DB->selectCell("SELECT `date` FROM `mw_gallery_ssotd` LIMIT 1"); - $today_ssotd = date("y.m.d"); + $today_ssotd = mktime(0, 0, 0, date("m"), date("d"), date("Y")); if ($date_ssotd != $today_ssotd) { $rand_ssotd = $DB->selectCell("SELECT `img` FROM `mw_gallery` WHERE cat ='screenshot' ORDER BY RAND() LIMIT 1"); From 319a8dee461ce779362794c27d3a54841f8e046f Mon Sep 17 00:00:00 2001 From: paintballrefjosh Date: Thu, 2 Feb 2017 15:18:52 -0600 Subject: [PATCH 4/5] Database Cleanup, Remove Unused Files, Fix Character Statistics Page Removed old DB scripts. Removed server info pages since backend functions did not exist. Added a 4.X to 4.0.5 migration SQL script. Modified full_install.sql to reflect the DB optimizations. Fixed server -> statistic page to properly pull and show images and character stats. --- images/wallpapers/Mangosweb_wall.jpg | Bin 79356 -> 0 bytes inc/admin/template_files/admin.email.php | 2 +- inc/admin/template_files/admin.news.php | 43 ++++++++++ inc/server/server.info.php | 75 ------------------ inc/server/server.statistic.php | 56 ++++++++----- install/sql/delete_v2_tables.sql | 33 -------- install/sql/full_install.sql | 14 ---- install/sql/updates/4.X_to_4.0.5.sql | 8 ++ install/sql/updates/update_1.0a.sql | 41 ---------- templates/blizzlike/body_right.php | 7 -- templates/blizzlike/server/server.info.php | 38 --------- .../blizzlike/server/server.statistic.php | 67 ++++++++-------- 12 files changed, 124 insertions(+), 260 deletions(-) delete mode 100644 images/wallpapers/Mangosweb_wall.jpg delete mode 100644 inc/server/server.info.php delete mode 100644 install/sql/delete_v2_tables.sql create mode 100644 install/sql/updates/4.X_to_4.0.5.sql delete mode 100644 install/sql/updates/update_1.0a.sql delete mode 100644 templates/blizzlike/server/server.info.php diff --git a/images/wallpapers/Mangosweb_wall.jpg b/images/wallpapers/Mangosweb_wall.jpg deleted file mode 100644 index 69888b0f468b9454df01bd73375164c0db696032..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 79356 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Ò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 diff --git a/inc/admin/template_files/admin.email.php b/inc/admin/template_files/admin.email.php index 3d124be..e4c3f13 100644 --- a/inc/admin/template_files/admin.email.php +++ b/inc/admin/template_files/admin.email.php @@ -51,7 +51,7 @@ staffid : "991234" } }); - +

diff --git a/inc/admin/template_files/admin.news.php b/inc/admin/template_files/admin.news.php index 3d0c5f8..ab06ba5 100644 --- a/inc/admin/template_files/admin.news.php +++ b/inc/admin/template_files/admin.news.php @@ -9,6 +9,49 @@ /****************************************************************************/ ?> +
diff --git a/inc/server/server.info.php b/inc/server/server.info.php deleted file mode 100644 index 9e89b9e..0000000 --- a/inc/server/server.info.php +++ /dev/null @@ -1,75 +0,0 @@ - */ -/* Copyright (C) <2017> */ -/* < http://www.mistvale.com > */ -/* */ -/* Original MangosWeb Enhanced (C) 2010-2011 KeysWow */ -/* Original MangosWeb (C) 2007, Sasha, Nafe, TGM, Peec */ -/****************************************************************************/ - -if(INCLUDED!==true)exit; - -$pathway_info[] = array('title'=>'Server Info', 'link' =>''); - -$init = 'id_'.$user['cur_selected_realmd']; -$config_details = getMangosConfig($MW->getConfig->mangos_conf_external->$init->mangos_world_conf); - -$write_straight = array( - 'PlayerLimit' => 'Simultanous Players Connected Limit', - 'MaxPlayerLevel' => 'Max Character Level', - 'MaxPrimaryTradeSkill' => 'Number of Allowed Primary Trade Skills', - 'MinPetitionSigns' => 'Number of Signers Needed For Guild Petition', -); - -$write_true_false = array( - 'AllowTwoSide.Accounts' => 'Allow Both Horde and Alliance on Same Account', - 'AllowTwoSide.Interaction.Chat' => 'Allow Chat between Horde and Alliance', - 'AllowTwoSide.Interaction.Channel' => 'Allow Channels with Both Horde and Alliance', - 'AllowTwoSide.Interaction.Group' => 'Allow Groups with Both Horde and Alliance', - 'AllowTwoSide.Interaction.Guild' => 'Allow Guilds with Both Horde and Alliance', - 'AllowTwoSide.Interaction.Auction' => 'Allow Auction/Trade between Horde and Alliance', - 'AllowTwoSide.WhoList' => 'Show Both Horde and Alliance on /who List', -); - -$write_blizzlike = array( - 'Rate.Health' => 'Health Recovery Rate', - 'Rate.Mana' => 'Mana Recovery Rate', - 'Rate.Rage.Income' => 'Rage Increase Rate', - 'Rate.Rage.Loss' => 'Rage Decrease Rate', - 'Rate.Drop.Item.Poor' => 'Item Drop Rate Poor', - 'Rate.Drop.Item.Normal' => 'Item Drop Rate Normal', - 'Rate.Drop.Item.Uncommon' => 'Item Drop Rate Uncommon', - 'Rate.Drop.Item.Rare' => 'Item Drop Rate Rare', - 'Rate.Drop.Item.Epic' => 'Item Drop Rate Epic', - 'Rate.Drop.Item.Legendary' => 'Item Drop Rate Legendary', - 'Rate.Drop.Item.Artifact' => 'Item Drop Rate Artifact', - 'Rate.Drop.Item.Referenced' => 'Item Drop Rate Referenced', - 'Rate.Drop.Money' => 'Money Drop Rate', - 'Rate.XP.Kill' => 'Experience Rate from Kills', - 'Rate.XP.Quest' => 'Experience Rate from Quests', - 'Rate.XP.Explore' => 'Experience Rate from Exploration', - 'Rate.Creature.Normal.Damage' => 'Damage from Normal Creatures', - 'Rate.Creature.Elite.Elite.Damage' => 'Damage from Elites', - 'Rate.Creature.Elite.RAREELITE.Damage' => 'Damage from Rare Elites', - 'Rate.Creature.Elite.WORLDBOSS.Damage' => 'Damage from World Bosses', - 'Rate.Creature.Elite.RARE.Damage' => 'Damage from Rare Mobs', - 'Rate.Creature.Normal.HP' => 'HP of Normal Creatures', - 'Rate.Creature.Elite.Elite.HP' => 'HP of Elites', - 'Rate.Creature.Elite.RAREELITE.HP' => 'HP of Rare Elites', - 'Rate.Creature.Elite.WORLDBOSS.HP' => 'HP of World Bosses', - 'Rate.Creature.Elite.RARE.HP' => 'HP of Rare Mobs', - 'Rate.Rest.InGame' => 'Rest Exp Growth Rate In-game', - 'Rate.Rest.Offline.InTavernOrCity' => 'Rest Exp Growth Rate at Cities/Inns', - 'Rate.Rest.Offline.InWilderness' => 'Rest Exp Growth Rate in Wilderness', - 'Rate.Talent' => 'Talent Points Gain', -); - -$write_skillchances = array( - 'SkillChance.Orange' => 'Orange', - 'SkillChance.Yellow' => 'Yellow', - 'SkillChance.Green' => 'Green', - 'SkillChance.Grey' => 'Grey', -); - -?> diff --git a/inc/server/server.statistic.php b/inc/server/server.statistic.php index 142b2b1..f370105 100644 --- a/inc/server/server.statistic.php +++ b/inc/server/server.statistic.php @@ -8,38 +8,54 @@ /* Original MangosWeb (C) 2007, Sasha, Nafe, TGM, Peec */ /****************************************************************************/ -if(INCLUDED!==true)exit; +if(INCLUDED!==true) { + echo "Not Included!"; exit; +} -$pathway_info[] = array('title'=>$lang['statistic'],'link'=>''); +$realm = $DB->selectRow("SELECT * FROM realmlist WHERE `id`='".$user['cur_selected_realm']."' LIMIT 1"); +$pathway_info[] = array('title' => 'Server Statistics', 'link' => '?p=server&sub=statistic'); +$pathway_info[] = array('title' => $realm['name'], 'link' => ''); //initialize $num_chars variable $num_chars = 0; -$realm_param = $user['cur_selected_realmd']; -$rc = $CHDB->selectCol("SELECT race AS ARRAY_KEY, count(race) AS `num` FROM `characters` GROUP BY race"); +//$realm_param = get_realm_byid($_COOKIE['cur_selected_realm']);; +$rc = $CDB->select("SELECT race, count(race) AS `num` FROM `characters` GROUP BY race"); -foreach($rc as $data) +foreach($rc as $row) { - $num_chars+=$data; + $data[$row['race']] = $row['num']; } + // Loop thru classes, add 0 if its not defined in array. -for($i = 1; $i <= 11; $i++)if (!isset($rc[$i]))$rc[$i] = 0; +for($i = 1; $i <= 11; $i++) +{ + if(!isset($data[$i])) + { + $data[$i] = 0; + } + + $num_chars += $data[$i]; + + // echo "data[$i] = ".$data[$i]." - num_chars = $num_chars
"; +} //Check if 0 entries to avoid PHP warnings if 0 chars in database. -if ($num_chars > 0){ - $num_ally = $rc[1]+$rc[3]+$rc[4]+$rc[7]+$rc[11]; - $num_horde = $rc[2]+$rc[5]+$rc[6]+$rc[8]+$rc[10]; +if ($num_chars > 0) +{ + $num_ally = $data[1]+$data[3]+$data[4]+$data[7]+$data[11]; + $num_horde = $data[2]+$data[5]+$data[6]+$data[8]+$data[10]; $pc_ally = round($num_ally/$num_chars*100,2); $pc_horde = round($num_horde/$num_chars*100,2); - $pc_human = round($rc[1]/$num_chars*100,2); - $pc_orc = round($rc[2]/$num_chars*100,2); - $pc_dwarf = round($rc[3]/$num_chars*100,2); - $pc_ne = round($rc[4]/$num_chars*100,2); - $pc_undead = round($rc[5]/$num_chars*100,2); - $pc_tauren = round($rc[6]/$num_chars*100,2); - $pc_gnome = round($rc[7]/$num_chars*100,2); - $pc_troll = round($rc[8]/$num_chars*100,2); - $pc_be = round($rc[10]/$num_chars*100,2); - $pc_dranei = round($rc[11]/$num_chars*100,2); + $pc_human = round($data[1]/$num_chars*100,2); + $pc_orc = round($data[2]/$num_chars*100,2); + $pc_dwarf = round($data[3]/$num_chars*100,2); + $pc_ne = round($data[4]/$num_chars*100,2); + $pc_undead = round($data[5]/$num_chars*100,2); + $pc_tauren = round($data[6]/$num_chars*100,2); + $pc_gnome = round($data[7]/$num_chars*100,2); + $pc_troll = round($data[8]/$num_chars*100,2); + $pc_be = round($data[10]/$num_chars*100,2); + $pc_dranei = round($data[11]/$num_chars*100,2); } ?> diff --git a/install/sql/delete_v2_tables.sql b/install/sql/delete_v2_tables.sql deleted file mode 100644 index e9db69e..0000000 --- a/install/sql/delete_v2_tables.sql +++ /dev/null @@ -1,33 +0,0 @@ -SET FOREIGN_KEY_CHECKS=0; -DROP TABLE IF EXISTS `acc_creation_captcha`; -DROP TABLE IF EXISTS `account_extend`; -DROP TABLE IF EXISTS `account_groups`; -DROP TABLE IF EXISTS `account_keys`; -DROP TABLE IF EXISTS `donations_template`; -DROP TABLE IF EXISTS `f_attachs`; -DROP TABLE IF EXISTS `f_categories`; -DROP TABLE IF EXISTS `f_forums`; -DROP TABLE IF EXISTS `f_markread`; -DROP TABLE IF EXISTS `f_posts`; -DROP TABLE IF EXISTS `f_topics`; -DROP TABLE IF EXISTS `gallery`; -DROP TABLE IF EXISTS `gallery_ssotd`; -DROP TABLE IF EXISTS `online`; -DROP TABLE IF EXISTS `paypal_cart_info`; -DROP TABLE IF EXISTS `paypal_payment_info`; -DROP TABLE IF EXISTS `paypal_subscription_info`; -DROP TABLE IF EXISTS `pms`; -DROP TABLE IF EXISTS `site_faq`; -DROP TABLE IF EXISTS `site_regkeys`; -DROP TABLE IF EXISTS `voting`; -DROP TABLE IF EXISTS `voting_points`; -DROP TABLE IF EXISTS `voting_rewards`; -DROP TABLE IF EXISTS `voting_sites`; -DROP TABLE IF EXISTS `world_entrys`; - -ALTER TABLE `realmlist` -DROP COLUMN `dbinfo`, -DROP COLUMN `ra_address`, -DROP COLUMN `ra_port`, -DROP COLUMN `ra_user`, -DROP COLUMN `ra_pass`; \ No newline at end of file diff --git a/install/sql/full_install.sql b/install/sql/full_install.sql index 6b13be9..5c16bed 100644 --- a/install/sql/full_install.sql +++ b/install/sql/full_install.sql @@ -163,20 +163,6 @@ CREATE TABLE `mw_gallery` ( INSERT INTO `mw_gallery` VALUES ('1', 'Mangosweb_wall.jpg', 'Test Wallpaper', 'MangosWeb', '1485927282', 'wallpaper'); INSERT INTO `mw_gallery` VALUES ('2', 'Mangosweb_scr.jpg', 'Test Screenshot', 'MangosWeb', '1485927282', 'screenshot'); --- ---------------------------- --- Table structure for `mw_gallery_ssotd` --- ---------------------------- -DROP TABLE IF EXISTS `mw_gallery_ssotd`; -CREATE TABLE `mw_gallery_ssotd` ( - `image` varchar(50) NOT NULL, - `date` int(11) unsigned NOT NULL -) ENGINE=MyISAM DEFAULT CHARSET=utf8; - --- ---------------------------- --- Records of mw_gallery_ssotd --- ---------------------------- -INSERT INTO `mw_gallery_ssotd` VALUES ('Mangosweb_scr.jpg', '1485927282'); - -- ---------------------------- -- Table structure for `mw_menu_items` -- ---------------------------- diff --git a/install/sql/updates/4.X_to_4.0.5.sql b/install/sql/updates/4.X_to_4.0.5.sql new file mode 100644 index 0000000..4582afe --- /dev/null +++ b/install/sql/updates/4.X_to_4.0.5.sql @@ -0,0 +1,8 @@ +-- Drop unused table mw_gallery_ssotd +DROP TABLE `mw_gallery_ssotd`; + +-- Modify `mw_gallery` to use a unix timestamp instead of date and preserve existing data +ALTER TABLE `mw_gallery` ADD COLUMN `date_2` INT(11) unsigned NOT NULL; +UPDATE `mw_gallery` SET `date_2` = UNIX_TIMESTAMP(`date`); +ALTER TABLE `mw_gallery` DROP COLUMN `date`; +ALTER TABLE `mw_gallery` CHANGE `date_2` `date` INT(11) unsigned NOT NULL; \ No newline at end of file diff --git a/install/sql/updates/update_1.0a.sql b/install/sql/updates/update_1.0a.sql deleted file mode 100644 index e94ad36..0000000 --- a/install/sql/updates/update_1.0a.sql +++ /dev/null @@ -1,41 +0,0 @@ -SET FOREIGN_KEY_CHECKS=0; -ALTER TABLE `mw_account_groups` DEFAULT CHARACTER SET 'utf8' COLLATE 'utf8_unicode_ci'; -ALTER TABLE `mw_account_extend` DEFAULT CHARACTER SET 'utf8' COLLATE 'utf8_unicode_ci'; -ALTER TABLE `mw_donate_packages` DEFAULT CHARACTER SET 'utf8' COLLATE 'utf8_unicode_ci'; -ALTER TABLE `mw_donate_transactions` DEFAULT CHARACTER SET 'utf8' COLLATE 'utf8_unicode_ci'; -ALTER TABLE `mw_faq` DEFAULT CHARACTER SET 'utf8' COLLATE 'utf8_unicode_ci'; -ALTER TABLE `mw_donate_packages` DEFAULT CHARACTER SET 'utf8' COLLATE 'utf8_unicode_ci'; -ALTER TABLE `mw_menu_items` DEFAULT CHARACTER SET 'utf8' COLLATE 'utf8_unicode_ci'; -ALTER TABLE `mw_news` DEFAULT CHARACTER SET 'utf8' COLLATE 'utf8_unicode_ci'; -ALTER TABLE `mw_online` DEFAULT CHARACTER SET 'utf8' COLLATE 'utf8_unicode_ci'; -ALTER TABLE `mw_shop_items` DEFAULT CHARACTER SET 'utf8' COLLATE 'utf8_unicode_ci'; - -DROP TABLE IF EXISTS `mw_voting`; -CREATE TABLE `mw_voting` ( - `id` int(10) NOT NULL AUTO_INCREMENT, - `user_ip` varchar(30) NOT NULL, - `site` int(10) unsigned NOT NULL DEFAULT '0', - `time` int(10) unsigned NOT NULL DEFAULT '0', - PRIMARY KEY (`id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8; - -DROP TABLE IF EXISTS `mw_vote_sites`; -CREATE TABLE `mw_vote_sites` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `hostname` varchar(255) NOT NULL, - `votelink` varchar(255) NOT NULL, - `image_url` varchar(255) DEFAULT NULL, - `points` int(11) DEFAULT NULL, - `reset_time` int(16) NOT NULL DEFAULT '1', - PRIMARY KEY (`id`) -) ENGINE=MyISAM DEFAULT CHARSET=latin1; - -DROP TABLE IF EXISTS `mw_db_version`; -CREATE TABLE `mw_db_version` ( - `dbver` varchar(20) NOT NULL DEFAULT '', - `dbdate` int(10) unsigned NOT NULL DEFAULT '0', - `entry` int(5) NOT NULL DEFAULT '1', - PRIMARY KEY (`entry`) -) ENGINE=MyISAM DEFAULT CHARSET=latin1; - -INSERT INTO `mw_db_version` VALUES ('1.0a', '1292781212', '1'); \ No newline at end of file diff --git a/templates/blizzlike/body_right.php b/templates/blizzlike/body_right.php index c796338..ad28a3f 100644 --- a/templates/blizzlike/body_right.php +++ b/templates/blizzlike/body_right.php @@ -66,13 +66,6 @@ get('module_fp_ssotd') == 1) { - $date_ssotd = $DB->selectCell("SELECT `date` FROM `mw_gallery_ssotd` LIMIT 1"); - $today_ssotd = mktime(0, 0, 0, date("m"), date("d"), date("Y")); - if ($date_ssotd != $today_ssotd) - { - $rand_ssotd = $DB->selectCell("SELECT `img` FROM `mw_gallery` WHERE cat ='screenshot' ORDER BY RAND() LIMIT 1"); - $DB->query("UPDATE mw_gallery_ssotd SET image = '$rand_ssotd', date = '$today_ssotd'"); - } $screen_otd = $DB->selectCell("SELECT `img` FROM `mw_gallery` WHERE cat ='screenshot' ORDER BY RAND() LIMIT 1"); ?>
diff --git a/templates/blizzlike/server/server.info.php b/templates/blizzlike/server/server.info.php deleted file mode 100644 index 61645f6..0000000 --- a/templates/blizzlike/server/server.info.php +++ /dev/null @@ -1,38 +0,0 @@ -
- - - - -$value): ?> - - - -$value): ?> - - - -$value): ?> - - - -$value): ?> - - -
Server Info
Horde and Alliance Interaction
Server Rates
Skill Chance Values
'
- \ No newline at end of file diff --git a/templates/blizzlike/server/server.statistic.php b/templates/blizzlike/server/server.statistic.php index 13f2c4b..d083bfa 100644 --- a/templates/blizzlike/server/server.statistic.php +++ b/templates/blizzlike/server/server.statistic.php @@ -1,54 +1,59 @@
- +
- - 0 Characters - +
- - + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + @@ -56,8 +61,8 @@
AllianceHordeAllianceHorde
- : (%) + Alliance: (%) - : (%) + Horde: (%)
(%) (%) (%) (%)
(%) (%) (%) (%)
(%) (%) (%) (%)
(%) (%) (%) (%)
(%) (%) (%) (%)
- -_______________________________________________________________________________________ - +
\ No newline at end of file From 8db663d801a70ada2eb7bc23d7c41389a6796a72 Mon Sep 17 00:00:00 2001 From: paintballrefjosh Date: Sat, 4 Feb 2017 13:27:42 -0600 Subject: [PATCH 5/5] Update install script to use new mysqli commands Converted old style commands to new mysqli. Added appropriate links and variables to support new structure. --- core/class.config.php | 2 +- index.php | 2 +- install/index.php | 52 +++++++++++++++++++++---------------------- 3 files changed, 28 insertions(+), 28 deletions(-) diff --git a/core/class.config.php b/core/class.config.php index a55cb35..463245c 100644 --- a/core/class.config.php +++ b/core/class.config.php @@ -12,7 +12,7 @@ class Config { var $data = array(); - var $configFile = 'config/config.php'; //Default Config File + var $configFile = "config/config.php"; //Default Config File var $path_protectedconf = "config/config-protected.php"; function __construct() diff --git a/index.php b/index.php index 17f2682..12827ef 100644 --- a/index.php +++ b/index.php @@ -121,7 +121,7 @@ if($CDB->status() != 1) { echo "Cannot connect to the Character database. Please make sure you have this realm setup successfully in the Admin Panel. - Delete your cookies to reset realm selection back to default"; + Delete your cookies to reset realm selection back to default. "; die(); } diff --git a/install/index.php b/install/index.php index 6580725..36ab7c1 100644 --- a/install/index.php +++ b/install/index.php @@ -200,17 +200,17 @@ function output_message($type, $text) die(); } // Check if provided info is correct - @mysql_connect($_POST['db_host'].":".$_POST['db_port'], $_POST['db_username'], $_POST['db_password']) + $link = @mysqli_connect($_POST['db_host'], $_POST['db_username'], $_POST['db_password'], $_POST['db_name'], $_POST['db_port']) or die('
Couldn\'t connect to MySQL Database. Please Go Back and re-enter MySQL Database Information.

MySql error log:
- '.mysql_error().'Counld Not select Realm database! Please go back and re-submit realm DB information.
'); output_message('success', 'Successfully Connected to Realm DB.'); // Check if "account" table exsists, so we make (almost) sure mangos is actually installed (which is necesarry for this whole thing to work) - @mysql_query("SELECT * FROM `account` LIMIT 1") or die('
Error!

Account table not found! Cannot Continue with the installation without an Account - table!

MySql error log:
'.mysql_error().'
'); + @mysqli_query($link, "SELECT * FROM `account` LIMIT 1") or die('
Error!

Account table not found! Cannot Continue with the installation without an Account + table!

MySql error log:
'.mysqli_error().'
'); // Everthing should be fine, so first insert info into protected config file $conffile = "../config/config-protected.php"; @@ -239,7 +239,7 @@ function output_message($type, $text) } // Preparing for sql injection... (prashing, etc...) - $checker = @mysql_query("SELECT * FROM `account_extend` LIMIT 1"); + $checker = @mysqli_query($link, "SELECT * FROM `account_extend` LIMIT 1"); if(!isset($_POST['skip'])) { // Dealing with the full install sql file @@ -285,11 +285,11 @@ function output_message($type, $text) // Sql injection foreach ($queries as $query) { - mysql_query($query); + mysqli_query($link, $query); } } - $get_name = mysql_query("SELECT `name` FROM `realmlist` WHERE `id`=1 LIMIT 1") or die('
'.mysql_error().'
'); - $DB_name = mysql_result($get_name,0); + $get_name = mysqli_query($link, "SELECT `name` FROM `realmlist` WHERE `id`=1 LIMIT 1") or die('
'.mysqli_error().'
'); + $DB_name = mysqli_fetch_assoc($get_name); ?>
@@ -394,20 +394,20 @@ function output_message($type, $text) } elseif($step == 5) { - @mysql_connect($_POST['char_db_host'].":".$_POST['char_db_port'], $_POST['char_db_username'], $_POST['char_db_password']) + $char_link = @mysqli_connect($_POST['char_db_host'], $_POST['char_db_username'], $_POST['char_db_password'], $_POST['char_db_name'], $_POST['char_db_port']) or die('
Couldn\'t connect to the character MySQL Database. Please Go Back and re-enter MySQL Database Information.
'); - @mysql_select_db($_POST['char_db_name']) or die('
Couldn\'t select Characters db, most likely the given name is wrong. Please Go Back and correct it.
'); + @mysqli_select_db($char_link, $_POST['char_db_name']) or die('
Couldn\'t select Characters db, most likely the given name is wrong. Please Go Back and correct it.
'); - @mysql_connect($_POST['w_db_host'].":".$_POST['w_db_port'], $_POST['w_db_username'], $_POST['w_db_password']) + $world_link = @mysqli_connect($_POST['w_db_host'], $_POST['w_db_username'], $_POST['w_db_password'], $_POST['w_db_name'], $_POST['w_db_port']) or die('
Couldn\'t connect to the world MySQL Database. Please Go Back and re-enter MySQL Database Information.
'); - @mysql_select_db($_POST['w_db_name']) or die('
Couldn\'t select World db, most likely the given name is wrong. Please Go Back and correct it.
'); + @mysqli_select_db($world_link, $_POST['w_db_name']) or die('
Couldn\'t select World db, most likely the given name is wrong. Please Go Back and correct it.
'); - @mysql_connect($_POST['db_host'].":".$_POST['db_port'], $_POST['db_username'], $_POST['db_password']); - @mysql_select_db($_POST['db_name']) or die('Unable to select Realm Database!'); + $realm_link = @mysqli_connect($_POST['db_host'], $_POST['db_username'], $_POST['db_password'], $_POST['db_name'], $_POST['db_port']); + @mysqli_select_db($realm_link, $_POST['db_name']) or die('Unable to select Realm Database!'); // Extra sql query with db settings $dbinfo = $_POST['char_db_host'].";".$_POST['char_db_port'].";".$_POST['char_db_username'].";".$_POST['char_db_password'].";".$_POST['char_db_name'].";".$_POST['w_db_host'].";".$_POST['w_db_port'].";".$_POST['w_db_username'].";".$_POST['w_db_password'].";".$_POST['w_db_name'].";"; - mysql_query("UPDATE `realmlist` SET `dbinfo` = '".$dbinfo."', `site_enabled`=1 WHERE `id` = 1 LIMIT 1") or die('
'.mysql_error().'
'); + mysqli_query($realm_link, "UPDATE `realmlist` SET `dbinfo` = '".$dbinfo."', `site_enabled`=1 WHERE `id` = 1 LIMIT 1") or die('
'.mysqli_error($realm_link).'
'); output_message('success', 'Successfully Connected to Character and World DB\'s'); ?> @@ -464,26 +464,26 @@ function sha_password($user, $pass) $pass = strtoupper($pass); return SHA1($user.':'.$pass); } - mysql_connect($_POST['db_host'].":".$_POST['db_port'], $_POST['db_username'], $_POST['db_password']); - mysql_select_db($_POST['db_name']); + $realm_link = mysqli_connect($_POST['db_host'], $_POST['db_username'], $_POST['db_password'], $_POST['db_name'], $_POST['db_port']); + mysqli_select_db($realm_link, $_POST['db_name']); - $accountid = mysql_query("SELECT `id` FROM `account` WHERE `username` LIKE '".$_POST['account']."'"); - $checkacc = mysql_num_rows($accountid); + $accountid = mysqli_query($realm_link, "SELECT `id` FROM `account` WHERE `username` LIKE '".$_POST['account']."'"); + $checkacc = mysqli_num_rows($accountid); if ($checkacc == 1) { // Account exsist - $accountid = mysql_fetch_assoc($accountid); - mysql_query("UPDATE `mw_account_extend` SET `account_level` = '4' WHERE `account_id` = ".$accountid['id']." LIMIT 1 ;"); + $accountid = mysqli_fetch_assoc($accountid); + mysqli_query($realm_link, "UPDATE `mw_account_extend` SET `account_level` = '4' WHERE `account_id` = ".$accountid['id']." LIMIT 1 ;"); $return = 1; } else { // No such account, creating one, in this case pwd is needed, so checking whether it's provided... $password = sha_password($_POST['account'], $_POST['pass']); - mysql_query("INSERT INTO `account` (`username`, `sha_pass_hash`) VALUES ('".$_POST['account']."', '".$password."' );"); - $accountid = mysql_query("SELECT `id` FROM `account` WHERE `username` LIKE '".$_POST['account']."'"); - $acct = mysql_fetch_assoc($accountid); - mysql_query("INSERT INTO `mw_account_extend` (`account_id`, `account_level`) VALUES ('".$acct['id']."', '4')"); + mysqli_query($realm_link, "INSERT INTO `account` (`username`, `sha_pass_hash`) VALUES ('".$_POST['account']."', '".$password."' );"); + $accountid = mysqli_query("SELECT `id` FROM `account` WHERE `username` LIKE '".$_POST['account']."'"); + $acct = mysqli_fetch_assoc($accountid); + mysqli_query($realm_link, "INSERT INTO `mw_account_extend` (`account_id`, `account_level`) VALUES ('".$acct['id']."', '4')"); $return = 2; } ?>