diff --git a/admin/templates/clean/style.css b/admin/templates/clean/style.css
index c2f5da37..9001a1ab 100644
--- a/admin/templates/clean/style.css
+++ b/admin/templates/clean/style.css
@@ -40,6 +40,17 @@ h1, h2, h3, h4, h5, h6 {color: #313334; font-weight: bold;}
text-align: left;
}
+.table, .table td, .table th{
+ border: 1px solid #ddd;
+}
+
+.table th a:link {color: white; text-decoration: none;}
+.table th a:link {color: white; text-decoration: none;}
+.table th a:visited {color: white; text-decoration: none;}
+.table th a:focus {color: white; text-decoration: none;}
+.table th a:active {color: white; text-decoration: underline;}
+.table th a:hover {color: white; text-decoration: underline;}
+
.table tr:nth-child(odd) {background-color: #d1d1d1}
a.ico { color:#9d9c9a; font-size:10px; text-decoration: none; padding:0 0 0 14px; background-repeat:no-repeat; background-position:0 0; }
diff --git a/common.php b/common.php
index 28a037dd..a8843e33 100644
--- a/common.php
+++ b/common.php
@@ -44,6 +44,11 @@ define('FLAG_CONTENT_COMMANDS', 64);
define('FLAG_CONTENT_SPELLS', 128);
define('FLAG_CONTENT_MONSTERS', 256);
+// news
+define('NEWS', 1);
+define('TICKET', 2);
+define('ARTICLE', 3);
+
// directories
define('BASE', dirname(__FILE__) . '/');
define('ADMIN', BASE . 'admin/');
diff --git a/config.php b/config.php
index 071f55d8..48323709 100644
--- a/config.php
+++ b/config.php
@@ -43,11 +43,6 @@ $config = array(
// footer
'footer' => ''/*'
Your Server © 2016. All rights reserved.'*/,
- // site closed
- 'site_closed' => false,
- 'site_closed_title' => 'Closed',
- 'site_closed_message' => 'Server is under maintance, please visit later.
',
-
'debug_level' => 0, // 0 - disabled, 1 - show load time, 2 - show db query counter, 3 - both, 4 - memory usage, 5 - load time & load time, 6 - queries & memory usage, 7 - all
'language' => 'en', // default language (currently only 'en' available)
@@ -220,7 +215,8 @@ $config = array(
// other
'email_lai_sec_interval' => 60, // time in seconds between e-mails to one account from lost account interface, block spam
'google_analytics_id' => '', // e.g.: UA-XXXXXXX-X
- 'experiencetable_columns' => 5, // how many columns to display in experience table page. * 100, 5 = 500 (will show up to 500 level)
+ 'experiencetable_columns' => 5, // how many columns to display in experience table page. * experiencetable_rows, 5 = 500 (will show up to 500 level)
+ 'experiencetable_rows' => 100, // till how many levels in one columt
'monsters' => array(),
'npc' => array()
diff --git a/index.php b/index.php
index 86c1c92d..b780f113 100644
--- a/index.php
+++ b/index.php
@@ -96,24 +96,28 @@ if(!isset($content[0]))
$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;
- }
+$site_closed = false;
+if(fetchDatabaseConfig('site_closed', $site_closed)) {
+ $site_closed = ($site_closed == 1);
+ if($site_closed) {
+ if(!admin())
+ {
+ $title = getDatabaseConfig('site_closed_title');
+ $content .= '
' . getDatabaseConfig('site_closed_message') . '
Site is under maintenance (closed mode). Only privileged users can see it.
'; if($config['backward_support']) diff --git a/system/functions.php b/system/functions.php index 97209316..7fa9c26c 100644 --- a/system/functions.php +++ b/system/functions.php @@ -255,7 +255,7 @@ function fetchDatabaseConfig($name, &$value) */ function getDatabaseConfig($name) { - $value = ''; + $value = NULL; fetchDatabaseConfig($name, $value); return $value; } diff --git a/system/libs/cache_file.php b/system/libs/cache_file.php index e652b04e..1cbfac0e 100644 --- a/system/libs/cache_file.php +++ b/system/libs/cache_file.php @@ -63,7 +63,7 @@ class Cache_File } private function _name($key) { - return sprintf("%s/%s%s", $this->dir, $this->prefix, sha1($key)); + return sprintf("%s%s%s", $this->dir, $this->prefix, sha1($key)); } } ?> diff --git a/system/libs/pot/OTS_Account.php b/system/libs/pot/OTS_Account.php index a94e1508..cc3d4630 100644 --- a/system/libs/pot/OTS_Account.php +++ b/system/libs/pot/OTS_Account.php @@ -852,11 +852,7 @@ class OTS_Account extends OTS_Row_DAO implements IteratorAggregate, Countable public function getGroupId() { - global $groups; - if(!isset($groups)) - $groups = new OTS_Groups_List(); - - $group_id = 0; + global $db;; if(fieldExist('group_id', 'accounts')) { $query = $this->db->query('SELECT `group_id` FROM `accounts` WHERE `id` = ' . (int) $this->getId())->fetch(); // if anything was found @@ -864,19 +860,11 @@ class OTS_Account extends OTS_Row_DAO implements IteratorAggregate, Countable return $query['group_id']; } - // finds groups of all characters - foreach( $this->getPlayersList() as $player) - { - $group = $player->getGroup(); - - // checks if group's access level is higher then previouls found highest - if( $group->getId() > $group_id) - { - $group_id = $group->getId(); - } - } + $db->query('SELECT `group_id` FROM `players` WHERE `account_id` = ' . $this->getId() . ' ORDER BY `group_id` DESC LIMIT 1')->fetch(); + if(isset($query['group_id'])) + return $query['group_id']; - return $group_id; + return 0; } /** diff --git a/system/libs/pot/OTS_Base_DB.php b/system/libs/pot/OTS_Base_DB.php index 604f9867..2a2c1507 100644 --- a/system/libs/pot/OTS_Base_DB.php +++ b/system/libs/pot/OTS_Base_DB.php @@ -97,6 +97,7 @@ abstract class OTS_Base_DB extends PDO implements IOTS_DB public function query($query) { $this->queries++; + //echo $query . PHP_EOL; return parent::query($query); } diff --git a/system/libs/pot/OTS_Player.php b/system/libs/pot/OTS_Player.php index a4c7f7ed..5fd68a00 100644 --- a/system/libs/pot/OTS_Player.php +++ b/system/libs/pot/OTS_Player.php @@ -1,4 +1,21 @@ NULL, + 'loss_items' => NULL, + 'guild_info' => NULL, + 'skull_type' => NULL, + 'skull_time' => NULL, + 'blessings' => NULL, + 'direction' => NULL, + 'stamina' => NULL, + 'world_id' => NULL, + 'online' => NULL, + 'deletion' => NULL, + 'promotion' => NULL, + 'marriage' => NULL +);*/ + /**#@+ * @version 0.0.1 */ @@ -91,7 +108,6 @@ class OTS_Player extends OTS_Row_DAO POT::SKILL_SHIELD => array('value' => 0, 'tries' => 0), POT::SKILL_FISH => array('value' => 0, 'tries' => 0) ); - /** * Magic PHP5 method. * @@ -115,33 +131,84 @@ class OTS_Player extends OTS_Row_DAO */ public function load($id) { - $loss = ''; - if(fieldExist('loss_experience', 'players')) { - $loss = ', `loss_experience`, `loss_mana`, `loss_skills`'; - } - - $loss_items = ''; - if(fieldExist('loss_items', 'players')) { - $loss_items = ', `loss_items`, `loss_containers`'; - } - - $guild_info = ''; - if(!tableExist('guild_members') && fieldExist('guildnick', 'players')) { - $guild_info = ', `guildnick`, `rank_id`'; + global $__load; + + if(!isset($__load['loss_experience'])) + { + $loss = ''; + if(fieldExist('loss_experience', 'players')) { + $loss = ', `loss_experience`, `loss_mana`, `loss_skills`'; + } + + $__load['loss_experience'] = $loss; } - $skull_type = 'skull'; - if(fieldExist('skull_type', 'players')) { - $skull_type = 'skull_type'; + if(!isset($__load['loss_items'])) + { + $loss_items = ''; + if(fieldExist('loss_items', 'players')) { + $loss_items = ', `loss_items`, `loss_containers`'; + } + + $__load['loss_items'] = $loss_items; } - $skull_time = 'skulltime'; - if(fieldExist('skull_time', 'players')) { - $skull_time = 'skull_time'; + if(!isset($__load['guild_info'])) + { + $guild_info = ''; + if(!tableExist('guild_members') && fieldExist('guildnick', 'players')) { + $guild_info = ', `guildnick`, `rank_id`'; + } + + $__load['guild_info'] = $guild_info; + } + + if(!isset($__load['skull_type'])) + { + $skull_type = 'skull'; + if(fieldExist('skull_type', 'players')) { + $skull_type = 'skull_type'; + } + + $__load['skull_type'] = $skull_type; + } + + if(!isset($__load['skull_time'])) + { + $skull_time = 'skulltime'; + if(fieldExist('skull_time', 'players')) { + $skull_time = 'skull_time'; + } + + $__load['skull_time'] = $skull_time; + } + + if(!isset($__load['blessings'])) { + $__load['blessings'] = fieldExist('blessings', 'players'); + } + if(!isset($__load['direction'])) { + $__load['direction'] = fieldExist('direction', 'players'); + } + if(!isset($__load['stamina'])) { + $__load['stamina'] = fieldExist('stamina', 'players'); + } + if(!isset($__load['world_id'])) { + $__load['world_id'] = fieldExist('world_id', 'players'); + } + if(!isset($__load['online'])) { + $__load['online'] = fieldExist('online', 'players'); + } + if(!isset($__load['deletion'])) { + $__load['deletion'] = fieldExist('deletion', 'players'); + } + if(!isset($__load['promotion'])) { + $__load['promotion'] = fieldExist('promotion', 'players'); + } + if(!isset($__load['marriage'])) { + $__load['marriage'] = fieldExist('marriage', 'players'); } - // 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`, `' . $skull_time . '` as `skulltime`, `' . $skull_type . '` as `skull`' . $guild_info . ', `town_id`' . $loss . $loss_items . ', `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(); + $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'] = ''; @@ -335,7 +402,7 @@ class OTS_Player extends OTS_Row_DAO $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')) { diff --git a/system/login.php b/system/login.php index efd47e04..8627b2a0 100644 --- a/system/login.php +++ b/system/login.php @@ -73,9 +73,6 @@ else if(isset($_POST['remember_me'])) $_SESSION['remember_me'] = true; - //if(isset($_POST['admin'])) - // $_SESSION['admin'] = true; - $logged = true; $logged_flags = $account_logged->getWebFlags(); diff --git a/system/pages/admin/dashboard.php b/system/pages/admin/dashboard.php index ecf21906..024c76ec 100644 --- a/system/pages/admin/dashboard.php +++ b/system/pages/admin/dashboard.php @@ -10,7 +10,80 @@ */ defined('MYAAC') or die('Direct access not allowed!'); $title = 'Dashboard'; + +if($cache->enabled()) { + if(isset($_GET['clear_cache'])) { + if(clearCache()) + success('Cache cleared.'); + else + error('Error while clearing cache.'); + } + ?> +Clear cache | +
---|
Status: Online
@@ -39,26 +112,69 @@ $title = 'Dashboard';
-
+fetch('status', $tmp))
+ $cache->delete('status');
+
+ if($cache->fetch('templates', $tmp))
+ $cache->delete('templates');
+
+ if($cache->fetch('config_lua', $tmp))
+ $cache->delete('config_lua');
+
+ if($cache->fetch('vocations', $tmp))
+ $cache->delete('vocations');
+
+ if($cache->fetch('towns', $tmp))
+ $cache->delete('towns');
+
+ if($cache->fetch('groups', $tmp))
+ $cache->delete('groups');
+
+ if($cache->fetch('visitors', $tmp))
+ $cache->delete('visitors');
+
+ if($cache->fetch('views_counter', $tmp))
+ $cache->delete('views_counter');
+
+ if($cache->fetch('failed_logins', $tmp))
+ $cache->delete('failed_logins');
+
+ if($cache->fetch('news' . $template_name . '_' . NEWS, $tmp))
+ $cache->delete('news' . $template_name . '_' . NEWS);
+
+ if($cache->fetch('news' . $template_name . '_' . TICKET, $tmp))
+ $cache->delete('news' . $template_name . '_' . TICKET);
+
+ if($cache->fetch('news' . $template_name . '_' . ARTICLE, $tmp))
+ $cache->delete('news' . $template_name . '_' . ARTICLE);
+
+ if($cache->fetch('template_ini' . $template_name, $tmp))
+ $cache->delete('template_ini' . $template_name);
+
+ return true;
+}
\ No newline at end of file
diff --git a/system/pages/admin/players.php b/system/pages/admin/players.php
index 6235e010..a786e6d7 100644
--- a/system/pages/admin/players.php
+++ b/system/pages/admin/players.php
@@ -307,7 +307,7 @@ if(!isset($player) || !$player->isLoaded())
$account = $player->getAccount();
?>
-
+