diff --git a/.htaccess b/.htaccess index 274c5988..95afe203 100644 --- a/.htaccess +++ b/.htaccess @@ -13,6 +13,7 @@ RewriteRule ^guilds/([A-Za-z0-9-_+']+)$ index.php?subtopic=guilds&action=show&gu RewriteRule ^forum/board/([0-9]+)$ index.php?subtopic=forum&action=show_board&id=$1 RewriteRule ^forum/board/([0-9]+)/([0-9]+)$ index.php?subtopic=forum&action=show_board&id=$1&page=$2 RewriteRule ^forum/thread/([0-9]+)$ index.php?subtopic=forum&action=show_thread&id=$1 +RewriteRule ^forum/thread/([0-9]+)/([0-9]+)$ index.php?subtopic=forum&action=show_thread&id=$1&page=$2 RewriteRule ^forum/board/([0-9]+)/([0-9]+)$ index.php?subtopic=forum&action=show_thread&id=$1&page=$2 RewriteRule ^account/manage$ index.php?subtopic=accountmanagement RewriteRule ^account/create$ index.php?subtopic=createaccount diff --git a/admin/templates/clean/template.php b/admin/templates/clean/template.php index dfc6e5c7..0c61e95f 100644 --- a/admin/templates/clean/template.php +++ b/admin/templates/clean/template.php @@ -22,7 +22,7 @@
Version: (Check for updates)
- Logged in as: getName(); ?>
+ Logged in as: getName() : $account_logged->getId()); ?>
Preview | Log out
diff --git a/index.php b/index.php index 36a1451f..9b38b6f7 100644 --- a/index.php +++ b/index.php @@ -1 +1 @@ - * @copyright 2017 MyAAC * @version 0.0.2 * @link http://my-aac.org */ require_once('common.php'); require_once(BASE . 'config.local.php'); if(file_exists(BASE . 'install') && (!isset($config['installed']) || !$config['installed'])) { header('Location: ' . BASE_DIR . '/install/'); die('Setup detected that install/ directory exists. Please visit this url to start MyAAC Installation.
Delete install/ directory if you already installed MyAAC.
Remember to REFRESH this page when you\'re done!'); } // define page visited, so it can be used within events system $page = isset($_REQUEST['subtopic']) ? $_REQUEST['subtopic'] : (isset($_GET['p']) ? $_GET['p'] : ''); if(empty($page) || preg_match('/[^A-z0-9_\-]/', $page)) $page = 'news'; $page = strtolower($page); define('PAGE', $page); $template_place_holders = array(); // event system require_once(SYSTEM . 'events.php'); $events = new Events(); $events->trigger('STARTUP'); require_once(SYSTEM . 'functions.php'); require_once(SYSTEM . 'init.php'); require_once(SYSTEM . 'login.php'); require_once(SYSTEM . 'status.php'); require_once(SYSTEM . 'template.php'); if($config['views_counter']) require_once(SYSTEM . 'counter.php'); if($config['visitors_counter']) { require_once(SYSTEM . 'libs/visitors.php'); $visitors = new Visitors($config['visitors_counter_ttl']); } // page content loading if(!isset($content[0])) $content = ''; $load_it = true; // check if site has been closed if($config['site_closed']) { if(!admin()) { $title = $config['site_closed_title']; $content .= $config['site_closed_message']; $load_it = false; } if(!$logged) { ob_start(); require(SYSTEM . 'pages/accountmanagement.php'); $content .= ob_get_contents(); ob_end_clean(); $load_it = false; } } // backward support for gesior if($config['backward_support']) { define('INITIALIZED', true); $SQL = $db; $layout_header = template_header(); $layout_name = $template_path; $config['access_admin_panel'] = 2; $group_id_of_acc_logged = 0; if($logged && $account_logged) $group_id_of_acc_logged = $account_logged->getGroupId(); $config['site'] = &$config; $config['server'] = &$config['lua']; $config['site']['shop_system'] = $config['gifts_system']; $config['serverinfo_page'] = 1; $config['download_page'] = 1; if($config['forum'] != '') $config['forum_link'] = (strtolower($config['forum']) == 'site' ? internalLayoutLink('forum') : $config['forum']); foreach($status as $key => $value) $config['status']['serverStatus_' . $key] = $value; } if($load_it) { if($config['site_closed'] && admin()) $content .= '

Site is under maintenance (closed mode). Only privileged users can see it.

'; if($config['backward_support']) require(SYSTEM . 'compat_pages.php'); $ignore = false; $file = SYSTEM . 'pages/' . $page . '.php'; if(!@file_exists($file)) { $logged_access = 0; if($logged && $account_logged && $account_logged->isLoaded()) { $logged_access = $account_logged->getAccess(); } $query = $db->query( 'SELECT `title`, `body`, `php`' . ' FROM `' . TABLE_PREFIX . 'pages`' . ' WHERE `name` LIKE ' . $db->quote($page) . ' AND `hidden` != 1 AND `access` <= ' . $db->quote($logged_access)); if($query->rowCount() > 0) // found page { $ignore = true; $query = $query->fetch(); $title = $query['title']; if($query['php'] == '1') // execute it as php code { $tmp = substr($query['body'], 0, 10); if(($pos = strpos($tmp, ' $errno, 'errstr' => $errstr); } set_error_handler('error_handler'); ob_start(); eval($tmp); $content .= ob_get_contents(); ob_end_clean(); restore_error_handler(); if(isset($php_errors[0]) && superAdmin()) { var_dump($php_errors); } } else $content .= $query['body']; // plain html } else { $page = '404'; $file = SYSTEM . 'pages/404.php'; } } ob_start(); if($events->trigger('BEFORE_PAGE')) { if(!$ignore) require($file); } if($config['backward_support'] && isset($main_content)) $content .= $main_content; $content .= ob_get_contents(); ob_end_clean(); $events->trigger('AFTER_PAGE'); } if($config['backward_support']) { $main_content = $content; } $title_full = (isset($title) ? $title . $config['title_separator'] : '') . $config['lua']['serverName']; if(file_exists($template_path . '/index.php')) require($template_path . '/index.php'); else if(file_exists($template_path . '/template.php')) // deprecated require($template_path . '/template.php'); else if($config['backward_support'] && file_exists($template_path . '/layout.php')) { require($template_path . '/layout.php'); } else { // TODO: save more info to log file die('ERROR: Cannot load template.'); } 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" . ''; $events->trigger('FINISH'); ?> \ No newline at end of file + * @copyright 2017 MyAAC * @version 0.0.2 * @link http://my-aac.org */ require_once('common.php'); require_once(BASE . 'config.local.php'); if(file_exists(BASE . 'install') && (!isset($config['installed']) || !$config['installed'])) { header('Location: ' . BASE_DIR . '/install/'); die('Setup detected that install/ directory exists. Please visit this url to start MyAAC Installation.
Delete install/ directory if you already installed MyAAC.
Remember to REFRESH this page when you\'re done!'); } // define page visited, so it can be used within events system $page = isset($_REQUEST['subtopic']) ? $_REQUEST['subtopic'] : (isset($_GET['p']) ? $_GET['p'] : ''); if(empty($page) || preg_match('/[^A-z0-9_\-]/', $page)) $page = 'news'; $page = strtolower($page); define('PAGE', $page); $template_place_holders = array(); // event system require_once(SYSTEM . 'events.php'); $events = new Events(); $events->trigger('STARTUP'); require_once(SYSTEM . 'functions.php'); require_once(SYSTEM . 'init.php'); require_once(SYSTEM . 'login.php'); require_once(SYSTEM . 'status.php'); require_once(SYSTEM . 'template.php'); if($config['views_counter']) require_once(SYSTEM . 'counter.php'); if($config['visitors_counter']) { require_once(SYSTEM . 'libs/visitors.php'); $visitors = new Visitors($config['visitors_counter_ttl']); } // page content loading if(!isset($content[0])) $content = ''; $load_it = true; // check if site has been closed if($config['site_closed']) { if(!admin()) { $title = $config['site_closed_title']; $content .= $config['site_closed_message']; $load_it = false; } if(!$logged) { ob_start(); require(SYSTEM . 'pages/accountmanagement.php'); $content .= ob_get_contents(); ob_end_clean(); $load_it = false; } } // backward support for gesior if($config['backward_support']) { define('INITIALIZED', true); $SQL = $db; $layout_header = template_header(); $layout_name = $template_path; $config['access_admin_panel'] = 2; $group_id_of_acc_logged = 0; if($logged && $account_logged) $group_id_of_acc_logged = $account_logged->getGroupId(); $config['site'] = &$config; $config['server'] = &$config['lua']; $config['site']['shop_system'] = $config['gifts_system']; $config['serverinfo_page'] = 1; $config['download_page'] = 1; if($config['forum'] != '') $config['forum_link'] = (strtolower($config['forum']) == 'site' ? internalLayoutLink('forum') : $config['forum']); foreach($status as $key => $value) $config['status']['serverStatus_' . $key] = $value; } if($load_it) { if($config['site_closed'] && admin()) $content .= '

Site is under maintenance (closed mode). Only privileged users can see it.

'; if($config['backward_support']) require(SYSTEM . 'compat_pages.php'); $ignore = false; $file = SYSTEM . 'pages/' . $page . '.php'; if(!@file_exists($file)) { $logged_access = 0; if($logged && $account_logged && $account_logged->isLoaded()) { $logged_access = $account_logged->getAccess(); } $query = $db->query( 'SELECT `title`, `body`, `php`' . ' FROM `' . TABLE_PREFIX . 'pages`' . ' WHERE `name` LIKE ' . $db->quote($page) . ' AND `hidden` != 1 AND `access` <= ' . $db->quote($logged_access)); if($query->rowCount() > 0) // found page { $ignore = true; $query = $query->fetch(); $title = $query['title']; if($query['php'] == '1') // execute it as php code { $tmp = substr($query['body'], 0, 10); if(($pos = strpos($tmp, ' $errno, 'errstr' => $errstr); } set_error_handler('error_handler'); ob_start(); eval($tmp); $content .= ob_get_contents(); ob_end_clean(); restore_error_handler(); if(isset($php_errors[0]) && superAdmin()) { var_dump($php_errors); } } else $content .= $query['body']; // plain html } else { $page = '404'; $file = SYSTEM . 'pages/404.php'; } } ob_start(); if($events->trigger('BEFORE_PAGE')) { if(!$ignore) require($file); } if($config['backward_support'] && isset($main_content)) $content .= $main_content; $content .= ob_get_contents(); ob_end_clean(); $events->trigger('AFTER_PAGE'); } if($config['backward_support']) { $main_content = $content; if(!isset($title)) $title = ucfirst($page); } $title_full = (isset($title) ? $title . $config['title_separator'] : '') . $config['lua']['serverName']; if(file_exists($template_path . '/index.php')) require($template_path . '/index.php'); else if(file_exists($template_path . '/template.php')) // deprecated require($template_path . '/template.php'); else if($config['backward_support'] && file_exists($template_path . '/layout.php')) { require($template_path . '/layout.php'); } else { // TODO: save more info to log file die('ERROR: Cannot load template.'); } 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" . ''; $events->trigger('FINISH'); ?> \ No newline at end of file diff --git a/install/includes/config.php b/install/includes/config.php new file mode 100644 index 00000000..d2928c93 --- /dev/null +++ b/install/includes/config.php @@ -0,0 +1,36 @@ +' . $config['database_type'] . '', $locale['step_database_error_only_mysql']); + error($locale['step_database_error_only_mysql']); + $error = true; + } + } +?> \ No newline at end of file diff --git a/install/includes/database.php b/install/includes/database.php index 22563323..82a178c7 100644 --- a/install/includes/database.php +++ b/install/includes/database.php @@ -1,5 +1,12 @@ \ No newline at end of file diff --git a/install/includes/functions.php b/install/includes/functions.php index edc40ff0..1e289630 100644 --- a/install/includes/functions.php +++ b/install/includes/functions.php @@ -1,4 +1,5 @@ 'welcome', 2 => 'license', 3 => 'requirements', 4 => 'config', 5 => 'database', 6 => 'finish'); +$steps = array(1 => 'welcome', 2 => 'license', 3 => 'requirements', 4 => 'config', 5 => 'database', 6 => 'admin', 7 => 'finish'); if(!in_array($step, $steps)) // check if step is valid die('ERROR: Unknown step.'); @@ -33,6 +33,8 @@ if($step == 'database') } } +$error = false; + // step include ob_start(); require('steps/' . $step . '.php'); diff --git a/install/steps/admin.php b/install/steps/admin.php new file mode 100644 index 00000000..ccb02539 --- /dev/null +++ b/install/steps/admin.php @@ -0,0 +1,32 @@ + +
+ + + + + + '; +} + ?> +
+ +
+ +
+ ' . $locale['step_admin_' . $value . '_desc'] . ' +
+ +
\ No newline at end of file diff --git a/install/steps/config.php b/install/steps/config.php index 989f90f3..d2519348 100644 --- a/install/steps/config.php +++ b/install/steps/config.php @@ -1,4 +1,6 @@ @@ -132,7 +132,7 @@ Please enter your account name and your password.
diff --git a/install/steps/database.php b/install/steps/database.php index 756f61cf..87dc7f55 100644 --- a/install/steps/database.php +++ b/install/steps/database.php @@ -1,5 +1,7 @@ ' . $config['database_type'] . '', $locale['step_database_error_only_mysql']); - error($locale['step_database_error_only_mysql']); + if(!$error) { + success($locale['step_database_importing']); + require(BASE . 'install/includes/database.php'); + + if(!tableExist('accounts')) { + $locale['step_database_error_table'] = str_replace('$TABLE$', 'accounts', $locale['step_database_error_table']); + error($locale['step_database_error_table']); $error = true; } - else { - success($locale['step_database_importing']); - require(BASE . 'install/includes/database.php'); - - if(!tableExist('accounts')) { - $locale['step_database_error_table'] = str_replace('$TABLE$', 'accounts', $locale['step_database_error_table']); - error($locale['step_database_error_table']); + else if(!tableExist('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')) { + $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')) { + $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']); + } + else if(!$error) { + // import schema + try { + $db->query(file_get_contents(BASE . 'install/includes/schema.sql')); + } + catch(PDOException $error_) { + error($locale['step_database_error_schema'] . ' ' . $error_); $error = true; } - - if(tableExist(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']); - } - else if(!$error) { - // import schema - try { - $db->query(file_get_contents(BASE . 'install/includes/schema.sql')); - } - catch(PDOException $error_) { - error($locale['step_database_error_schema'] . ' ' . $error_); - $error = true; - } - - if(!$error) { - $locale['step_database_success_schema'] = str_replace('$PREFIX$', TABLE_PREFIX, $locale['step_database_success_schema']); - success($locale['step_database_success_schema']); - } - } + if(!$error) { + $locale['step_database_success_schema'] = str_replace('$PREFIX$', TABLE_PREFIX, $locale['step_database_success_schema']); + success($locale['step_database_success_schema']); + } + } + + if(!$error) { if(fieldExist('key', 'accounts')) { if(query("ALTER TABLE `accounts` MODIFY `key` VARCHAR(64) NOT NULL DEFAULT '';")) success($locale['step_database_modifying_field'] . ' accounts.key...'); @@ -127,12 +115,12 @@ if(!$error) { } else if(!fieldExist('web_lastlogin', 'accounts')) { if(query("ALTER TABLE `accounts` ADD `web_lastlogin` INT(11) NOT NULL DEFAULT 0 AFTER `country`;")) - success($locale['step_database_adding_field'] . ' accounts.created...'); + success($locale['step_database_adding_field'] . ' accounts.web_lastlogin...'); } if(!fieldExist('web_flags', 'accounts')) { if(query("ALTER TABLE `accounts` ADD `web_flags` INT(11) NOT NULL DEFAULT 0 AFTER `web_lastlogin`;")) - success($locale['step_database_adding_field'] . ' accounts.country...'); + success($locale['step_database_adding_field'] . ' accounts.web_flags...'); } if(!fieldExist('email_hash', 'accounts')) { @@ -176,7 +164,7 @@ if(!$error) { 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(query("ALTER TABLE `guilds` ADD `description` TEXT NOT NULL DEFAULT '';")) success($locale['step_database_adding_field'] . ' guilds.description...'); @@ -193,12 +181,17 @@ if(!$error) { 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(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(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(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']); @@ -207,7 +200,7 @@ if(!$error) { } } else if(!fieldExist('hidden', 'players')) { - if(query("ALTER TABLE `players` ADD `hidden` VARCHAR( 255 ) TINYINT(1) NOT NULL DEFAULT 0;")) + if(query("ALTER TABLE `players` ADD `hidden` TINYINT(1) NOT NULL DEFAULT 0;")) success($locale['step_database_adding_field'] . ' players.hidden...'); } @@ -215,120 +208,45 @@ if(!$error) { if(query("ALTER TABLE `players` ADD `comment` TEXT NOT NULL DEFAULT '';")) success($locale['step_database_adding_field'] . ' players.comment...'); } - - $account = $_SESSION['var_account']; - $password = $_SESSION['var_password']; - - $config_salt_enabled = fieldExist('salt', 'accounts'); - if($config_salt_enabled) - { - $salt = generateRandomString(10, false, true, true); - $password = $salt . $password; + } + + if(!$error && (!isset($_SESSION['saved']))) { + $content .= '$config[\'installed\'] = true;'; + $content .= PHP_EOL; + if(strpos($_SERVER['SERVER_SOFTWARE'], 'Apache') !== false) { + $content .= '$config[\'friendly_urls\'] = true;'; + $content .= PHP_EOL; } - - $account_db = new OTS_Account(); - $account_db->load(1); - if($account_db->isLoaded()) { - $account_db->setName('dummy_account'); - $account_db->setPassword('for sample characters. ' . generateRandomString(10)); - $account_db->save(); + + $content .= '$config[\'mail_enabled\'] = true;'; + $content .= PHP_EOL; + if(!check_mail($_SESSION['var_mail_admin'])) { + error($locale['step_config_mail_admin_error']); + $error = true; + } + if(!check_mail($_SESSION['var_mail_address'])) { + error($locale['step_config_mail_address_error']); + $error = true; + } + + $content .= '$config[\'client_download\'] = \'http://clients.halfaway.net/windows.php?tibia=\'. $config[\'client\'];'; + $content .= PHP_EOL; + $content .= '$config[\'client_download_linux\'] = \'http://clients.halfaway.net/linux.php?tibia=\'. $config[\'client\'];'; + $content .= PHP_EOL; + $content .= '// place for your configuration directives, so you can later easily update myaac'; + $content .= PHP_EOL; + $content .= "?>"; + $file = fopen(BASE . 'config.local.php', 'a+'); + if($file) { + if(!$error) { + fwrite($file, $content); + $_SESSION['saved'] = true; + } } else { - $new_account = new OTS_Account(); - $new_account->create('dummy_account', 1); - $account_db->setPassword('for sample characters. ' . generateRandomString(10)); - } - - - $account_db = new OTS_Account(); - $account_db->find($account); - if($account_db->isLoaded()) { - if($config_salt_enabled) - $account_db->setSalt($salt); - - $account_db->setPassword(encrypt($password)); - $account_db->setEMail($_SESSION['var_mail_admin']); - $account_db->save(); - $account_db->setCustomField('web_flags', 3); - $account_db->setCustomField('country', 'us'); - - $_SESSION['account'] = $account_db->getId(); - } - else { - $new_account = $ots->createObject('Account'); - $new_account->create($account); - - if($config_salt_enabled) - $new_account->setSalt($salt); - - $new_account->setPassword(encrypt($password)); - $new_account->setEMail($_SESSION['var_mail_admin']); - $new_account->unblock(); - $new_account->save(); - $new_account->setCustomField('created', time()); - $new_account->setCustomField('web_flags', 3); - $new_account->setCustomField('country', 'us'); - $new_account->logAction('Account created.'); - - $_SESSION['account'] = $new_account->getId(); - } - - success($locale['step_database_created_account']); - $_SESSION['password'] = encrypt($password); - $_SESSION['remember_me'] = true; - - $deleted = 'deleted'; - if(fieldExist('deletion', 'players')) - $deleted = 'deletion'; - - $query = $db->query('SELECT `id` FROM `players` WHERE `name` = ' . $db->quote('Rook Sample') . ' OR `name` = ' . $db->quote('Sorcerer Sample') . ' OR `name` = ' . $db->quote('Druid Sample') . ' OR `name` = ' . $db->quote('Paladin Sample') . ' OR `name` = ' . $db->quote('Knight Sample')); - if($query->rowCount() == 0) { - if(query("INSERT INTO `players` (`id`, `name`, `group_id`, `account_id`, `level`, `vocation`, `health`, `healthmax`, `experience`, `lookbody`, `lookfeet`, `lookhead`, `looklegs`, `looktype`, `lookaddons`, `maglevel`, `mana`, `manamax`, `manaspent`, `soul`, `town_id`, `posx`, `posy`, `posz`, `conditions`, `cap`, `sex`, `lastlogin`, `lastip`, `save`, `skull`, `skulltime`, `lastlogout`, `blessings`, `balance`, `stamina`, `$deleted`, `created`, `hidden`, `comment`) VALUES - (null, 'Rook Sample', 1, 1, 8, 0, 185, 185, 4200, 118, 114, 38, 57, 130, 0, 0, 35, 35, 0, 100, 11, 2200, 1298, 7, '', 470, 1, 1255179613, 2453925456, 1, 0, 0, 1255179614, 0, 0, 151200000, 1, UNIX_TIMESTAMP(), 1, ''), - (null, 'Sorcerer Sample', 1, 1, 8, 1, 185, 185, 4200, 118, 114, 38, 57, 130, 0, 0, 35, 35, 0, 100, 11, 2200, 1298, 7, '', 470, 1, 1255179571, 2453925456, 1, 0, 0, 1255179612, 0, 0, 151200000, 1, UNIX_TIMESTAMP(), 1, ''), - (null, 'Druid Sample', 1, 1, 8, 2, 185, 185, 4200, 118, 114, 38, 57, 130, 0, 0, 35, 35, 0, 100, 11, 2200, 1298, 7, '', 470, 1, 1255179655, 2453925456, 1, 0, 0, 1255179658, 0, 0, 151200000, 1, UNIX_TIMESTAMP(), 1, ''), - (null, 'Paladin Sample', 1, 1, 8, 3, 185, 185, 4200, 118, 114, 38, 57, 129, 0, 0, 35, 35, 0, 100, 11, 2200, 1298, 7, '', 470, 1, 1255179854, 2453925456, 1, 0, 0, 1255179858, 0, 0, 151200000, 1, UNIX_TIMESTAMP(), 1, ''), - (null, 'Knight Sample', 1, 1, 8, 4, 185, 185, 4200, 118, 114, 38, 57, 131, 0, 0, 35, 35, 0, 100, 11, 2200, 1298, 7, '', 470, 1, 1255179620, 2453925456, 1, 0, 0, 1255179654, 0, 0, 151200000, 1, UNIX_TIMESTAMP(), 1, '');")) - success($locale['step_database_imported_players']); - } - - if(!$error && !isset($_SESSION['saved'])) { - $content .= '$config[\'installed\'] = true;'; - $content .= PHP_EOL; - if(strpos($_SERVER['SERVER_SOFTWARE'], 'Apache') !== false) { - $content .= '$config[\'friendly_urls\'] = true;'; - $content .= PHP_EOL; - } - - $content .= '$config[\'mail_enabled\'] = true;'; - $content .= PHP_EOL; - if(!check_mail($_SESSION['var_mail_admin'])) { - error($locale['step_config_mail_admin_error']); - $error = true; - } - if(!check_mail($_SESSION['var_mail_address'])) { - error($locale['step_config_mail_address_error']); - $error = true; - } - - $content .= '$config[\'client_download\'] = \'http://clients.halfaway.net/windows.php?tibia=\'. $config[\'client\'];'; - $content .= PHP_EOL; - $content .= '$config[\'client_download_linux\'] = \'http://clients.halfaway.net/linux.php?tibia=\'. $config[\'client\'];'; - $content .= PHP_EOL; - - $content .= "?>"; - $file = fopen(BASE . 'config.local.php', 'a+'); - if($file) { - if(!$error) { - fwrite($file, $content); - $_SESSION['saved'] = true; - } - } - else { - $locale['step_database_error_file'] = str_replace('$FILE$', '' . BASE . 'config.local.php', $locale['step_database_error_file']); - warning($locale['step_database_error_file'] . '
- '); - } + $locale['step_database_error_file'] = str_replace('$FILE$', '' . BASE . 'config.local.php', $locale['step_database_error_file']); + warning($locale['step_database_error_file'] . '
+ '); } } } @@ -336,7 +254,7 @@ if(!$error) { ?>
- +
\ No newline at end of file diff --git a/install/steps/finish.php b/install/steps/finish.php index 01b82686..12ee5fd1 100644 --- a/install/steps/finish.php +++ b/install/steps/finish.php @@ -1,20 +1,152 @@ -

+defined('MYAAC') or die('Direct access not allowed!'); -' . $locale['already_installed'] . '

'; } +else { + require(SYSTEM . 'init.php'); + //require(BASE . 'install/includes/config.php'); + if(!$error) { + //require(BASE . 'install/includes/database.php'); -foreach($_SESSION as $key => $value) { - if(strpos($key, 'var_') !== false) - unset($_SESSION[$key]); + if(USE_ACCOUNT_NAME) + $account = isset($_SESSION['var_account']) ? $_SESSION['var_account'] : NULL; + else + $account_id = isset($_SESSION['var_account_id']) ? $_SESSION['var_account_id'] : NULL; + + $password = $_SESSION['var_password']; + + $config_salt_enabled = fieldExist('salt', 'accounts'); + if($config_salt_enabled) + { + $salt = generateRandomString(10, false, true, true); + $password = $salt . $password; + } + + $account_db = new OTS_Account(); + $account_db->load(1); + if($account_db->isLoaded()) { + if(USE_ACCOUNT_NAME) + $account_db->setName('dummy_account'); + + $account_db->setPassword('for sample characters. ' . generateRandomString(10)); + $account_db->save(); + } + else { + $new_account = new OTS_Account(); + if(USE_ACCOUNT_NAME) + $new_account->create('dummy_account', 1); + else + $new_account->create(NULL, 1); + + $new_account->setPassword('for sample characters. ' . generateRandomString(10)); + $new_account->save(); + } + + $account_db = new OTS_Account(); + if(isset($account)) + $account_db->find($account); + else + $account_db->load($account_id); + + $player_db = $ots->createObject('Player'); + $player_db->find('Admin'); + $groups = new OTS_Groups_List(); + if(!$player_db->isLoaded()) + { + $player = $ots->createObject('Player'); + $player->setName('Admin'); + + $player->setGroupId($groups->getHighestId()); + } + + if($account_db->isLoaded()) { + if($config_salt_enabled) + $account_db->setSalt($salt); + + $account_db->setPassword(encrypt($password)); + $account_db->setEMail($_SESSION['var_mail_admin']); + $account_db->save(); + $account_db->setCustomField('web_flags', 3); + $account_db->setCustomField('country', 'us'); + if(fieldExist('group_id', 'accounts')) + $account_db->setCustomField('group_id', $groups->getHighestId()); + + if(!$player_db->isLoaded()) + $player->setAccountId($account_db->getId()); + else + $player_db->setAccountId($account_db->getId()); + + $_SESSION['account'] = $account_db->getId(); + } + else { + $new_account = $ots->createObject('Account'); + $new_account->create($account); + + if($config_salt_enabled) + $new_account->setSalt($salt); + + $new_account->setPassword(encrypt($password)); + $new_account->setEMail($_SESSION['var_mail_admin']); + $new_account->unblock(); + $new_account->save(); + $new_account->setCustomField('created', time()); + $new_account->setCustomField('web_flags', 3); + $new_account->setCustomField('country', 'us'); + if(fieldExist('group_id', 'accounts')) + $new_account->setCustomField('group_id', $groups->getHighestId()); + $new_account->logAction('Account created.'); + + if(!$player_db->isLoaded()) + $player->setAccountId($new_account->getId()); + else + $player_db->setAccountId($new_account->getId()); + + $_SESSION['account'] = $new_account->getId(); + } + + if($player_db->isLoaded()) + $player_db->save(); + else + $player->save(); + + success($locale['step_database_created_account']); + $_SESSION['password'] = encrypt($password); + $_SESSION['remember_me'] = true; + + $deleted = 'deleted'; + if(fieldExist('deletion', 'players')) + $deleted = 'deletion'; + + $query = $db->query('SELECT `id` FROM `players` WHERE `name` = ' . $db->quote('Rook Sample') . ' OR `name` = ' . $db->quote('Sorcerer Sample') . ' OR `name` = ' . $db->quote('Druid Sample') . ' OR `name` = ' . $db->quote('Paladin Sample') . ' OR `name` = ' . $db->quote('Knight Sample')); + if($query->rowCount() == 0) { + if(query("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 + (null, 'Rook Sample', 1, 1, 8, 0, 185, 185, 4200, 118, 114, 38, 57, 130, 0, 35, 35, 0, 100, 11, 2200, 1298, 7, '', 470, 1, 1255179613, 2453925456, 1, 1255179614, 0, 1, UNIX_TIMESTAMP(), 1, ''), + (null, 'Sorcerer Sample', 1, 1, 8, 1, 185, 185, 4200, 118, 114, 38, 57, 130, 0, 35, 35, 0, 100, 11, 2200, 1298, 7, '', 470, 1, 1255179571, 2453925456, 1, 1255179612, 0, 1, UNIX_TIMESTAMP(), 1, ''), + (null, 'Druid Sample', 1, 1, 8, 2, 185, 185, 4200, 118, 114, 38, 57, 130, 0, 35, 35, 0, 100, 11, 2200, 1298, 7, '', 470, 1, 1255179655, 2453925456, 1, 1255179658, 0, 1, UNIX_TIMESTAMP(), 1, ''), + (null, 'Paladin Sample', 1, 1, 8, 3, 185, 185, 4200, 118, 114, 38, 57, 129, 0, 35, 35, 0, 100, 11, 2200, 1298, 7, '', 470, 1, 1255179854, 2453925456, 1, 1255179858, 0, 1, UNIX_TIMESTAMP(), 1, ''), + (null, 'Knight Sample', 1, 1, 8, 4, 185, 185, 4200, 118, 114, 38, 57, 131, 0, 35, 35, 0, 100, 11, 2200, 1298, 7, '', 470, 1, 1255179620, 2453925456, 1, 1255179654, 0, 1, UNIX_TIMESTAMP(), 1, '');")) + success($locale['step_database_imported_players']); + } + + $locale['step_finish_desc'] = str_replace('$ADMIN_PANEL$', generateLink(ADMIN_URL, $locale['step_finish_admin_panel'], true), $locale['step_finish_desc']); + $locale['step_finish_desc'] = str_replace('$HOMEPAGE$', generateLink(BASE_URL, $locale['step_finish_homepage'], true), $locale['step_finish_desc']); + $locale['step_finish_desc'] = str_replace('$LINK$', generateLink('http://my-aac.org', 'http://my-aac.org', true), $locale['step_finish_desc']); + ?> +

+ $value) { + if(strpos($key, 'var_') !== false) + unset($_SESSION[$key]); + } + unset($_SESSION['saved']); + } } -unset($_SESSION['saved']); ?> \ No newline at end of file diff --git a/install/steps/license.php b/install/steps/license.php index 6a970fec..0874b89a 100644 --- a/install/steps/license.php +++ b/install/steps/license.php @@ -1,3 +1,6 @@ +
diff --git a/install/steps/requirements.php b/install/steps/requirements.php index a38c691e..3669b1c9 100644 --- a/install/steps/requirements.php +++ b/install/steps/requirements.php @@ -1,4 +1,6 @@ ' . $locale['already_installed'] . '

'; -else -{ +} +else { + unset($_SESSION['saved']); ?> diff --git a/system/database.php b/system/database.php index 6cd17cbb..24408392 100644 --- a/system/database.php +++ b/system/database.php @@ -12,7 +12,7 @@ defined('MYAAC') or die('Direct access not allowed!'); $config['database_name'] = $config['lua']['sqlDatabase']; $config['database_encryption'] = $config['lua']['encryptionType']; - if(!isset($encryptionType)/* || empty($encryptionType)*/) // before 0.3.6 + if(!isset($config['database_encryption']) || empty($config['database_encryption'])) // before 0.3.6 $config['database_encryption'] = $config['lua']['passwordType']; } else if(isset($config['lua']['mysqlHost'])) // tfs 0.2/1.0 @@ -65,7 +65,7 @@ defined('MYAAC') or die('Direct access not allowed!'); ); } catch(PDOException $error) { - if($cache->enabled()) { + if(isset($cache) && $cache->enabled()) { $cache->delete('config_lua'); } die('ERROR: Cannot connect to MySQL database.
' . diff --git a/system/functions.php b/system/functions.php index eb02ba6a..bc2bf349 100644 --- a/system/functions.php +++ b/system/functions.php @@ -444,6 +444,43 @@ function check_name($name, &$error = '') return preg_match("/[A-z ']{1,25}/", $name); } +/** + * Validate account id + * Id lenght must be 6-10 chars + * + * @param string $name Account name to check + * @param string $error Error description will be placed here + * @return bool Is account name valid? + */ +function check_account_id($id, &$error = '') +{ + if(!isset($id[0])) + { + $error = 'Please enter an account.'; + return false; + } + + if(!check_number($id)) { + $error = 'Invalid account name format. Use only numbers 0-9.'; + return false; + } + + $length = strlen($id); + if($length < 6) + { + $error = 'Account is too short (min. 6 chars).'; + return false; + } + + if($length > 10) + { + $error = 'Account is too long (max. 10 chars).'; + return false; + } + + return true; +} + /** * Validate account name * Name lenght must be 3-32 chars diff --git a/system/init.php b/system/init.php index 41df7aad..52a92c06 100644 --- a/system/init.php +++ b/system/init.php @@ -72,6 +72,10 @@ unset($tmp); if(isset($config['lua']['servername'])) $config['lua']['serverName'] = $config['lua']['servername']; + +if(isset($config['lua']['houserentperiod'])) + $config['lua']['houseRentPeriod'] = $config['lua']['houserentperiod']; + // localize data/ directory if(isset($config['lua']['dataDirectory'][0])) { @@ -111,6 +115,7 @@ require_once(SYSTEM . 'libs/pot/OTS.php'); $ots = POT::getInstance(); require_once(SYSTEM . 'database.php'); +define('USE_ACCOUNT_NAME', fieldExist('name', 'accounts')); // load vocation names $tmp = ''; if($cache->enabled() && $cache->fetch('vocations', $tmp)) { diff --git a/system/libs/pot/OTS_Account.php b/system/libs/pot/OTS_Account.php index dc8c8617..a0477a73 100644 --- a/system/libs/pot/OTS_Account.php +++ b/system/libs/pot/OTS_Account.php @@ -134,10 +134,13 @@ class OTS_Account extends OTS_Row_DAO implements IteratorAggregate, Countable * @throws PDOException On PDO operation error. * @deprecated 0.1.5 Use createNamed(). */ - public function create($name, $id = NULL) + public function create($name = NULL, $id = NULL) { // saves blank account info - $this->db->query('INSERT INTO `accounts` (' . (isset($id) ? '`id`,' : '') . '`name`, `password`, `email`, `created`) VALUES (' . (isset($id) ? $id . ',' : '') . $this->db->quote($name) . ', \'\', \'\',' . time() . ')'); + $this->db->query('INSERT INTO `accounts` (' . (isset($id) ? '`id`,' : '') . (isset($name) ? '`name`,' : '') . '`password`, `email`, `created`) VALUES (' . (isset($id) ? $id . ',' : '') . (isset($name) ? $this->db->quote($name) . ',' : '') . ' \'\', \'\',' . time() . ')'); + + if(isset($name)) + $this->data['name'] = $name; $this->data['id'] = $this->db->lastInsertId(); return $this->data['id']; @@ -167,7 +170,7 @@ class OTS_Account extends OTS_Row_DAO implements IteratorAggregate, Countable public function load($id) { // SELECT query on database - $this->data = $this->db->query('SELECT ' . $this->db->fieldName('id') . ', ' . $this->db->fieldName('name') . ', ' . $this->db->fieldName('password') . ', ' . $this->db->fieldName('email') . ', ' . $this->db->fieldName('blocked') . ', ' . $this->db->fieldName('rlname') . ', ' . $this->db->fieldName('location') . ', ' . $this->db->fieldName('web_flags') . ', ' . $this->db->fieldName('premdays') . ', ' . $this->db->fieldName('lastday') . ', ' . $this->db->fieldName('created') . ' FROM ' . $this->db->tableName('accounts') . ' WHERE ' . $this->db->fieldName('id') . ' = ' . (int) $id)->fetch(); + $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') . ' as `lastday`,' : '')) . $this->db->fieldName('created') . ' FROM ' . $this->db->tableName('accounts') . ' WHERE ' . $this->db->fieldName('id') . ' = ' . (int) $id)->fetch(); } /** @@ -184,6 +187,9 @@ class OTS_Account extends OTS_Row_DAO implements IteratorAggregate, Countable */ public function find($name) { + if(check_number($name)) + $this->load((int)$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(); @@ -246,8 +252,12 @@ class OTS_Account extends OTS_Row_DAO implements IteratorAggregate, Countable throw new E_OTS_NotLoaded(); } + $lastday = 'lastday'; + if(fieldExist('premend', 'accounts')) + $lastday = 'premend'; + // UPDATE query on database - $this->db->query('UPDATE `accounts` SET `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'] . ', `premdays` = ' . (int) $this->data['premdays'] . ', `lastday` = ' . (int) $this->data['lastday'] . ' WHERE `id` = ' . $this->data['id']); + $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'] . ',' : '') . '`' . $lastday . '` = ' . (int) $this->data['lastday'] . ' WHERE `id` = ' . $this->data['id']); } /** @@ -303,12 +313,13 @@ class OTS_Account extends OTS_Row_DAO implements IteratorAggregate, Countable public function getPremDays() { - if( !isset($this->data['premdays']) || !isset($this->data['lastday']) ) + if( !isset($this->data['lastday']) ) { throw new E_OTS_NotLoaded(); } - return $this->data['premdays'] - (date("z", time()) + (365 * (date("Y", time()) - date("Y", $this->data['lastday']))) - date("z", $this->data['lastday'])); + return round(($this->data['lastday'] - time()) / (24 * 60 * 60), 3); + //return $this->data['premdays'] - (date("z", time()) + (365 * (date("Y", time()) - date("Y", $this->data['lastday']))) - date("z", $this->data['lastday'])); } public function getLastLogin() @@ -325,7 +336,8 @@ class OTS_Account extends OTS_Row_DAO implements IteratorAggregate, Countable { global $config; if(isset($config['lua']['freePremium']) && getBoolean($config['lua']['freePremium'])) return true; - return ($this->data['premdays'] - (date("z", time()) + (365 * (date("Y", time()) - date("Y", $this->data['lastday']))) - date("z", $this->data['lastday'])) > 0); + return $this->data['lastday'] > time(); + //return ($this->data['premdays'] - (date("z", time()) + (365 * (date("Y", time()) - date("Y", $this->data['lastday']))) - date("z", $this->data['lastday'])) > 0); } public function getCreated() diff --git a/system/libs/pot/OTS_Group.php b/system/libs/pot/OTS_Group.php index 4e66551a..45041978 100644 --- a/system/libs/pot/OTS_Group.php +++ b/system/libs/pot/OTS_Group.php @@ -490,7 +490,10 @@ class OTS_Group extends OTS_Row_DAO implements IteratorAggregate, Countable // creates filter $filter = new OTS_SQLFilter(); $filter->compareField('group_id', (int) $this->data['id']); - $filter->compareField('deleted', 0); + if(fieldExist('deletion', 'players')) + $filter->compareField('deletion', 0); + else + $filter->compareField('deleted', 0); // creates list object $list = new OTS_Players_List(); diff --git a/system/libs/pot/OTS_Groups_List.php b/system/libs/pot/OTS_Groups_List.php index 60cbadd8..b9829df0 100644 --- a/system/libs/pot/OTS_Groups_List.php +++ b/system/libs/pot/OTS_Groups_List.php @@ -31,9 +31,9 @@ class OTS_Groups_List implements IteratorAggregate, Countable */ public function __construct($file = '') { - global $cache; - if(tableExist('groups')) { // read groups from database + global $db; + foreach($db->query('SELECT `id`, `name`, `access` FROM `groups`;') as $group) { $info = array(); @@ -52,6 +52,8 @@ class OTS_Groups_List implements IteratorAggregate, Countable $file = $config['data_path'] . 'XML/groups.xml'; } + global $cache; + $data = array(); if($cache->enabled()) { @@ -135,6 +137,17 @@ class OTS_Groups_List implements IteratorAggregate, Countable throw new OutOfBoundsException(); } + public function getHighestId() + { + $group_id = 0; + foreach($this->groups as $id => $group) { + if($id > $group_id) + $group_id = $id; + } + + return $group_id; + } + /** * Returns string representation of object. * diff --git a/system/libs/pot/OTS_Player.php b/system/libs/pot/OTS_Player.php index 855213f2..7c7a6f75 100644 --- a/system/libs/pot/OTS_Player.php +++ b/system/libs/pot/OTS_Player.php @@ -117,16 +117,11 @@ class OTS_Player extends OTS_Row_DAO { $loss = ''; if(fieldExist('loss_experience', 'players')) { - $loss = ', `loss_experience`, `loss_mana`, `loss_skills`, `loss_items`'; + $loss = ', `loss_experience`, `loss_mana`, `loss_skills`, `loss_items`, `loss_containers`'; } $guild_info = ''; - if(fieldExist('guildnick', 'players')) { - $guild_info = ', `guildnick`, `rank_id`'; - } - - $guild_info = ''; - if(fieldExist('guildnick', 'players')) { + if(!tableExist('guild_members') && fieldExist('guildnick', 'players')) { $guild_info = ', `guildnick`, `rank_id`'; } @@ -141,7 +136,13 @@ class OTS_Player extends OTS_Row_DAO } // 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`, `lookaddons`, `posx`, `posy`, `posz`, `cap`, `lastlogin`, `lastlogout`, `lastip`, `save`, `conditions`, `' . $skull_time . '` as `skulltime`, `' . $skull_type . '` as `skull`' . $guild_info . ', `town_id`' . $loss . ', `balance`, `blessings`, `stamina`' . (fieldExist('world_id', 'players') ? ', `world_id`' : '') . (fieldExist('online', 'players') ? ', `online`, `' : '') . ', `' . (fieldExist('deletion', 'players') ? 'deletion' : 'deleted') . '`' . (fieldExist('promotion', 'players') ? ', `promotion`' : '') . (fieldExist('marriage', 'players') ? ', `marriage`' : '') . ', `comment`, `created`, `hidden` FROM `players` WHERE `id` = ' . (int) $id)->fetch(); + $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`, `' . $skull_time . '` as `skulltime`, `' . $skull_type . '` as `skull`' . $guild_info . ', `town_id`' . $loss . ', `balance`' . (fieldExist('blessings', 'players') ? ', `blessings`' : '') . (fieldExist('direction', 'players') ? ', `direction`' : '') . (fieldExist('stamina', 'players') ? ', `stamina`' : '') . (fieldExist('world_id', 'players') ? ', `world_id`' : '') . (fieldExist('online', 'players') ? ', `online`' : '') . ', `' . (fieldExist('deletion', 'players') ? 'deletion' : 'deleted') . '`' . (fieldExist('promotion', 'players') ? ', `promotion`' : '') . (fieldExist('marriage', 'players') ? ', `marriage`' : '') . ', `comment`, `created`, `hidden` FROM `players` WHERE `id` = ' . (int)$id)->fetch(); + + if(!isset($this->data['guildnick']) || $this->data['guildnick']) + $this->data['guildnick'] = ''; + + if(!isset($this->data['rank_id']) || $this->data['rank_id'] == NULL) + $this->data['rank_id'] = 0; if(isset($this->data['promotion'])) { if((int)$this->data['promotion'] > 0) @@ -239,16 +240,49 @@ class OTS_Player extends OTS_Row_DAO $skull_time = 'skull_time'; } + if(!isset($this->data['loss_experience'])) + $this->data['loss_experience'] = 100; + + if(!isset($this->data['loss_mana'])) + $this->data['loss_mana'] = 100; + + if(!isset($this->data['loss_skills'])) + $this->data['loss_skills'] = 100; + + if(!isset($this->data['loss_items'])) + $this->data['loss_items'] = 10; + + if(!isset($this->data['loss_containers'])) + $this->data['loss_containers'] = 100; + + if(!isset($this->data['guildnick'])) + $this->data['guildnick'] = ''; + + if(!isset($this->data['rank_id'])) + $this->data['rank_id'] = 0; + + if(!isset($this->data['promotion'])) + $this->data['promotion'] = 0; + + if(!isset($this->data['direction'])) + $this->data['direction'] = 0; + + if(!isset($this->data['conditions'])) + $this->data['conditions'] = ''; + + if(!isset($this->data['town_id'])) + $this->data['town_id'] = 1; + // updates existing player if( isset($this->data['id']) ) { $loss = ''; if(fieldExist('loss_experience', 'players')) { - $loss = ', `loss_experience` = ' . $this->data['loss_experience'] . ', `loss_mana` = ' . $this->data['loss_mana'] . ', `loss_skills` = ' . $this->data['loss_skills'] . ', `loss_items` = ' . $this->data['loss_items']; + $loss = ', `loss_experience` = ' . $this->data['loss_experience'] . ', `loss_mana` = ' . $this->data['loss_mana'] . ', `loss_skills` = ' . $this->data['loss_skills'] . ', `loss_items` = ' . $this->data['loss_items'] . ', `loss_containers` = ' . $this->data['loss_containers']; } $guild_info = ''; - if(fieldExist('guildnick', 'players')) { + if(!tableExist('guild_members') && fieldExist('guildnick', 'players')) { $guild_info = ', `guildnick` = ' . $this->db->quote($this->data['guildnick']) . ', ' . $this->db->fieldName('rank_id') . ' = ' . $this->data['rank_id']; } @@ -256,9 +290,24 @@ class OTS_Player extends OTS_Row_DAO if(fieldExist('direction', 'players')) { $direction = ', `direction` = ' . $this->db->quote($this->data['direction']); } - + + $blessings = ''; + if(fieldExist('blessings', 'players')) { + $blessings = ', `blessings` = ' . $this->db->quote($this->data['blessings']); + } + + $stamina = ''; + if(fieldExist('stamina', 'players')) { + $stamina = ', `stamina` = ' . $this->db->quote($this->data['stamina']); + } + + $lookaddons = ''; + if(fieldExist('lookaddons', 'players')) { + $lookaddons = ', `lookaddons` = ' . $this->db->quote($this->data['lookaddons']); + } + // UPDATE query on database - $this->db->query('UPDATE ' . $this->db->tableName('players') . ' SET ' . $this->db->fieldName('name') . ' = ' . $this->db->quote($this->data['name']) . ', ' . $this->db->fieldName('account_id') . ' = ' . $this->data['account_id'] . ', ' . $this->db->fieldName('group_id') . ' = ' . $this->data['group_id'] . ', ' . $this->db->fieldName('sex') . ' = ' . $this->data['sex'] . ', ' . $this->db->fieldName('vocation') . ' = ' . $this->data['vocation'] . ', ' . $this->db->fieldName('experience') . ' = ' . $this->data['experience'] . ', ' . $this->db->fieldName('level') . ' = ' . $this->data['level'] . ', ' . $this->db->fieldName('maglevel') . ' = ' . $this->data['maglevel'] . ', ' . $this->db->fieldName('health') . ' = ' . $this->data['health'] . ', ' . $this->db->fieldName('healthmax') . ' = ' . $this->data['healthmax'] . ', ' . $this->db->fieldName('mana') . ' = ' . $this->data['mana'] . ', ' . $this->db->fieldName('manamax') . ' = ' . $this->data['manamax'] . ', ' . $this->db->fieldName('manaspent') . ' = ' . $this->data['manaspent'] . ', ' . $this->db->fieldName('soul') . ' = ' . $this->data['soul'] . ', ' . $this->db->fieldName('lookbody') . ' = ' . $this->data['lookbody'] . ', ' . $this->db->fieldName('lookfeet') . ' = ' . $this->data['lookfeet'] . ', ' . $this->db->fieldName('lookhead') . ' = ' . $this->data['lookhead'] . ', ' . $this->db->fieldName('looklegs') . ' = ' . $this->data['looklegs'] . ', ' . $this->db->fieldName('looktype') . ' = ' . $this->data['looktype'] . ', ' . $this->db->fieldName('lookaddons') . ' = ' . $this->data['lookaddons'] . ', ' . $this->db->fieldName('posx') . ' = ' . $this->data['posx'] . ', ' . $this->db->fieldName('posy') . ' = ' . $this->data['posy'] . ', ' . $this->db->fieldName('posz') . ' = ' . $this->data['posz'] . ', ' . $this->db->fieldName('cap') . ' = ' . $this->data['cap'] . ', ' . $this->db->fieldName('lastlogin') . ' = ' . $this->data['lastlogin'] . ', ' . $this->db->fieldName('lastlogout') . ' = ' . $this->data['lastlogout'] . ', ' . $this->db->fieldName('lastip') . ' = ' . $this->data['lastip'] . ', ' . $this->db->fieldName('save') . ' = ' . (int) $this->data['save'] . ', ' . $this->db->fieldName('conditions') . ' = ' . $this->db->quote($this->data['conditions']) . ', `' . $skull_time . '` = ' . $this->data['skulltime'] . ', `' . $skull_type . '` = ' . (int) $this->data['skull'] . $guild_info . ', ' . $this->db->fieldName('town_id') . ' = ' . $this->data['town_id'] . $loss . ', ' . $this->db->fieldName('balance') . ' = ' . $this->data['balance'] . ', ' . $this->db->fieldName('blessings') . ' = ' . $this->data['blessings'] . ', ' . $this->db->fieldName('stamina') . ' = ' . $this->data['stamina'] . $direction . ' WHERE ' . $this->db->fieldName('id') . ' = ' . $this->data['id']); + $this->db->query('UPDATE ' . $this->db->tableName('players') . ' SET ' . $this->db->fieldName('name') . ' = ' . $this->db->quote($this->data['name']) . ', ' . $this->db->fieldName('account_id') . ' = ' . $this->data['account_id'] . ', ' . $this->db->fieldName('group_id') . ' = ' . $this->data['group_id'] . ', ' . $this->db->fieldName('sex') . ' = ' . $this->data['sex'] . ', ' . $this->db->fieldName('vocation') . ' = ' . $this->data['vocation'] . ', ' . $this->db->fieldName('experience') . ' = ' . $this->data['experience'] . ', ' . $this->db->fieldName('level') . ' = ' . $this->data['level'] . ', ' . $this->db->fieldName('maglevel') . ' = ' . $this->data['maglevel'] . ', ' . $this->db->fieldName('health') . ' = ' . $this->data['health'] . ', ' . $this->db->fieldName('healthmax') . ' = ' . $this->data['healthmax'] . ', ' . $this->db->fieldName('mana') . ' = ' . $this->data['mana'] . ', ' . $this->db->fieldName('manamax') . ' = ' . $this->data['manamax'] . ', ' . $this->db->fieldName('manaspent') . ' = ' . $this->data['manaspent'] . ', ' . $this->db->fieldName('soul') . ' = ' . $this->data['soul'] . ', ' . $this->db->fieldName('lookbody') . ' = ' . $this->data['lookbody'] . ', ' . $this->db->fieldName('lookfeet') . ' = ' . $this->data['lookfeet'] . ', ' . $this->db->fieldName('lookhead') . ' = ' . $this->data['lookhead'] . ', ' . $this->db->fieldName('looklegs') . ' = ' . $this->data['looklegs'] . ', ' . $this->db->fieldName('looktype') . ' = ' . $this->data['looktype'] . $lookaddons . ', ' . $this->db->fieldName('posx') . ' = ' . $this->data['posx'] . ', ' . $this->db->fieldName('posy') . ' = ' . $this->data['posy'] . ', ' . $this->db->fieldName('posz') . ' = ' . $this->data['posz'] . ', ' . $this->db->fieldName('cap') . ' = ' . $this->data['cap'] . ', ' . $this->db->fieldName('lastlogin') . ' = ' . $this->data['lastlogin'] . ', ' . $this->db->fieldName('lastlogout') . ' = ' . $this->data['lastlogout'] . ', ' . $this->db->fieldName('lastip') . ' = ' . $this->data['lastip'] . ', ' . $this->db->fieldName('save') . ' = ' . (int) $this->data['save'] . ', ' . $this->db->fieldName('conditions') . ' = ' . $this->db->quote($this->data['conditions']) . ', `' . $skull_time . '` = ' . $this->data['skulltime'] . ', `' . $skull_type . '` = ' . (int) $this->data['skull'] . $guild_info . ', ' . $this->db->fieldName('town_id') . ' = ' . $this->data['town_id'] . $loss . ', ' . $this->db->fieldName('balance') . ' = ' . $this->data['balance'] . $blessings . $stamina . $direction . ' WHERE ' . $this->db->fieldName('id') . ' = ' . $this->data['id']); } // creates new player else @@ -266,13 +315,13 @@ class OTS_Player extends OTS_Row_DAO $loss = ''; $loss_data = ''; if(fieldExist('loss_experience', 'players')) { - $loss = ', `loss_experience`, `loss_mana`, `loss_skills`, `loss_items`'; - $loss_data = ', ' . $this->data['loss_experience'] . ', ' . $this->data['loss_mana'] . ', ' . $this->data['loss_skills'] . ', ' . $this->data['loss_items']; + $loss = ', `loss_experience`, `loss_mana`, `loss_skills`, `loss_items`, `loss_containers`'; + $loss_data = ', ' . $this->data['loss_experience'] . ', ' . $this->data['loss_mana'] . ', ' . $this->data['loss_skills'] . ', ' . $this->data['loss_items'] . ', ' . $this->data['loss_containers']; } $guild_info = ''; $guild_info_data = ''; - if(fieldExist('guildnick', 'players')) { + if(!tableExist('guild_members') && fieldExist('guildnick', 'players')) { $guild_info = ', `guildnick`, `rank_id`'; $guild_info_data = ', ' . $this->db->quote($this->data['guildnick']) . ', ' . $this->data['rank_id']; } @@ -287,12 +336,33 @@ class OTS_Player extends OTS_Row_DAO $direction = ''; $direction_data = ''; if(fieldExist('direction', 'players')) { - $direction = ', `balance`'; - $direction_data = ', ' . $this->data['balance']; + $direction = ', `direction`'; + $direction_data = ', ' . $this->data['direction']; + } + + $blessings = ''; + $blessings_data = ''; + if(fieldExist('blessings', 'players')) { + $blessings = ', `blessings`'; + $blessings_data = ', ' . $this->data['blessings']; + } + + $stamina = ''; + $stamina_data = ''; + if(fieldExist('stamina', 'players')) { + $stamina = ', `stamina`'; + $stamina_data = ', ' . $this->data['stamina']; + } + + $lookaddons = ''; + $lookaddons_data = ''; + if(fieldExist('lookaddons', 'players')) { + $lookaddons = ', `lookaddons`'; + $lookaddons_data = ', ' . $this->data['lookaddons']; } // INSERT query on database - $this->db->query('INSERT INTO ' . $this->db->tableName('players') . ' (' . $this->db->fieldName('name') . ', ' . $this->db->fieldName('account_id') . ', ' . $this->db->fieldName('group_id') . ', ' . $this->db->fieldName('sex') . ', ' . $this->db->fieldName('vocation') . ', ' . $this->db->fieldName('experience') . ', ' . $this->db->fieldName('level') . ', ' . $this->db->fieldName('maglevel') . ', ' . $this->db->fieldName('health') . ', ' . $this->db->fieldName('healthmax') . ', ' . $this->db->fieldName('mana') . ', ' . $this->db->fieldName('manamax') . ', ' . $this->db->fieldName('manaspent') . ', ' . $this->db->fieldName('soul') . ', ' . $this->db->fieldName('lookbody') . ', ' . $this->db->fieldName('lookfeet') . ', ' . $this->db->fieldName('lookhead') . ', ' . $this->db->fieldName('looklegs') . ', ' . $this->db->fieldName('looktype') . ', ' . $this->db->fieldName('lookaddons') . ', ' . $this->db->fieldName('posx') . ', ' . $this->db->fieldName('posy') . ', ' . $this->db->fieldName('posz') . ', ' . $this->db->fieldName('cap') . ', `lastlogin`, `lastlogout`, ' . $this->db->fieldName('lastip') . ', ' . $this->db->fieldName('save') . ', ' . $this->db->fieldName('conditions') . ', `' . $skull_time . '`, `' . $skull_type . '`' . $guild_info . ', ' . $this->db->fieldName('town_id') . $loss . ', `balance`, `blessings`, `stamina`' . $direction . ', ' . $this->db->fieldName('created') . $promotion . ') VALUES (' . $this->db->quote($this->data['name']) . ', ' . $this->data['account_id'] . ', ' . $this->data['group_id'] . ', ' . $this->data['sex'] . ', ' . $this->data['vocation'] . ', ' . $this->data['experience'] . ', ' . $this->data['level'] . ', ' . $this->data['maglevel'] . ', ' . $this->data['health'] . ', ' . $this->data['healthmax'] . ', ' . $this->data['mana'] . ', ' . $this->data['manamax'] . ', ' . $this->data['manaspent'] . ', ' . $this->data['soul'] . ', ' . $this->data['lookbody'] . ', ' . $this->data['lookfeet'] . ', ' . $this->data['lookhead'] . ', ' . $this->data['looklegs'] . ', ' . $this->data['looktype'] . ', ' . $this->data['lookaddons'] . ', ' . $this->data['posx'] . ', ' . $this->data['posy'] . ', ' . $this->data['posz'] . ', ' . $this->data['cap'] . ', ' . $this->data['lastlogin'] . ', ' . $this->data['lastlogout'] . ', ' . $this->data['lastip'] . ', ' . (int) $this->data['save'] . ', ' . $this->db->quote($this->data['conditions']) . ', ' . $this->data['skulltime'] . ', ' . (int) $this->data['skull'] . $guild_info_data . ', ' . $this->data['town_id'] . $loss_data . ', ' . $this->data['balance'] . ', ' . $this->data['blessings'] . ', ' . $this->data['stamina'] . $direction_data . ', ' . time() . $promotion_data . ')'); + $this->db->query('INSERT INTO ' . $this->db->tableName('players') . ' (' . $this->db->fieldName('name') . ', ' . $this->db->fieldName('account_id') . ', ' . $this->db->fieldName('group_id') . ', ' . $this->db->fieldName('sex') . ', ' . $this->db->fieldName('vocation') . ', ' . $this->db->fieldName('experience') . ', ' . $this->db->fieldName('level') . ', ' . $this->db->fieldName('maglevel') . ', ' . $this->db->fieldName('health') . ', ' . $this->db->fieldName('healthmax') . ', ' . $this->db->fieldName('mana') . ', ' . $this->db->fieldName('manamax') . ', ' . $this->db->fieldName('manaspent') . ', ' . $this->db->fieldName('soul') . ', ' . $this->db->fieldName('lookbody') . ', ' . $this->db->fieldName('lookfeet') . ', ' . $this->db->fieldName('lookhead') . ', ' . $this->db->fieldName('looklegs') . ', ' . $this->db->fieldName('looktype') . $lookaddons . ', ' . $this->db->fieldName('posx') . ', ' . $this->db->fieldName('posy') . ', ' . $this->db->fieldName('posz') . ', ' . $this->db->fieldName('cap') . ', `lastlogin`, `lastlogout`, ' . $this->db->fieldName('lastip') . ', ' . $this->db->fieldName('save') . ', ' . $this->db->fieldName('conditions') . ', `' . $skull_time . '`, `' . $skull_type . '`' . $guild_info . ', ' . $this->db->fieldName('town_id') . $loss . ', `balance`' . $blessings . $stamina . $direction . ', ' . $this->db->fieldName('created') . $promotion . ') VALUES (' . $this->db->quote($this->data['name']) . ', ' . $this->data['account_id'] . ', ' . $this->data['group_id'] . ', ' . $this->data['sex'] . ', ' . $this->data['vocation'] . ', ' . $this->data['experience'] . ', ' . $this->data['level'] . ', ' . $this->data['maglevel'] . ', ' . $this->data['health'] . ', ' . $this->data['healthmax'] . ', ' . $this->data['mana'] . ', ' . $this->data['manamax'] . ', ' . $this->data['manaspent'] . ', ' . $this->data['soul'] . ', ' . $this->data['lookbody'] . ', ' . $this->data['lookfeet'] . ', ' . $this->data['lookhead'] . ', ' . $this->data['looklegs'] . ', ' . $this->data['looktype'] . $lookaddons_data . ', ' . $this->data['posx'] . ', ' . $this->data['posy'] . ', ' . $this->data['posz'] . ', ' . $this->data['cap'] . ', ' . $this->data['lastlogin'] . ', ' . $this->data['lastlogout'] . ', ' . $this->data['lastip'] . ', ' . (int) $this->data['save'] . ', ' . $this->db->quote($this->data['conditions']) . ', ' . $this->data['skulltime'] . ', ' . (int) $this->data['skull'] . $guild_info_data . ', ' . $this->data['town_id'] . $loss_data . ', ' . $this->data['balance'] . $blessings_data . $stamina_data . $direction_data . ', ' . time() . $promotion_data . ')'); // ID of new group $this->data['id'] = $this->db->lastInsertId(); } @@ -453,6 +523,11 @@ class OTS_Player extends OTS_Row_DAO { $this->data['account_id'] = $account->getId(); } + + public function setAccountId($account_id) + { + $this->data['account_id'] = (int)$account_id; + } /** * Returns group of this player. @@ -1672,7 +1747,11 @@ class OTS_Player extends OTS_Row_DAO */ public function loadRank() { - $ranks = $this->db->query('SELECT `rank_id`, `nick` FROM `guild_membership` WHERE `player_id` = ' . $this->db->quote($this->getID()))->fetch(); + $table = 'guild_membership'; + if(tableExist('guild_members')) + $table = 'guild_members'; + + $ranks = $this->db->query('SELECT `rank_id`, `nick` FROM `' . $table . '` WHERE `player_id` = ' . $this->db->quote($this->getID()))->fetch(); if($ranks) { $this->data['rank_id'] = new OTS_GuildRank($ranks['rank_id']); @@ -1707,6 +1786,8 @@ class OTS_Player extends OTS_Row_DAO $this->data['guildnick'] = (string) $guildnick; if(fieldExist('guildnick', 'players')) $this->db->query('UPDATE `players` SET `guildnick` = ' . $this->db->quote($this->data['guildnick']) . ' WHERE `id` = ' . $this->getId()); + else if(tableExist('guild_members')) + $this->db->query('UPDATE `guild_members` SET `nick` = ' . $this->db->quote($this->data['guildnick']) . ' WHERE `player_id` = ' . $this->getId()); else $this->db->query('UPDATE `guild_membership` SET `nick` = ' . $this->db->quote($this->data['guildnick']) . ' WHERE `player_id` = ' . $this->getId()); } @@ -1746,7 +1827,11 @@ class OTS_Player extends OTS_Row_DAO $query = $this->db->query('SELECT `rank_id` FROM `players` WHERE `id`= ' . $this->data['id'] . ';')->fetch(); $rank_id = $query['rank_id']; } else { - $query = $this->db->query('SELECT `rank_id` FROM `guild_membership` WHERE `player_id`= ' . $this->data['id'] . ' LIMIT 1;'); + $table = 'guild_membership'; + if(tableExist('guild_members')) + $table = 'guild_members'; + + $query = $this->db->query('SELECT `rank_id` FROM `' . $table . '` WHERE `player_id`= ' . $this->data['id'] . ' LIMIT 1;'); if($query->rowCount() == 1) { $query = $query->fetch(); $rank_id = $query['rank_id']; @@ -1768,7 +1853,16 @@ class OTS_Player extends OTS_Row_DAO { if( isset($rank_id) && isset($guild)) { if($rank_id == 0) { - $this->db->query('DELETE FROM `guild_membership` WHERE `player_id` = ' . $this->getId()); + if(tableExist('guild_membership')) { + $this->db->query('DELETE FROM `guild_membership` WHERE `player_id` = ' . $this->getId()); + } + else if(tableExist('guild_members')) { + $this->db->query('DELETE FROM `guild_members` WHERE `player_id` = ' . $this->getId()); + } + else { + $this->data['rank_id'] = 0; + $this->save(); + } } else { if(tableExist('guild_membership')) { @@ -1779,6 +1873,14 @@ 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')) { + $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()); + else { + $this->db->query('INSERT INTO `guild_members` (`player_id`, `rank_id`, `nick`) VALUES (' . $this->db->quote($this->getId()) . ', ' . $this->db->quote($rank_id) . ', ' . $this->db->quote('') . ')'); + } + } else { $this->data['rank_id'] = (int) $rank_id; $this->save(); @@ -1975,6 +2077,20 @@ class OTS_Player extends OTS_Row_DAO $this->data['loss_items'] = (int) $loss_items; } + public function getLossContainers() + { + if( !isset($this->data['loss_containers']) ) + { + throw new E_OTS_NotLoaded(); + } + + return $this->data['loss_items']; + } + public function setLossContainers($loss_containers) + { + $this->data['loss_containers'] = (int) $loss_containers; + } + public function getBlessings() { if( !isset($this->data['blessings']) ) @@ -3086,6 +3202,9 @@ class OTS_Player extends OTS_Row_DAO case 'lossItems': return $this->getLossItems(); + case 'lossContainers': + return $this->getLossContainers(); + case 'balance': return $this->getBalance(); diff --git a/system/locale/en/install.php b/system/locale/en/install.php index 4e1ce9f5..29c844c3 100644 --- a/system/locale/en/install.php +++ b/system/locale/en/install.php @@ -42,10 +42,6 @@ $locale['step_config'] = 'Configuration'; $locale['step_config_title'] = 'Basic configuration'; $locale['step_config_server_path'] = 'Server path'; $locale['step_config_server_path_desc'] = 'Path to your TFS main directory, where you have config.lua located.'; -$locale['step_config_account'] = 'Admin account name'; -$locale['step_config_account_desc'] = 'Name of your admin account, which will be used to login to website and server.'; -$locale['step_config_password'] = 'Admin account password'; -$locale['step_config_password_desc'] = 'Password to your admin account.'; $locale['step_config_mail_admin'] = 'Admin E-Mail'; $locale['step_config_mail_admin_desc'] = 'Address where emails from contact form will be delivered, for example admin@gmail.com'; @@ -62,8 +58,9 @@ $locale['step_database_title'] = 'Import MySQL schema'; $locale['step_database_importing'] = 'Your database is MySQL. Importing schema now...'; $locale['step_database_error_path'] = 'Please specify server path.'; $locale['step_database_error_config'] = 'Cannot find config file. Is your server path correct? Go back and check again.'; +$locale['step_database_error_database_empty'] = 'Cannot determine database type from config.lua. Your OTS is unsupported by this AAC.'; $locale['step_database_error_only_mysql'] = 'This AAC supports only MySQL. From your config file it seems that your OTS is using: $DATABASE_TYPE$ database. Please change your database to MySQL and then follow the installation again.'; -$locale['step_database_error_table'] = 'Table $TABLE$ doesn\'t exist. Please import your OTS database first.'; +$locale['step_database_error_table'] = 'Table $TABLE$ doesn\'t exist. Please import your OTS database schema first.'; $locale['step_database_error_table_exist'] = 'Table $TABLE$ already exist. Seems AAC is already installed. Skipping importing MySQL schema..'; $locale['step_database_error_schema'] = 'Error while importing schema:'; $locale['step_database_success_schema'] = 'Succesfully installed $PREFIX$ tables.'; @@ -74,6 +71,16 @@ $locale['step_database_changing_field'] = 'Changing $FIELD$ to $FIELD_NEW$...'; $locale['step_database_imported_players'] = 'Imported player samples...'; $locale['step_database_created_account'] = 'Created admin account...'; +// admin account +$locale['step_admin'] = 'Admin Account'; +$locale['step_admin_title'] = 'Create Admin Account'; +$locale['step_admin_account'] = 'Admin account name'; +$locale['step_admin_account_desc'] = 'Name of your admin account, which will be used to login to website and server.'; +$locale['step_admin_account_id'] = 'Admin account id'; +$locale['step_admin_account_id_desc'] = 'ID of your admin account, which will be used to login to website and server.'; +$locale['step_admin_password'] = 'Admin account password'; +$locale['step_admin_password_desc'] = 'Password to your admin account.'; + // finish $locale['step_finish_admin_panel'] = 'Admin Panel'; $locale['step_finish_homepage'] = 'homepage'; diff --git a/system/locale/pl/install.php b/system/locale/pl/install.php index 15e9c1e6..08bd1a33 100644 --- a/system/locale/pl/install.php +++ b/system/locale/pl/install.php @@ -63,7 +63,7 @@ $locale['step_database_importing'] = 'Twoja baza to MySQL. Importowanie schematu $locale['step_database_error_path'] = 'Proszę podać ścieżkę do serwera.'; $locale['step_database_error_config'] = 'Nie można znaleźć pliku config. Jest Twoja ścieżka do katalogu serwera poprawna? Wróć się i sprawdź ponownie.'; $locale['step_database_error_only_mysql'] = 'Ten AAC wspiera tylko bazy danych MySQL. Z Twojego pliku config wynika, że Twój serwera używa bazy: $DATABASE_TYPE$. Proszę zmienić typ bazy na MySQL i ponownie przystąpić do instalacji.'; -$locale['step_database_error_table'] = 'Tabela $TABLE$ nie istnieje. Proszę najpierw zaimportować bazę danych serwera OTS.'; +$locale['step_database_error_table'] = 'Tabela $TABLE$ nie istnieje. Proszę najpierw zaimportować schemat bazy danych serwera OTS.'; $locale['step_database_error_table_exist'] = 'Tabela $TABLE$ już istnieje. Wygląda na to, że AAC został już zainstalowany. Schemat MySQL nie zostanie zaimportowany..'; $locale['step_database_error_schema'] = 'Błąd podczas importowania struktury bazy danych:'; $locale['step_database_success_schema'] = 'Pomyślnie zainstalowano tabele $PREFIX$.'; diff --git a/system/login.php b/system/login.php index 531cc09a..04d018cb 100644 --- a/system/login.php +++ b/system/login.php @@ -58,7 +58,10 @@ else } $account_logged = $ots->createObject('Account'); - $account_logged->find($login_account); + if(USE_ACCOUNT_NAME) + $account_logged->find($login_account); + else + $account_logged->load($login_account); $config_salt_enabled = fieldExist('salt', 'accounts'); if($account_logged->isLoaded() && encrypt(($config_salt_enabled ? $account_logged->getCustomField('salt') : '') . $login_password) == $account_logged->getPassword() diff --git a/system/pages/accountmanagement.php b/system/pages/accountmanagement.php index fc691ffa..0025ec97 100644 --- a/system/pages/accountmanagement.php +++ b/system/pages/accountmanagement.php @@ -80,7 +80,7 @@ Please enter your account name and your password.
- >Account Name: + >Account :
@@ -887,10 +887,18 @@ function checkName() if(fieldExist('promotion', 'players')) $player->setPromotion($char_to_copy->getPromotion()); + if(fieldExist('direction', 'players')) + $player->setDirection($char_to_copy->getDirection()); + $player->setConditions($char_to_copy->getConditions()); - if(fieldExist('rank_id', 'players')) + $rank = $char_to_copy->getRank(); + if($rank->isLoaded()) { $player->setRank($char_to_copy->getRank()); + } + + if(fieldExist('lookaddons', 'players')) $player->setLookAddons($char_to_copy->getLookAddons()); + $player->setTownId($newchar_town); $player->setExperience($char_to_copy->getExperience()); $player->setLevel($char_to_copy->getLevel()); @@ -901,8 +909,6 @@ function checkName() $player->setManaMax($char_to_copy->getManaMax()); $player->setManaSpent($char_to_copy->getManaSpent()); $player->setSoul($char_to_copy->getSoul()); - if(fieldExist('direction', 'players')) - $player->setDirection($char_to_copy->getDirection()); $player->setLookBody($char_to_copy->getLookBody()); $player->setLookFeet($char_to_copy->getLookFeet()); diff --git a/system/pages/characters.php b/system/pages/characters.php index 20c253e0..b27f3839 100644 --- a/system/pages/characters.php +++ b/system/pages/characters.php @@ -227,6 +227,8 @@ if(check_name($name)) $town_field = 'town'; if(fieldExist('town_id', 'houses')) $town_field = 'town_id'; + else if(fieldExist('townid', 'houses')) + $town_field = 'townid'; $house = $db->query('SELECT `id`, `paid`, `name`, `' . $town_field . '` FROM `houses` WHERE `owner` = '.$player->getId())->fetch(); if(isset($house['id'])) diff --git a/system/pages/createaccount.php b/system/pages/createaccount.php index 83218b6f..512140de 100644 --- a/system/pages/createaccount.php +++ b/system/pages/createaccount.php @@ -24,17 +24,28 @@ if($logged) $step = isset($_POST['step']) ? $_POST['step'] : ''; if($step == 'save') { - $account_name = $_POST['account_name']; - $account_name_up = strtoupper($account_name); + if(USE_ACCOUNT_NAME) { + $account_name = $_POST['account']; + $account_name_up = strtoupper($account_name); + } + else + $account_id = $_POST['account']; + $email = $_POST['email']; $password = $_POST['password']; $password2 = $_POST['password2']; // account - if(empty($account_name)) - $errors['account_name'] = 'Please enter your account name!'; - elseif(!check_account_name($account_name_up)) - $errors['account_name'] = 'Invalid account name format. Please use only A-Z and numbers 0-9.'; + if(isset($account_id)) { + if(!check_number($account_id)) + $errors['account'] = 'Invalid account number format. Please use only numbers 0-9.'; + } + else { + if(empty($account_name)) + $errors['account'] = 'Please enter your account name!'; + elseif(!check_account_name($account_name_up)) + $errors['account'] = 'Invalid account name format. Please use only A-Z and numbers 0-9.'; + } // email if(empty($email)) @@ -81,7 +92,7 @@ if($step == 'save') } // check if account name is not equal to password - if($account_name_up == strtoupper($password)) + if(USE_ACCOUNT_NAME && $account_name_up == strtoupper($password)) { $errors['password'] = 'Password may not be the same as account name.'; } @@ -97,9 +108,17 @@ if($step == 'save') } $account_db = new OTS_Account(); - $account_db->find($account_name); - if($account_db->isLoaded()) - $errors['account_name'] = 'Account with this name already exist.'; + if(USE_ACCOUNT_NAME) + $account_db->find($account_name); + else + $account_db->load($account_id); + + if($account_db->isLoaded()) { + if(USE_ACCOUNT_NAME) + $errors['account'] = 'Account with this name already exist.'; + else + $errors['account'] = 'Account with this id already exist.'; + } } if(!isset($_POST['accept_rules']) || $_POST['accept_rules'] != 'true') @@ -108,7 +127,10 @@ if($step == 'save') if(empty($errors)) { $new_account = $ots->createObject('Account'); - $new_account->create($account_name); + if(USE_ACCOUNT_NAME) + $new_account->create($account_name); + else + $new_account->create(NULL, $account_id); $config_salt_enabled = fieldExist('salt', 'accounts'); if($config_salt_enabled) @@ -137,7 +159,8 @@ if($step == 'save') if($config['account_premium_points']) { $new_account->setCustomField('premium_points', $config['account_premium_points']); } - + + $tmp_account = (USE_ACCOUNT_NAME ? $account_name : $account_id); if($config['mail_enabled'] && $config['account_mail_verify']) { $hash = md5(generateRandomString(16, true, true) . $email); @@ -145,12 +168,13 @@ if($step == 'save') $verify_url = BASE_URL . '?p=account&action=confirm_email&v=' . $hash; $server_name = $config['lua']['serverName']; + $body_plain = "Hello! Thank you for registering on $server_name! Here are the details of your account: -Name: $account_name +Account" . (USE_ACCOUNT_NAME ? ' Name' : '') . ": $tmp_account Password: ************ (hidden for security reasons) To verify your email address please click the link below: @@ -162,7 +186,7 @@ If you haven't registered on $server_name please ignore this email."; Thank you for registering on ' . $config['lua']['serverName'] . '!

Here are the details of your account:
-Name: ' . $account_name . '
+Account' . (USE_ACCOUNT_NAME ? ' Name' : '') . ': ' . $tmp_account . '
Password: ************ (hidden for security reasons)

To verify your email address please click the link below:
@@ -177,11 +201,11 @@ If you haven\'t registered on ' . $config['lua']['serverName'] . ' please ignore
Account Created
-
Your account name is . +
Your account is . - You will need the account name and your password to play on . - Please keep your account name and password in a safe place and - never give your account name or password to anybody.

+ You will need the account and your password to play on . + Please keep your account and password in a safe place and + never give your account or password to anybody.

Account Created
- - '; } else { @@ -135,10 +141,14 @@ if($action == '') } else echo ' - - '; } @@ -151,7 +161,7 @@ if($action == '')
Cleanup players - can\'t join guild/be invited? Can\'t create guild? Try cleanup players.
Cleanup guilds - made guild, you are a leader, but you are not on players list? Cleanup guilds!'; else - echo 'Before you can create guild you must login.
-
Your account name is '.$account_name.'
You will need the account name and your password to play on '.$config['lua']['serverName'].'. - Please keep your account name and password in a safe place and - never give your account name or password to anybody.

'; +
Your account ' . (USE_ACCOUNT_NAME ? 'name' : 'number') . ' is '.$tmp_account.'
You will need the account ' . (USE_ACCOUNT_NAME ? 'name' : 'number') . ' and your password to play on '.$config['lua']['serverName'].'. + Please keep your account ' . (USE_ACCOUNT_NAME ? 'name' : 'number') . ' and password in a safe place and + never give your account ' . (USE_ACCOUNT_NAME ? 'name' : 'number') . ' or password to anybody.

'; if($config['mail_enabled'] && $config['account_welcome_mail']) { $mailBody = '

Dear player,

-

Thanks for your registration at '.$config['lua']['serverName'].'

+

Thanks for your registration at ' . $config['lua']['serverName'] . '



Your login details: -

Account name: ' . $account_name . '

+

Account' . (USE_ACCOUNT_NAME ? ' name' : '') . ': ' . $tmp_account . '

Password: ' . str_repeat('*', strlen(trim($password))) . ' (hidden for security reasons)

Kind Regards,

'; if(_mail($email, 'Your account on ' . $config['lua']['serverName'], $mailBody)) - echo '
These informations were send on email address '.$email.'.'; + echo '
These informations were send on email address ' . $email . '.'; else echo '

An error occorred while sending email (' . $email . ')! Error:
' . $mailer->ErrorInfo . '

'; } @@ -241,9 +265,9 @@ function checkAccount() eventId = 0; } - if(document.getElementById("account_name").value == "") + if(document.getElementById("account_input").value == "") { - document.getElementById("acc_name_check").innerHTML = 'Please enter account name.'; + document.getElementById("acc_check").innerHTML = 'Please enter account.'; return; } @@ -260,10 +284,10 @@ function checkAccount() } } - account = document.getElementById("account_name").value; + account = document.getElementById("account_input").value; $.get("tools/validate.php", { account: account, uid: Math.random() }, function(data){ - document.getElementById("acc_name_check").innerHTML = data; + document.getElementById("acc_check").innerHTML = data; lastSend = timeNow; }); } @@ -296,7 +320,6 @@ function checkEmail() } email = document.getElementById("email").value; - account = document.getElementById("account_name").value; $.get("tools/validate.php", { email: email, uid: Math.random() }, function(data){ document.getElementById("email_check").innerHTML = data; @@ -338,8 +361,8 @@ function validate_form(thisform) { with (thisform) { - if (validate_required(account_name,"Please enter name of new account!")==false) - {account_name.focus();return false;} + if (validate_required(account_input,"Please enter name of new account!")==false) + {account_input.focus();return false;} if (validate_required(email,"Please enter your e-mail!")==false) {email.focus();return false;} if (validate_email(email,"Invalid e-mail format!")==false) @@ -362,11 +385,11 @@ function validate_form(thisform) output_errors($errors); ?> To play on you need an account. -All you have to do to create your new account is to enter an account name, password, password and your email address. -Also you have to agree to the terms presented below. If you have done so, your account name will be shown on the following page and your account password will be sent to your email address along with further instructions. If you do not receive the email with your password, please check your spam filter.

+Also you have to agree to the terms presented below. If you have done so, your account will be shown on the following page and your account password will be sent to your email address along with further instructions. If you do not receive the email with your password, please check your spam filter.

@@ -389,14 +412,14 @@ Also you have to agree to the terms presented below. If you have done so, your a
- +
- >Account Name: + >Account : - - + +
>Email Address: @@ -522,7 +545,7 @@ Also you have to agree to the terms presented below. If you have done so, your a
load($config['data_path'] . 'XML/stages.xml'); - foreach($stages->getElementsByTagName('config') as $node) { - if($node->getAttribute('enabled')) - $enabled = true; + if(file_exists($config['data_path'] . 'XML/stages.xml')) { + $stages = new DOMDocument(); + $stages->load($config['data_path'] . 'XML/stages.xml'); + foreach($stages->getElementsByTagName('config') as $node) { + if($node->getAttribute('enabled')) + $enabled = true; + } } if(!$enabled) { diff --git a/system/pages/guilds.php b/system/pages/guilds.php index b378ab5d..ff61837f 100644 --- a/system/pages/guilds.php +++ b/system/pages/guilds.php @@ -103,10 +103,16 @@ if($action == '') } else echo '
-Create guild
Actually there is no guild on server. Create first! Press button "Create Guild".
+ '; +
+ Create guild
Actually there is no guild on server.' . ($logged ? ' Create first! Press button "Create Guild".' : '') . '
'; + if($logged) + echo ' +
-
'; + + echo ' +
Create guild
Actually there is no guild on server. Create first! Press button "Create Guild".
+ '; +
+ Create guild
Actually there is no guild on server.' . ($logged ? ' Create first! Press button "Create Guild".' : '') . '
'; + if($logged) + echo '
-
'; + echo ' +
'; - $players_info = $db->query("SELECT `houses`.`id` AS `houseid` , `players`.`name` AS `ownername` , `accounts`.`premdays` AS `premdays` , `accounts`.`lastday` AS `lastlogin` FROM `houses` , `players` , `accounts` WHERE `players`.`id` = `houses`.`owner` AND `accounts`.`id` = `players`.`account_id`"); + $players_info = $db->query("SELECT `houses`.`id` AS `houseid` , `players`.`name` AS `ownername` FROM `houses` , `players` , `accounts` WHERE `players`.`id` = `houses`.`owner` AND `accounts`.`id` = `players`.`account_id`"); $players = array(); foreach($players_info->fetchAll() as $player) $players[$player['houseid']] = array('name' => $player['ownername']); diff --git a/system/pages/lastkills.php b/system/pages/lastkills.php index 57a818a4..ccd317af 100644 --- a/system/pages/lastkills.php +++ b/system/pages/lastkills.php @@ -16,7 +16,7 @@ $players_deaths_count = 0; $players_rows = ''; if(tableExist('player_killers')) // tfs 0.3 { - $players_deaths = $db->query('SELECT `player_deaths`.`id`, `player_deaths`.`date`, `player_deaths`.`level`, `players`.`name`, `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`' . (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']); if(!empty($players_deaths)) { foreach($players_deaths as $death) diff --git a/system/pages/news.php b/system/pages/news.php index 274f4c05..3f5bd221 100644 --- a/system/pages/news.php +++ b/system/pages/news.php @@ -48,7 +48,7 @@ if(isset($_GET['archive'])) $author = $query['name']; } - echo news_parse($news['title'], $news['body'], $news['date'], $categories[$news['category']]['icon_id'], $config['news_author'] ? $author : '', getForumThreadLink($news['comments'])); + echo news_parse($news['title'], $news['body'], $news['date'], $categories[$news['category']]['icon_id'], $config['news_author'] ? $author : '', $news['comments'] != 0 ? getForumThreadLink($news['comments']) : NULL); } else echo 'This news doesn\'t exist or is hidden.
'; @@ -444,7 +444,7 @@ if(!$news_cached) '; } - echo news_parse($news['title'], $news['body'] . $admin_options, $news['date'], $categories[$news['category']]['icon_id'], $config['news_author'] ? $author : '', getForumThreadLink($news['comments'])); + echo news_parse($news['title'], $news['body'] . $admin_options, $news['date'], $categories[$news['category']]['icon_id'], $config['news_author'] ? $author : '', $news['comments'] != 0 ? getForumThreadLink($news['comments']) : NULL); } } diff --git a/system/pages/online.php b/system/pages/online.php index 0ee3bf27..b9947c44 100644 --- a/system/pages/online.php +++ b/system/pages/online.php @@ -21,13 +21,16 @@ if($config['account_country']) fieldName('name'); else if($order == 'country') $order = $db->tableName('accounts') . '.' . $db->fieldName('country'); else if($order == 'vocation') - $order = 'promotion, vocation ASC'; + $order = $promotion . 'vocation ASC'; $skull_type = 'skull'; if(fieldExist('skull_type', 'players')) { @@ -43,7 +46,7 @@ $vocs = array(0, 0, 0, 0, 0); if(tableExist('players_online')) // tfs 1.0 $playersOnline = $db->query('SELECT `accounts`.`country`, `players`.`name`, `level`, `vocation`, `' . $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`, `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); + $playersOnline = $db->query('SELECT `accounts`.`country`, `players`.`name`, `level`, `vocation`, ' . $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); $players = 0; $data = ''; @@ -116,11 +119,11 @@ if(!$players): ?> ' ORDER BY ' . $db->fieldName('record') . ' DESC LIMIT 1'); $timestamp = true; } - else{ // tfs 1.0 + else if(tableExist('server_config')) { // tfs 1.0 $query = $db->query('SELECT `value` as `record` FROM `server_config` WHERE `config` = ' . $db->quote('players_record')); } - if($query->rowCount() > 0) + if(isset($query) && $query->rowCount() > 0) { $result = $query->fetch(); echo 'The maximum on this game world was ' . $result['record'] . ' players' . ($timestamp ? ' on ' . date("M d Y, H:i:s", $result['timestamp']) . '.' : '.'); diff --git a/system/pages/serverinfo.php b/system/pages/serverinfo.php index a93c261d..19fc1a11 100644 --- a/system/pages/serverinfo.php +++ b/system/pages/serverinfo.php @@ -11,12 +11,17 @@ */ defined('MYAAC') or die('Direct access not allowed!'); $title = 'Server info'; + +if(isset($config['lua']['experience_stages'])) + $config['lua']['experienceStages'] = $config['lua']['experience_stages']; ?>

+ Experience stages: Look here
+ Commands: Look here
Team: Look here

@@ -34,9 +39,15 @@ $title = 'Server info'; if(isset($config['lua']['globalSaveEnabled']) && getBoolean($config['lua']['globalSaveEnabled'])) echo '
  • Global save: ' . $config['lua']['globalSaveHour'] . ':00
  • '; + if(isset($config['lua']['min_pvp_level'])){ + $config['lua']['protectionLevel'] = $config['lua']['min_pvp_level']; + } + + if(isset($config['lua']['protectionLevel'])): ?>
  • World type: PVP (Protection level: >)
  • 0) echo '
  • Houses with inactive owners are cleaned after 30 days.
  • '; } + + if(isset($config['lua']['rate_mag'])) + $config['lua']['rateMagic'] = $config['lua']['rate_mag']; + if(isset($config['lua']['rate_skill'])) + $config['lua']['rateSkill'] = $config['lua']['rate_skill']; + if(isset($config['lua']['rate_loot'])) + $config['lua']['rateLoot'] = $config['lua']['rate_loot']; + if(isset($config['lua']['rate_spawn'])) + $config['lua']['rateSpawn'] = $config['lua']['rate_spawn']; ?>

    Rates

    +
  • Magic Level: x
  • +
  • Skills: x
  • +
  • Loot: x
  • +
  • Spawn: x
  • + -
  • Houses: level
  • +
  • Houses: level
  • Guilds: level (Create via website)

  • -
  • Banishment length: days
  • +
  • Banishment length: days
  • -
  • Final banishment length: days
  • +
  • Final banishment length: days
  • -
  • IP banishment length: days
  • +
  • IP banishment length: days

  • Other

    diff --git a/system/status.php b/system/status.php index 88ef7054..4bd9d964 100644 --- a/system/status.php +++ b/system/status.php @@ -21,9 +21,15 @@ $status['monsters'] = 0; $status_ip = $config['lua']['ip']; if(isset($config['lua']['statusProtocolPort'])) { $config['lua']['loginPort'] = $config['lua']['statusProtocolPort']; + $config['lua']['statusPort'] = $config['lua']['statusProtocolPort']; $status_port = $config['lua']['statusProtocolPort']; } -else +else if(isset($config['lua']['status_port'])) { + $config['lua']['loginPort'] = $config['lua']['status_port']; + $config['lua']['statusPort'] = $config['lua']['status_port']; + $status_port = $config['lua']['status_port']; +} + $status_port = $config['lua']['statusPort']; if(isset($config['status_ip'][0])) @@ -64,6 +70,9 @@ if($fetch_from_db) } } +if(isset($config['lua']['statustimeout'])) + $config['lua']['statusTimeout'] = $config['lua']['statustimeout']; + // get status timeout from server config $status_timeout = eval('return ' . $config['lua']['statusTimeout'] . ';') / 1000 + 1; diff --git a/tools/validate.php b/tools/validate.php index 84ebef96..b4aec2e6 100644 --- a/tools/validate.php +++ b/tools/validate.php @@ -19,23 +19,32 @@ require(SYSTEM . 'init.php'); echo ''; if(isset($_GET['account'])) { - $account = trim($_GET['account']); + $account = $_GET['account']; $tmp = strtoupper($account); $error = ''; - if(!check_account_name($tmp, $error)) + if(USE_ACCOUNT_NAME) + { + if(!check_account_name($tmp, $error)) + error_($error); + } + else if(!check_account_id($account, $error)) error_($error); $_account = new OTS_Account(); - $_account->find($tmp); + if(USE_ACCOUNT_NAME) + $_account->find($tmp); + else + $_account->load($tmp); + if($_account->isLoaded()) error_('Account with this name already exist.'); - success_('Good account name ( ' . $account . ' ).'); + success_('Good account' . (USE_ACCOUNT_NAME ? ' name' : '') . ' ( ' . $account . ' ).'); } else if(isset($_GET['email'])) { - $email = trim($_GET['email']); + $email = $_GET['email']; if(strlen($email) >= 255) error_('E-mail is too long (max. 255 chars).'); @@ -54,7 +63,7 @@ else if(isset($_GET['email'])) } else if(isset($_GET['name'])) { - $name = strtolower(stripslashes(trim($_GET['name']))); + $name = strtolower(stripslashes($_GET['name'])); $error = ''; if(!check_name($name, $error)) error_($error);
    + echo 'Before you can create guild you must login.
    '; } @@ -263,11 +273,11 @@ if($action == 'show') $showed_players = 1; foreach($rank_list as $rank) { - if(fieldExist('rank_id', 'players')) - $players_with_rank = $db->query('SELECT `id`, `rank_id` FROM `players` WHERE `rank_id` = ' . $rank->getId() . ' AND `deleted` = 0;'); - else + if(tableExist(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')) + $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(); if($players_with_rank_number > 0) { diff --git a/system/pages/houses.php b/system/pages/houses.php index 8d173b6d..ff95a2d1 100644 --- a/system/pages/houses.php +++ b/system/pages/houses.php @@ -180,7 +180,7 @@ $type = ''; echo '
    Server Status