diff --git a/TODO b/TODO index fa0b3501..76111ab9 100644 --- a/TODO +++ b/TODO @@ -14,10 +14,8 @@ * should the link blink? * cache: * hooks - * fieldExist and tableExist functions * Menus in templates * move highscores to twig - * $db->hasTable(table) + $db->hasColumn(table, column) * migrations: option to downgrade the database * hooks: login + logout diff --git a/config.php b/config.php index d49e743c..6f57850e 100644 --- a/config.php +++ b/config.php @@ -46,8 +46,6 @@ $config = array( // footer 'footer' => ''/*'
Your Server © 2016. All rights reserved.'*/, - 'debug_level' => 0, // 0 - disabled, 1 - show load time, 2 - show db query counter, 3 - both, 4 - memory usage, 5 - load time & memory usage, 6 - queries & memory usage, 7 - all - 'language' => 'en', // default language (currently only 'en' available) 'language_allow_change' => false, @@ -65,6 +63,7 @@ $config = array( 'database_user' => '', 'database_password' => '', 'database_name' => '', + 'database_log' => false, // should database queries be logged and displayed in the page source? They will be included at the end of the .html source of the page // multiworld system (only TFS 0.3) 'multiworld' => false, // use multiworld system? diff --git a/index.php b/index.php index ffbbca60..3854c227 100644 --- a/index.php +++ b/index.php @@ -423,15 +423,18 @@ else die('ERROR: Cannot load template.'); } +$super = superAdmin(); echo '' . "\n"; -if(($config['debug_level'] & 1) == 1) - echo ''; - -if(($config['debug_level'] & 2) == 2) - echo "\n" . ''; - -if(($config['debug_level'] & 4) == 4 && function_exists('memory_get_peak_usage')) - echo "\n" . ''; +if($super) { + echo ''; + echo PHP_EOL . ''; + if(function_exists('memory_get_peak_usage')) { + echo PHP_EOL . ''; + } +} +if($config['database_log'] && $super) { + echo PHP_EOL . ''; +} $hooks->trigger(HOOK_FINISH); ?> diff --git a/install/includes/database.php b/install/includes/database.php index 82a178c7..a7100690 100644 --- a/install/includes/database.php +++ b/install/includes/database.php @@ -5,8 +5,8 @@ require(SYSTEM . 'libs/pot/OTS.php'); $ots = POT::getInstance(); require(SYSTEM . 'database.php'); -if(tableExist('accounts')) - define('USE_ACCOUNT_NAME', fieldExist('name', 'accounts')); +if($db->hasTable('accounts')) + define('USE_ACCOUNT_NAME', $db->hasColumn('accounts', 'name')); else define('USE_ACCOUNT_NAME', false); ?> \ No newline at end of file diff --git a/install/steps/5-database.php b/install/steps/5-database.php index 4ededff0..040c1857 100644 --- a/install/steps/5-database.php +++ b/install/steps/5-database.php @@ -47,23 +47,23 @@ if(!$error) { success($locale['step_database_importing']); require(BASE . 'install/includes/database.php'); - if(!tableExist('accounts')) { + if(!$db->hasTable('accounts')) { $locale['step_database_error_table'] = str_replace('$TABLE$', 'accounts', $locale['step_database_error_table']); error($locale['step_database_error_table']); $error = true; } - else if(!tableExist('players')) { + else if(!$db->hasTable('players')) { $locale['step_database_error_table'] = str_replace('$TABLE$', 'players', $locale['step_database_error_table']); error($locale['step_database_error_table']); $error = true; } - else if(!tableExist('guilds')) { + else if(!$db->hasTable('guilds')) { $locale['step_database_error_table'] = str_replace('$TABLE$', 'guilds', $locale['step_database_error_table']); error($locale['step_database_error_table']); $error = true; } - if(tableExist(TABLE_PREFIX . 'account_actions')) { + if($db->hasTable(TABLE_PREFIX . 'account_actions')) { $locale['step_database_error_table_exist'] = str_replace('$TABLE$', TABLE_PREFIX . 'account_actions', $locale['step_database_error_table_exist']); warning($locale['step_database_error_table_exist']); } @@ -85,7 +85,7 @@ if(!$error) { } if(!$error) { - if(fieldExist('key', 'accounts')) { + if($db->hasColumn('accounts', 'key')) { if(query("ALTER TABLE `accounts` MODIFY `key` VARCHAR(64) NOT NULL DEFAULT '';")) success($locale['step_database_modifying_field'] . ' accounts.key...'); } @@ -94,75 +94,75 @@ if(!$error) { success($locale['step_database_adding_field'] . ' accounts.key...'); } - if(!fieldExist('blocked', 'accounts')) { + if(!$db->hasColumn('accounts', 'blocked')) { if(query("ALTER TABLE `accounts` ADD `blocked` TINYINT(1) NOT NULL DEFAULT FALSE COMMENT 'internal usage' AFTER `key`;")) success($locale['step_database_adding_field'] . ' accounts.blocked...'); } - if(!fieldExist('created', 'accounts')) { - if(query("ALTER TABLE `accounts` ADD `created` INT(11) NOT NULL DEFAULT 0 AFTER `" . (fieldExist('group_id', 'accounts') ? 'group_id' : 'blocked') . "`;")) + if(!$db->hasColumn('accounts', 'created')) { + if(query("ALTER TABLE `accounts` ADD `created` INT(11) NOT NULL DEFAULT 0 AFTER `" . ($db->hasColumn('accounts', 'group_id') ? 'group_id' : 'blocked') . "`;")) success($locale['step_database_adding_field'] . ' accounts.created...'); } - if(!fieldExist('rlname', 'accounts')) { + if(!$db->hasColumn('accounts', 'rlname')) { if(query("ALTER TABLE `accounts` ADD `rlname` VARCHAR(255) NOT NULL DEFAULT '' AFTER `created`;")) success($locale['step_database_adding_field'] . ' accounts.rlname...'); } - if(!fieldExist('location', 'accounts')) { + if(!$db->hasColumn('accounts', 'location')) { if(query("ALTER TABLE `accounts` ADD `location` VARCHAR(255) NOT NULL DEFAULT '' AFTER `rlname`;")) success($locale['step_database_adding_field'] . ' accounts.location...'); } - if(!fieldExist('country', 'accounts')) { + if(!$db->hasColumn('accounts', 'country')) { if(query("ALTER TABLE `accounts` ADD `country` VARCHAR(3) NOT NULL DEFAULT '' AFTER `location`;")) success($locale['step_database_adding_field'] . ' accounts.country...'); } - if(fieldExist('page_lastday', 'accounts')) { + if($db->hasColumn('accounts', 'page_lastday')) { if(query("ALTER TABLE `accounts` CHANGE `page_lastday` `web_lastlogin` INT(11) NOT NULL DEFAULT 0;")) { $tmp = str_replace('$FIELD$', 'accounts.page_lastday', $locale['step_database_changing_field']); $tmp = str_replace('$FIELD_NEW$', 'accounts.web_lastlogin', $tmp); success($tmp); } } - else if(!fieldExist('web_lastlogin', 'accounts')) { + else if(!$db->hasColumn('accounts', 'web_lastlogin')) { if(query("ALTER TABLE `accounts` ADD `web_lastlogin` INT(11) NOT NULL DEFAULT 0 AFTER `country`;")) success($locale['step_database_adding_field'] . ' accounts.web_lastlogin...'); } - if(!fieldExist('web_flags', 'accounts')) { + if(!$db->hasColumn('accounts', 'web_flags')) { if(query("ALTER TABLE `accounts` ADD `web_flags` INT(11) NOT NULL DEFAULT 0 AFTER `web_lastlogin`;")) success($locale['step_database_adding_field'] . ' accounts.web_flags...'); } - if(!fieldExist('email_hash', 'accounts')) { + if(!$db->hasColumn('accounts', 'email_hash')) { if(query("ALTER TABLE `accounts` ADD `email_hash` VARCHAR(32) NOT NULL DEFAULT '' AFTER `web_flags`;")) success($locale['step_database_adding_field'] . ' accounts.email_hash...'); } - if(!fieldExist('email_verified', 'accounts')) { + if(!$db->hasColumn('accounts', 'email_verified')) { if(query("ALTER TABLE `accounts` ADD `email_verified` TINYINT(1) NOT NULL DEFAULT 0 AFTER `email_hash`;")) success($locale['step_database_adding_field'] . ' accounts.email_verified...'); } - if(!fieldExist('email_new', 'accounts')) { + if(!$db->hasColumn('accounts', 'email_new')) { if(query("ALTER TABLE `accounts` ADD `email_new` VARCHAR(255) NOT NULL DEFAULT '' AFTER `email_hash`;")) success($locale['step_database_adding_field'] . ' accounts.email_new...'); } - if(!fieldExist('email_new_time', 'accounts')) { + if(!$db->hasColumn('accounts', 'email_new_time')) { if(query("ALTER TABLE `accounts` ADD `email_new_time` INT(11) NOT NULL DEFAULT 0 AFTER `email_new`;")) success($locale['step_database_adding_field'] . ' accounts.email_new_time...'); } - if(!fieldExist('email_code', 'accounts')) { + if(!$db->hasColumn('accounts', 'email_code')) { if(query("ALTER TABLE `accounts` ADD `email_code` VARCHAR(255) NOT NULL DEFAULT '' AFTER `email_new_time`;")) success($locale['step_database_adding_field'] . ' accounts.email_code...'); } - if(fieldExist('next_email', 'accounts')) { - if(!fieldExist('email_next', 'accounts')) { + if($db->hasColumn('accounts', 'next_email')) { + if(!$db->hasColumn('accounts', 'email_next')) { if(query("ALTER TABLE `accounts` CHANGE `next_email` `email_next` INT(11) NOT NULL DEFAULT 0;")) { $tmp = str_replace('$FIELD$', 'accounts.next_email', $locale['step_database_changing_field']); $tmp = str_replace('$FIELD_NEW$', 'accounts.email_next', $tmp); @@ -170,45 +170,45 @@ if(!$error) { } } } - else if(!fieldExist('email_next', 'accounts')) { + else if(!$db->hasColumn('accounts', 'email_next')) { if(query("ALTER TABLE `accounts` ADD `email_next` INT(11) NOT NULL DEFAULT 0 AFTER `email_code`;")) success($locale['step_database_adding_field'] . ' accounts.email_next...'); } - if(!fieldExist('premium_points', 'accounts')) { + if(!$db->hasColumn('accounts', 'premium_points')) { if(query("ALTER TABLE `accounts` ADD `premium_points` INT(11) NOT NULL DEFAULT 0 AFTER `email_next`;")) success($locale['step_database_adding_field'] . ' accounts.premium_points...'); } - if(!fieldExist('description', 'guilds')) { + if(!$db->hasColumn('guilds', 'description')) { if(query("ALTER TABLE `guilds` ADD `description` TEXT NOT NULL;")) success($locale['step_database_adding_field'] . ' guilds.description...'); } - if(fieldExist('logo_gfx_name', 'guilds')) { + if($db->hasColumn('guilds', 'logo_gfx_name')) { if(query("ALTER TABLE `guilds` CHANGE `logo_gfx_name` `logo_name` VARCHAR( 255 ) NOT NULL DEFAULT 'default.gif';")) { $tmp = str_replace('$FIELD$', 'guilds.logo_gfx_name', $locale['step_database_changing_field']); $tmp = str_replace('$FIELD_NEW$', 'guilds.logo_name', $tmp); success($tmp); } } - else if(!fieldExist('logo_name', 'guilds')) { + else if(!$db->hasColumn('guilds', 'logo_name')) { if(query("ALTER TABLE `guilds` ADD `logo_name` VARCHAR( 255 ) NOT NULL DEFAULT 'default.gif';")) success($locale['step_database_adding_field'] . ' guilds.logo_name...'); } - if(!fieldExist('created', 'players')) { + if(!$db->hasColumn('players', 'created')) { if(query("ALTER TABLE `players` ADD `created` INT(11) NOT NULL DEFAULT 0;")) success($locale['step_database_adding_field'] . ' players.created...'); } - if(!fieldExist('deleted', 'players') && !fieldExist('deletion', 'players')) { + if(!$db->hasColumn('players', 'deleted') && !$db->hasColumn('players', 'deletion')) { if(query("ALTER TABLE `players` ADD `deleted` TINYINT(1) NOT NULL DEFAULT 0;")) success($locale['step_database_adding_field'] . ' players.comment...'); } - if(fieldExist('hide_char', 'players')) { - if(!fieldExist('hidden', 'players')) { + if($db->hasColumn('players', 'hide_char')) { + if(!$db->hasColumn('players', 'hidden')) { if(query("ALTER TABLE `players` CHANGE `hide_char` `hidden` TINYINT(1) NOT NULL DEFAULT 0;")) { $tmp = str_replace('$FIELD$', 'players.hide_char', $locale['step_database_changing_field']); $tmp = str_replace('$FIELD_NEW$', 'players.hidden', $tmp); @@ -216,12 +216,12 @@ if(!$error) { } } } - else if(!fieldExist('hidden', 'players')) { + else if(!$db->hasColumn('players', 'hidden')) { if(query("ALTER TABLE `players` ADD `hidden` TINYINT(1) NOT NULL DEFAULT 0;")) success($locale['step_database_adding_field'] . ' players.hidden...'); } - if(!fieldExist('comment', 'players')) { + if(!$db->hasColumn('players', 'comment')) { if(query("ALTER TABLE `players` ADD `comment` TEXT NOT NULL;")) success($locale['step_database_adding_field'] . ' players.comment...'); } diff --git a/install/steps/7-finish.php b/install/steps/7-finish.php index 5b1c1805..89130919 100644 --- a/install/steps/7-finish.php +++ b/install/steps/7-finish.php @@ -15,7 +15,7 @@ else { $password = $_SESSION['var_password']; - $config_salt_enabled = fieldExist('salt', 'accounts'); + $config_salt_enabled = $db->hasColumn('accounts', 'salt'); if($config_salt_enabled) { $salt = generateRandomString(10, false, true, true); @@ -77,9 +77,9 @@ else { $account_used->setCustomField('web_flags', FLAG_ADMIN + FLAG_SUPER_ADMIN); $account_used->setCustomField('country', 'us'); - if(fieldExist('group_id', 'accounts')) + if($db->hasColumn('accounts', 'group_id')) $account_used->setCustomField('group_id', $groups->getHighestId()); - if(fieldExist('type', 'accounts')) + if($db->hasColumn('accounts', 'type')) $account_used->setCustomField('type', 5); if(!$player_db->isLoaded()) @@ -116,7 +116,7 @@ else { } $deleted = 'deleted'; - if(fieldExist('deletion', 'players')) + if($db->hasColumn('players', 'deletion')) $deleted = 'deletion'; $insert_into_players = "INSERT INTO `players` (`id`, `name`, `group_id`, `account_id`, `level`, `vocation`, `health`, `healthmax`, `experience`, `lookbody`, `lookfeet`, `lookhead`, `looklegs`, `looktype`, `maglevel`, `mana`, `manamax`, `manaspent`, `soul`, `town_id`, `posx`, `posy`, `posz`, `conditions`, `cap`, `sex`, `lastlogin`, `lastip`, `save`, `lastlogout`, `balance`, `$deleted`, `created`, `hidden`, `comment`) VALUES "; diff --git a/system/compat.php b/system/compat.php index 51491595..dfd987f1 100644 --- a/system/compat.php +++ b/system/compat.php @@ -60,4 +60,16 @@ function check_guild_name($name, &$errors = '') { function news_place() { return tickers(); } + +function tableExist($table) +{ + global $db; + return $db->hasTable($table); +} + +function fieldExist($field, $table) +{ + global $db; + return $db->hasColumn($table, $field); +} ?> \ No newline at end of file diff --git a/system/database.php b/system/database.php index 7427fecd..ad5e0f2f 100644 --- a/system/database.php +++ b/system/database.php @@ -76,13 +76,17 @@ defined('MYAAC') or die('Direct access not allowed!'); if(isset($config['lua']['useMD5Passwords']) && getBoolean($config['lua']['useMD5Passwords'])) $config['database_encryption'] = 'md5'; + if(!isset($config['database_log'])) { + $config['database_log'] = false; + } + try { - $ots->connect(POT::DB_MYSQL, - array( + $ots->connect(array( 'host' => $config['database_host'], 'user' => $config['database_user'], 'password' => $config['database_password'], - 'database' => $config['database_name'] + 'database' => $config['database_name'], + 'log' => $config['database_log'] ) ); } diff --git a/system/functions.php b/system/functions.php index b675ef56..0d90dbef 100644 --- a/system/functions.php +++ b/system/functions.php @@ -69,7 +69,7 @@ function getPlayerLink($name, $generate = true) if(is_numeric($name)) { - $player = $ots->createObject('Player'); + $player = new OTS_Player(); $player->load(intval($name)); if($player->isLoaded()) $name = $player->getName(); @@ -302,22 +302,6 @@ function encrypt($str) return $str; } -function tableExist($table) -{ - global $db, $config; - $query = $db->query("SELECT `TABLE_NAME` FROM `information_schema`.`tables` WHERE `TABLE_SCHEMA` = " . $db->quote($config['database_name']) . " AND `TABLE_NAME` = " . $db->quote($table) . ";"); - return $query->rowCount() > 0; -} - -function fieldExist($field, $table) -{ - global $db; - if(count($db->query("SHOW COLUMNS FROM `" . $table . "` LIKE '" . $field . "'")->fetchAll())) - return true; - - return false; -} - //delete player with name function delete_player($name) { @@ -376,9 +360,9 @@ function delete_guild($id) global $db, $ots; foreach($rank_list as $rank_in_guild) { - if(tableExist('guild_members')) + if($db->hasTable('guild_members')) $players_with_rank = $db->query('SELECT `players`.`id` as `id`, `guild_members`.`rank_id` as `rank_id` FROM `players`, `guild_members` WHERE `guild_members`.`rank_id` = ' . $rank_in_guild->getId() . ' AND `players`.`id` = `guild_members`.`player_id` ORDER BY `name`;'); - else if(tableExist('guild_membership')) + else if($db->hasTable('guild_membership')) $players_with_rank = $db->query('SELECT `players`.`id` as `id`, `guild_membership`.`rank_id` as `rank_id` FROM `players`, `guild_membership` WHERE `guild_membership`.`rank_id` = ' . $rank_in_guild->getId() . ' AND `players`.`id` = `guild_membership`.`player_id` ORDER BY `name`;'); else $players_with_rank = $db->query('SELECT `id`, `rank_id` FROM `players` WHERE `rank_id` = ' . $rank_in_guild->getId() . ' AND `deleted` = 0;'); @@ -386,7 +370,7 @@ function delete_guild($id) $players_with_rank_number = $players_with_rank->rowCount(); if($players_with_rank_number > 0) { foreach($players_with_rank as $result) { - $player = $ots->createObject('Player'); + $player = new OTS_Player(); $player->load($result['id']); if(!$player->isLoaded()) continue; @@ -563,7 +547,7 @@ function getCreatureName($killer, $showStatus = false, $extendedInfo = false) if(is_numeric($killer)) { - $player = $ots->createObject('Player'); + $player = new OTS_Player(); $player->load($killer); if($player->isLoaded()) { @@ -971,10 +955,10 @@ function getTopPlayers($limit = 5) { if($fetch_from_db) { $deleted = 'deleted'; - if(fieldExist('deletion', 'players')) + if($db->hasColumn('players', 'deletion')) $deleted = 'deletion'; - $is_tfs10 = tableExist('players_online'); + $is_tfs10 = $db->hasTable('players_online'); $players = $db->query('SELECT `id`, `name`, `level`, `experience`' . ($is_tfs10 ? '' : ', `online`') . ' FROM `players` WHERE `group_id` < ' . $config['highscores_groups_hidden'] . ' AND `id` NOT IN (' . implode(', ', $config['highscores_ids_hidden']) . ') AND `' . $deleted . '` = 0 AND `account_id` != 1 ORDER BY `experience` DESC LIMIT ' . (int)$limit)->fetchAll(); if($is_tfs10) { diff --git a/system/init.php b/system/init.php index b92e1611..23e4276c 100644 --- a/system/init.php +++ b/system/init.php @@ -164,7 +164,7 @@ require_once(SYSTEM . 'libs/pot/OTS.php'); $ots = POT::getInstance(); require_once(SYSTEM . 'database.php'); -define('USE_ACCOUNT_NAME', fieldExist('name', 'accounts')); +define('USE_ACCOUNT_NAME', $db->hasColumn('accounts', 'name')); // load vocation names $tmp = ''; if($cache->enabled() && $cache->fetch('vocations', $tmp)) { diff --git a/system/libs/pot/OTS.php b/system/libs/pot/OTS.php index 9fb1552a..cd42b07b 100644 --- a/system/libs/pot/OTS.php +++ b/system/libs/pot/OTS.php @@ -29,50 +29,6 @@ */ class POT { -/** - * MySQL driver. - */ - const DB_MYSQL = 1; -/** - * SQLite driver. - */ - const DB_SQLITE = 2; -/** - * PostgreSQL driver. - * - * @version 0.0.4 - * @since 0.0.4 - */ - const DB_PGSQL = 3; -/** - * ODBC driver. - * - * @version 0.0.4 - * @since 0.0.4 - */ - const DB_ODBC = 4; - -/** - * @deprecated 0.0.5 Vocations are now loaded dynamicly from vocations.xml file. - */ - const VOCATION_NONE = 0; -/** - * @deprecated 0.0.5 Vocations are now loaded dynamicly from vocations.xml file. - */ - const VOCATION_SORCERER = 1; -/** - * @deprecated 0.0.5 Vocations are now loaded dynamicly from vocations.xml file. - */ - const VOCATION_DRUID = 2; -/** - * @deprecated 0.0.5 Vocations are now loaded dynamicly from vocations.xml file. - */ - const VOCATION_PALADIN = 3; -/** - * @deprecated 0.0.5 Vocations are now loaded dynamicly from vocations.xml file. - */ - const VOCATION_KNIGHT = 4; - /** * North. */ @@ -401,15 +357,13 @@ class POT *

* * @version 0.1.3 - * @param int|null $driver Database driver type. * @param array $params Connection info. - * @throws E_OTS_Generic When driver is not supported or not supported. * @throws LogicException When PDO extension is not loaded. * @throws PDOException On PDO operation error. * @example examples/quickstart.php quickstart.php * @tutorial POT/Basics.pkg#basics.database */ - public function connect($driver, $params) + public function connect($params) { // checks if PDO extension is loaded if( !extension_loaded('PDO') ) @@ -417,47 +371,7 @@ class POT throw new LogicException(); } - // $params['driver'] option instead of $driver - if( !isset($driver) ) - { - if( isset($params['driver']) ) - { - $driver = $params['driver']; - } - else - { - throw new E_OTS_Generic(E_OTS_Generic::CONNECT_NO_DRIVER); - } - } - unset($params['driver']); - - // switch() structure provides us further flexibility - switch($driver) - { - // MySQL database - case self::DB_MYSQL: - $this->db = new OTS_DB_MySQL($params); - break; - - // SQLite database - case self::DB_SQLITE: - $this->db = new OTS_DB_SQLite($params); - break; - - // SQLite database - case self::DB_PGSQL: - $this->db = new OTS_DB_PostgreSQL($params); - break; - - // SQLite database - case self::DB_ODBC: - $this->db = new OTS_DB_ODBC($params); - break; - - // unsupported driver - default: - throw new E_OTS_Generic(E_OTS_Generic::CONNECT_INVALID_DRIVER); - } + $this->db = new OTS_DB_MySQL($params); $this->db->setAttribute(PDO_ATTR_ERRMODE, PDO_ERRMODE_EXCEPTION); // $this->db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); diff --git a/system/libs/pot/OTS_Account.php b/system/libs/pot/OTS_Account.php index 29b1b9b4..22b63b2c 100644 --- a/system/libs/pot/OTS_Account.php +++ b/system/libs/pot/OTS_Account.php @@ -41,6 +41,7 @@ class OTS_Account extends OTS_Row_DAO implements IteratorAggregate, Countable */ private $data = array('email' => '', 'blocked' => false, 'rlname' => '','location' => '','web_flags' => 0, 'lastday' => 0, 'premdays' => 0, 'created' => 0); + public static $cache = array(); /** * Creates new account. * @@ -167,10 +168,16 @@ class OTS_Account extends OTS_Row_DAO implements IteratorAggregate, Countable * @param int $id Account number. * @throws PDOException On PDO operation error. */ - public function load($id) + public function load($id, $fresh = false) { + if(!$fresh && isset(self::$cache[$id])) { + $this->data = self::$cache[$id]; + return; + } + // SELECT query on database - $this->data = $this->db->query('SELECT `id`, ' . (fieldExist('name', 'accounts') ? '`name`,' : '') . '`password`, `email`, ' . $this->db->fieldName('blocked') . ', ' . $this->db->fieldName('rlname') . ', ' . $this->db->fieldName('location') . ', ' . $this->db->fieldName('web_flags') . ', ' . (fieldExist('premdays', 'accounts') ? $this->db->fieldName('premdays') . ',' : '') . (fieldExist('lastday', 'accounts') ? $this->db->fieldName('lastday') . ',' : (fieldExist('premend', 'accounts') ? $this->db->fieldName('premend') . ',' : '')) . $this->db->fieldName('created') . ' FROM ' . $this->db->tableName('accounts') . ' WHERE ' . $this->db->fieldName('id') . ' = ' . (int) $id)->fetch(); + $this->data = $this->db->query('SELECT `id`, ' . ($this->db->hasColumn('accounts', 'name') ? '`name`,' : '') . '`password`, `email`, `blocked`, `rlname`, `location`, `country`, `web_flags`, ' . ($this->db->hasColumn('accounts', 'premdays') ? '`premdays`, ' : '') . ($this->db->hasColumn('accounts', 'lastday') ? '`lastday`, ' : ($this->db->hasColumn('accounts', 'premend') ? '`premend`,' : '')) . '`created` FROM `accounts` WHERE `id` = ' . (int) $id)->fetch(); + self::$cache[$id] = $this->data; } /** @@ -188,7 +195,7 @@ class OTS_Account extends OTS_Row_DAO implements IteratorAggregate, Countable public function find($name) { // finds player's ID - $id = $this->db->query('SELECT ' . $this->db->fieldName('id') . ' FROM ' . $this->db->tableName('accounts') . ' WHERE ' . $this->db->fieldName('name') . ' = ' . $this->db->quote($name) )->fetch(); + $id = $this->db->query('SELECT `id` FROM `accounts` WHERE `name` = ' . $this->db->quote($name) )->fetch(); // if anything was found if( isset($id['id']) ) @@ -208,7 +215,7 @@ class OTS_Account extends OTS_Row_DAO implements IteratorAggregate, Countable public function findByEMail($email) { // finds player's ID - $id = $this->db->query('SELECT ' . $this->db->fieldName('id') . ' FROM ' . $this->db->tableName('accounts') . ' WHERE ' . $this->db->fieldName('email') . ' = ' . $this->db->quote($email) )->fetch(); + $id = $this->db->query('SELECT `id` FROM `accounts` WHERE `email` = ' . $this->db->quote($email) )->fetch(); // if anything was found if( isset($id['id']) ) @@ -250,7 +257,7 @@ class OTS_Account extends OTS_Row_DAO implements IteratorAggregate, Countable } $field = 'lastday'; - if(fieldExist('premend', 'accounts')) { // othire + if($this->db->hasColumn('accounts', 'premend')) { // othire $field = 'premend'; if(!isset($this->data['premend'])) { $this->data['premend'] = 0; @@ -258,7 +265,7 @@ class OTS_Account extends OTS_Row_DAO implements IteratorAggregate, Countable } // UPDATE query on database - $this->db->query('UPDATE `accounts` SET ' . (fieldExist('name', 'accounts') ? '`name` = ' . $this->db->quote($this->data['name']) . ',' : '') . '`password` = ' . $this->db->quote($this->data['password']) . ', `email` = ' . $this->db->quote($this->data['email']) . ', `blocked` = ' . (int) $this->data['blocked'] . ', `rlname` = ' . $this->db->quote($this->data['rlname']) . ', `location` = ' . $this->db->quote($this->data['location']) . ', `web_flags` = ' . (int) $this->data['web_flags'] . ', ' . (fieldExist('premdays', 'accounts') ? '`premdays` = ' . (int) $this->data['premdays'] . ',' : '') . '`' . $field . '` = ' . (int) $this->data[$field] . ' WHERE `id` = ' . $this->data['id']); + $this->db->query('UPDATE `accounts` SET ' . ($this->db->hasColumn('accounts', 'name') ? '`name` = ' . $this->db->quote($this->data['name']) . ',' : '') . '`password` = ' . $this->db->quote($this->data['password']) . ', `email` = ' . $this->db->quote($this->data['email']) . ', `blocked` = ' . (int) $this->data['blocked'] . ', `rlname` = ' . $this->db->quote($this->data['rlname']) . ', `location` = ' . $this->db->quote($this->data['location']) . ', `web_flags` = ' . (int) $this->data['web_flags'] . ', ' . ($this->db->hasColumn('accounts', 'premdays') ? '`premdays` = ' . (int) $this->data['premdays'] . ',' : '') . '`' . $field . '` = ' . (int) $this->data[$field] . ' WHERE `id` = ' . $this->data['id']); } /** @@ -302,6 +309,16 @@ class OTS_Account extends OTS_Row_DAO implements IteratorAggregate, Countable return $this->data['location']; } + public function getCountry() + { + if( !isset($this->data['country']) ) + { + throw new E_OTS_NotLoaded(); + } + + return $this->data['country']; + } + public function getWebFlags() { if( !isset($this->data['web_flags']) ) @@ -375,34 +392,6 @@ class OTS_Account extends OTS_Row_DAO implements IteratorAggregate, Countable return $this->data['created']; } -/** - * @version 0.1.0 - * @since 0.0.4 - * @return OTS_Group Group of which current account is member (currently random group). - * @throws E_OTS_NotLoaded If account is not loaded. - * @deprecated 0.0.6 There is no more group_id field in database. - */ - public function getGroup() - { - if( !isset($this->data['id']) ) - { - throw new E_OTS_NotLoaded(); - } - - // loads default group - $groups = new OTS_Groups_List(); - $groups->rewind(); - return $groups->current(); - } - -/** - * @version 0.0.6 - * @param OTS_Group $group Group to be a member. - * @deprecated 0.0.6 There is no more group_id field in database. - */ - public function setGroup(OTS_Group $group) - { - } /** * Name. @@ -772,13 +761,13 @@ class OTS_Account extends OTS_Row_DAO implements IteratorAggregate, Countable throw new E_OTS_NotLoaded(); } - if(tableExist('account_bans')) { + if($this->db->hasTable('account_bans')) { $ban = $this->db->query('SELECT `expires_at` FROM `account_bans` WHERE `account_id` = ' . $this->data['id'] . ' AND (`expires_at` > ' . time() .' OR `expires_at` = -1) ORDER BY `expires_at` DESC')->fetch(); $this->data['banned'] = isset($ban['expires_at']); $this->data['banned_time'] = $ban['expires_at']; } - else if(tableExist('bans')) { - if(fieldExist('active', 'bans')) { + else if($this->db->hasTable('bans')) { + if($this->db->hasColumn('bans', 'active')) { $ban = $this->db->query('SELECT `active`, `expires` FROM `bans` WHERE (`type` = 3 OR `type` = 5) AND `active` = 1 AND `value` = ' . $this->data['id'] . ' AND (`expires` > ' . time() .' OR `expires` = -1) ORDER BY `expires` DESC')->fetch(); $this->data['banned'] = $ban['active']; $this->data['banned_time'] = $ban['expires']; @@ -830,20 +819,28 @@ class OTS_Account extends OTS_Row_DAO implements IteratorAggregate, Countable public function getGroupId() { - global $db;; - if(fieldExist('group_id', 'accounts')) { + if(isset($this->data['group_id'])) { + return $this->data['group_id']; + } + + global $db; + if($db->hasColumn('accounts', 'group_id')) { $query = $this->db->query('SELECT `group_id` FROM `accounts` WHERE `id` = ' . (int) $this->getId())->fetch(); // if anything was found - if(isset($query['group_id'])) + if(isset($query['group_id'])) { + $this->data['group_id'] = $query['group_id']; return $query['group_id']; + } } $query = $this->db->query('SELECT `group_id` FROM `players` WHERE `account_id` = ' . (int) $this->getId() . ' ORDER BY `group_id` DESC LIMIT 1'); if($query->rowCount() == 1) { $query = $query->fetch(); + $this->data['group_id'] = $query['group_id']; return $query['group_id']; } + return 0; } diff --git a/system/libs/pot/OTS_Base_DB.php b/system/libs/pot/OTS_Base_DB.php index d5d6cd98..8cb16549 100644 --- a/system/libs/pot/OTS_Base_DB.php +++ b/system/libs/pot/OTS_Base_DB.php @@ -37,6 +37,9 @@ abstract class OTS_Base_DB extends PDO implements IOTS_DB */ private $queries = 0; + protected $logged = false; + private $log = ''; + /** * Query-quoted field name. * @@ -96,6 +99,10 @@ abstract class OTS_Base_DB extends PDO implements IOTS_DB public function query($query) { + if($this->logged) { + $this->log .= $query . PHP_EOL; + } + $this->queries++; //echo $query . PHP_EOL; return parent::query($query); @@ -235,6 +242,10 @@ abstract class OTS_Base_DB extends PDO implements IOTS_DB public function queries() { return $this->queries; } + + public function getLog() { + return $this->log; + } } /**#@-*/ diff --git a/system/libs/pot/OTS_DB_MySQL.php b/system/libs/pot/OTS_DB_MySQL.php index e21bfc6b..9e584e6a 100644 --- a/system/libs/pot/OTS_DB_MySQL.php +++ b/system/libs/pot/OTS_DB_MySQL.php @@ -24,6 +24,8 @@ */ class OTS_DB_MySQL extends OTS_Base_DB { + private $has_table_cache = array(); + private $has_column_cache = array(); /** * Creates database connection. * @@ -92,9 +94,48 @@ class OTS_DB_MySQL extends OTS_Base_DB $this->prefix = $params['prefix']; } + if( isset($params['log']) ) + { + $this->logged = true; + } + + global $cache, $config; + if($cache->enabled()) { + $tmp = null; + $need_revalidation = true; + if($cache->fetch('database_checksum', $tmp) && $tmp) { + $tmp = unserialize($tmp); + if(sha1($config['database_host'] . '.' . $config['database_name']) == $tmp) { + $need_revalidation = false; + } + } + + if(!$need_revalidation) { + $tmp = null; + if($cache->fetch('database_tables', $tmp) && $tmp) { + $this->has_table_cache = unserialize($tmp); + } + + $tmp = null; + if($cache->fetch('database_columns', $tmp) && $tmp) { + $this->has_column_cache = unserialize($tmp); + } + } + } + parent::__construct('mysql:' . implode(';', $dns), $user, $password); } + public function __destruct() + { + global $cache, $config; + if($cache->enabled()) { + $cache->set('database_tables', serialize($this->has_table_cache)); + $cache->set('database_columns', serialize($this->has_column_cache)); + $cache->set('database_checksum', serialize(sha1($config['database_host'] . '.' . $config['database_name']))); + } + } + /** * Query-quoted field name. * @@ -133,6 +174,23 @@ class OTS_DB_MySQL extends OTS_Base_DB return $sql; } + + public function hasTable($name) { + if(isset($this->has_table_cache[$name])) { + return $this->has_table_cache[$name]; + } + + global $config; + return ($this->has_table_cache[$name] = $this->query("SELECT `TABLE_NAME` FROM `information_schema`.`tables` WHERE `TABLE_SCHEMA` = " . $this->quote($config['database_name']) . " AND `TABLE_NAME` = " . $this->quote($name) . " LIMIT 1;")->rowCount() > 0); + } + + public function hasColumn($table, $column) { + if(isset($this->has_column_cache[$table . '.' . $column])) { + return $this->has_column_cache[$table . '.' . $column]; + } + + return ($this->has_column_cache[$table . '.' . $column] = count($this->query("SHOW COLUMNS FROM `" . $table . "` LIKE '" . $column . "'")->fetchAll()) > 0); + } } /**#@-*/ diff --git a/system/libs/pot/OTS_Group.php b/system/libs/pot/OTS_Group.php index bca4c793..a7c3bbe1 100644 --- a/system/libs/pot/OTS_Group.php +++ b/system/libs/pot/OTS_Group.php @@ -490,7 +490,7 @@ class OTS_Group extends OTS_Row_DAO implements IteratorAggregate, Countable // creates filter $filter = new OTS_SQLFilter(); $filter->compareField('group_id', (int) $this->data['id']); - if(fieldExist('deletion', 'players')) + if($this->db->hasColumn('players', 'deletion')) $filter->compareField('deletion', 0); else $filter->compareField('deleted', 0); diff --git a/system/libs/pot/OTS_Groups_List.php b/system/libs/pot/OTS_Groups_List.php index b11d1abd..e75bb75b 100644 --- a/system/libs/pot/OTS_Groups_List.php +++ b/system/libs/pot/OTS_Groups_List.php @@ -31,9 +31,8 @@ class OTS_Groups_List implements IteratorAggregate, Countable */ public function __construct($file = '') { - if(tableExist('groups')) { // read groups from database - global $db; - + global $db; + if($db->hasTable('groups')) { // read groups from database foreach($db->query('SELECT `id`, `name`, `access` FROM `groups`;') as $group) { $info = array(); diff --git a/system/libs/pot/OTS_Guild.php b/system/libs/pot/OTS_Guild.php index 8de2d818..549c78bf 100644 --- a/system/libs/pot/OTS_Guild.php +++ b/system/libs/pot/OTS_Guild.php @@ -122,13 +122,13 @@ class OTS_Guild extends OTS_Row_DAO implements IteratorAggregate, Countable public function load($id) { $ownerid = 'ownerid'; - if(fieldExist('owner_id', 'guilds')) + if($this->db->hasColumn('guilds', 'owner_id')) $ownerid = 'owner_id'; $creationdata = 'creationdata'; - if(fieldExist('creationdate', 'guilds')) + if($this->db->hasColumn('guilds', 'creationdate')) $creationdata = 'creationdate'; - else if(fieldExist('creation_time', 'guilds')) + else if($this->db->hasColumn('guilds', 'creation_time')) $creationdata = 'creation_time'; // SELECT query on database @@ -177,13 +177,13 @@ class OTS_Guild extends OTS_Row_DAO implements IteratorAggregate, Countable public function save() { $ownerid = 'ownerid'; - if(fieldExist('owner_id', 'guilds')) + if($this->db->hasColumn('guilds', 'owner_id')) $ownerid = 'owner_id'; $creationdata = 'creationdata'; - if(fieldExist('creationdate', 'guilds')) + if($this->db->hasColumn('guilds', 'creationdate')) $creationdata = 'creationdate'; - else if(fieldExist('creation_time', 'guilds')) + else if($this->db->hasColumn('guilds', 'creation_time')) $creationdata = 'creation_time'; // updates existing guild diff --git a/system/libs/pot/OTS_GuildRank.php b/system/libs/pot/OTS_GuildRank.php index 75339639..9f68d836 100644 --- a/system/libs/pot/OTS_GuildRank.php +++ b/system/libs/pot/OTS_GuildRank.php @@ -344,7 +344,7 @@ class OTS_GuildRank extends OTS_Row_DAO implements IteratorAggregate, Countable } // creates filter - if(fieldExist('rank_id', 'players')) { + if($this->db->hasColumn('players', 'rank_id')) { $filter = new OTS_SQLFilter(); $filter->compareField('rank_id', (int) $this->data['id']); } diff --git a/system/libs/pot/OTS_Player.php b/system/libs/pot/OTS_Player.php index 6580e96d..d01f7e69 100644 --- a/system/libs/pot/OTS_Player.php +++ b/system/libs/pot/OTS_Player.php @@ -129,14 +129,14 @@ class OTS_Player extends OTS_Row_DAO * @param int $id Player's ID. * @throws PDOException On PDO operation error. */ - public function load($id) + public function load($id, $fields = null, $load_skills = true) { global $__load; if(!isset($__load['loss_experience'])) { $loss = ''; - if(fieldExist('loss_experience', 'players')) { + if($this->db->hasColumn('players', 'loss_experience')) { $loss = ', `loss_experience`, `loss_mana`, `loss_skills`'; } @@ -146,7 +146,7 @@ class OTS_Player extends OTS_Row_DAO if(!isset($__load['loss_items'])) { $loss_items = ''; - if(fieldExist('loss_items', 'players')) { + if($this->db->hasColumn('players', 'loss_items')) { $loss_items = ', `loss_items`, `loss_containers`'; } @@ -156,7 +156,7 @@ class OTS_Player extends OTS_Row_DAO if(!isset($__load['guild_info'])) { $guild_info = ''; - if(!tableExist('guild_members') && fieldExist('guildnick', 'players')) { + if(!$this->db->hasTable('guild_members') && $this->db->hasColumn('players', 'guildnick')) { $guild_info = ', `guildnick`, `rank_id`'; } @@ -166,7 +166,7 @@ class OTS_Player extends OTS_Row_DAO if(!isset($__load['skull_type'])) { $skull_type = 'skull'; - if(fieldExist('skull_type', 'players')) { + if($this->db->hasColumn('players', 'skull_type')) { $skull_type = 'skull_type'; } @@ -176,7 +176,7 @@ class OTS_Player extends OTS_Row_DAO if(!isset($__load['skull_time'])) { $skull_time = 'skulltime'; - if(fieldExist('skull_time', 'players')) { + if($this->db->hasColumn('players', 'skull_time')) { $skull_time = 'skull_time'; } @@ -184,31 +184,56 @@ class OTS_Player extends OTS_Row_DAO } if(!isset($__load['blessings'])) { - $__load['blessings'] = fieldExist('blessings', 'players'); + $__load['blessings'] = $this->db->hasColumn('players', 'blessings'); } if(!isset($__load['direction'])) { - $__load['direction'] = fieldExist('direction', 'players'); + $__load['direction'] = $this->db->hasColumn('players', 'direction'); } if(!isset($__load['stamina'])) { - $__load['stamina'] = fieldExist('stamina', 'players'); + $__load['stamina'] = $this->db->hasColumn('players', 'stamina'); } if(!isset($__load['world_id'])) { - $__load['world_id'] = fieldExist('world_id', 'players'); + $__load['world_id'] = $this->db->hasColumn('players', 'world_id'); } if(!isset($__load['online'])) { - $__load['online'] = fieldExist('online', 'players'); + $__load['online'] = $this->db->hasColumn('players', 'online'); } if(!isset($__load['deletion'])) { - $__load['deletion'] = fieldExist('deletion', 'players'); + $__load['deletion'] = $this->db->hasColumn('players', 'deletion'); } if(!isset($__load['promotion'])) { - $__load['promotion'] = fieldExist('promotion', 'players'); + $__load['promotion'] = $this->db->hasColumn('players', 'promotion'); } if(!isset($__load['marriage'])) { - $__load['marriage'] = fieldExist('marriage', 'players'); + $__load['marriage'] = $this->db->hasColumn('players', 'marriage'); + } + + global $db; + if(isset($fields)) { // load only what we wish + if(in_array('promotion', $fields)) { + if(!$this->db->hasColumn('players', 'promotion')) { + unset($fields[array_search('promotion')]); + } + } + + if(in_array('deleted', $fields)) { + if($this->db->hasColumn('players', 'deletion')) { + unset($fields[array_search('deleted')]); + $fields[] = 'deletion'; + } + } + + if(in_array('online', $fields)) { + if(!$this->db->hasColumn('players', 'online')) { + unset($fields[array_search('online')]); + } + } + $this->data = $this->db->query('SELECT ' . implode(', ', $fields) . ' FROM `players` WHERE `id` = ' . (int)$id)->fetch(); + } + else { + // SELECT query on database + $this->data = $this->db->query('SELECT `id`, `name`, `account_id`, `group_id`, `sex`, `vocation`, `experience`, `level`, `maglevel`, `health`, `healthmax`, `mana`, `manamax`, `manaspent`, `soul`, `lookbody`, `lookfeet`, `lookhead`, `looklegs`, `looktype`' . ($this->db->hasColumn('players', 'lookaddons') ? ', `lookaddons`' : '') . ', `posx`, `posy`, `posz`, `cap`, `lastlogin`, `lastlogout`, `lastip`, `save`, `conditions`, `' . $__load['skull_time'] . '` as `skulltime`, `' . $__load['skull_type'] . '` as `skull`' . $__load['guild_info'] . ', `town_id`' . $__load['loss_experience'] . $__load['loss_items'] . ', `balance`' . ($__load['blessings'] ? ', `blessings`' : '') . ($__load['direction'] ? ', `direction`' : '') . ($__load['stamina'] ? ', `stamina`' : '') . ($__load['world_id'] ? ', `world_id`' : '') . ($__load['online'] ? ', `online`' : '') . ', `' . ($__load['deletion'] ? 'deletion' : 'deleted') . '`' . ($__load['promotion'] ? ', `promotion`' : '') . ($__load['marriage'] ? ', `marriage`' : '') . ', `comment`, `created`, `hidden` FROM `players` WHERE `id` = ' . (int)$id)->fetch(); } - // SELECT query on database - $this->data = $this->db->query('SELECT `id`, `name`, `account_id`, `group_id`, `sex`, `vocation`, `experience`, `level`, `maglevel`, `health`, `healthmax`, `mana`, `manamax`, `manaspent`, `soul`, `lookbody`, `lookfeet`, `lookhead`, `looklegs`, `looktype`' . (fieldExist('lookaddons', 'players') ? ', `lookaddons`' : '') . ', `posx`, `posy`, `posz`, `cap`, `lastlogin`, `lastlogout`, `lastip`, `save`, `conditions`, `' . $__load['skull_time'] . '` as `skulltime`, `' . $__load['skull_type'] . '` as `skull`' . $__load['guild_info'] . ', `town_id`' . $__load['loss_experience'] . $__load['loss_items'] . ', `balance`' . ($__load['blessings'] ? ', `blessings`' : '') . ($__load['direction'] ? ', `direction`' : '') . ($__load['stamina'] ? ', `stamina`' : '') . ($__load['world_id'] ? ', `world_id`' : '') . ($__load['online'] ? ', `online`' : '') . ', `' . ($__load['deletion'] ? 'deletion' : 'deleted') . '`' . ($__load['promotion'] ? ', `promotion`' : '') . ($__load['marriage'] ? ', `marriage`' : '') . ', `comment`, `created`, `hidden` FROM `players` WHERE `id` = ' . (int)$id)->fetch(); if(!isset($this->data['guildnick']) || $this->data['guildnick']) $this->data['guildnick'] = ''; @@ -222,9 +247,9 @@ class OTS_Player extends OTS_Row_DAO $this->data['vocation'] += ($this->data['promotion'] * $config['vocations_amount']); } // loads skills - if( $this->isLoaded() ) + if( $this->isLoaded() && $load_skills) { - if(fieldExist('skill_fist', 'players')) { + if($this->db->hasColumn('players', 'skill_fist')) { $skill_ids = array( 'skill_fist' => POT::SKILL_FIST, @@ -252,7 +277,7 @@ class OTS_Player extends OTS_Row_DAO $this->skills[$id] = array('value' => $skills[$name], 'tries' => $skills[$name . '_tries']); } } - else if(tableExist('player_skills')) { + else if($this->db->hasTable('player_skills')) { foreach( $this->db->query('SELECT ' . $this->db->fieldName('skillid') . ', ' . $this->db->fieldName('value') . ', ' . $this->db->fieldName('count') . ' FROM ' . $this->db->tableName('player_skills') . ' WHERE ' . $this->db->fieldName('player_id') . ' = ' . $this->data['id'])->fetchAll() as $skill) { $this->skills[ $skill['skillid'] ] = array('value' => $skill['value'], 'tries' => $skill['count']); @@ -272,7 +297,7 @@ class OTS_Player extends OTS_Row_DAO public function find($name) { // finds player's ID - $id = $this->db->query('SELECT ' . $this->db->fieldName('id') . ' FROM ' . $this->db->tableName('players') . ' WHERE ' . $this->db->fieldName('name') . ' = ' . $this->db->quote($name) )->fetch(); + $id = $this->db->query('SELECT `id` FROM `players` WHERE `name` = ' . $this->db->quote($name) )->fetch(); // if anything was found if( isset($id['id']) ) @@ -304,12 +329,12 @@ class OTS_Player extends OTS_Row_DAO public function save() { $skull_type = 'skull'; - if(fieldExist('skull_type', 'players')) { + if($this->db->hasColumn('players', 'skull_type')) { $skull_type = 'skull_type'; } $skull_time = 'skulltime'; - if(fieldExist('skull_time', 'players')) { + if($this->db->hasColumn('players', 'skull_time')) { $skull_time = 'skull_time'; } @@ -350,37 +375,37 @@ class OTS_Player extends OTS_Row_DAO if( isset($this->data['id']) ) { $loss = ''; - if(fieldExist('loss_experience', 'players')) { + if($this->db->hasColumn('players', 'loss_experience')) { $loss = ', `loss_experience` = ' . $this->data['loss_experience'] . ', `loss_mana` = ' . $this->data['loss_mana'] . ', `loss_skills` = ' . $this->data['loss_skills']; } $loss_items = ''; - if(fieldExist('loss_items', 'players')) { + if($this->db->hasColumn('players', 'loss_items')) { $loss_items = ', `loss_items` = ' . $this->data['loss_items'] . ', `loss_containers` = ' . $this->data['loss_containers']; } $guild_info = ''; - if(!tableExist('guild_members') && fieldExist('guildnick', 'players')) { + if(!$this->db->hasTable('guild_members') && $this->db->hasColumn('players', 'guildnick')) { $guild_info = ', `guildnick` = ' . $this->db->quote($this->data['guildnick']) . ', ' . $this->db->fieldName('rank_id') . ' = ' . $this->data['rank_id']; } $direction = ''; - if(fieldExist('direction', 'players')) { + if($this->db->hasColumn('players', 'direction')) { $direction = ', `direction` = ' . $this->db->quote($this->data['direction']); } $blessings = ''; - if(fieldExist('blessings', 'players')) { + if($this->db->hasColumn('players', 'blessings')) { $blessings = ', `blessings` = ' . $this->db->quote($this->data['blessings']); } $stamina = ''; - if(fieldExist('stamina', 'players')) { + if($this->db->hasColumn('players', 'stamina')) { $stamina = ', `stamina` = ' . $this->db->quote($this->data['stamina']); } $lookaddons = ''; - if(fieldExist('lookaddons', 'players')) { + if($this->db->hasColumn('players', 'lookaddons')) { $lookaddons = ', `lookaddons` = ' . $this->db->quote($this->data['lookaddons']); } @@ -392,56 +417,56 @@ class OTS_Player extends OTS_Row_DAO { $loss = ''; $loss_data = ''; - if(fieldExist('loss_experience', 'players')) { + if($this->db->hasColumn('players', 'loss_experience')) { $loss = ', `loss_experience`, `loss_mana`, `loss_skills`'; $loss_data = ', ' . $this->data['loss_experience'] . ', ' . $this->data['loss_mana'] . ', ' . $this->data['loss_skills']; } $loss_items = ''; $loss_items_data = ''; - if(fieldExist('loss_items', 'players')) { + if($this->db->hasColumn('players', 'loss_items')) { $loss_items = ', `loss_items`, `loss_containers`'; $loss_items_data = ', ' . $this->data['loss_items'] . ', ' . $this->data['loss_containers']; } $guild_info = ''; $guild_info_data = ''; - if(!tableExist('guild_members') && fieldExist('guildnick', 'players')) { + if(!$this->db->hasTable('guild_members') && $this->db->hasColumn('players', 'guildnick')) { $guild_info = ', `guildnick`, `rank_id`'; $guild_info_data = ', ' . $this->db->quote($this->data['guildnick']) . ', ' . $this->data['rank_id']; } $promotion = ''; $promotion_data = ''; - if(fieldExist('promotion', 'players')) { + if($this->db->hasColumn('players', 'promotion')) { $promotion = ', `promotion`'; $promotion_data = ', ' . $this->data['promotion']; } $direction = ''; $direction_data = ''; - if(fieldExist('direction', 'players')) { + if($this->db->hasColumn('players', 'direction')) { $direction = ', `direction`'; $direction_data = ', ' . $this->data['direction']; } $blessings = ''; $blessings_data = ''; - if(fieldExist('blessings', 'players')) { + if($this->db->hasColumn('players', 'blessings')) { $blessings = ', `blessings`'; $blessings_data = ', ' . $this->data['blessings']; } $stamina = ''; $stamina_data = ''; - if(fieldExist('stamina', 'players')) { + if($this->db->hasColumn('players', 'stamina')) { $stamina = ', `stamina`'; $stamina_data = ', ' . $this->data['stamina']; } $lookaddons = ''; $lookaddons_data = ''; - if(fieldExist('lookaddons', 'players')) { + if($this->db->hasColumn('players', 'lookaddons')) { $lookaddons = ', `lookaddons`'; $lookaddons_data = ', ' . $this->data['lookaddons']; } @@ -453,7 +478,7 @@ class OTS_Player extends OTS_Row_DAO } // updates skills - doesn't matter if we have just created character - trigger inserts new skills - if(fieldExist('skill_fist', 'players')) { // tfs 1.0 + if($this->db->hasColumn('players', 'skill_fist')) { // tfs 1.0 $set = ''; $skill_ids = array( @@ -477,7 +502,7 @@ class OTS_Player extends OTS_Row_DAO $skills = $this->db->query('UPDATE `players` SET ' . $set . ' WHERE `id` = ' . $this->data['id']); } - else if(tableExist('player_skills')) { + else if($this->db->hasTable('player_skills')) { foreach($this->skills as $id => $skill) { $this->db->query('UPDATE ' . $this->db->tableName('player_skills') . ' SET ' . $this->db->fieldName('value') . ' = ' . $skill['value'] . ', ' . $this->db->fieldName('count') . ' = ' . $skill['tries'] . ' WHERE ' . $this->db->fieldName('player_id') . ' = ' . $this->data['id'] . ' AND ' . $this->db->fieldName('skillid') . ' = ' . $id); @@ -513,7 +538,7 @@ class OTS_Player extends OTS_Row_DAO throw new E_OTS_NotLoaded(); } - return $this->data['hidden']; + return $this->data['hidden'] == 1; } public function setHidden($hidden) @@ -523,7 +548,7 @@ class OTS_Player extends OTS_Row_DAO public function getMarriage() { - if(!fieldExist('marriage', 'players')) + if(!$this->db->hasColumn('players', 'marriage')) return ''; if( !isset($this->data['marriage']) ) @@ -725,7 +750,7 @@ class OTS_Player extends OTS_Row_DAO public function isDeleted() { $field = 'deleted'; - if(fieldExist('deletion', 'players')) + if($this->db->hasColumn('players', 'deletion')) $field = 'deletion'; if( !isset($this->data[$field]) ) @@ -743,7 +768,7 @@ class OTS_Player extends OTS_Row_DAO public function isOnline() { - if(tableExist('players_online')) // tfs 1.0 + if($this->db->hasTable('players_online')) // tfs 1.0 { $query = $this->db->query('SELECT `player_id` FROM `players_online` WHERE `player_id` = ' . $this->data['id']); return $query->rowCount() > 0; @@ -1833,7 +1858,7 @@ class OTS_Player extends OTS_Row_DAO public function loadRank() { $table = 'guild_membership'; - if(tableExist('guild_members')) + if($this->db->hasTable('guild_members')) $table = 'guild_members'; $ranks = $this->db->query('SELECT `rank_id`, `nick` FROM `' . $table . '` WHERE `player_id` = ' . $this->db->quote($this->getID()))->fetch(); @@ -1869,11 +1894,11 @@ class OTS_Player extends OTS_Row_DAO public function setGuildNick($guildnick) { $this->data['guildnick'] = (string) $guildnick; - if(tableExist('guild_members')) + if($this->db->hasTable('guild_members')) $this->db->query('UPDATE `guild_members` SET `nick` = ' . $this->db->quote($this->data['guildnick']) . ' WHERE `player_id` = ' . $this->getId()); - else if(tableExist('guild_membership')) + else if($this->db->hasTable('guild_membership')) $this->db->query('UPDATE `guild_membership` SET `nick` = ' . $this->db->quote($this->data['guildnick']) . ' WHERE `player_id` = ' . $this->getId()); - else if(fieldExist('guildnick', 'players')) + else if($this->db->hasColumn('players', 'guildnick')) $this->db->query('UPDATE `players` SET `guildnick` = ' . $this->db->quote($this->data['guildnick']) . ' WHERE `id` = ' . $this->getId()); } @@ -1908,21 +1933,21 @@ class OTS_Player extends OTS_Row_DAO public function getRank() { $rank_id = 0; - if(tableExist('guild_members')) { + if($this->db->hasTable('guild_members')) { $query = $this->db->query('SELECT `rank_id` FROM `guild_members` WHERE `player_id`= ' . $this->data['id'] . ' LIMIT 1;'); if($query->rowCount() == 1) { $query = $query->fetch(); $rank_id = $query['rank_id']; } } - else if(tableExist('guild_membership')) { + else if($this->db->hasTable('guild_membership')) { $query = $this->db->query('SELECT `rank_id` FROM `guild_membership` WHERE `player_id`= ' . $this->data['id'] . ' LIMIT 1;'); if($query->rowCount() == 1) { $query = $query->fetch(); $rank_id = $query['rank_id']; } } - else if(fieldExist('rank_id', 'players')) { + else if($this->db->hasColumn('players', 'rank_id')) { $query = $this->db->query('SELECT `rank_id` FROM `players` WHERE `id`= ' . $this->data['id'] . ';')->fetch(); $rank_id = $query['rank_id']; } @@ -1944,10 +1969,10 @@ class OTS_Player extends OTS_Row_DAO { if( isset($rank_id) && isset($guild)) { if($rank_id == 0) { - if(tableExist('guild_membership')) { + if($this->db->hasTable('guild_membership')) { $this->db->query('DELETE FROM `guild_membership` WHERE `player_id` = ' . $this->getId()); } - else if(tableExist('guild_members')) { + else if($this->db->hasTable('guild_members')) { $this->db->query('DELETE FROM `guild_members` WHERE `player_id` = ' . $this->getId()); } else { @@ -1956,7 +1981,7 @@ class OTS_Player extends OTS_Row_DAO } } else { - if(tableExist('guild_membership')) { + if($this->db->hasTable('guild_membership')) { $query = $this->db->query('SELECT `player_id` FROM `guild_membership` WHERE `player_id` = ' . $this->getId() . ' LIMIT 1;'); if($query->rowCount() == 1) $this->db->query('UPDATE `guild_membership` SET `guild_id` = ' . (int)$guild . ', `rank_id` = ' . (int)$rank_id . ' WHERE `player_id` = ' . $this->getId()); @@ -1964,7 +1989,7 @@ class OTS_Player extends OTS_Row_DAO $this->db->query('INSERT INTO `guild_membership` (`player_id`, `guild_id`, `rank_id`, `nick`) VALUES (' . $this->db->quote($this->getId()) . ', ' . $this->db->quote($guild) . ', ' . $this->db->quote($rank_id) . ', ' . $this->db->quote('') . ')'); } } - else if(tableExist('guild_members')) { + else if($this->db->hasTable('guild_members')) { $query = $this->db->query('SELECT `player_id` FROM `guild_members` WHERE `player_id` = ' . $this->getId() . ' LIMIT 1;'); if($query->rowCount() == 1) $this->db->query('UPDATE `guild_members` SET `rank_id` = ' . (int)$rank_id . ' WHERE `player_id` = ' . $this->getId()); diff --git a/system/libs/validator.php b/system/libs/validator.php index 652aa59a..ceba87b5 100644 --- a/system/libs/validator.php +++ b/system/libs/validator.php @@ -296,7 +296,7 @@ class Validator } //check if was namelocked previously - if(tableExist('player_namelocks') && fieldExist('name', 'player_namelocks')) { + if($db->hasTable('player_namelocks') && $db->hasColumn('player_namelocks', 'name')) { $namelock = $db->query('SELECT `player_id` FROM `player_namelocks` WHERE `name` = ' . $db->quote($name)); if($namelock->rowCount() > 0) { self::$lastError = 'Character with this name has been namelocked.'; diff --git a/system/login.php b/system/login.php index 313259fc..9d256c2e 100644 --- a/system/login.php +++ b/system/login.php @@ -58,13 +58,13 @@ else $t = isset($tmp[$ip]) ? $tmp[$ip] : NULL; } - $account_logged = $ots->createObject('Account'); + $account_logged = new OTS_Account(); if(USE_ACCOUNT_NAME) $account_logged->find($login_account); else $account_logged->load($login_account); - $config_salt_enabled = fieldExist('salt', 'accounts'); + $config_salt_enabled = $db->hasColumn('accounts', 'salt'); if($account_logged->isLoaded() && encrypt(($config_salt_enabled ? $account_logged->getCustomField('salt') : '') . $login_password) == $account_logged->getPassword() && (!isset($t) || $t['attempts'] < 5) ) diff --git a/system/migrations/10.php b/system/migrations/10.php index 87771517..c14ec77a 100644 --- a/system/migrations/10.php +++ b/system/migrations/10.php @@ -1,8 +1,8 @@ hasColumn(TABLE_PREFIX . 'hooks', 'ordering')) $db->query("ALTER TABLE `" . TABLE_PREFIX . "hooks` ADD `ordering` INT(11) NOT NULL DEFAULT 0 AFTER `file`;"); - if(!tableExist(TABLE_PREFIX . 'admin_menu')) + if(!$db->hasTable(TABLE_PREFIX . 'admin_menu')) $db->query(" CREATE TABLE `myaac_admin_menu` ( diff --git a/system/migrations/12.php b/system/migrations/12.php index f45008ae..72c59b12 100644 --- a/system/migrations/12.php +++ b/system/migrations/12.php @@ -1,7 +1,7 @@ hasColumn(TABLE_PREFIX . 'spells', 'item_id')) $db->query("ALTER TABLE `" . TABLE_PREFIX . "spells` ADD `item_id` INT(11) NOT NULL DEFAULT 0 AFTER `conjure_count`;"); // change unique index from spell to name @@ -12,7 +12,7 @@ $db->query("ALTER TABLE `" . TABLE_PREFIX . "spells` ADD UNIQUE INDEX (`name`);" $db->query("ALTER TABLE `" . TABLE_PREFIX . "spells` MODIFY `type` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '1 - instant, 2 - conjure, 3 - rune';"); // new items table -if(!tableExist(TABLE_PREFIX . 'items')) +if(!$db->hasTable(TABLE_PREFIX . 'items')) $db->query(" CREATE TABLE `" . TABLE_PREFIX . "items` ( @@ -25,7 +25,7 @@ CREATE TABLE `" . TABLE_PREFIX . "items` ) ENGINE = MyISAM;"); // new weapons table -if(!tableExist(TABLE_PREFIX . 'weapons')) +if(!$db->hasTable(TABLE_PREFIX . 'weapons')) $db->query(" CREATE TABLE `" . TABLE_PREFIX . "weapons` ( diff --git a/system/migrations/13.php b/system/migrations/13.php index b709b843..71d3735c 100644 --- a/system/migrations/13.php +++ b/system/migrations/13.php @@ -1,4 +1,4 @@ hasColumn(TABLE_PREFIX . 'spells', 'spell')) $db->query("ALTER TABLE `" . TABLE_PREFIX . "spells` DROP COLUMN `spell`;"); ?> \ No newline at end of file diff --git a/system/migrations/14.php b/system/migrations/14.php index cbbf5505..acd13afb 100644 --- a/system/migrations/14.php +++ b/system/migrations/14.php @@ -1,7 +1,7 @@ hasColumn(TABLE_PREFIX . 'monsters', 'file_path')) { $db->query("ALTER TABLE `" . TABLE_PREFIX . "monsters` CHANGE `file_path` `loot` VARCHAR(5000);"); } @@ -12,7 +12,7 @@ $db->query("UPDATE `" . TABLE_PREFIX . "monsters` SET `loot` = '';"); $db->query("ALTER TABLE `" . TABLE_PREFIX . "monsters` DROP COLUMN `gfx_name`;"); // rename hide_creature to hidden -if(fieldExist('hide_creature', TABLE_PREFIX . 'monsters')) { +if($db->hasColumn(TABLE_PREFIX . 'monsters', 'hide_creature')) { $db->query("ALTER TABLE `" . TABLE_PREFIX . "monsters` CHANGE `hide_creature` `hidden` TINYINT(1) NOT NULL DEFAULT 0;"); } ?> \ No newline at end of file diff --git a/system/migrations/15.php b/system/migrations/15.php index 12c9f15e..28996d8a 100644 --- a/system/migrations/15.php +++ b/system/migrations/15.php @@ -1,11 +1,11 @@ hasColumn(TABLE_PREFIX . 'forum_boards', 'guild')) { $db->query("ALTER TABLE `" . TABLE_PREFIX . "forum_boards` ADD `guild` TINYINT(1) NOT NULL DEFAULT 0 AFTER `closed`;"); } -if(!fieldExist('access', TABLE_PREFIX . 'forum_boards')) { +if(!$db->hasColumn(TABLE_PREFIX . 'forum_boards', 'access')) { $db->query("ALTER TABLE `" . TABLE_PREFIX . "forum_boards` ADD `access` TINYINT(1) NOT NULL DEFAULT 0 AFTER `guild`;"); } ?> \ No newline at end of file diff --git a/system/migrations/17.php b/system/migrations/17.php index 2d116a69..1af439a0 100644 --- a/system/migrations/17.php +++ b/system/migrations/17.php @@ -1,6 +1,6 @@ hasTable('myaac_menu')) { $db->query(" CREATE TABLE `myaac_menu` ( diff --git a/system/migrations/4.php b/system/migrations/4.php index fbe17b12..80bbc4a0 100644 --- a/system/migrations/4.php +++ b/system/migrations/4.php @@ -1,4 +1,4 @@ hasColumn(TABLE_PREFIX . 'monsters', 'id')) $db->query("ALTER TABLE `" . TABLE_PREFIX . "monsters` ADD `id` int(11) NOT NULL AUTO_INCREMENT primary key FIRST;"); ?> \ No newline at end of file diff --git a/system/migrations/5.php b/system/migrations/5.php index 78133215..bef48d61 100644 --- a/system/migrations/5.php +++ b/system/migrations/5.php @@ -1,4 +1,4 @@ hasColumn(TABLE_PREFIX . 'spells', 'cities')) $db->query("ALTER TABLE `" . TABLE_PREFIX . "spells` DROP COLUMN cities;"); ?> \ No newline at end of file diff --git a/system/migrations/6.php b/system/migrations/6.php index 6f1fed1a..ed5329d0 100644 --- a/system/migrations/6.php +++ b/system/migrations/6.php @@ -1,4 +1,4 @@ hasColumn(TABLE_PREFIX . 'hooks', 'enabled')) $db->query("ALTER TABLE `" . TABLE_PREFIX . "hooks` ADD `enabled` INT(1) NOT NULL DEFAULT 1;"); ?> \ No newline at end of file diff --git a/system/migrations/7.php b/system/migrations/7.php index da254717..a34f5a22 100644 --- a/system/migrations/7.php +++ b/system/migrations/7.php @@ -1,4 +1,4 @@ hasColumn(TABLE_PREFIX . 'screenshots', 'name')) $db->query("ALTER TABLE `" . TABLE_PREFIX . "screenshots` DROP `name`;"); ?> \ No newline at end of file diff --git a/system/migrations/8.php b/system/migrations/8.php index 0bf1bb7c..a04331a8 100644 --- a/system/migrations/8.php +++ b/system/migrations/8.php @@ -1,5 +1,5 @@ hasTable(TABLE_PREFIX . 'forum_sections')) $db->query('RENAME TABLE `' . TABLE_PREFIX . 'forum_sections` TO `' . TABLE_PREFIX . 'forum_boards`;'); $query = $db->query('SELECT `id` FROM `' . TABLE_PREFIX . 'forum_boards` WHERE `ordering` > 0;'); diff --git a/system/pages/account/create_character.php b/system/pages/account/create_character.php index 72ce7bd4..3a32b85f 100644 --- a/system/pages/account/create_character.php +++ b/system/pages/account/create_character.php @@ -94,17 +94,18 @@ if($save) { { if($newchar_sex == "0") $char_to_copy->setLookType(136); - $player = $ots->createObject('Player'); + + $player = new OTS_Player(); $player->setName($newchar_name); $player->setAccount($account_logged); //$player->setGroupId($char_to_copy->getGroup()->getId()); $player->setGroupId(1); $player->setSex($newchar_sex); $player->setVocation($char_to_copy->getVocation()); - if(fieldExist('promotion', 'players')) + if($db->hasColumn('players', 'promotion')) $player->setPromotion($char_to_copy->getPromotion()); - if(fieldExist('direction', 'players')) + if($db->hasColumn('players', 'direction')) $player->setDirection($char_to_copy->getDirection()); $player->setConditions($char_to_copy->getConditions()); @@ -113,7 +114,7 @@ if($save) { $player->setRank($char_to_copy->getRank()); } - if(fieldExist('lookaddons', 'players')) + if($db->hasColumn('players', 'lookaddons')) $player->setLookAddons($char_to_copy->getLookAddons()); $player->setTownId($newchar_town); @@ -141,12 +142,12 @@ if($save) { $player->setPosY(0); $player->setPosZ(0); $player->setStamina($config['otserv_version'] == TFS_03 ? 151200000 : 2520); - if(fieldExist('loss_experience', 'players')) { + if($db->hasColumn('players', 'loss_experience')) { $player->setLossExperience($char_to_copy->getLossExperience()); $player->setLossMana($char_to_copy->getLossMana()); $player->setLossSkills($char_to_copy->getLossSkills()); } - if(fieldExist('loss_items', 'players')) { + if($db->hasColumn('players', 'loss_items')) { $player->setLossItems($char_to_copy->getLossItems()); $player->setLossContainers($char_to_copy->getLossContainers()); } @@ -162,7 +163,7 @@ if($save) { $player->find($newchar_name); if($player->isLoaded()) { - if(tableExist('player_skills')) { + if($db->hasTable('player_skills')) { for($i=0; $i<7; $i++) { $skillExists = $db->query('SELECT `skillid` FROM `player_skills` WHERE `player_id` = ' . $player->getId() . ' AND `skillid` = ' . $i); if($skillExists->rowCount() <= 0) { diff --git a/system/pages/account/delete_character.php b/system/pages/account/delete_character.php index fc718169..d47ad8ff 100644 --- a/system/pages/account/delete_character.php +++ b/system/pages/account/delete_character.php @@ -27,7 +27,7 @@ if(isset($_POST['deletecharactersave']) && $_POST['deletecharactersave'] == 1) { //dont show table "delete character" again $show_form = false; //delete player - if(fieldExist('deletion', 'players')) + if($db->hasColumn('players', 'deletion')) $player->setCustomField('deletion', 1); else $player->setCustomField('deleted', 1); diff --git a/system/pages/accountmanagement.php b/system/pages/accountmanagement.php index e99106b7..8f2bc7b8 100644 --- a/system/pages/accountmanagement.php +++ b/system/pages/accountmanagement.php @@ -17,7 +17,7 @@ if($config['account_country']) $groups = new OTS_Groups_List(); $show_form = true; -$config_salt_enabled = fieldExist('salt', 'accounts'); +$config_salt_enabled = $db->hasColumn('accounts', 'salt'); if(!$logged) { if($action == "logout") { @@ -74,7 +74,7 @@ $errors = array(); $account_registered = 'Yes'; } - $account_created = $account_logged->getCustomField("created"); + $account_created = $account_logged->getCreated(); $account_email = $account_logged->getEMail(); $email_new_time = $account_logged->getCustomField("email_new_time"); if($email_new_time > 1) diff --git a/system/pages/admin/players.php b/system/pages/admin/players.php index 9e2c0d25..6d5d875e 100644 --- a/system/pages/admin/players.php +++ b/system/pages/admin/players.php @@ -78,7 +78,7 @@ else if(isset($_REQUEST['search_name'])) { $groups = new OTS_Groups_List(); if($id > 0) { - $player = $ots->createObject('Player'); + $player = new OTS_Player(); $player->load($id); if(isset($player) && $player->isLoaded() && isset($_POST['save'])) {// we want to save @@ -95,7 +95,7 @@ if($id > 0) { //if(!Validator::newCharacterName($name) // echo_error(Validator::getLastError()); - $player_db = $ots->createObject('Player'); + $player_db = new OTS_Player(); $player_db->find($name); if($player_db->isLoaded() && $player->getName() != $name) echo_error('This name is already used. Please choose another name!'); @@ -149,7 +149,7 @@ if($id > 0) { verify_number($look_legs, 'Look legs', 11); $look_type = $_POST['look_type']; verify_number($look_type, 'Look type', 11); - if(fieldExist('lookaddons', 'players')) { + if($db->hasColumn('players', 'lookaddons')) { $look_addons = $_POST['look_addons']; verify_number($look_addons, 'Look addons', 11); } @@ -188,7 +188,7 @@ if($id > 0) { $skull_time = $_POST['skull_time']; verify_number($skull_time, 'Skull time', 11); - if(fieldExist('loss_experience', 'players')) { + if($db->hasColumn('players', 'loss_experience')) { $loss_experience = $_POST['loss_experience']; verify_number($loss_experience, 'Loss experience', 11); $loss_mana = $_POST['loss_mana']; @@ -201,13 +201,13 @@ if($id > 0) { verify_number($loss_items, 'Loss items', 11); } - if(fieldExist('blessings', 'players')) { + if($db->hasColumn('players', 'blessings')) { $blessings = $_POST['blessings']; verify_number($blessings, 'Blessings', 2); } $balance = $_POST['balance']; verify_number($balance, 'Balance', 20); - if(fieldExist('stamina', 'players')) { + if($db->hasColumn('players', 'stamina')) { $stamina = $_POST['stamina']; verify_number($stamina, 'Stamina', 20); } @@ -243,7 +243,7 @@ if($id > 0) { $player->setLookHead($look_head); $player->setLookLegs($look_legs); $player->setLookType($look_type); - if(fieldExist('lookaddons', 'players')) + if($db->hasColumn('players', 'lookaddons')) $player->setLookAddons($look_addons); $player->setPosX($pos_x); $player->setPosY($pos_y); @@ -257,19 +257,19 @@ if($id > 0) { $player->setLastIP(ip2long($lastip)); $player->setSkull($skull); $player->setSkullTime($skull_time); - if(fieldExist('loss_experience', 'players')) { + if($db->hasColumn('players', 'loss_experience')) { $player->setLossExperience($loss_experience); $player->setLossMana($loss_mana); $player->setLossSkills($loss_skills); $player->setLossContainers($loss_containers); $player->setLossItems($loss_items); } - if(fieldExist('blessings', 'players')) + if($db->hasColumn('players', 'blessings')) $player->setBlessings($blessings); $player->setBalance($balance); - if(fieldExist('stamina', 'players')) + if($db->hasColumn('players', 'stamina')) $player->setStamina($stamina); - if(fieldExist('deletion', 'players')) + if($db->hasColumn('players', 'deletion')) $player->setCustomField('deletion', $deleted ? '1' : '0'); else $player->setCustomField('deleted', $deleted ? '1' : '0'); @@ -399,7 +399,7 @@ $account = $player->getAccount(); Head: Legs: Type: - + hasColumn('lookaddons', 'players')): ?> Addons: @@ -472,7 +472,7 @@ $account = $player->getAccount(); - + hasColumn('players', 'loss_experience')): ?> @@ -500,14 +500,14 @@ $account = $player->getAccount();
- + hasColumn('players', 'blessings')): ?> - + hasColumn('players', 'stamina')): ?> @@ -520,10 +520,10 @@ $account = $player->getAccount();
Blessings: Balance: Stamina:
- + - + diff --git a/system/pages/bans.php b/system/pages/bans.php index 026fd3dc..b6179777 100644 --- a/system/pages/bans.php +++ b/system/pages/bans.php @@ -170,7 +170,7 @@ function getPlayerNameByAccount($id) global $vowels, $ots, $db; if(is_numeric($id)) { - $player = $ots->createObject('Player'); + $player = new OTS_Player(); $player->load($id); if($player->isLoaded()) return $player->getName(); diff --git a/system/pages/characters.php b/system/pages/characters.php index 8c121c6a..b2b1fc5d 100644 --- a/system/pages/characters.php +++ b/system/pages/characters.php @@ -27,7 +27,7 @@ function retrieve_former_name($name) { global $oldName, $db; - if(tableExist('player_namelocks') && fieldExist('name', 'player_namelocks')) { + if($db->hasTable('player_namelocks') && $db->hasColumn('player_namelocks', 'name')) { $newNameSql = $db->query('SELECT `name`, `new_name` FROM `player_namelocks` WHERE `name` = ' . $db->quote($name)); if($newNameSql->rowCount() > 0) // namelocked { @@ -79,24 +79,27 @@ if($player->isLoaded() && !$player->isDeleted()) $rows = 0; if($config['characters']['outfit']) - $outfit = $config['outfit_images_url'] . '?id=' . $player->getLookType() . (fieldExist('lookaddons', 'players') ? '&addons=' . $player->getLookAddons() : '') . '&head=' . $player->getLookHead() . '&body=' . $player->getLookBody() . '&legs=' . $player->getLookLegs() . '&feet=' . $player->getLookFeet(); + $outfit = $config['outfit_images_url'] . '?id=' . $player->getLookType() . ($db->hasColumn('players', 'lookaddons') ? '&addons=' . $player->getLookAddons() : '') . '&head=' . $player->getLookHead() . '&body=' . $player->getLookBody() . '&legs=' . $player->getLookLegs() . '&feet=' . $player->getLookFeet(); $flag = ''; if($config['account_country']) - $flag = getFlagImage($account->getCustomField('country')); + $flag = getFlagImage($account->getCountry()); $player_sex = 'Unknown'; if(isset($config['genders'][$player->getSex()])) $player_sex = strtolower($config['genders'][$player->getSex()]); - $marriage = new OTS_Player(); - $marriage->load($player->getMarriage()); - $marital_status = 'single'; - if($marriage->isLoaded()) - $marital_status = 'married to ' . getPlayerLink($marriage->getName()); - - $frags_enabled = tableExist('player_killers') && $config['characters']['frags']; + $marriage_id = $player->getMarriage(); + if($marriage_id > 0) { + $marriage = new OTS_Player(); + $marriage->load($player->getMarriage(), array('id', 'name'), false); + if($marriage->isLoaded()) { + $marital_status = 'married to ' . getPlayerLink($marriage->getName()); + } + } + + $frags_enabled = $db->hasTable('player_killers') && $config['characters']['frags']; $frags_count = 0; if($frags_enabled) { $query = $db->query( @@ -114,14 +117,14 @@ if($player->isLoaded() && !$player->isDeleted()) } $town_field = 'town'; - if(fieldExist('town_id', 'houses')) + if($db->hasColumn('houses', 'town_id')) $town_field = 'town_id'; - else if(fieldExist('townid', 'houses')) + else if($db->hasColumn('houses', 'townid')) $town_field = 'townid'; - else if(!fieldExist('town', 'houses')) + else if(!$db->hasColumn('houses', 'town')) $town_field = false; - if(fieldExist('name', 'houses')) { + if($db->hasColumn('houses', 'name')) { $house = $db->query('SELECT `id`, `paid`, `name`' . ($town_field != false ? ', `' . $town_field . '` as `town`' : '') . ' FROM `houses` WHERE `owner` = '.$player->getId())->fetch(); if(isset($house['id'])) { @@ -143,7 +146,7 @@ if($player->isLoaded() && !$player->isDeleted()) if($config['characters']['skills']) { - if(fieldExist('skill_fist', 'players')) {// tfs 1.0+ + if($db->hasColumn('players', 'skill_fist')) {// tfs 1.0+ $skills_db = $db->query('SELECT `skill_fist`, `skill_club`, `skill_sword`, `skill_axe`, `skill_dist`, `skill_shielding`, `skill_fishing` FROM `players` WHERE `id` = ' . $player->getId())->fetch(); $skill_ids = array( @@ -230,7 +233,7 @@ if($player->isLoaded() && !$player->isDeleted()) $dead_add_content = ''; $deaths = array(); - if(tableExist('killers')) { + if($db->hasTable('killers')) { $player_deaths = $db->query('SELECT `id`, `date`, `level` FROM `player_deaths` WHERE `player_id` = '.$player->getId().' ORDER BY `date` DESC LIMIT 0,10;'); if(count($player_deaths)) { @@ -284,7 +287,7 @@ WHERE killers.death_id = '".$death['id']."' ORDER BY killers.final_hit DESC, kil } else { $mostdamage = ''; - if(fieldExist('mostdamage_by', 'player_deaths')) + if($db->hasColumn('player_deaths', 'mostdamage_by')) $mostdamage = ', `mostdamage_by`, `mostdamage_is_player`, `unjustified`, `mostdamage_unjustified`'; $deaths_db = $db->query('SELECT `player_id`, `time`, `level`, `killed_by`, `is_player`' . $mostdamage . ' @@ -345,15 +348,15 @@ WHERE killers.death_id = '".$death['id']."' ORDER BY killers.final_hit DESC, kil $signature_url = BASE_URL . ($config['friendly_urls'] ? '' : '?') . urlencode($player->getName()) . '.png'; } - $hidden = $player->getCustomField('hidden'); - if($hidden != 1) { + $hidden = $player->isHidden(); + if(!$hidden) { // check if account has been banned $bannedUntil = ''; $banned = array(); - if(tableExist('account_bans')) + if($db->hasTable('account_bans')) $banned = $db->query('SELECT `expires_at` as `expires` FROM `account_bans` WHERE `account_id` = ' . $account->getId() . ' and (`expires_at` > ' . time() . ' OR `expires_at` = -1);'); - else if (tableExist('bans')) { - if (fieldExist('expires', 'bans')) + else if ($db->hasTable('bans')) { + if ($db->hasColumn('bans', 'expires')) $banned = $db->query('SELECT `expires` FROM `bans` WHERE (`value` = ' . $account->getId() . ' or `value` = ' . $player->getId() . ') and `active` = 1 and `type` != 2 and `type` != 4 and (`expires` > ' . time() . ' OR `expires` = -1);'); else $banned = $db->query('SELECT `time` as `time` FROM `bans` WHERE (`account` = ' . $account->getId() . ' or `player` = ' . $player->getId() . ') and `type` != 2 and `type` != 4 and (`time` > ' . time() . ' OR `time` = -1);'); @@ -362,8 +365,16 @@ WHERE killers.death_id = '".$death['id']."' ORDER BY killers.final_hit DESC, kil $bannedUntil = $ban['expires']; } - $account_players = $account->getPlayersList(); - $account_players->orderBy('name'); + $account_players = array(); + $query = $db->query('SELECT `id` FROM `players` WHERE `account_id` = ' . $account->getId() . ' ORDER BY `name`')->fetchAll(); + foreach($query as $p) { + $_player = new OTS_Player(); + $fields = array('id', 'name', 'vocation', 'level', 'online', 'deleted', 'hidden'); + $_player->load($p['id'], $fields, false); + if($_player->isLoaded()) { + $account_players[] = $_player; + } + } } echo $twig->render('characters.html.twig', array( @@ -373,7 +384,7 @@ WHERE killers.death_id = '".$death['id']."' ORDER BY killers.final_hit DESC, kil 'flag' => $flag, 'oldName' => $oldName, 'sex' => $player_sex, - 'marriage_enabled' => $config['characters']['marriage_info'] && fieldExist('marriage', 'players'), + 'marriage_enabled' => $config['characters']['marriage_info'] && $db->hasColumn('players', 'marriage'), 'marital_status' => $marital_status, 'vocation' => $config['vocations'][$player->getVocation()], 'frags_enabled' => $frags_enabled, @@ -414,11 +425,11 @@ else $search_errors = array(); $promotion = ''; - if(fieldExist('promotion', 'players')) + if($db->hasColumn('players', 'promotion')) $promotion = ', `promotion`'; $deleted = 'deleted'; - if(fieldExist('deletion', 'players')) + if($db->hasColumn('players', 'deletion')) $deleted = 'deletion'; $query = $db->query('SELECT `name`, `level`, `vocation`' . $promotion . ' FROM `players` WHERE `name` LIKE ' . $db->quote('%' . $name . '%') . ' AND ' . $deleted . ' != 1;'); diff --git a/system/pages/createaccount.php b/system/pages/createaccount.php index ff42424a..59dd7ac6 100644 --- a/system/pages/createaccount.php +++ b/system/pages/createaccount.php @@ -121,7 +121,7 @@ if($save) else $new_account->create(NULL, $account_id); - $config_salt_enabled = fieldExist('salt', 'accounts'); + $config_salt_enabled = $db->hasColumn('accounts', 'salt'); if($config_salt_enabled) { $salt = generateRandomString(10, false, true, true); @@ -144,7 +144,7 @@ if($save) } if($config['account_premium_days'] && $config['account_premium_days'] > 0) { - if(fieldExist('premend', 'accounts')) { // othire + if($db->hasColumn('accounts', 'premend')) { // othire $new_account->setCustomField('premend', time() + $config['account_premium_days'] * 86400); } else { // rest diff --git a/system/pages/forum/show_thread.php b/system/pages/forum/show_thread.php index 1a10e400..119438e2 100644 --- a/system/pages/forum/show_thread.php +++ b/system/pages/forum/show_thread.php @@ -38,6 +38,7 @@ if(isset($posts[0]['player_id'])) { $db->query("UPDATE `" . TABLE_PREFIX . "forum` SET `views`=`views`+1 WHERE `id` = ".(int) $thread_id); } +$lookaddons = $db-hasColumn('players', 'lookaddons'); $groups = new OTS_Groups_List(); foreach($posts as &$post) { @@ -50,7 +51,7 @@ foreach($posts as &$post) } if($config['characters']['outfit']) { - $post['outfit'] = $config['outfit_images_url'] . '?id=' . $player->getLookType() . (fieldExist('lookaddons', 'players') ? '&addons=' . $player->getLookAddons() : '') . '&head=' . $player->getLookHead() . '&body=' . $player->getLookBody() . '&legs=' . $player->getLookLegs() . '&feet=' . $player->getLookFeet(); + $post['outfit'] = $config['outfit_images_url'] . '?id=' . $player->getLookType() . ($lookaddons ? '&addons=' . $player->getLookAddons() : '') . '&head=' . $player->getLookHead() . '&body=' . $player->getLookBody() . '&legs=' . $player->getLookLegs() . '&feet=' . $player->getLookFeet(); } $groupName = ''; diff --git a/system/pages/guilds.php b/system/pages/guilds.php index 6adbfa35..13a9ea20 100644 --- a/system/pages/guilds.php +++ b/system/pages/guilds.php @@ -11,12 +11,12 @@ defined('MYAAC') or die('Direct access not allowed!'); $title = 'Guilds'; -if(tableExist('guild_members')) +if($db->hasTable('guild_members')) define('GUILD_MEMBERS_TABLE', 'guild_members'); else define('GUILD_MEMBERS_TABLE', 'guild_membership'); -define('MOTD_EXISTS', fieldExist('motd', 'guilds')); +define('MOTD_EXISTS', $db->hasColumn('guilds', 'motd')); //show list of guilds if(empty($action)) { diff --git a/system/pages/guilds/accept_invite.php b/system/pages/guilds/accept_invite.php index 0d529ac7..2633d1e4 100644 --- a/system/pages/guilds/accept_invite.php +++ b/system/pages/guilds/accept_invite.php @@ -22,7 +22,7 @@ if(!Validator::guildName($guild_name)) { } if(empty($errors)) { - $guild = $ots->createObject('Guild'); + $guild = new OTS_Guild(); $guild->find($guild_name); if(!$guild->isLoaded()) { $errors[] = 'Guild with name '.$guild_name.' doesn\'t exist.'; diff --git a/system/pages/guilds/add_rank.php b/system/pages/guilds/add_rank.php index 587841eb..603b4d3e 100644 --- a/system/pages/guilds/add_rank.php +++ b/system/pages/guilds/add_rank.php @@ -23,7 +23,7 @@ if(empty($errors)) { if(!$logged) { $errors[] = 'You are not logged.'; } - $guild = $ots->createObject('Guild'); + $guild = new OTS_Guild(); $guild->find($guild_name); if(!$guild->isLoaded()) { $errors[] = 'Guild with name '.$guild_name.' doesn\'t exist.'; diff --git a/system/pages/guilds/change_description.php b/system/pages/guilds/change_description.php index 60dd5ac2..77a5bdbb 100644 --- a/system/pages/guilds/change_description.php +++ b/system/pages/guilds/change_description.php @@ -16,7 +16,7 @@ if(!Validator::guildName($guild_name)) { } if(empty($errors)) { - $guild = $ots->createObject('Guild'); + $guild = new OTS_Guild(); $guild->find($guild_name); if(!$guild->isLoaded()) { $errors[] = 'Guild with name '.$guild_name.' doesn\'t exist.'; diff --git a/system/pages/guilds/change_rank.php b/system/pages/guilds/change_rank.php index 2b428f27..94ce50a5 100644 --- a/system/pages/guilds/change_rank.php +++ b/system/pages/guilds/change_rank.php @@ -21,7 +21,7 @@ else { if(empty($errors)) { - $guild = $ots->createObject('Guild'); + $guild = new OTS_Guild(); $guild->find($guild_name); if(!$guild->isLoaded()) $errors[] = 'Guild with name ' . $guild_name . ' doesn\'t exist.'; @@ -75,7 +75,7 @@ if($guild_vice) $ranks[$rid]['1'] = $rank->getName(); $rid++; - if(fieldExist('rank_id', 'players')) + if($db->hasColumn('players', 'rank_id')) $players_with_rank = $db->query('SELECT `id`, `rank_id` FROM `players` WHERE `rank_id` = ' . $rank->getId() . ' AND `deleted` = 0;'); else $players_with_rank = $db->query('SELECT `players`.`id` as `id`, `' . GUILD_MEMBERS_TABLE . '`.`rank_id` as `rank_id` FROM `players`, `' . GUILD_MEMBERS_TABLE . '` WHERE `' . GUILD_MEMBERS_TABLE . '`.`rank_id` = ' . $rank->getId() . ' AND `players`.`id` = `' . GUILD_MEMBERS_TABLE . '`.`player_id` ORDER BY `name`;'); @@ -107,7 +107,7 @@ if($guild_vice) $new_rank = (int) $_REQUEST['rankid']; if(!Validator::characterName($player_name)) $change_errors[] = 'Invalid player name format.'; - $rank = $ots->createObject('GuildRank'); + $rank = new OTS_GuildRank(); $rank->load($new_rank); if(!$rank->isLoaded()) $change_errors[] = 'Rank with this ID doesn\'t exist.'; @@ -115,7 +115,7 @@ if($guild_vice) $change_errors[] = 'You can\'t set ranks with equal or higher level than your.'; if(empty($change_errors)) { - $player_to_change = $ots->createObject('Player'); + $player_to_change = new OTS_Player(); $player_to_change->find($player_name); if(!$player_to_change->isLoaded()) $change_errors[] = 'Player with name '.$player_name.' doesn\'t exist.'; @@ -163,7 +163,7 @@ if($guild_vice) $ranks[$rid]['1'] = $rank->getName(); $rid++; - if(fieldExist('rank_id', 'players')) + if($db->hasColumn('players', 'rank_id')) $players_with_rank = $db->query('SELECT `id`, `rank_id` FROM `players` WHERE `rank_id` = ' . $rank->getId() . ' AND `deleted` = 0;'); else $players_with_rank = $db->query('SELECT `players`.`id` as `id`, `' . GUILD_MEMBERS_TABLE . '`.`rank_id` as `rank_id` FROM `players`, `' . GUILD_MEMBERS_TABLE . '` WHERE `' . GUILD_MEMBERS_TABLE . '`.`rank_id` = ' . $rank->getId() . ' AND `players`.`id` = `' . GUILD_MEMBERS_TABLE . '`.`player_id` ORDER BY `name`;'); @@ -173,7 +173,7 @@ if($guild_vice) { foreach($players_with_rank as $result) { - $player = $ots->createObject('Player'); + $player = new OTS_Player(); $player->load($result['id']); if(!$player->isLoaded()) continue; diff --git a/system/pages/guilds/create.php b/system/pages/guilds/create.php index 9a507fc4..d835d593 100644 --- a/system/pages/guilds/create.php +++ b/system/pages/guilds/create.php @@ -54,7 +54,7 @@ if($todo == 'save') } if(empty($guild_errors)) { - $player = $ots->createObject('Player'); + $player = new OTS_Player(); $player->find($name); if(!$player->isLoaded()) { $guild_errors[] = 'Character '.$name.' doesn\'t exist.'; @@ -64,7 +64,7 @@ if($todo == 'save') if(empty($guild_errors)) { - $guild = $ots->createObject('Guild'); + $guild = new OTS_Guild(); $guild->find($guild_name); if($guild->isLoaded()) { $guild_errors[] = 'Guild '.$guild_name.' already exist. Select other name.'; diff --git a/system/pages/guilds/delete_rank.php b/system/pages/guilds/delete_rank.php index 916e316b..aab94dce 100644 --- a/system/pages/guilds/delete_rank.php +++ b/system/pages/guilds/delete_rank.php @@ -17,7 +17,7 @@ if(!Validator::guildName($guild_name)) { $guild_errors[] = Validator::getLastError(); } if(empty($guild_errors)) { - $guild = $ots->createObject('Guild'); + $guild = new OTS_Guild(); $guild->find($guild_name); if(!$guild->isLoaded()) { $guild_errors[] = 'Guild with name '.$guild_name.' doesn\'t exist.'; @@ -55,7 +55,7 @@ if(empty($guild_errors)) { } else { - if(fieldExist('rank_id', 'players')) + if($db->hasColumn('players', 'rank_id')) $players_with_rank = $db->query('SELECT `id`, `rank_id` FROM `players` WHERE `rank_id` = ' . $rank->getId() . ' AND `deleted` = 0;'); else $players_with_rank = $db->query('SELECT `players`.`id` as `id`, `' . GUILD_MEMBERS_TABLE . '`.`rank_id` as `rank_id` FROM `players`, `' . GUILD_MEMBERS_TABLE . '` WHERE `' . GUILD_MEMBERS_TABLE . '`.`rank_id` = ' . $rank->getId() . ' AND `players`.`id` = `' . GUILD_MEMBERS_TABLE . '`.`player_id` ORDER BY `name`;'); diff --git a/system/pages/guilds/invite.php b/system/pages/guilds/invite.php index dee4ff3f..23d3fdcf 100644 --- a/system/pages/guilds/invite.php +++ b/system/pages/guilds/invite.php @@ -22,7 +22,7 @@ if(!Validator::guildName($guild_name)) { } if(empty($errors)) { - $guild = $ots->createObject('Guild'); + $guild = new OTS_Guild(); $guild->find($guild_name); if(!$guild->isLoaded()) { $errors[] = 'Guild with name '.$guild_name.' doesn\'t exist.'; diff --git a/system/pages/guilds/kick_player.php b/system/pages/guilds/kick_player.php index 84922b54..986656f1 100644 --- a/system/pages/guilds/kick_player.php +++ b/system/pages/guilds/kick_player.php @@ -27,7 +27,7 @@ if(!Validator::characterName($name)) { } if(empty($errors)) { - $guild = $ots->createObject('Guild'); + $guild = new OTS_Guild(); $guild->find($guild_name); if(!$guild->isLoaded()) { $errors[] = 'Guild with name '.$guild_name.' doesn\'t exist.'; diff --git a/system/pages/guilds/list_of_guilds.php b/system/pages/guilds/list_of_guilds.php index 34650db4..2463e191 100644 --- a/system/pages/guilds/list_of_guilds.php +++ b/system/pages/guilds/list_of_guilds.php @@ -1,6 +1,6 @@ createObject('Guilds_List'); +$guilds_list = new OTS_Guilds_List(); if(!isset($_REQUEST['preview'])) $_REQUEST['preview'] = 1; diff --git a/system/pages/guilds/pass_leadership.php b/system/pages/guilds/pass_leadership.php index b830e173..c7819112 100644 --- a/system/pages/guilds/pass_leadership.php +++ b/system/pages/guilds/pass_leadership.php @@ -17,7 +17,7 @@ if(!Validator::guildName($guild_name)) { } if(empty($guild_errors)) { - $guild = $ots->createObject('Guild'); + $guild = new OTS_Guild(); $guild->find($guild_name); if(!$guild->isLoaded()) { $guild_errors[] = "Guild with name " . $guild_name . " doesn't exist."; diff --git a/system/pages/guilds/save_ranks.php b/system/pages/guilds/save_ranks.php index 55f80e60..92a88426 100644 --- a/system/pages/guilds/save_ranks.php +++ b/system/pages/guilds/save_ranks.php @@ -16,7 +16,7 @@ if(!Validator::guildName($guild_name)) { } if(empty($errors)) { - $guild = $ots->createObject('Guild'); + $guild = new OTS_Guild(); $guild->find($guild_name); if(!$guild->isLoaded()) { $errors[] = 'Guild with name '.$guild_name.' doesn\'t exist.'; diff --git a/system/pages/guilds/show.php b/system/pages/guilds/show.php index 061cc059..9fbd57af 100644 --- a/system/pages/guilds/show.php +++ b/system/pages/guilds/show.php @@ -16,7 +16,7 @@ if(!Validator::guildName($guild_name)) if(empty($errors)) { - $guild = $ots->createObject('Guild'); + $guild = new OTS_Guild(); $guild->find($guild_name); if(!$guild->isLoaded()) $errors[] = 'Guild with name '.$guild_name.' doesn\'t exist.'; @@ -110,9 +110,9 @@ else $showed_players = 1; foreach($rank_list as $rank) { - if(tableExist(GUILD_MEMBERS_TABLE)) + if($db->hasTable(GUILD_MEMBERS_TABLE)) $players_with_rank = $db->query('SELECT `players`.`id` as `id`, `' . GUILD_MEMBERS_TABLE . '`.`rank_id` as `rank_id` FROM `players`, `' . GUILD_MEMBERS_TABLE . '` WHERE `' . GUILD_MEMBERS_TABLE . '`.`rank_id` = ' . $rank->getId() . ' AND `players`.`id` = `' . GUILD_MEMBERS_TABLE . '`.`player_id` ORDER BY `name`;'); - else if(fieldExist('rank_id', 'players')) + else if($db->hasColumn('players', 'rank_id')) $players_with_rank = $db->query('SELECT `id`, `rank_id` FROM `players` WHERE `rank_id` = ' . $rank->getId() . ' AND `deleted` = 0;'); $players_with_rank_number = $players_with_rank->rowCount(); @@ -127,7 +127,7 @@ else
getCustomField(fieldExist('deletion', 'players') ? 'deletion' : 'deleted') == '1' ? ' checked' : ''); ?>/>getCustomField($db->hasColumn('deletion', 'players') ? 'deletion' : 'deleted') == '1' ? ' checked' : ''); ?>/> getCustomField('hidden') == 1 ? ' checked' : ''); ?>/>isHidden() ? ' checked' : ''); ?>/> Created:
'; foreach($players_with_rank as $result) { - $player = $ots->createObject('Player'); + $player = new OTS_Player(); $player->load($result['id']); if(!$player->isLoaded()) continue; diff --git a/system/pages/highscores.php b/system/pages/highscores.php index bf4c160a..1c30e354 100644 --- a/system/pages/highscores.php +++ b/system/pages/highscores.php @@ -85,22 +85,22 @@ else } $promotion = ''; -if(fieldExist('promotion', 'players')) +if($db->hasColumn('players', 'promotion')) $promotion = ',promotion'; $online = ''; -if(fieldExist('online', 'players')) +if($db->hasColumn('players', 'online')) $online = ',online'; $deleted = 'deleted'; -if(fieldExist('deletion', 'players')) +if($db->hasColumn('players', 'deletion')) $deleted = 'deletion'; $outfit_addons = false; $outfit = ''; if($config['highscores_outfit']) { $outfit = ', lookbody, lookfeet, lookhead, looklegs, looktype'; - if(fieldExist('lookaddons', 'players')) { + if($db->hasColumn('players', 'lookaddons')) { $outfit .= ', lookaddons'; $outfit_addons = true; } @@ -108,7 +108,7 @@ if($config['highscores_outfit']) { $offset = $_page * $config['highscores_length']; if($skill <= POT::SKILL_LAST) { // skills - if(fieldExist('skill_fist', 'players')) {// tfs 1.0 + if($db->hasColumn('players', 'skill_fist')) {// tfs 1.0 $skill_ids = array( POT::SKILL_FIST => 'skill_fist', POT::SKILL_CLUB => 'skill_club', @@ -119,10 +119,10 @@ if($skill <= POT::SKILL_LAST) { // skills POT::SKILL_FISH => 'skill_fishing', ); - $skills = $db->query('SELECT accounts.country, players.id,players.name' . $online . ',level,vocation' . $promotion . $outfit . ', ' . $skill_ids[$skill] . ' as value FROM accounts,players WHERE players.id NOT IN (' . implode(', ', $config['highscores_ids_hidden']) . ') AND players.' . $deleted . ' = 0 AND players.group_id < '.$config['highscores_groups_hidden'].' '.$add_sql.' AND players.id > 6 AND accounts.id = players.account_id ORDER BY ' . $skill_ids[$skill] . ' DESC LIMIT 101 OFFSET '.$offset); + $skills = $db->query('SELECT accounts.country, players.id,players.name' . $online . ',level,vocation' . $promotion . $outfit . ', ' . $skill_ids[$skill] . ' as value FROM accounts,players WHERE players.id NOT IN (' . implode(', ', $config['highscores_ids_hidden']) . ') AND players.' . $deleted . ' = 0 AND players.group_id < '.$config['highscores_groups_hidden'].' '.$add_sql.' AND accounts.id = players.account_id ORDER BY ' . $skill_ids[$skill] . ' DESC LIMIT 101 OFFSET '.$offset)->fetchAll(); } else - $skills = $db->query('SELECT accounts.country, players.id,players.name' . $online . ',value,level,vocation' . $promotion . $outfit . ' FROM accounts,players,player_skills WHERE players.id NOT IN (' . implode(', ', $config['highscores_ids_hidden']) . ') AND players.' . $deleted . ' = 0 AND players.group_id < '.$config['highscores_groups_hidden'].' '.$add_sql.' AND players.id > 6 AND players.id = player_skills.player_id AND player_skills.skillid = '.$skill.' AND accounts.id = players.account_id ORDER BY value DESC, count DESC LIMIT 101 OFFSET '.$offset); + $skills = $db->query('SELECT accounts.country, players.id,players.name' . $online . ',value,level,vocation' . $promotion . $outfit . ' FROM accounts,players,player_skills WHERE players.id NOT IN (' . implode(', ', $config['highscores_ids_hidden']) . ') AND players.' . $deleted . ' = 0 AND players.group_id < '.$config['highscores_groups_hidden'].' '.$add_sql.' AND players.id = player_skills.player_id AND player_skills.skillid = '.$skill.' AND accounts.id = players.account_id ORDER BY value DESC, count DESC LIMIT 101 OFFSET '.$offset)->fetchAll(); } else if($skill == 666 && $config['otserv_version'] == TFS_03) // frags { @@ -131,15 +131,15 @@ else if($skill == 666 && $config['otserv_version'] == TFS_03) // frags ' WHERE players.id NOT IN (' . implode(', ', $config['highscores_ids_hidden']) . ') AND players.' . $deleted . ' = 0 AND players.group_id < '.$config['highscores_groups_hidden'].' '.$add_sql.' AND players.id = player_killers.player_id AND accounts.id = players.account_id' . ' GROUP BY `player_id`' . ' ORDER BY value DESC' . - ' LIMIT 101 OFFSET '.$offset); + ' LIMIT 101 OFFSET '.$offset)->fetchAll(); } else { if($skill == POT::SKILL__MAGLEVEL) { - $skills = $db->query('SELECT accounts.country, players.id,players.name' . $online . ',maglevel,level,vocation' . $promotion . $outfit . ' FROM accounts, players WHERE players.id NOT IN (' . implode(', ', $config['highscores_ids_hidden']) . ') AND players.' . $deleted . ' = 0 '.$add_sql.' AND players.group_id < '.$config['highscores_groups_hidden'].' AND players.id > 6 AND accounts.id = players.account_id ORDER BY maglevel DESC, manaspent DESC LIMIT 101 OFFSET '.$offset); + $skills = $db->query('SELECT accounts.country, players.id,players.name' . $online . ',maglevel,level,vocation' . $promotion . $outfit . ' FROM accounts, players WHERE players.id NOT IN (' . implode(', ', $config['highscores_ids_hidden']) . ') AND players.' . $deleted . ' = 0 '.$add_sql.' AND players.group_id < '.$config['highscores_groups_hidden'].' AND accounts.id = players.account_id ORDER BY maglevel DESC, manaspent DESC LIMIT 101 OFFSET '.$offset)->fetchAll(); } else { // level - $skills = $db->query('SELECT accounts.country, players.id,players.name' . $online . ',level,experience,vocation' . $promotion . $outfit . ' FROM accounts, players WHERE players.id NOT IN (' . implode(', ', $config['highscores_ids_hidden']) . ') AND players.' . $deleted . ' = 0 '.$add_sql.' AND players.group_id < '.$config['highscores_groups_hidden'].' AND players.id > 6 AND accounts.id = players.account_id ORDER BY level DESC, experience DESC LIMIT 101 OFFSET '.$offset); + $skills = $db->query('SELECT accounts.country, players.id,players.name' . $online . ',level,experience,vocation' . $promotion . $outfit . ' FROM accounts, players WHERE players.id NOT IN (' . implode(', ', $config['highscores_ids_hidden']) . ') AND players.' . $deleted . ' = 0 '.$add_sql.' AND players.group_id < '.$config['highscores_groups_hidden'].' AND accounts.id = players.account_id ORDER BY level DESC, experience DESC LIMIT 101 OFFSET '.$offset)->fetchAll(); $list = 'experience'; } } @@ -174,13 +174,25 @@ $show_link_to_next_page = false; $i = 0; $online_exist = false; -if(fieldExist('online', 'players')) +if($db->hasColumn('players', 'online')) $online_exist = true; + +$players = array(); +foreach($skills as $player) { + $players[] = $player['id']; +} + +if($db->hasTable('players_online')) { + $query = $db->query('SELECT `player_id`, 1 FROM `players_online` WHERE `player_id` IN (' . implode(', ', $players) . ')')->fetchAll(); + foreach($query as $t) { + $is_online[$t['player_id']] = true; + } +} + foreach($skills as $player) { - if(!$online_exist) { - $query = $db->query('SELECT `player_id` FROM `players_online` WHERE `player_id` = ' . $player['id']); - $player['online'] = $query->rowCount() > 0; + if(isset($is_online)) { + $player['online'] = (isset($is_online[$player['id']]) ? 1 : 0); } if(++$i <= $config['highscores_length']) diff --git a/system/pages/houses.php b/system/pages/houses.php index 1e520442..3bf5e25e 100644 --- a/system/pages/houses.php +++ b/system/pages/houses.php @@ -11,7 +11,7 @@ defined('MYAAC') or die('Direct access not allowed!'); $title = 'Houses'; -if(!fieldExist('name', 'houses')) { +if(!$db->hasColumn('houses', 'name')) { echo 'Houses list is not available on this server.'; return; } @@ -87,7 +87,7 @@ $type = ''; $who = $guild->getName(); else { - $player = $ots->createObject('Player'); + $player = new OTS_Player(); $player->load($houseOwner); if($player->isLoaded()) { @@ -107,7 +107,7 @@ $type = ''; else { echo ' - Here you can see the list of all available houses, flats' . (tableExist('guild', 'houses') ? ' or guildhall' : '') . '. + Here you can see the list of all available houses, flats' . ($db->hasTable('houses', 'guild') ? ' or guildhall' : '') . '. Click on any view button to get more information about a house or adjust the search criteria and start a new search.

'; if(isset($config['lua']['houseCleanOld'])) { @@ -134,7 +134,7 @@ $type = ''; echo '
'; if(isset($_POST['town']) && isset($_POST['state']) && isset($_POST['order']) - && (isset($_POST['type']) || !tableExist('guild', 'houses'))) + && (isset($_POST['type']) || !$db->hasTable('houses', 'guild'))) { $order = $_POST['order']; $orderby = '`name`'; @@ -147,9 +147,9 @@ $type = ''; } $town = 'town'; - if(fieldExist('town_id', 'houses')) + if($db->hasColumn('houses', 'town_id')) $town = 'town_id'; - else if(fieldExist('townid', 'houses')) + else if($db->hasColumn('houses', 'townid')) $town = 'townid'; $whereby = '`' . $town . '` = ' .(int)$_POST['town']; @@ -158,7 +158,7 @@ $type = ''; $whereby .= ' AND `owner` ' . ($state == 'free' ? '' : '!'). '= 0'; $type = isset($_POST['type']) ? $_POST['type'] : NULL; - if($type == 'guildhalls' && !fieldExist('guild', 'houses')) + if($type == 'guildhalls' && !$db->hasColumn('houses', 'guild')) $type = 'all'; if(!empty($type) && $type != 'all') @@ -202,7 +202,7 @@ $type = ''; '; - if(fieldExist('guild', 'houses')) { + if($db->hasColumn('houses', 'guild')) { echo ' '; if(!$newStyle) diff --git a/system/status.php b/system/status.php index f76f54c5..86fae35e 100644 --- a/system/status.php +++ b/system/status.php @@ -103,7 +103,7 @@ function updateStatus() { if($config['online_afk']) { // get amount of players that are currently logged in-game, including disconnected clients (exited) - if(tableExist('players_online')) { // tfs 1.x + if($db->hasTable('players_online')) { // tfs 1.x $query = $db->query('SELECT COUNT(`player_id`) AS `playersTotal` FROM `players_online`;'); } else { diff --git a/system/templates/account.change_comment.html.twig b/system/templates/account.change_comment.html.twig index 95ac37f0..15ac2208 100644 --- a/system/templates/account.change_comment.html.twig +++ b/system/templates/account.change_comment.html.twig @@ -36,7 +36,7 @@ If you do not want to specify a certain field, just leave it blank.

diff --git a/system/templates/characters.html.twig b/system/templates/characters.html.twig index 37e6f7b7..7c29ba41 100644 --- a/system/templates/characters.html.twig +++ b/system/templates/characters.html.twig @@ -315,7 +315,7 @@ {% endif %} {{ hook(constant('HOOK_CHARACTERS_AFTER_SIGNATURE')) }} - {% if hidden != 1 %} + {% if not hidden %} {% set rows = 0 %}

@@ -324,7 +324,7 @@ - {% set realName = account.getCustomField('rlname') %} + {% set realName = account.getRLName() %} {% if realName is not empty %} {% set rows = rows + 1 %} @@ -342,7 +342,7 @@ {% endif %} - {% set realLocation = account.getCustomField('location') %} + {% set realLocation = account.getLocation() %} {% if realLocation is not empty %} {% set rows = rows + 1 %} @@ -354,7 +354,7 @@ {% set rows = rows + 1 %} -
'.$house['size'].' sqm '.$house['rent'].' gold '; - if(fieldExist('guild', 'houses') && $house['guild'] == 1 && $house['owner'] != 0) + if($db->hasColumn('houses', 'guild') && $house['guild'] == 1 && $house['owner'] != 0) { $guild = new OTS_Guild(); $guild->load($house['owner']); @@ -285,7 +285,7 @@ $type = '';
diff --git a/system/pages/lastkills.php b/system/pages/lastkills.php index c746cf0d..c2118cba 100644 --- a/system/pages/lastkills.php +++ b/system/pages/lastkills.php @@ -13,9 +13,9 @@ $title = 'Last Kills'; $players_deaths_count = 0; $players_rows = ''; -if(tableExist('player_killers')) // tfs 0.3 +if($db->hasTable('player_killers')) // tfs 0.3 { - $players_deaths = $db->query('SELECT `player_deaths`.`id`, `player_deaths`.`date`, `player_deaths`.`level`, `players`.`name`' . (fieldExist('world_id', 'players') ? ', `players`.`world_id`' : '') . ' FROM `player_deaths` LEFT JOIN `players` ON `player_deaths`.`player_id` = `players`.`id` ORDER BY `date` DESC LIMIT 0, ' . $config['last_kills_limit']); + $players_deaths = $db->query('SELECT `player_deaths`.`id`, `player_deaths`.`date`, `player_deaths`.`level`, `players`.`name`' . ($db->hasColumn('players', 'world_id') ? ', `players`.`world_id`' : '') . ' FROM `player_deaths` LEFT JOIN `players` ON `player_deaths`.`player_id` = `players`.`id` ORDER BY `date` DESC LIMIT 0, ' . $config['last_kills_limit']); if(!empty($players_deaths)) { foreach($players_deaths as $death) diff --git a/system/pages/lostaccount.php b/system/pages/lostaccount.php index 521ded43..4a0e9e44 100644 --- a/system/pages/lostaccount.php +++ b/system/pages/lostaccount.php @@ -17,7 +17,7 @@ if(!$config['mail_enabled']) return; } -$config_salt_enabled = fieldExist('salt', 'accounts'); +$config_salt_enabled = $db->hasColumn('accounts', 'salt'); $action_type = isset($_REQUEST['action_type']) ? $_REQUEST['action_type'] : ''; if($action == '') { diff --git a/system/pages/online.php b/system/pages/online.php index a8e2871c..8373572c 100644 --- a/system/pages/online.php +++ b/system/pages/online.php @@ -15,7 +15,7 @@ if($config['account_country']) require(SYSTEM . 'countries.conf.php'); $promotion = ''; -if(fieldExist('promotion', 'players')) +if($db->hasColumn('players', 'promotion')) $promotion = '`promotion`,'; $order = isset($_GET['order']) ? $_GET['order'] : 'name'; if(!in_array($order, array('country', 'name', 'level', 'vocation'))) @@ -26,12 +26,12 @@ else if($order == 'vocation') $order = $promotion . 'vocation ASC'; $skull_type = 'skull'; -if(fieldExist('skull_type', 'players')) { +if($db->hasColumn('players', 'skull_type')) { $skull_type = 'skull_type'; } $skull_time = 'skulltime'; -if(fieldExist('skull_time', 'players')) { +if($db->hasColumn('players', 'skull_time')) { $skull_time = 'skull_time'; } @@ -39,7 +39,7 @@ $outfit_addons = false; $outfit = ''; if($config['online_outfit']) { $outfit = ', lookbody, lookfeet, lookhead, looklegs, looktype'; - if(fieldExist('lookaddons', 'players')) { + if($db->hasColumn('players', 'lookaddons')) { $outfit .= ', lookaddons'; $outfit_addons = true; } @@ -51,7 +51,7 @@ if($config['online_vocations']) { $vocs[$id] = 0; } -if(tableExist('players_online')) // tfs 1.0 +if($db->hasTable('players_online')) // tfs 1.0 $playersOnline = $db->query('SELECT `accounts`.`country`, `players`.`name`, `level`, `vocation`' . $outfit . ', `' . $skull_time . '` as `skulltime`, `' . $skull_type . '` as `skull` FROM `accounts`, `players`, `players_online` WHERE `players`.`id` = `players_online`.`player_id` AND `accounts`.`id` = `players`.`account_id` ORDER BY ' . $order); else $playersOnline = $db->query('SELECT `accounts`.`country`, `players`.`name`, `level`, `vocation`' . $outfit . ', ' . $promotion . ' `' . $skull_time . '` as `skulltime`, `' . $skull_type . '` as `skull` FROM `accounts`, `players` WHERE `players`.`online` > 0 AND `accounts`.`id` = `players`.`account_id` ORDER BY ' . $order); @@ -99,14 +99,14 @@ if($players > 0) if($config['online_record']) { $timestamp = false; - if(tableExist('server_record')) { + if($db->hasTable('server_record')) { $query = $db->query( 'SELECT `record`, `timestamp` FROM `server_record` WHERE `world_id` = ' . (int)$config['lua']['worldId'] . ' ORDER BY `record` DESC LIMIT 1'); $timestamp = true; } - else if(tableExist('server_config')) { // tfs 1.0 + else if($db->hasTable('server_config')) { // tfs 1.0 $query = $db->query('SELECT `value` as `record` FROM `server_config` WHERE `config` = ' . $db->quote('players_record')); } else diff --git a/system/pages/polls.php b/system/pages/polls.php index b97919fb..17e5b4d0 100644 --- a/system/pages/polls.php +++ b/system/pages/polls.php @@ -13,7 +13,7 @@ $title = 'Polls'; /* Polls System By Averatec from pervera.pl & otland.net */ -if(!tableExist('z_polls')) +if(!$db->hasTable('z_polls')) $db->query(' CREATE TABLE `z_polls` ( `id` int(11) NOT NULL auto_increment, @@ -26,7 +26,7 @@ CREATE TABLE `z_polls` ( PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;'); -if(!tableExist('z_polls_answers')) +if(!$db->hasTable('z_polls_answers')) $db->query(' CREATE TABLE `z_polls_answers` ( `poll_id` int(11) NOT NULL, @@ -35,7 +35,7 @@ $db->query(' `votes` int(11) NOT NULL DEFAULT 0 ) ENGINE=MyISAM DEFAULT CHARSET=latin1;'); -if(!fieldExist('vote', 'accounts')) +if(!$db->hasColumn('accounts', 'vote')) $db->query('ALTER TABLE `accounts` ADD `vote` INT( 11 ) NOT NULL ;'); function getColorByPercent($percent) diff --git a/system/pages/team.php b/system/pages/team.php index b5af8915..0b9f75d6 100644 --- a/system/pages/team.php +++ b/system/pages/team.php @@ -44,13 +44,13 @@ foreach($groupList as $id => $group) $groupNames = array(); foreach($group_members as $member) { - if(!admin() && $member->getCustomField('hidden') > 0) + if(!admin() && $member->isHidden()) continue; $members_count++; $flag = ''; if($config['account_country']) - $flag = getFlagImage($member->getAccount()->getCustomField('country')); + $flag = getFlagImage($member->getAccount()->getCountry()); $tmp = '
Hide Account: - + {% if player.getCustomField('group_id') > 1 %} (you will be also hidden on the Team page!){% endif %} Account Information
Created:{{ account.getCustomField("created")|date("j F Y, g:i a") }} + {{ account.getCreated()|date("j F Y, g:i a") }} {% if bannedUntil matches '/^\\d+$/' or bannedUntil == '-1' %} [Banished {% if bannedUntil == '-1' %}forever{% else %}until {{ bannedUntil|date('d F Y, h:s') }}{% endif %}] {% else %} diff --git a/tools/signature/mango.php b/tools/signature/mango.php index e7852ec7..c8b82a3a 100644 --- a/tools/signature/mango.php +++ b/tools/signature/mango.php @@ -65,7 +65,7 @@ /** HOUSE **/ $town = 'town'; - if(fieldExist('town_id', 'houses')) + if($db->hasColumn('houses', 'town_id')) $town = 'town_id'; $house = $db->query( 'SELECT `houses`.`name`, `houses`.`' . $town . '` as town FROM `houses` WHERE `houses`.`owner` = '.$player->getId().';' )->fetchAll(); diff --git a/tools/signature/tibian.php b/tools/signature/tibian.php index 0341c6f3..d1855c25 100644 --- a/tools/signature/tibian.php +++ b/tools/signature/tibian.php @@ -101,7 +101,7 @@ imagefilledrectangle($img, 225, 40, 225, 130, $title); //seperator $posy = 50; - if(fieldExist('skill_fist', 'players')) {// tfs 1.0+ + if($db->hasColumn('players', 'skill_fist')) {// tfs 1.0+ $skills_db = $db->query('SELECT `skill_fist`, `skill_club`, `skill_sword`, `skill_axe`, `skill_dist`, `skill_shielding`, `skill_fishing` FROM `players` WHERE `id` = ' . $player->getId())->fetch(); $skill_ids = array(