diff --git a/upload/blocks/1_notify.php b/upload/blocks/1_notify.php deleted file mode 100644 index d9f7631..0000000 --- a/upload/blocks/1_notify.php +++ /dev/null @@ -1,33 +0,0 @@ -core = $core; - $this->db = $core->db; - } - - public function content(){ - if(!isset($_SESSION['mcr_notify'])){ return ''; } - - $new_data = array( - "TYPE" => $this->db->HSC($_SESSION['notify_type']), - "TITLE" => $this->db->HSC($_SESSION['notify_title']), - "MESSAGE" => $this->db->HSC($_SESSION['notify_msg']) - ); - - $result = $this->core->sp(MCR_THEME_PATH."blocks/notify/alert.html", $new_data); - - unset($_SESSION['mcr_notify']); - unset($_SESSION['notify_type']); - unset($_SESSION['notify_title']); - unset($_SESSION['notify_msg']); - - return $result; - } -} - -?> \ No newline at end of file diff --git a/upload/blocks/2_profile.php b/upload/blocks/2_profile.php deleted file mode 100644 index 9f43399..0000000 --- a/upload/blocks/2_profile.php +++ /dev/null @@ -1,20 +0,0 @@ -core = $core; - $this->user = $core->user; - } - - public function content(){ - $authfile = (!$this->user->is_auth) ? "unauth" : "auth"; - - return $this->core->sp(MCR_THEME_PATH."blocks/profile/$authfile.html"); - } -} - -?> \ No newline at end of file diff --git a/upload/blocks/3_monitor.php b/upload/blocks/3_monitor.php deleted file mode 100644 index 78a693c..0000000 --- a/upload/blocks/3_monitor.php +++ /dev/null @@ -1,60 +0,0 @@ -core = $core; - $this->db = $core->db; - $this->user = $core->user; - $this->lng = $core->lng_b; - } - - private function server_array(){ - $query = $this->db->query("SELECT id, title, `text`, ip, `port`, `status`, online, slots, players FROM `mcr_monitoring`"); - - if(!$query || $this->db->num_rows($query)<=0){ return $this->lng['empty']; } - - ob_start(); - - while($ar = $this->db->fetch_assoc($query)){ - - $status = (intval($ar['status'])===1) ? 'progress-info' : 'progress-danger'; - $slots = intval($ar['slots']); - $online = intval($ar['online']); - - $progress = ($online<=0) ? 0 : ceil(100 / ($slots / $online)); - - if(intval($ar['status'])!=1){ $progress = 100; } - - $data = array( - 'ID' => intval($ar['id']), - 'TITLE' => $this->db->HSC($ar['title']), - 'TEXT' => $this->db->HSC($ar['text']), - 'IP' => $this->db->HSC($ar['ip']), - 'PORT' => intval($ar['port']), - 'PROGRESS' => $progress, - 'STATUS' => $status, - 'STATS' => (intval($ar['status'])===1) ? $online.' / '.$slots : $this->lng['offline'], - ); - - echo $this->core->sp(MCR_THEME_PATH."blocks/monitor/monitor-id.html", $data); - } - - return ob_get_clean(); - } - - public function content(){ - if(!$this->core->is_access("sys_monitoring")){ return; } - - $data = array( - 'CONTENT' => $this->server_array(), - ); - - return $this->core->sp(MCR_THEME_PATH."blocks/monitor/main.html", $data); - } -} - -?> \ No newline at end of file diff --git a/upload/blocks/4_banner.php b/upload/blocks/4_banner.php deleted file mode 100644 index 5dfcf70..0000000 --- a/upload/blocks/4_banner.php +++ /dev/null @@ -1,19 +0,0 @@ -core = $core; - } - - public function content(){ - if(!$this->core->is_access("sys_adm_main")){ return; } - - return $this->core->sp(MCR_THEME_PATH."blocks/banner/main.html"); - } -} - -?> \ No newline at end of file diff --git a/upload/blocks/banner.php b/upload/blocks/banner.php new file mode 100644 index 0000000..8801fd4 --- /dev/null +++ b/upload/blocks/banner.php @@ -0,0 +1,22 @@ +core = $core; + } + + public function content(){ + + if(!$this->core->is_access(@$this->core->cfg_b['PERMISSIONS'])){ return; } + + $this->core->header .= $this->core->sp(MCR_THEME_PATH."blocks/banner/header.html"); + + return $this->core->sp(MCR_THEME_PATH."blocks/banner/main.html"); + } +} + +?> \ No newline at end of file diff --git a/upload/blocks/monitor.php b/upload/blocks/monitor.php new file mode 100644 index 0000000..800831b --- /dev/null +++ b/upload/blocks/monitor.php @@ -0,0 +1,63 @@ +core = $core; + $this->db = $core->db; + $this->user = $core->user; + $this->lng = $core->lng_b; + } + + private function server_array(){ + $query = $this->db->query("SELECT id, title, `text`, ip, `port`, `status`, online, slots, players FROM `mcr_monitoring`"); + + if(!$query || $this->db->num_rows($query)<=0){ return $this->lng['empty']; } + + ob_start(); + + while($ar = $this->db->fetch_assoc($query)){ + + $status = (intval($ar['status'])===1) ? 'progress-info' : 'progress-danger'; + $slots = intval($ar['slots']); + $online = intval($ar['online']); + + $progress = ($online<=0) ? 0 : ceil(100 / ($slots / $online)); + + if(intval($ar['status'])!=1){ $progress = 100; } + + $data = array( + 'ID' => intval($ar['id']), + 'TITLE' => $this->db->HSC($ar['title']), + 'TEXT' => $this->db->HSC($ar['text']), + 'IP' => $this->db->HSC($ar['ip']), + 'PORT' => intval($ar['port']), + 'PROGRESS' => $progress, + 'STATUS' => $status, + 'STATS' => (intval($ar['status'])===1) ? $online.' / '.$slots : $this->lng['offline'], + ); + + echo $this->core->sp(MCR_THEME_PATH."blocks/monitor/monitor-id.html", $data); + } + + return ob_get_clean(); + } + + public function content(){ + + if(!$this->core->is_access(@$this->core->cfg_b['PERMISSIONS'])){ return; } + + $this->core->header .= $this->core->sp(MCR_THEME_PATH."blocks/monitor/header.html"); + + $data = array( + 'CONTENT' => $this->server_array(), + ); + + return $this->core->sp(MCR_THEME_PATH."blocks/monitor/main.html", $data); + } +} + +?> \ No newline at end of file diff --git a/upload/blocks/notify.php b/upload/blocks/notify.php new file mode 100644 index 0000000..bbbbf33 --- /dev/null +++ b/upload/blocks/notify.php @@ -0,0 +1,35 @@ +core = $core; + $this->db = $core->db; + } + + public function content(){ + $this->core->header .= $this->core->sp(MCR_THEME_PATH."blocks/notify/header.html"); + + if(!isset($_SESSION['mcr_notify'])){ return ''; } + + $new_data = array( + "TYPE" => $this->db->HSC($_SESSION['notify_type']), + "TITLE" => $this->db->HSC($_SESSION['notify_title']), + "MESSAGE" => $this->db->HSC($_SESSION['notify_msg']) + ); + + $result = $this->core->sp(MCR_THEME_PATH."blocks/notify/alert.html", $new_data); + + unset($_SESSION['mcr_notify']); + unset($_SESSION['notify_type']); + unset($_SESSION['notify_title']); + unset($_SESSION['notify_msg']); + + return $result; + } +} + +?> \ No newline at end of file diff --git a/upload/blocks/online.php b/upload/blocks/online.php new file mode 100644 index 0000000..1a0cb7d --- /dev/null +++ b/upload/blocks/online.php @@ -0,0 +1,23 @@ +core = $core; + $this->user = $core->user; + } + + public function content(){ + + if(!$this->core->is_access(@$this->core->cfg_b['PERMISSIONS'])){ return; } + + $this->core->header .= $this->core->sp(MCR_THEME_PATH."blocks/online/header.html"); + + return $this->core->sp(MCR_THEME_PATH."blocks/online/main.html"); + } +} + +?> \ No newline at end of file diff --git a/upload/blocks/profile.php b/upload/blocks/profile.php new file mode 100644 index 0000000..8176152 --- /dev/null +++ b/upload/blocks/profile.php @@ -0,0 +1,22 @@ +core = $core; + $this->user = $core->user; + } + + public function content(){ + $authfile = (!$this->user->is_auth) ? "unauth" : "auth"; + + $this->core->header .= $this->core->sp(MCR_THEME_PATH."blocks/profile/header.html"); + + return $this->core->sp(MCR_THEME_PATH."blocks/profile/$authfile.html"); + } +} + +?> \ No newline at end of file diff --git a/upload/configs/blocks/banner.php b/upload/configs/blocks/banner.php new file mode 100644 index 0000000..e242214 --- /dev/null +++ b/upload/configs/blocks/banner.php @@ -0,0 +1,15 @@ + true, + 'POSITION' => 5, + 'TITLE' => 'Разработчик', + 'DESC' => 'Блок вывода баннера', + 'AUTHOR' => 'Qexy', + 'SITE' => 'http://qexy.org', + 'EMAIL' => 'admin@qexy.org', + 'VERSION' => '1.0', + 'UPDATES' => true, + 'UPDATER' => 'http://update.webmcr.com/?do=blocks&amp;op=banner', + 'PERMISSIONS' => 'block_banner', +); +?> \ No newline at end of file diff --git a/upload/configs/blocks/monitor.php b/upload/configs/blocks/monitor.php new file mode 100644 index 0000000..e2077bc --- /dev/null +++ b/upload/configs/blocks/monitor.php @@ -0,0 +1,15 @@ + true, + 'POSITION' => 3, + 'TITLE' => 'Мониторинг', + 'DESC' => 'Блок вывода мониторинга', + 'AUTHOR' => 'Qexy', + 'SITE' => 'http://qexy.org', + 'EMAIL' => 'admin@qexy.org', + 'VERSION' => '1.0', + 'UPDATES' => true, + 'UPDATER' => 'http://update.webmcr.com/?do=blocks&amp;op=monitor', + 'PERMISSIONS' => 'sys_monitoring', +); +?> \ No newline at end of file diff --git a/upload/configs/blocks/notify.php b/upload/configs/blocks/notify.php new file mode 100644 index 0000000..a2a93a4 --- /dev/null +++ b/upload/configs/blocks/notify.php @@ -0,0 +1,16 @@ + true, + 'POSITION' => 1, + 'TITLE' => 'Оповещения', + 'DESC' => 'Блок вывода оповещений', + 'AUTHOR' => 'Qexy', + 'SITE' => 'http://qexy.org', + 'EMAIL' => 'admin@qexy.org', + 'VERSION' => '1.0', + 'UPDATES' => true, + 'UPDATER' => 'http://update.webmcr.com/?do=blocks&op=notify', +); + +?> \ No newline at end of file diff --git a/upload/configs/blocks/online.php b/upload/configs/blocks/online.php new file mode 100644 index 0000000..643aae9 --- /dev/null +++ b/upload/configs/blocks/online.php @@ -0,0 +1,18 @@ + true, + 'POSITION' => 4, + 'TITLE' => 'Онлайн статистика', + 'DESC' => 'Блок вывода текущего онлайна на сайте', + 'AUTHOR' => 'Qexy', + 'SITE' => 'http://qexy.org', + 'EMAIL' => 'admin@qexy.org', + 'VERSION' => '1.0', + 'UPDATES' => true, + 'UPDATER' => 'http://update.webmcr.com/?do=blocks&op=online', + 'PERMISSIONS' => 'block_online', + 'TIMEOUT' => 60, +); + +?> \ No newline at end of file diff --git a/upload/configs/blocks/profile.php b/upload/configs/blocks/profile.php new file mode 100644 index 0000000..fbfd1fa --- /dev/null +++ b/upload/configs/blocks/profile.php @@ -0,0 +1,16 @@ + true, + 'POSITION' => 2, + 'TITLE' => 'Мини-профиль', + 'DESC' => 'Блок вывода мини-профиля пользователя', + 'AUTHOR' => 'Qexy', + 'SITE' => 'http://qexy.org', + 'EMAIL' => 'admin@qexy.org', + 'VERSION' => '1.0', + 'UPDATES' => true, + 'UPDATER' => 'http://update.webmcr.com/?do=blocks&op=profile', +); + +?> \ No newline at end of file diff --git a/upload/configs/db.php b/upload/configs/db.php index e30f037..808392c 100644 --- a/upload/configs/db.php +++ b/upload/configs/db.php @@ -3,9 +3,69 @@ 'host' => '127.0.0.1', 'user' => 'root', 'pass' => '', - 'base' => 'minecraft', + 'base' => '', 'port' => 3306, 'backend' => 'mysqli', 'log' => true, + 'tables' => + array ( + 'ugroups' => + array ( + 'name' => 'mcr_groups', + 'fields' => + array ( + 'id' => 'id', + 'title' => 'title', + 'text' => 'description', + 'color' => 'color', + 'perm' => 'permissions', + ), + ), + 'iconomy' => + array ( + 'name' => 'mcr_iconomy', + 'fields' => + array ( + 'id' => 'id', + 'login' => 'login', + 'money' => 'money', + 'rm' => 'realmoney', + 'bank' => 'bank', + ), + ), + 'logs' => + array ( + 'name' => 'mcr_logs', + 'fields' => + array ( + 'id' => 'id', + 'uid' => 'uid', + 'msg' => 'message', + 'date' => 'date', + ), + ), + 'users' => + array ( + 'name' => 'mcr_users', + 'fields' => + array ( + 'id' => 'id', + 'group' => 'gid', + 'login' => 'login', + 'email' => 'email', + 'pass' => 'password', + 'uuid' => 'uuid', + 'salt' => 'salt', + 'tmp' => 'tmp', + 'is_skin' => 'is_skin', + 'is_cloak' => 'is_cloak', + 'ip_create' => 'ip_create', + 'ip_last' => 'ip_last', + 'color' => 'color', + 'data' => 'data', + 'ban_server' => 'ban_server', + ), + ), + ), ); -?> +?> \ No newline at end of file diff --git a/upload/configs/main.php b/upload/configs/main.php index f722765..5678f4c 100644 --- a/upload/configs/main.php +++ b/upload/configs/main.php @@ -6,14 +6,13 @@ 's_dpage' => 'news', 's_theme' => 'default', 'rewrite' => false, - 'log' => false, 'install' => true, 'p_logic' => 'usual', 'debug' => true, 's_lang' => 'ru_RU', 's_root' => '/', - 's_root_full' => 'http://localhost', - 'mcr_secury' => 'IRmMO5hR$U3IypSR@KBH', + 's_root_full' => 'http://site.ru', + 'mcr_secury' => '0Hv@tFOJxm3Zcfu6dM36', 'crypt' => 0, 'reg_accept' => true, 'captcha' => 1, @@ -21,5 +20,7 @@ 'rc_private' => '6LdNLf8SAAAAAO-XQUcGglTRw4ZZw2tO8163hudD', 'kc_public' => '78758', 'kc_private' => 'nBJjeiTqRAuXZlqwklPHSgtlCj', + 'skin_path' => 'uploads/skins/', + 'cloak_path' => 'uploads/cloaks/', ); ?> \ No newline at end of file diff --git a/upload/cron/clear_logs.php b/upload/cron/clear_logs.php new file mode 100644 index 0000000..3a22e2b --- /dev/null +++ b/upload/cron/clear_logs.php @@ -0,0 +1,36 @@ +db['backend'].'.class.php'); + +$db = new db($cfg); + +$expire = time()-(3600*24*DAYS); + +$lt = $cfg->db['tables']['logs']; +$fl = $lt['fields']; + +$delete = $db->remove_fast($lt['name'], "`date`<'$expire'"); + +if(!$delete){ exit('Ошибка запроса! #'.__LINE__); } + +echo '

SUCCESS!

'; +echo '

DELETED ROWS: '.$db->affected_rows().'

'; + +// Script load time +echo '

PAGE LOAD TIME: '.number_format(microtime(true)-DEBUG_PLT,3).'

'; + +?> \ No newline at end of file diff --git a/upload/engine/config.class.php b/upload/engine/config.class.php index c32ec8f..8db338d 100644 --- a/upload/engine/config.class.php +++ b/upload/engine/config.class.php @@ -1,5 +1,7 @@ main = $main; $this->mail = $mail; @@ -24,12 +26,16 @@ $this->pagin = $pagin; $this->search = $search; } + + public function tabname($name){ + return $this->db['tables'][$name]['name']; + } public function savecfg($cfg=array(), $file='main.php', $var='main'){ if(!is_array($cfg) || empty($cfg)){ return false; } - $filename = MCR_ROOT."configs/".$file; + $filename = MCR_CONF_PATH.$file; $txt = 'config = new config(); + // Create & set new object of cfg + $this->cfg = new config(); - if(!file_exists(MCR_LANG_PATH.$this->config->main['s_lang'].'/system.php')){ exit("Language path not found"); } + if(!file_exists(MCR_LANG_PATH.$this->cfg->main['s_lang'].'/system.php')){ exit("Language path not found"); } // Load language package - require(MCR_LANG_PATH.$this->config->main['s_lang'].'/system.php'); + require(MCR_LANG_PATH.$this->cfg->main['s_lang'].'/system.php'); // Set language var $this->lng = $lng; @@ -40,10 +40,10 @@ $this->title = $lng['t_main']; // Load database class - require_once(MCR_TOOL_PATH.'db/'.$this->config->db['backend'].'.class.php'); + require(MCR_TOOL_PATH.'db/'.$this->cfg->db['backend'].'.class.php'); // Create & set new object of database - $this->db = new db($this->config); + $this->db = new db($this->cfg); // Load user class require_once(MCR_TOOL_PATH.'user.class.php'); @@ -57,20 +57,25 @@ // Create & set new object of menu $this->menu = new menu($this); - $base_url = ($this->config->main['install']) ? $this->base_url() : $this->config->main['s_root']; + $base_url = ($this->cfg->main['install']) ? $this->base_url() : $this->cfg->main['s_root']; // Generate CSRF Secure key define("MCR_SECURE_KEY", $this->gen_csrf_secure());// System constants - define('MCR_LANG', $this->config->main['s_lang']); + define('MCR_LANG', $this->cfg->main['s_lang']); define('MCR_LANG_DIR', MCR_LANG_PATH.MCR_LANG.'/'); - define('MCR_THEME_PATH', MCR_ROOT.'themes/'.$this->config->main['s_theme'].'/'); + define('MCR_THEME_PATH', MCR_ROOT.'themes/'.$this->cfg->main['s_theme'].'/'); define('MCR_THEME_MOD', MCR_THEME_PATH.'modules/'); define('MCR_THEME_BLOCK', MCR_THEME_PATH.'blocks/'); define('BASE_URL', $base_url); - define('ADMIN_URL', BASE_URL.'?mode=admin'); - define('STYLE_URL', BASE_URL.'themes/'.$this->config->main['s_theme'].'/'); + define('ADMIN_MOD', 'mode=admin'); + define('ADMIN_URL', BASE_URL.'?'.ADMIN_MOD); + define('STYLE_URL', BASE_URL.'themes/'.$this->cfg->main['s_theme'].'/'); define('UPLOAD_URL', BASE_URL.'uploads/'); + define('SKIN_URL', BASE_URL.$this->cfg->main['skin_path']); + define('CLOAK_URL', BASE_URL.$this->cfg->main['cloak_path']); define('LANG_URL', BASE_URL.'language/'.MCR_LANG.'/'); + define('MCR_SKIN_PATH', MCR_ROOT.$this->cfg->main['skin_path']); + define('MCR_CLOAK_PATH', MCR_ROOT.$this->cfg->main['cloak_path']); $bc = array( $this->lng['e_msg'] => BASE_URL, @@ -87,7 +92,7 @@ $time = time(); - $new_key = $time.'_'.md5($this->user->ip.$this->config->main['mcr_secury'].$time); + $new_key = $time.'_'.md5($this->user->ip.$this->cfg->main['mcr_secury'].$time); if(!isset($_COOKIE['mcr_secure'])){ setcookie("mcr_secure", $new_key, time()+$this->csrf_time, '/'); @@ -98,7 +103,7 @@ $old_time = intval($cookie[0]); - $old_key = md5($this->user->ip.$this->config->main['mcr_secury'].$old_time); + $old_key = md5($this->user->ip.$this->cfg->main['mcr_secury'].$old_time); if(!isset($cookie[1]) || $cookie[1] !== $old_key || ($old_time+$this->csrf_time)<$time){ setcookie("mcr_secure", $new_key, time()+$this->csrf_time, '/'); @@ -224,7 +229,7 @@ // Prev pages + $page_prev = ''; - for($pp = $this->config->pagin['arrows']; $pp > 0; $pp--){ + for($pp = $this->cfg->pagin['arrows']; $pp > 0; $pp--){ if($pid-$pp <= 0){ continue; } @@ -249,7 +254,7 @@ // Next pages + $page_next = ''; - for($np = 1; $np <= $this->config->pagin['arrows']; $np++){ + for($np = 1; $np <= $this->cfg->pagin['arrows']; $np++){ if($pid+$np > $max){ continue; } @@ -313,7 +318,7 @@ $secure_var = $secure_key[1]; - $mcr_secure = $secure_time.'_'.md5($this->user->ip.$this->config->main['mcr_secury'].$secure_time); + $mcr_secure = $secure_time.'_'.md5($this->user->ip.$this->cfg->main['mcr_secury'].$secure_time); if($mcr_secure!==$_POST['mcr_secure']){ $this->notify($this->lng['e_hack']); } } @@ -380,13 +385,14 @@ $data['LIST'] = $this->gen_bc_list($array); - if(!$this->config->func['breadcrumbs']){ return false; } + if(!$this->cfg->func['breadcrumbs']){ return false; } return $this->sp(MCR_THEME_PATH."breadcrumbs/list.html", $data); } public function check_cfg($cfg){ - $validator = array('MOD_ENABLE', + $validator = array( + 'MOD_ENABLE', 'MOD_TITLE', 'MOD_DESC', 'MOD_AUTHOR', @@ -406,6 +412,29 @@ return $result; } + public function check_cfg_block($cfg){ + $format = array( + 'ENABLE', + 'POSITION', + 'TITLE', + 'DESC', + 'AUTHOR', + 'SITE', + 'EMAIL', + 'VERSION', + 'UPDATES', + 'UPDATER' + ); + + $result = true; + + foreach($format as $key => $val){ + if(!isset($cfg[$val])){ $result = false; } + } + + return $result; + } + /** * Подгрузчик модулей * @param String $mode - название модуля @@ -436,8 +465,6 @@ $this->cfg_m = $cfg; $module = new module($this); - - @$module->cfg = $cfg; if(!method_exists($module, "content")){ return $this->lng['e_mode_method']; } @@ -462,7 +489,7 @@ * @return String */ public function gen_password($string='', $salt='', $crypt=false){ - if($crypt===false){ $crypt = $this->config->main['crypt']; } + if($crypt===false){ $crypt = $this->cfg->main['crypt']; } switch($crypt) { case 1: return sha1($string); break; @@ -509,7 +536,7 @@ require_once(MCR_CONF_PATH.'modules/'.$mode.'.php'); - require(MCR_LANG_PATH.$this->config->main['s_lang'].'/'.$mode.'.php'); + require(MCR_LANG_PATH.$this->cfg->main['s_lang'].'/'.$mode.'.php'); if(!$cfg['MOD_ENABLE']){ return $this->sp(MCR_THEME_PATH."default_sp/mod_disable.html"); } @@ -519,8 +546,6 @@ $module = new module($this); - $module->cfg = $cfg; - return $module->content(); } @@ -529,38 +554,61 @@ * @return Buffer string or false */ public function load_def_blocks(){ - $list = scandir(MCR_SIDE_PATH); - if(empty($list)){ return false; } + $format = array('ENABLE', 'POSITION', 'TITLE', 'DESC', 'AUTHOR', 'SITE', 'EMAIL', 'VERSION', 'UPDATES', 'UPDATER'); + + $configs = scandir(MCR_CONF_PATH.'blocks'); + + if(empty($configs)){ return false; } $content = ''; + $blocks = array(); - foreach($list as $key => $file){ + foreach($configs as $key => $file){ + $this->cfg_b = $cfg = false; + $this->lng_b = $lng = array(); + if($file=='.' || $file=='..' || substr($file, -4)!='.php'){ continue; } - $expl = explode('_', $file); + include(MCR_CONF_PATH.'blocks/'.$file); - if(file_exists(MCR_LANG_DIR.'blocks/'.$expl[1])){ - require_once(MCR_LANG_DIR.'blocks/'.$expl[1]); - $this->lng_b = $lng; - }else{ - $this->lng_b = array(); + if($cfg===false){ continue; } + + $cfg_keys = array_keys($cfg); + + $diff = array_diff($format, $cfg_keys); + + if(!empty($diff) || !$cfg['ENABLE']){ continue; } + + if(!file_exists(MCR_SIDE_PATH.$file)){ continue; } + + include(MCR_SIDE_PATH.$file); + + if(file_exists(MCR_LANG_DIR.'blocks/'.$file)){ + include(MCR_LANG_DIR.'blocks/'.$file); } - include_once(MCR_SIDE_PATH.$file); + $this->lng_b = $lng; - $classname = 'block_'.substr($expl[1], 0, -4); + $this->cfg_b = $cfg; + + $classname = 'block_'.substr($file, 0, -4); if(!class_exists($classname)){ continue; } $obj = new $classname($this); - if(!method_exists($obj, 'content')){ continue; } + if(!method_exists($obj, 'content')){ unset($obj); continue; } - $content .= $obj->content(); + $blocks[$cfg['POSITION']] = $obj->content(); unset($obj); + } + ksort($blocks); + + foreach($blocks as $key => $val){ + $content .= $val; } return $content; @@ -586,7 +634,7 @@ */ public function advice(){ - if(!$this->config->func['advice']){ return ''; } + if(!$this->cfg->func['advice']){ return ''; } $data = file(MCR_THEME_PATH."default_sp/advice.txt"); $size = count($data); @@ -689,29 +737,29 @@ //$mail->SMTPDebug = 3; - if($this->config->mail['smtp']){ + if($this->cfg->mail['smtp']){ $mail->isSMTP(); - $mail->Host = $this->config->mail['smtp_host']; // Specify main and backup SMTP servers + $mail->Host = $this->cfg->mail['smtp_host']; // Specify main and backup SMTP servers $mail->SMTPAuth = true; // Enable SMTP authentication - $mail->Username = $this->config->mail['smtp_user']; // SMTP username - $mail->Password = $this->config->mail['smtp_pass']; // SMTP password + $mail->Username = $this->cfg->mail['smtp_user']; // SMTP username + $mail->Password = $this->cfg->mail['smtp_pass']; // SMTP password $mail->SMTPSecure = 'tls'; // Enable TLS encryption, `ssl` also accepted $mail->Port = 587; // TCP port to connect to } $mail->CharSet = 'UTF-8'; $mail->setLanguage('ru', MCR_LANG_DIR.'smpt/'); - $mail->From = ($this->config->mail['smtp']) ? $this->config->mail['smtp_user'] : $this->config->mail['from']; - $mail->FromName = $this->config->mail['from_name']; + $mail->From = ($this->cfg->mail['smtp']) ? $this->cfg->mail['smtp_user'] : $this->cfg->mail['from']; + $mail->FromName = $this->cfg->mail['from_name']; if(is_array($to)){ foreach($to as $key => $value){ $mail->addAddress($value); } }else{ $mail->addAddress($to); } - $mail->addReplyTo($this->config->mail['reply'], $this->config->mail['reply_name']); - if($this->config->mail['cc']){ $mail->addCC($this->config->mail['from']); } - //$mail->addBCC($this->config->mail['bcc']); + $mail->addReplyTo($this->cfg->mail['reply'], $this->cfg->mail['reply_name']); + if($this->cfg->mail['cc']){ $mail->addCC($this->cfg->mail['from']); } + //$mail->addBCC($this->cfg->mail['bcc']); $mail->isHTML(true); // Set email format to HTML @@ -724,12 +772,12 @@ public function captcha_check(){ - if(!isset($this->captcha[$this->config->main['captcha']])){ return true; } + if(!isset($this->captcha[$this->cfg->main['captcha']])){ return true; } - switch($this->config->main['captcha']){ + switch($this->cfg->main['captcha']){ case 1: $response = @$_POST['g-recaptcha-response']; - $request = file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=".$this->config->main['rc_private']."&response=".$response."&remoteip=".$this->user->ip); + $request = file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=".$this->cfg->main['rc_private']."&response=".$response."&remoteip=".$this->user->ip); $request = json_decode($request); if(!$request->success){ return false; } @@ -753,7 +801,7 @@ } public function captcha(){ - switch($this->config->main['captcha']){ + switch($this->cfg->main['captcha']){ case 1: $content = $this->sp(MCR_THEME_PATH."captcha/recaptcha.html"); break; case 2: require(MCR_TOOL_PATH.'libs/keycaptcha.php'); $kc = new KeyCAPTCHA_CLASS('', $this); @@ -795,11 +843,11 @@ } private function search_array($active = 'news'){ - if(empty($this->config->search)){ return; } + if(empty($this->cfg->search)){ return; } ob_start(); - foreach($this->config->search as $key => $value){ + foreach($this->cfg->search as $key => $value){ if(!$this->is_access($value['permissions'])){ continue; } $data = array( diff --git a/upload/engine/db/mysql.class.php b/upload/engine/db/mysql.class.php index 37ebe8d..cda9051 100644 --- a/upload/engine/db/mysql.class.php +++ b/upload/engine/db/mysql.class.php @@ -1,22 +1,24 @@ config = $config; + $this->cfg = $cfg; - $this->obj = @mysql_connect($config->db['host'].':'.$config->db['port'], $config->db['user'], $config->db['pass']); + $this->obj = @mysql_connect($cfg->db['host'].':'.$cfg->db['port'], $cfg->db['user'], $cfg->db['pass']); - if(!@mysql_select_db($config->db['base'], $this->obj)){ return; } + if(!@mysql_select_db($cfg->db['base'], $this->obj)){ return; } @mysql_set_charset("UTF8", $this->obj); @@ -77,14 +79,17 @@ } public function actlog($msg='', $uid=0){ - if(!$this->config->db['log']){ return false; } + if(!$this->cfg->db['log']){ return false; } $uid = intval($uid); $msg = $this->safesql($msg); $date = time(); - $insert = $this->query("INSERT INTO `mcr_logs` - (uid, `message`, `date`) + $ctables = $this->cfg->db['tables']; + $logs_f = $ctables['logs']['fields']; + + $insert = $this->query("INSERT INTO `{$this->cfg->tabname('logs')}` + (`{$logs_f['uid']}`, `{$logs_f['msg']}`, `{$logs_f['date']}`) VALUES ('$uid', '$msg', '$date')"); @@ -107,7 +112,12 @@ $data = $this->safesql(json_encode($data)); - $update = $this->query("UPDATE `mcr_users` SET `ip_last`='{$user->ip}', `data`='$data' WHERE id='{$user->id}'"); + $ctables = $this->cfg->db['tables']; + $us_f = $ctables['users']['fields']; + + $update = $this->query("UPDATE `{$this->cfg->tabname('users')}` + SET `{$us_f['ip_last']}`='{$user->ip}', `{$us_f['data']}`='$data' + WHERE `{$us_f['id']}`='{$user->id}'"); if(!$update){ return false; } diff --git a/upload/engine/db/mysqli.class.php b/upload/engine/db/mysqli.class.php index cdced56..408d8c0 100644 --- a/upload/engine/db/mysqli.class.php +++ b/upload/engine/db/mysqli.class.php @@ -1,20 +1,22 @@ config = $config; + $this->cfg = $cfg; - $this->obj = @new mysqli($config->db['host'], $config->db['user'], $config->db['pass'], $config->db['base'], $config->db['port']); + $this->obj = @new mysqli($cfg->db['host'], $cfg->db['user'], $cfg->db['pass'], $cfg->db['base'], $cfg->db['port']); if($this->obj->connect_errno){ return; } @@ -79,14 +81,17 @@ } public function actlog($msg='', $uid=0){ - if(!$this->config->db['log']){ return false; } + if(!$this->cfg->db['log']){ return false; } $uid = intval($uid); $msg = $this->safesql($msg); $date = time(); - $insert = $this->query("INSERT INTO `mcr_logs` - (uid, `message`, `date`) + $ctables = $this->cfg->db['tables']; + $logs_f = $ctables['logs']['fields']; + + $insert = $this->query("INSERT INTO `{$this->cfg->tabname('logs')}` + (`{$logs_f['uid']}`, `{$logs_f['msg']}`, `{$logs_f['date']}`) VALUES ('$uid', '$msg', '$date')"); @@ -109,7 +114,12 @@ $data = $this->safesql(json_encode($data)); - $update = $this->query("UPDATE `mcr_users` SET `ip_last`='{$user->ip}', `data`='$data' WHERE id='{$user->id}'"); + $ctables = $this->cfg->db['tables']; + $us_f = $ctables['users']['fields']; + + $update = $this->query("UPDATE `{$this->cfg->tabname('users')}` + SET `{$us_f['ip_last']}`='{$user->ip}', `{$us_f['data']}`='$data' + WHERE `{$us_f['id']}`='{$user->id}'"); if(!$update){ return false; } diff --git a/upload/engine/libs/bbcode.parse.php b/upload/engine/libs/bbcode.parse.php index 11e5c6b..e61ba4f 100644 --- a/upload/engine/libs/bbcode.parse.php +++ b/upload/engine/libs/bbcode.parse.php @@ -1,5 +1,7 @@ core = $core; - $this->p_kc_user_id = $core->config->main['kc_public']; - $this->p_kc_private_key = $core->config->main['kc_private']; + $this->p_kc_user_id = $core->cfg->main['kc_public']; + $this->p_kc_private_key = $core->cfg->main['kc_private']; if ( $a_js_code != '' ) { $this->p_kc_js_code = $a_js_code; diff --git a/upload/engine/libs/smiles.php b/upload/engine/libs/smiles.php index c8379fb..b3e36fe 100644 --- a/upload/engine/libs/smiles.php +++ b/upload/engine/libs/smiles.php @@ -1,5 +1,7 @@ "1.gif", "[:(]" => "2.gif", diff --git a/upload/engine/menu.class.php b/upload/engine/menu.class.php index 4a1dda8..a7b8ea4 100644 --- a/upload/engine/menu.class.php +++ b/upload/engine/menu.class.php @@ -1,13 +1,15 @@ core = $core; $this->db = $core->db; $this->user = $core->user; - $this->config = $core->config; + $this->cfg = $core->cfg; //$this->lng = $core->lng; } @@ -48,8 +50,8 @@ private function is_active($url){ - if($this->config->main['s_root']==$url || $this->config->main['s_root_full']==$url){ - if(!isset($_GET['mode']) || @$_GET['mode']==$this->config->main['s_dpage']){ + if($this->cfg->main['s_root']==$url || $this->cfg->main['s_root_full']==$url){ + if(!isset($_GET['mode']) || @$_GET['mode']==$this->cfg->main['s_dpage']){ return true; } }else{ diff --git a/upload/engine/monitoring/XPawPing.php b/upload/engine/monitoring/XPawPing.php new file mode 100644 index 0000000..a9f71e5 --- /dev/null +++ b/upload/engine/monitoring/XPawPing.php @@ -0,0 +1,71 @@ +status = $this->online = $this->slots = 0; + $this->version = $this->players = $this->motd = $this->plugins = $this->map = $this->error = ''; + + $this->ip = $ip; + $this->port = $port; + + $array = false; + $Query = null; + + try{ + $Query = new MinecraftPing($ip, $port, 3); + + $array = $Query->Query(); + + if($array === false){ + $Query->Close(); + $Query->Connect(); + + $array = $Query->QueryOldPre17(); + } + }catch(MinecraftPingException $e){ + $Exception = $e; + } + + if($Query !== null){ $Query->Close(); } + + if(isset($Exception)){ return false; } + + if($array == false){ return false; } + + $this->status = 1; + + $this->version = @$array['version']['name']; + + $this->motd = @$array['description']; + + $this->online = intval(@$array['players']['online']); + + $this->slots = intval(@$array['players']['max']); + + return true; + } +} + +?> \ No newline at end of file diff --git a/upload/engine/monitoring/XPawQuery.php b/upload/engine/monitoring/XPawQuery.php new file mode 100644 index 0000000..d2dbbbf --- /dev/null +++ b/upload/engine/monitoring/XPawQuery.php @@ -0,0 +1,66 @@ +object = new MinecraftQuery(); + } + + public function connect($ip='127.0.0.1', $port=25565){ + $this->status = $this->online = $this->slots = 0; + $this->version = $this->players = $this->motd = $this->plugins = $this->map = $this->error = ''; + + $this->ip = $ip; + $this->port = $port; + + try{ + $this->object->Connect($ip, $port, 3); + }catch(MinecraftQueryException $e){ + $Exception = $e; + } + + if(isset($Exception)){ return false; } + + if(($array = $this->object->GetInfo()) == false){ return false; } + + $this->status = 1; + + $this->motd = $array['HostName']; + + $this->version = @$array['Version']; + + $this->online = intval(@$array['Players']); + + $this->slots = intval(@$array['MaxPlayers']); + + if(($players = $this->object->GetPlayers()) !== false){ + $this->players = @implode(', ', $players); + } + + $this->plugins = @implode(', ', @$array['Plugins']); + + return true; + } +} + +?> \ No newline at end of file diff --git a/upload/engine/monitoring/xpaw/MinecraftPing.php b/upload/engine/monitoring/xpaw/MinecraftPing.php new file mode 100644 index 0000000..c6f9b35 --- /dev/null +++ b/upload/engine/monitoring/xpaw/MinecraftPing.php @@ -0,0 +1,212 @@ +Query(); + * echo ''; + * + */ + + private $Socket; + private $ServerAddress; + private $ServerPort; + private $Timeout; + + public function __construct( $Address, $Port = 25565, $Timeout = 2 ) + { + $this->ServerAddress = $Address; + $this->ServerPort = (int)$Port; + $this->Timeout = (int)$Timeout; + + $this->Connect( ); + } + + public function __destruct( ) + { + $this->Close( ); + } + + public function Close( ) + { + if( $this->Socket !== null ) + { + fclose( $this->Socket ); + + $this->Socket = null; + } + } + + public function Connect( ) + { + $connectTimeout = $this->Timeout; + $this->Socket = @fsockopen( $this->ServerAddress, $this->ServerPort, $errno, $errstr, $connectTimeout ); + + if( !$this->Socket ) + { + throw new MinecraftPingException( "Failed to connect or create a socket: $errno ($errstr)" ); + } + + // Set Read/Write timeout + stream_set_timeout( $this->Socket, $this->Timeout ); + } + + public function Query( ) + { + $TimeStart = microtime(true); // for read timeout purposes + + // See http://wiki.vg/Protocol (Status Ping) + $Data = "\x00"; // packet ID = 0 (varint) + + $Data .= "\x04"; // Protocol version (varint) + $Data .= Pack( 'c', StrLen( $this->ServerAddress ) ) . $this->ServerAddress; // Server (varint len + UTF-8 addr) + $Data .= Pack( 'n', $this->ServerPort ); // Server port (unsigned short) + $Data .= "\x01"; // Next state: status (varint) + + $Data = Pack( 'c', StrLen( $Data ) ) . $Data; // prepend length of packet ID + data + + fwrite( $this->Socket, $Data ); // handshake + fwrite( $this->Socket, "\x01\x00" ); // status ping + + $Length = $this->ReadVarInt( ); // full packet length + + if( $Length < 10 ) + { + return FALSE; + } + + fgetc( $this->Socket ); // packet type, in server ping it's 0 + + $Length = $this->ReadVarInt( ); // string length + + $Data = ""; + do + { + if (microtime(true) - $TimeStart > $this->Timeout) + { + throw new MinecraftPingException( 'Server read timed out' ); + } + + $Remainder = $Length - StrLen( $Data ); + $block = fread( $this->Socket, $Remainder ); // and finally the json string + // abort if there is no progress + if (!$block) + { + throw new MinecraftPingException( 'Server returned too few data' ); + } + + $Data .= $block; + } while( StrLen($Data) < $Length ); + + if( $Data === FALSE ) + { + throw new MinecraftPingException( 'Server didn\'t return any data' ); + } + + $Data = JSON_Decode( $Data, true ); + + if( JSON_Last_Error( ) !== JSON_ERROR_NONE ) + { + if( Function_Exists( 'json_last_error_msg' ) ) + { + throw new MinecraftPingException( JSON_Last_Error_Msg( ) ); + } + else + { + throw new MinecraftPingException( 'JSON parsing failed' ); + } + + return FALSE; + } + + return $Data; + } + + public function QueryOldPre17( ) + { + fwrite( $this->Socket, "\xFE\x01" ); + $Data = fread( $this->Socket, 512 ); + $Len = StrLen( $Data ); + + if( $Len < 4 || $Data[ 0 ] !== "\xFF" ) + { + return FALSE; + } + + $Data = SubStr( $Data, 3 ); // Strip packet header (kick message packet and short length) + $Data = iconv( 'UTF-16BE', 'UTF-8', $Data ); + + // Are we dealing with Minecraft 1.4+ server? + if( $Data[ 1 ] === "\xA7" && $Data[ 2 ] === "\x31" ) + { + $Data = Explode( "\x00", $Data ); + + return Array( + 'HostName' => $Data[ 3 ], + 'Players' => IntVal( $Data[ 4 ] ), + 'MaxPlayers' => IntVal( $Data[ 5 ] ), + 'Protocol' => IntVal( $Data[ 1 ] ), + 'Version' => $Data[ 2 ] + ); + } + + $Data = Explode( "\xA7", $Data ); + + return Array( + 'HostName' => SubStr( $Data[ 0 ], 0, -1 ), + 'Players' => isset( $Data[ 1 ] ) ? IntVal( $Data[ 1 ] ) : 0, + 'MaxPlayers' => isset( $Data[ 2 ] ) ? IntVal( $Data[ 2 ] ) : 0, + 'Protocol' => 0, + 'Version' => '1.3' + ); + } + + private function ReadVarInt( ) + { + $i = 0; + $j = 0; + + while( true ) + { + $k = @fgetc( $this->Socket ); + + if( $k === FALSE ) + { + return 0; + } + + $k = Ord( $k ); + + $i |= ( $k & 0x7F ) << $j++ * 7; + + if( $j > 5 ) + { + throw new MinecraftPingException( 'VarInt too big' ); + } + + if( ( $k & 0x80 ) != 128 ) + { + break; + } + } + + return $i; + } +} diff --git a/upload/engine/monitoring/xpaw/MinecraftPingException.php b/upload/engine/monitoring/xpaw/MinecraftPingException.php new file mode 100644 index 0000000..309c657 --- /dev/null +++ b/upload/engine/monitoring/xpaw/MinecraftPingException.php @@ -0,0 +1,7 @@ +Socket = @FSockOpen( 'udp://' . $Ip, (int)$Port, $ErrNo, $ErrStr, $Timeout ); + + if( $ErrNo || $this->Socket === false ) + { + throw new MinecraftQueryException( 'Could not create socket: ' . $ErrStr ); + } + + Stream_Set_Timeout( $this->Socket, $Timeout ); + Stream_Set_Blocking( $this->Socket, true ); + + try + { + $Challenge = $this->GetChallenge( ); + + $this->GetStatus( $Challenge ); + } + // We catch this because we want to close the socket, not very elegant + catch( MinecraftQueryException $e ) + { + FClose( $this->Socket ); + + throw new MinecraftQueryException( $e->getMessage( ) ); + } + + FClose( $this->Socket ); + } + + public function GetInfo( ) + { + return isset( $this->Info ) ? $this->Info : false; + } + + public function GetPlayers( ) + { + return isset( $this->Players ) ? $this->Players : false; + } + + private function GetChallenge( ) + { + $Data = $this->WriteData( self :: HANDSHAKE ); + + if( $Data === false ) + { + throw new MinecraftQueryException( 'Failed to receive challenge.' ); + } + + return Pack( 'N', $Data ); + } + + private function GetStatus( $Challenge ) + { + $Data = $this->WriteData( self :: STATISTIC, $Challenge . Pack( 'c*', 0x00, 0x00, 0x00, 0x00 ) ); + + if( !$Data ) + { + throw new MinecraftQueryException( 'Failed to receive status.' ); + } + + $Last = ''; + $Info = Array( ); + + $Data = SubStr( $Data, 11 ); // splitnum + 2 int + $Data = Explode( "\x00\x00\x01player_\x00\x00", $Data ); + + if( Count( $Data ) !== 2 ) + { + throw new MinecraftQueryException( 'Failed to parse server\'s response.' ); + } + + $Players = SubStr( $Data[ 1 ], 0, -2 ); + $Data = Explode( "\x00", $Data[ 0 ] ); + + // Array with known keys in order to validate the result + // It can happen that server sends custom strings containing bad things (who can know!) + $Keys = Array( + 'hostname' => 'HostName', + 'gametype' => 'GameType', + 'version' => 'Version', + 'plugins' => 'Plugins', + 'map' => 'Map', + 'numplayers' => 'Players', + 'maxplayers' => 'MaxPlayers', + 'hostport' => 'HostPort', + 'hostip' => 'HostIp', + 'game_id' => 'GameName' + ); + + foreach( $Data as $Key => $Value ) + { + if( ~$Key & 1 ) + { + if( !Array_Key_Exists( $Value, $Keys ) ) + { + $Last = false; + continue; + } + + $Last = $Keys[ $Value ]; + $Info[ $Last ] = ''; + } + else if( $Last != false ) + { + $Info[ $Last ] = mb_convert_encoding( $Value, 'UTF-8' ); + } + } + + // Ints + $Info[ 'Players' ] = IntVal( $Info[ 'Players' ] ); + $Info[ 'MaxPlayers' ] = IntVal( $Info[ 'MaxPlayers' ] ); + $Info[ 'HostPort' ] = IntVal( $Info[ 'HostPort' ] ); + + // Parse "plugins", if any + if( $Info[ 'Plugins' ] ) + { + $Data = Explode( ": ", $Info[ 'Plugins' ], 2 ); + + $Info[ 'RawPlugins' ] = $Info[ 'Plugins' ]; + $Info[ 'Software' ] = $Data[ 0 ]; + + if( Count( $Data ) == 2 ) + { + $Info[ 'Plugins' ] = Explode( "; ", $Data[ 1 ] ); + } + } + else + { + $Info[ 'Software' ] = 'Vanilla'; + } + + $this->Info = $Info; + + if( empty( $Players ) ) + { + $this->Players = null; + } + else + { + $this->Players = Explode( "\x00", $Players ); + } + } + + private function WriteData( $Command, $Append = "" ) + { + $Command = Pack( 'c*', 0xFE, 0xFD, $Command, 0x01, 0x02, 0x03, 0x04 ) . $Append; + $Length = StrLen( $Command ); + + if( $Length !== FWrite( $this->Socket, $Command, $Length ) ) + { + throw new MinecraftQueryException( "Failed to write on socket." ); + } + + $Data = FRead( $this->Socket, 4096 ); + + if( $Data === false ) + { + throw new MinecraftQueryException( "Failed to read from socket." ); + } + + if( StrLen( $Data ) < 5 || $Data[ 0 ] != $Command[ 2 ] ) + { + return false; + } + + return SubStr( $Data, 5 ); + } +} diff --git a/upload/engine/monitoring/xpaw/MinecraftQueryException.php b/upload/engine/monitoring/xpaw/MinecraftQueryException.php new file mode 100644 index 0000000..9a55a89 --- /dev/null +++ b/upload/engine/monitoring/xpaw/MinecraftQueryException.php @@ -0,0 +1,7 @@ +core = $core; $this->db = $core->db; - $this->config = $core->config; + $this->cfg = $core->cfg; $this->lng = $core->lng; $this->login = $this->lng['u_group_def']; @@ -56,35 +58,43 @@ $uid = intval($cookie[0]); $hash = $cookie[1]; - $query = $this->db->query("SELECT `u`.gid, `u`.login, `u`.email, `u`.password, `u`.`salt`, `u`.`tmp`, `u`.ip_create, `u`.`data`, `u`.`is_skin`, `u`.`is_cloak`, `u`.`color`, `u`.`uuid`, - `g`.title, `g`.`description`, `g`.`permissions`, `g`.`color` AS `gcolor`, - `i`.`money`, `i`.realmoney, `i`.bank - FROM `mcr_users` AS `u` - INNER JOIN `mcr_groups` AS `g` - ON `g`.id=`u`.gid - LEFT JOIN `mcr_iconomy` AS `i` - ON `i`.login=`u`.login - WHERE `u`.id='$uid'"); + $ctables = $this->cfg->db['tables']; + + $ug_f = $ctables['ugroups']['fields']; + $us_f = $ctables['users']['fields']; + $ic_f = $ctables['iconomy']['fields']; + + $query = $this->db->query("SELECT `u`.`{$us_f['group']}`, `u`.`{$us_f['login']}`, `u`.`{$us_f['email']}`, `u`.`{$us_f['pass']}`, + `u`.`{$us_f['salt']}`, `u`.`{$us_f['tmp']}`, `u`.`{$us_f['ip_create']}`, `u`.`{$us_f['data']}`, + `u`.`{$us_f['is_skin']}`, `u`.`{$us_f['is_cloak']}`, `u`.`{$us_f['color']}`, `u`.`{$us_f['uuid']}`, + `g`.`{$ug_f['title']}`, `g`.`{$ug_f['text']}`, `g`.`{$ug_f['perm']}`, `g`.`{$ug_f['color']}` AS `gcolor`, + `i`.`{$ic_f['money']}`, `i`.`{$ic_f['rm']}`, `i`.`{$ic_f['bank']}` + FROM `{$this->cfg->tabname('users')}` AS `u` + INNER JOIN `{$this->cfg->tabname('ugroups')}` AS `g` + ON `g`.`{$ug_f['id']}`=`u`.`{$us_f['group']}` + LEFT JOIN `{$this->cfg->tabname('iconomy')}` AS `i` + ON `i`.`{$ic_f['login']}`=`u`.`{$us_f['login']}` + WHERE `u`.`{$us_f['id']}`='$uid'"); if(!$query || $this->db->num_rows($query)<=0){ $this->set_unauth(); $this->core->notify(); } $ar = $this->db->fetch_assoc($query); - $tmp = $this->db->HSC($ar['tmp']); - $password = $this->db->HSC($ar['password']); + $tmp = $this->db->HSC($ar[$us_f['tmp']]); + $password = $this->db->HSC($ar[$us_f['pass']]); - $new_hash = $uid.$tmp.$this->ip.md5($this->config->main['mcr_secury']); + $new_hash = $uid.$tmp.$this->ip.md5($this->cfg->main['mcr_secury']); $ar_hash = $uid.'_'.md5($new_hash); // Check security auth if($_COOKIE['mcr_user'] !== $ar_hash){ $this->set_unauth(); $this->core->notify(); } - $login = $this->db->HSC($ar['login']); + $login = $this->db->HSC($ar[$us_f['login']]); - $color = (!empty($ar['color'])) ? $this->db->HSC($ar['color']) : $this->db->HSC($ar['gcolor']); + $color = (!empty($ar[$us_f['color']])) ? $this->db->HSC($ar[$us_f['color']]) : $this->db->HSC($ar['gcolor']); - $group = $this->db->HSC($ar['title']); + $group = $this->db->HSC($ar[$ug_f['title']]); $gcolor = $this->db->HSC($ar['gcolor']); @@ -92,7 +102,7 @@ $this->id = $uid; // Group identificator - $this->gid = intval($ar['gid']); + $this->gid = intval($ar[$us_f['group']]); // Username $this->login = $login; @@ -101,25 +111,25 @@ $this->login_v2 = $this->core->colorize($login, $color); // E-Mail - $this->email = $this->db->HSC($ar['email']); + $this->email = $this->db->HSC($ar[$us_f['email']]); // UUID - $this->uuid = $this->db->HSC($ar['uuid']); + $this->uuid = $this->db->HSC($ar[$us_f['uuid']]); // Password hash $this->password = $password; // Salt of password - $this->salt = $ar['salt']; + $this->salt = $ar[$us_f['salt']]; // Temp hash $this->tmp = $tmp; // Register ip - $this->ip_create = $this->db->HSC($ar['ip_create']); + $this->ip_create = $this->db->HSC($ar[$us_f['ip_create']]); // Other information - $this->data = json_decode($ar['data']); + $this->data = json_decode($ar[$us_f['data']]); // Group title $this->group = $group; @@ -128,22 +138,22 @@ $this->group_v2 = $this->core->colorize($group, $gcolor); // Group description - $this->group_desc = $this->db->HSC($ar['description']); + $this->group_desc = $this->db->HSC($ar[$ug_f['text']]); // Permissions - $this->permissions = @json_decode($ar['permissions']); + $this->permissions = @json_decode($ar[$ug_f['perm']]); // Permissions - $this->permissions_v2 = @json_decode($ar['permissions'], true); + $this->permissions_v2 = @json_decode($ar[$ug_f['perm']], true); // Is auth status $this->is_auth = true; // Is default skin - $this->is_skin = (intval($ar['is_skin'])==1) ? true : false; + $this->is_skin = (intval($ar[$us_f['is_skin']])==1) ? true : false; // Is isset cloak - $this->is_cloak = (intval($ar['is_cloak'])==1) ? true : false; + $this->is_cloak = (intval($ar[$us_f['is_cloak']])==1) ? true : false; $this->skin = ($this->is_skin || $this->is_cloak) ? $this->login : 'default'; @@ -153,13 +163,13 @@ $this->gender = (intval($this->data->gender)==1) ? $this->lng['gender_w'] : $this->lng['gender_m']; // Game money balance - $this->money = floatval($ar['money']); + $this->money = floatval($ar[$ic_f['money']]); // Real money balance - $this->realmoney = floatval($ar['realmoney']); + $this->realmoney = floatval($ar[$ic_f['rm']]); // Bank money balance (for plugins) - $this->bank = floatval($ar['bank']); + $this->bank = floatval($ar[$ic_f['bank']]); } diff --git a/upload/index.php b/upload/index.php index 614ccc0..9c7b1bf 100644 --- a/upload/index.php +++ b/upload/index.php @@ -6,12 +6,12 @@ $core->def_header = $core->sp(MCR_THEME_PATH."header.html"); -$mode = (isset($_GET['mode'])) ? $_GET['mode'] : $core->config->main['s_dpage']; +$mode = (isset($_GET['mode'])) ? $_GET['mode'] : $core->cfg->main['s_dpage']; -if($core->config->main['install']){ $core->notify($core->lng['e_attention'], $core->lng['e_install'], 4, 'install/'); } +if($core->cfg->main['install']){ $core->notify($core->lng['e_attention'], $core->lng['e_install'], 4, 'install/'); } -if($core->config->func['close'] && !$core->is_access('sys_adm_main')){ - if($core->config->func['close_time']<=0 || $core->config->func['close_time']>time()){ +if($core->cfg->func['close'] && !$core->is_access('sys_adm_main')){ + if($core->cfg->func['close_time']<=0 || $core->cfg->func['close_time']>time()){ $mode = ($mode=='auth') ? 'auth' : 'close'; } } @@ -46,7 +46,7 @@ "L_BLOCKS" => $core->load_def_blocks(), "HEADER" => $core->header, "DEF_HEADER" => $core->def_header, - "CFG" => $core->config->main, + "CFG" => $core->cfg->main, "ADVICE" => $core->advice(), "MENU" => $core->menu->_list(), "BREADCRUMBS" => $core->bc, @@ -56,7 +56,7 @@ // Write global template echo $core->sp(MCR_THEME_PATH."global.html", $data_global); -if(!$core->config->main['debug'] || !@$core->user->permissions->sys_debug){ exit; } +if(!$core->cfg->main['debug'] || !@$core->user->permissions->sys_debug){ exit; } $data_debug = array( "PLT" => number_format(microtime(true)-DEBUG_PLT,3), diff --git a/upload/install/index.php b/upload/install/index.php index 7ac295b..8c6e576 100644 --- a/upload/install/index.php +++ b/upload/install/index.php @@ -12,7 +12,7 @@ $mode = (isset($_GET['mode'])) ? $_GET['mode'] : 'step_1'; -if(!$core->config->main['install'] && $mode!='finish'){ $core->notify('','', 3, 'install/?mode=finish'); } +if(!$core->cfg->main['install'] && $mode!='finish'){ $core->notify('','', 3, 'install/?mode=finish'); } switch($mode){ case 'step_1': @@ -50,35 +50,25 @@ ); ob_start(); - foreach($array as $key => $value) { - if($mode==$key){ echo '
  • '.$value.'
  • '; }else{ echo '
  • '.$value.'
  • '; } } - $data['ITEMS'] = ob_get_clean(); - include(MCR_SIDE_PATH."1_notify.php"); - - require_once(MCR_LANG_DIR.'blocks/notify.php'); - $core->lng_b = $lng; - - $notify = new block_notify($core); - - return $notify->content().$core->sp(MCR_ROOT."install/theme/left-block.html", $data); + return $core->sp(MCR_ROOT."install/theme/left-block.html", $data); } $data_global = array( "CONTENT" => $content, "TITLE" => $core->title, - "L_BLOCKS" => load_left_block($core, $mode), + "L_BLOCKS" => load_left_block($core, $mode).$core->load_def_blocks(), "HEADER" => $core->header, "DEF_HEADER" => $core->def_header, - "CFG" => $core->config->main, + "CFG" => $core->cfg->main, "ADVICE" => '',//$core->advice(), "MENU" => '',//$core->menu->_list(), "BREADCRUMBS" => $core->bc, diff --git a/upload/install/settings.php b/upload/install/settings.php index 8961c50..64491f9 100644 --- a/upload/install/settings.php +++ b/upload/install/settings.php @@ -3,13 +3,13 @@ if(!defined("MCR")){ exit("Hacking Attempt!"); } class module{ - private $core, $db, $config, $lng, $lng_m, $user; + private $core, $db, $cfg, $lng, $lng_m, $user; public function __construct($core){ $this->core = $core; $this->db = $core->db; $this->user = $core->user; - $this->config = $core->config; + $this->cfg = $core->cfg; $this->lng = $core->lng; $this->lng_m = $core->lng_m; @@ -28,17 +28,17 @@ if(isset($_SESSION['settings'])){ $this->core->notify('', '', 4, 'install/?mode=finish'); } if(!isset($_SESSION['fs_name'])){ - $_SESSION['fs_name'] = $this->config->main['s_name']; - $_SESSION['fs_about'] = $this->config->main['s_about']; - $_SESSION['fs_keywords'] = $this->config->main['s_keywords']; - $_SESSION['fs_from'] = $this->config->mail['from']; - $_SESSION['fs_from_name'] = $this->config->mail['from_name']; - $_SESSION['fs_reply'] = $this->config->mail['reply']; - $_SESSION['fs_reply_name'] = $this->config->mail['reply_name']; + $_SESSION['fs_name'] = $this->cfg->main['s_name']; + $_SESSION['fs_about'] = $this->cfg->main['s_about']; + $_SESSION['fs_keywords'] = $this->cfg->main['s_keywords']; + $_SESSION['fs_from'] = $this->cfg->mail['from']; + $_SESSION['fs_from_name'] = $this->cfg->mail['from_name']; + $_SESSION['fs_reply'] = $this->cfg->mail['reply']; + $_SESSION['fs_reply_name'] = $this->cfg->mail['reply_name']; $_SESSION['fs_smtp'] = ''; - $_SESSION['fs_smtp_host'] = $this->config->mail['smtp_host']; - $_SESSION['fs_smtp_user'] = $this->config->mail['smtp_user']; - $_SESSION['fs_smtp_pass'] = $this->config->mail['smtp_pass']; + $_SESSION['fs_smtp_host'] = $this->cfg->mail['smtp_host']; + $_SESSION['fs_smtp_user'] = $this->cfg->mail['smtp_user']; + $_SESSION['fs_smtp_pass'] = $this->cfg->mail['smtp_pass']; } if($_SERVER['REQUEST_METHOD']=='POST'){ @@ -55,11 +55,11 @@ $_SESSION['fs_smtp_user'] = $this->db->HSC(@$_POST['smtp_user']); $_SESSION['fs_smtp_pass'] = $this->db->HSC(@$_POST['smtp_pass']); - $this->config->main['s_name'] = $this->db->HSC($this->core->safestr(@$_POST['s_name'])); + $this->cfg->main['s_name'] = $this->db->HSC($this->core->safestr(@$_POST['s_name'])); - $this->config->main['s_about'] = $this->db->HSC($this->core->safestr(@$_POST['s_about'])); + $this->cfg->main['s_about'] = $this->db->HSC($this->core->safestr(@$_POST['s_about'])); - $this->config->main['s_keywords'] = $this->db->HSC($this->core->safestr(@$_POST['s_keywords'])); + $this->cfg->main['s_keywords'] = $this->db->HSC($this->core->safestr(@$_POST['s_keywords'])); $url = substr($_SERVER['PHP_SELF'], 0, strpos($_SERVER['PHP_SELF'], 'install')); @@ -67,35 +67,35 @@ $full_url = $http.'://'.$_SERVER['HTTP_HOST']; - $this->config->main['s_root'] = $url; + $this->cfg->main['s_root'] = $url; - $this->config->main['s_root_full'] = $full_url; + $this->cfg->main['s_root_full'] = $full_url; - $this->config->main['mcr_secury'] = $this->core->random(20, false); + $this->cfg->main['mcr_secury'] = $this->core->random(20, false); - $this->config->main['install'] = false; + $this->cfg->main['install'] = false; - $this->config->mail['from'] = $this->db->HSC($this->core->safestr(@$_POST['from'])); + $this->cfg->mail['from'] = $this->db->HSC($this->core->safestr(@$_POST['from'])); - $this->config->mail['from_name'] = $this->db->HSC($this->core->safestr(@$_POST['from_name'])); + $this->cfg->mail['from_name'] = $this->db->HSC($this->core->safestr(@$_POST['from_name'])); - $this->config->mail['reply'] = $this->db->HSC($this->core->safestr(@$_POST['reply'])); + $this->cfg->mail['reply'] = $this->db->HSC($this->core->safestr(@$_POST['reply'])); - $this->config->mail['reply_name'] = $this->db->HSC($this->core->safestr(@$_POST['reply_name'])); + $this->cfg->mail['reply_name'] = $this->db->HSC($this->core->safestr(@$_POST['reply_name'])); - $this->config->mail['smtp'] = (intval(@$_POST['smtp'])===1) ? true : false; + $this->cfg->mail['smtp'] = (intval(@$_POST['smtp'])===1) ? true : false; - $this->config->mail['smtp_host'] = $this->db->HSC($this->core->safestr(@$_POST['smtp_host'])); + $this->cfg->mail['smtp_host'] = $this->db->HSC($this->core->safestr(@$_POST['smtp_host'])); - $this->config->mail['smtp_user'] = $this->db->HSC($this->core->safestr(@$_POST['smtp_user'])); + $this->cfg->mail['smtp_user'] = $this->db->HSC($this->core->safestr(@$_POST['smtp_user'])); - $this->config->mail['smtp_pass'] = $this->db->HSC($this->core->safestr(@$_POST['smtp_pass'])); + $this->cfg->mail['smtp_pass'] = $this->db->HSC($this->core->safestr(@$_POST['smtp_pass'])); - if(!$this->config->savecfg($this->config->main, 'main.php', 'main')){ + if(!$this->cfg->savecfg($this->cfg->main, 'main.php', 'main')){ $this->core->notify($this->lng['e_msg'], $this->lng_m['e_settings'], 2, 'install/?mode=settings'); } - if(!$this->config->savecfg($this->config->mail, 'mail.php', 'mail')){ + if(!$this->cfg->savecfg($this->cfg->mail, 'mail.php', 'mail')){ $this->core->notify($this->lng['e_msg'], $this->lng_m['e_settings'], 2, 'install/?mode=settings'); } diff --git a/upload/install/step_1.php b/upload/install/step_1.php index 430b553..65efabb 100644 --- a/upload/install/step_1.php +++ b/upload/install/step_1.php @@ -3,13 +3,13 @@ if(!defined("MCR")){ exit("Hacking Attempt!"); } class module{ - private $core, $db, $config, $lng, $lng_m, $user; + private $core, $db, $cfg, $lng, $lng_m, $user; public function __construct($core){ $this->core = $core; $this->db = $core->db; $this->user = $core->user; - $this->config = $core->config; + $this->cfg = $core->cfg; $this->lng = $core->lng; $this->lng_m = $core->lng_m; @@ -65,13 +65,13 @@ if(!is_writable(MCR_ROOT.'uploads') || !is_readable(MCR_ROOT.'uploads')){ $this->core->notify($this->lng['e_msg'], $this->lng_m['e_perm_uploads'], 2, 'install/?mode=step_1'); } - if(!is_writable(MCR_ROOT.'uploads/cloaks') || !is_readable(MCR_ROOT.'uploads/cloaks')){ $this->core->notify($this->lng['e_msg'], $this->lng_m['e_perm_cloaks'], 2, 'install/?mode=step_1'); } + if(!is_writable(MCR_ROOT.$this->cfg->main['cloak_path']) || !is_readable(MCR_ROOT.$this->cfg->main['cloak_path'])){ $this->core->notify($this->lng['e_msg'], $this->lng_m['e_perm_cloaks'], 2, 'install/?mode=step_1'); } if(!is_writable(MCR_ROOT.'uploads/panel-icons') || !is_readable(MCR_ROOT.'uploads/panel-icons')){ $this->core->notify($this->lng['e_msg'], $this->lng_m['e_perm_icons'], 2, 'install/?mode=step_1'); } - if(!is_writable(MCR_ROOT.'uploads/skins') || !is_readable(MCR_ROOT.'uploads/skins')){ $this->core->notify($this->lng['e_msg'], $this->lng_m['e_perm_skins'], 2, 'install/?mode=step_1'); } + if(!is_writable(MCR_ROOT.$this->cfg->main['skin_path']) || !is_readable(MCR_ROOT.$this->cfg->main['skin_path'])){ $this->core->notify($this->lng['e_msg'], $this->lng_m['e_perm_skins'], 2, 'install/?mode=step_1'); } - if(!is_writable(MCR_ROOT.'uploads/skins/interface') || !is_readable(MCR_ROOT.'uploads/skins/interface')){ $this->core->notify($this->lng['e_msg'], $this->lng_m['e_perm_intf'], 2, 'install/?mode=step_1'); } + if(!is_writable(MCR_ROOT.$this->cfg->main['skin_path'].'interface') || !is_readable(MCR_ROOT.$this->cfg->main['skin_path'].'interface')){ $this->core->notify($this->lng['e_msg'], $this->lng_m['e_perm_intf'], 2, 'install/?mode=step_1'); } if(!is_writable(MCR_ROOT.'uploads/smiles') || !is_readable(MCR_ROOT.'uploads/smiles')){ $this->core->notify($this->lng['e_msg'], $this->lng_m['e_perm_smiles'], 2, 'install/?mode=step_1'); } @@ -97,13 +97,13 @@ "FOLDER_UPLOADS" => (is_writable(MCR_ROOT.'uploads') && is_readable(MCR_ROOT.'uploads')) ? ''.$this->lng['yes'].'' : ''.$this->lng['no'].'', - "FOLDER_CLOAKS" => (is_writable(MCR_ROOT.'uploads/cloaks') && is_readable(MCR_ROOT.'uploads/cloaks')) ? ''.$this->lng['yes'].'' : ''.$this->lng['no'].'', + "FOLDER_CLOAKS" => (is_writable(MCR_ROOT.$this->cfg->main['cloak_path']) && is_readable(MCR_ROOT.$this->cfg->main['cloak_path'])) ? ''.$this->lng['yes'].'' : ''.$this->lng['no'].'', + + "FOLDER_SKINS" => (is_writable(MCR_ROOT.$this->cfg->main['skin_path']) && is_readable(MCR_ROOT.$this->cfg->main['skin_path'])) ? ''.$this->lng['yes'].'' : ''.$this->lng['no'].'', "FOLDER_ICONS" => (is_writable(MCR_ROOT.'uploads/panel-icons') && is_readable(MCR_ROOT.'uploads/panel-icons')) ? ''.$this->lng['yes'].'' : ''.$this->lng['no'].'', - "FOLDER_SKINS" => (is_writable(MCR_ROOT.'uploads/skins') && is_readable(MCR_ROOT.'uploads/skins')) ? ''.$this->lng['yes'].'' : ''.$this->lng['no'].'', - - "FOLDER_INTERF" => (is_writable(MCR_ROOT.'uploads/skins/interface') && is_readable(MCR_ROOT.'uploads/skins')) ? ''.$this->lng['yes'].'' : ''.$this->lng['no'].'', + "FOLDER_INTERF" => (is_writable(MCR_ROOT.$this->cfg->main['skin_path'].'interface') && is_readable(MCR_ROOT.$this->cfg->main['skin_path'])) ? ''.$this->lng['yes'].'' : ''.$this->lng['no'].'', "FOLDER_SMILES" => (is_writable(MCR_ROOT.'uploads/smiles') && is_readable(MCR_ROOT.'uploads/smiles')) ? ''.$this->lng['yes'].'' : ''.$this->lng['no'].'', ); diff --git a/upload/install/step_2.php b/upload/install/step_2.php index d9a3a56..a350883 100644 --- a/upload/install/step_2.php +++ b/upload/install/step_2.php @@ -3,13 +3,13 @@ if(!defined("MCR")){ exit("Hacking Attempt!"); } class module{ - private $core, $db, $config, $lng, $lng_m, $user; + private $core, $db, $cfg, $lng, $lng_m, $user; public function __construct($core){ $this->core = $core; $this->db = $core->db; $this->user = $core->user; - $this->config = $core->config; + $this->cfg = $core->cfg; $this->lng = $core->lng; $this->lng_m = $core->lng_m; @@ -28,7 +28,7 @@ if(isset($_SESSION['step_2'])){ $this->core->notify('', '', 4, 'install/?mode=step_3'); } if(!isset($_SESSION['f_host'])){ - $_SESSION['f_host'] = 'localhost'; + $_SESSION['f_host'] = '127.0.0.1'; $_SESSION['f_port'] = 3306; $_SESSION['f_base'] = ''; $_SESSION['f_backend'] = ''; @@ -37,30 +37,28 @@ if($_SERVER['REQUEST_METHOD']=='POST'){ - $this->config->db['host'] = @$_POST['host']; + $this->cfg->db['host'] = @$_POST['host']; $_SESSION['f_host'] = $this->db->HSC(@$_POST['host']); - $this->config->db['port'] = intval(@$_POST['port']); + $this->cfg->db['port'] = intval(@$_POST['port']); $_SESSION['f_port'] = intval(@$_POST['port']); - $this->config->db['base'] = @$_POST['base']; + $this->cfg->db['base'] = @$_POST['base']; $_SESSION['f_base'] = $this->db->HSC(@$_POST['base']); - $this->config->db['user'] = @$_POST['user']; + $this->cfg->db['user'] = @$_POST['user']; $_SESSION['f_user'] = $this->db->HSC(@$_POST['user']); - $this->config->db['pass'] = @$_POST['pass']; + $this->cfg->db['pass'] = @$_POST['pass']; - $this->config->db['backend'] = (@$_POST['type']=='mysqli') ? 'mysqli' : 'mysql'; + $this->cfg->db['backend'] = (@$_POST['type']=='mysqli') ? 'mysqli' : 'mysql'; $_SESSION['f_backend'] = (@$_POST['type']=='mysql') ? 'selected' : ''; - $connect = @mysql_connect($this->config->db['host'].':'.$this->config->db['port'], $this->config->db['user'], $this->config->db['pass']); + $this->db->__construct($this->cfg); - if(!@mysql_select_db($this->config->db['base'], $connect)){ - $this->core->notify($this->lng['e_msg'], $this->lng_m['e_set_base'], 2, 'install/?mode=step_2'); - } + if($this->db->obj->connect_errno){ $this->core->notify($this->lng['e_msg'], $this->lng_m['e_set_base'], 2, 'install/?mode=step_2'); } - if(!$this->config->savecfg($this->config->db, 'db.php', 'db')){ + if(!$this->cfg->savecfg($this->cfg->db, 'db.php', 'db')){ $this->core->notify($this->lng['e_msg'], $this->lng_m['e_settings'], 2, 'install/?mode=step_2'); } diff --git a/upload/install/step_3.php b/upload/install/step_3.php index 905e35e..2d31dfc 100644 --- a/upload/install/step_3.php +++ b/upload/install/step_3.php @@ -3,13 +3,13 @@ if(!defined("MCR")){ exit("Hacking Attempt!"); } class module{ - private $core, $db, $config, $lng, $lng_m, $user; + private $core, $db, $cfg, $lng, $lng_m, $user; public function __construct($core){ $this->core = $core; $this->db = $core->db; $this->user = $core->user; - $this->config = $core->config; + $this->cfg = $core->cfg; $this->lng = $core->lng; $this->lng_m = $core->lng_m; @@ -59,30 +59,65 @@ $this->core->notify($this->lng['e_msg'], $this->lng_m['e_email_format'], 2, 'install/?mode=step_3'); } - $login = $this->db->safesql(@$_POST['login']); - $email = $this->db->safesql(@$_POST['email']); + $login = $this->db->safesql(@$_POST['login']); + $email = $this->db->safesql(@$_POST['email']); - $salt = $this->db->safesql($this->core->random()); - $password = $this->core->gen_password(@$_POST['password'], $salt, $method); - $password = $this->db->safesql($password); - $uuid = $this->db->safesql($this->user->logintouuid(@$_POST['login'])); - $ip = $this->user->ip; + $salt = $this->db->safesql($this->core->random()); + $password = $this->core->gen_password(@$_POST['password'], $salt, $method); + $password = $this->db->safesql($password); + $uuid = $this->db->safesql($this->user->logintouuid(@$_POST['login'])); + $ip = $this->user->ip; $data = array( - "time_create" => time(), - "time_last" => time(), - "firstname" => "", - "lastname" => "", - "gender" => 0, - "birthday" => 0 + "time_create" => time(), + "time_last" => time(), + "firstname" => "", + "lastname" => "", + "gender" => 0, + "birthday" => 0 ); $data = $this->db->safesql(json_encode($data)); $tables = file(MCR_ROOT.'install/tables.sql'); + $ctables = $this->cfg->db['tables']; + + $ug_f = $ctables['ugroups']['fields']; + $ic_f = $ctables['iconomy']['fields']; + $logs_f = $ctables['logs']['fields']; + $us_f = $ctables['users']['fields']; + $string = ""; + $search = array( + '~ug~', + '~ug_id~', '~ug_title~', '~ug_text~', '~ug_color~', '~ug_perm~', + + '~ic~', + '~ic_id~', '~ic_login~', '~ic_money~', '~ic_rc~', '~ic_bank~', + + '~logs~', + '~logs_id~', '~logs_uid~', '~logs_msg~', '~logs_date~', + + '~us~', + '~us_id~', '~us_gid~', '~us_login~', '~us_email~', '~us_pass~', '~us_uuid~', '~us_salt~', '~us_tmp~', '~us_is_skin~', '~us_is_cloak~', '~us_ip_create~', '~us_ip_last~', '~us_color~', '~us_data~', '~us_ban_server~', + ); + + $replace = array( + $this->cfg->tabname('ugroups'), + $ug_f['id'], $ug_f['title'], $ug_f['text'], $ug_f['color'], $ug_f['perm'], + + $this->cfg->tabname('iconomy'), + $ic_f['id'], $ic_f['login'], $ic_f['money'], $ic_f['rm'], $ic_f['bank'], + + $this->cfg->tabname('logs'), + $logs_f['id'], $logs_f['uid'], $logs_f['msg'], $logs_f['date'], + + $this->cfg->tabname('users'), + $us_f['id'], $us_f['group'], $us_f['login'], $us_f['email'], $us_f['pass'], $us_f['uuid'], $us_f['salt'], $us_f['tmp'], $us_f['is_skin'], $us_f['is_cloak'], $us_f['ip_create'], $us_f['ip_last'], $us_f['color'], $us_f['data'], $us_f['ban_server'], + ); + foreach($tables as $key => $value){ $value = trim($value); @@ -96,12 +131,14 @@ continue; } + $value = str_replace($search, $replace, $value); + $string .= $value; } - $sql1 = $this->db->query("INSERT INTO `mcr_users` - (`gid`, `login`, `email`, `password`, `uuid`, `salt`, `ip_create`, `ip_last`, `data`) + $sql1 = $this->db->query("INSERT INTO `{$this->cfg->tabname('users')}` + (`{$us_f['group']}`, `{$us_f['login']}`, `{$us_f['email']}`, `{$us_f['pass']}`, `{$us_f['uuid']}`, `{$us_f['salt']}`, `{$us_f['ip_create']}`, `{$us_f['ip_last']}`, `{$us_f['data']}`) VALUES ('3', '$login', '$email', '$password', '$uuid', '$salt', '$ip', '$ip', '$data')"); @@ -109,24 +146,24 @@ $url = substr($_SERVER['PHP_SELF'], 0, strpos($_SERVER['PHP_SELF'], 'install')); - $sql2 = $this->db->query("INSERT INTO `mcr_iconomy` - (`login`, `money`, `realmoney`, `bank`) + $sql2 = $this->db->query("INSERT INTO `{$this->cfg->tabname('iconomy')}` + (`{$ic_f['login']}`, `{$ic_f['money']}`, `{$ic_f['rm']}`, `{$ic_f['bank']}`) VALUES ('$login', 0, 0, 0)"); if(!$sql2){ $this->core->notify($this->lng['e_msg'], $this->lng_m['e_add_economy'], 2, 'install/?mode=step_3'); } - $sql9 = $this->db->query("UPDATE `mcr_groups` SET id='0' WHERE id='4'"); + $sql9 = $this->db->query("UPDATE `{$this->cfg->tabname('ugroups')}` SET `{$ug_f['id']}`='0' WHERE `{$ug_f['id']}`='4'"); if(!$sql9){ $this->core->notify($this->lng['e_msg'], $this->lng_m['e_upd_group'], 2, 'install/?mode=step_3'); } - $sql10 = $this->db->query("ALTER TABLE `mcr_groups` AUTO_INCREMENT=0"); + $sql10 = $this->db->query("ALTER TABLE `{$this->cfg->tabname('ugroups')}` AUTO_INCREMENT=0"); if(!$sql10){ $this->core->notify($this->lng['e_msg'], $this->lng_m['e_upd_group'], 2, 'install/?mode=step_3'); } - $this->config->main['crypt'] = $method; + $this->cfg->main['crypt'] = $method; - if(!$this->config->savecfg($this->config->main, 'main.php', 'main')){ + if(!$this->cfg->savecfg($this->cfg->main, 'main.php', 'main')){ $this->core->notify($this->lng['e_msg'], $this->lng_m['e_settings'], 2, 'install/?mode=step_3'); } diff --git a/upload/install/tables.sql b/upload/install/tables.sql index 2534f7e..4dbcb59 100644 --- a/upload/install/tables.sql +++ b/upload/install/tables.sql @@ -22,37 +22,37 @@ KEY `uid` (`uid`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; #line -CREATE TABLE IF NOT EXISTS `mcr_groups` ( - `id` int(10) NOT NULL AUTO_INCREMENT, - `title` varchar(32) NOT NULL DEFAULT '', - `description` varchar(255) NOT NULL DEFAULT '', - `color` varchar(24) NOT NULL DEFAULT '', - `permissions` text NOT NULL, - PRIMARY KEY (`id`) +CREATE TABLE IF NOT EXISTS `~ug~` ( + `~ug_id~` int(10) NOT NULL AUTO_INCREMENT, + `~ug_title~` varchar(32) NOT NULL DEFAULT '', + `~ug_text~` varchar(255) NOT NULL DEFAULT '', + `~ug_color~` varchar(24) NOT NULL DEFAULT '', + `~ug_perm~` text NOT NULL, + PRIMARY KEY (`~ug_id~`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=4 ; #line -INSERT INTO `mcr_groups` (`id`, `title`, `description`, `color`, `permissions`) VALUES -(0, 'Заблокированный', 'Группа заблокированных пользователей', '', '{"sys_debug":false,"sys_max_file_size":0,"sys_max_ratio":0,"sys_monitoring":true,"sys_share":true,"sys_search":true,"sys_restore":true,"sys_register":true,"sys_profile":true,"sys_profile_del_skin":false,"sys_profile_del_cloak":false,"sys_profile_skin":false,"sys_profile_cloak":false,"sys_profile_settings":false,"sys_news_list":true,"sys_news_full":true,"sys_comment_list":false,"sys_comment_add":false,"sys_comment_edt":false,"sys_comment_edt_all":false,"sys_comment_del":false,"sys_comment_del_all":false,"sys_auth":false,"sys_adm_main":false,"sys_adm_news":false,"sys_adm_news_cats":false,"sys_adm_news_views":false,"sys_adm_news_votes":false,"sys_adm_comments":false,"sys_adm_menu":false,"sys_adm_menu_adm":false,"sys_adm_menu_groups":false,"sys_adm_menu_icons":false,"sys_adm_users":false,"sys_adm_groups":false,"sys_adm_permissions":false,"sys_adm_statics":false,"sys_adm_info":false,"sys_adm_settings":false,"sys_adm_monitoring":false,"sys_adm_modules":false,"sys_search_news":false,"sys_search_comments":false,"sys_news_like":false,"sys_adm_m_g_main":false,"sys_adm_m_g_news":false,"sys_adm_m_g_users":false,"sys_adm_m_g_menu":false,"sys_adm_m_g_settings":false,"sys_adm_m_i_news":false,"sys_adm_m_i_news_cats":false,"sys_adm_m_i_comments":false,"sys_adm_m_i_news_views":false,"sys_adm_m_i_news_votes":false,"sys_adm_m_i_users":false,"sys_adm_m_i_groups":false,"sys_adm_m_i_permissions":false,"sys_adm_m_i_menu":false,"sys_adm_m_i_menu_adm":false,"sys_adm_m_i_menu_groups_adm":false,"sys_adm_m_i_icons":false,"sys_adm_m_i_statics":false,"sys_adm_m_i_settings":false,"sys_adm_m_i_monitor":false,"sys_adm_m_i_info":false,"sys_adm_m_i_modules":false,"sys_adm_m_i_logs":false,"sys_adm_manager":false,"sys_adm_logs":false,"sys_adm_permissions_add":false,"sys_adm_permissions_edit":false,"sys_adm_permissions_delete":false,"sys_adm_comments_add":false,"sys_adm_comments_edit":false,"sys_adm_comments_delete":false,"sys_adm_groups_add":false,"sys_adm_groups_edit":false,"sys_adm_groups_delete":false,"sys_adm_menu_add":false,"sys_adm_menu_edit":false,"sys_adm_menu_delete":false,"sys_adm_menu_adm_add":false,"sys_adm_menu_adm_edit":false,"sys_adm_menu_adm_delete":false,"sys_adm_menu_groups_add":false,"sys_adm_menu_groups_edit":false,"sys_adm_menu_groups_delete":false,"sys_adm_menu_icons_add":false,"sys_adm_menu_icons_edit":false,"sys_adm_menu_icons_delete":false,"sys_adm_monitoring_add":false,"sys_adm_monitoring_edit":false,"sys_adm_monitoring_delete":false,"sys_adm_news_add":false,"sys_adm_news_edit":false,"sys_adm_news_delete":false,"sys_adm_news_cats_add":false,"sys_adm_news_cats_edit":false,"sys_adm_news_cats_delete":false,"sys_adm_statics_add":false,"sys_adm_statics_edit":false,"sys_adm_statics_delete":false,"sys_adm_users_add":false,"sys_adm_users_edit":false,"sys_adm_users_delete":false,"sys_adm_users_ban":false,"sys_adm_modules_edit":false,"sys_adm_news_views_delete":false,"sys_adm_news_votes_delete":false}'), -(1, 'Непроверенный', 'Группа непроверенных пользователей', '', '{"sys_debug":false,"sys_max_file_size":1024,"sys_max_ratio":0,"sys_monitoring":true,"sys_share":true,"sys_search":true,"sys_restore":true,"sys_register":true,"sys_profile":true,"sys_profile_del_skin":false,"sys_profile_del_cloak":false,"sys_profile_skin":false,"sys_profile_cloak":false,"sys_profile_settings":false,"sys_news_list":true,"sys_news_full":true,"sys_comment_list":true,"sys_comment_add":false,"sys_comment_edt":false,"sys_comment_edt_all":false,"sys_comment_del":false,"sys_comment_del_all":false,"sys_auth":true,"sys_adm_main":false,"sys_adm_news":false,"sys_adm_news_cats":false,"sys_adm_news_views":false,"sys_adm_news_votes":false,"sys_adm_comments":false,"sys_adm_menu":false,"sys_adm_menu_adm":false,"sys_adm_menu_groups":false,"sys_adm_menu_icons":false,"sys_adm_users":false,"sys_adm_groups":false,"sys_adm_permissions":false,"sys_adm_statics":false,"sys_adm_info":false,"sys_adm_settings":false,"sys_adm_monitoring":false,"sys_adm_modules":false,"sys_search_news":true,"sys_search_comments":false,"sys_news_like":false,"sys_adm_m_g_main":false,"sys_adm_m_g_news":false,"sys_adm_m_g_users":false,"sys_adm_m_g_menu":false,"sys_adm_m_g_settings":false,"sys_adm_m_i_news":false,"sys_adm_m_i_news_cats":false,"sys_adm_m_i_comments":false,"sys_adm_m_i_news_views":false,"sys_adm_m_i_news_votes":false,"sys_adm_m_i_users":false,"sys_adm_m_i_groups":false,"sys_adm_m_i_permissions":false,"sys_adm_m_i_menu":false,"sys_adm_m_i_menu_adm":false,"sys_adm_m_i_menu_groups_adm":false,"sys_adm_m_i_icons":false,"sys_adm_m_i_statics":false,"sys_adm_m_i_settings":false,"sys_adm_m_i_monitor":false,"sys_adm_m_i_info":false,"sys_adm_m_i_modules":false,"sys_adm_m_i_logs":false,"sys_adm_manager":false,"sys_adm_logs":false,"sys_adm_permissions_add":false,"sys_adm_permissions_edit":false,"sys_adm_permissions_delete":false,"sys_adm_comments_add":false,"sys_adm_comments_edit":false,"sys_adm_comments_delete":false,"sys_adm_groups_add":false,"sys_adm_groups_edit":false,"sys_adm_groups_delete":false,"sys_adm_menu_add":false,"sys_adm_menu_edit":false,"sys_adm_menu_delete":false,"sys_adm_menu_adm_add":false,"sys_adm_menu_adm_edit":false,"sys_adm_menu_adm_delete":false,"sys_adm_menu_groups_add":false,"sys_adm_menu_groups_edit":false,"sys_adm_menu_groups_delete":false,"sys_adm_menu_icons_add":false,"sys_adm_menu_icons_edit":false,"sys_adm_menu_icons_delete":false,"sys_adm_monitoring_add":false,"sys_adm_monitoring_edit":false,"sys_adm_monitoring_delete":false,"sys_adm_news_add":false,"sys_adm_news_edit":false,"sys_adm_news_delete":false,"sys_adm_news_cats_add":false,"sys_adm_news_cats_edit":false,"sys_adm_news_cats_delete":false,"sys_adm_statics_add":false,"sys_adm_statics_edit":false,"sys_adm_statics_delete":false,"sys_adm_users_add":false,"sys_adm_users_edit":false,"sys_adm_users_delete":false,"sys_adm_users_ban":false,"sys_adm_modules_edit":false,"sys_adm_news_views_delete":false,"sys_adm_news_votes_delete":false}'), -(2, 'Пользователь', 'Зарегистрированные и проверенные пользователи', '', '{"sys_debug":false,"sys_max_file_size":1024,"sys_max_ratio":1,"sys_monitoring":true,"sys_share":true,"sys_search":true,"sys_restore":true,"sys_register":true,"sys_profile":true,"sys_profile_del_skin":true,"sys_profile_del_cloak":true,"sys_profile_skin":true,"sys_profile_cloak":true,"sys_profile_settings":true,"sys_news_list":true,"sys_news_full":true,"sys_comment_list":true,"sys_comment_add":true,"sys_comment_edt":true,"sys_comment_edt_all":false,"sys_comment_del":false,"sys_comment_del_all":false,"sys_auth":true,"sys_adm_main":false,"sys_adm_news":false,"sys_adm_news_cats":false,"sys_adm_news_views":false,"sys_adm_news_votes":false,"sys_adm_comments":false,"sys_adm_menu":false,"sys_adm_menu_adm":false,"sys_adm_menu_groups":false,"sys_adm_menu_icons":false,"sys_adm_users":false,"sys_adm_groups":false,"sys_adm_permissions":false,"sys_adm_statics":false,"sys_adm_info":false,"sys_adm_settings":false,"sys_adm_monitoring":false,"sys_adm_modules":false,"sys_search_news":true,"sys_search_comments":true,"sys_news_like":true,"sys_adm_m_g_main":false,"sys_adm_m_g_news":false,"sys_adm_m_g_users":false,"sys_adm_m_g_menu":false,"sys_adm_m_g_settings":false,"sys_adm_m_i_news":false,"sys_adm_m_i_news_cats":false,"sys_adm_m_i_comments":false,"sys_adm_m_i_news_views":false,"sys_adm_m_i_news_votes":false,"sys_adm_m_i_users":false,"sys_adm_m_i_groups":false,"sys_adm_m_i_permissions":false,"sys_adm_m_i_menu":false,"sys_adm_m_i_menu_adm":false,"sys_adm_m_i_menu_groups_adm":false,"sys_adm_m_i_icons":false,"sys_adm_m_i_statics":false,"sys_adm_m_i_settings":false,"sys_adm_m_i_monitor":false,"sys_adm_m_i_info":false,"sys_adm_m_i_modules":false,"sys_adm_m_i_logs":false,"sys_adm_manager":false,"sys_adm_logs":false,"sys_adm_permissions_add":false,"sys_adm_permissions_edit":false,"sys_adm_permissions_delete":false,"sys_adm_comments_add":false,"sys_adm_comments_edit":false,"sys_adm_comments_delete":false,"sys_adm_groups_add":false,"sys_adm_groups_edit":false,"sys_adm_groups_delete":false,"sys_adm_menu_add":false,"sys_adm_menu_edit":false,"sys_adm_menu_delete":false,"sys_adm_menu_adm_add":false,"sys_adm_menu_adm_edit":false,"sys_adm_menu_adm_delete":false,"sys_adm_menu_groups_add":false,"sys_adm_menu_groups_edit":false,"sys_adm_menu_groups_delete":false,"sys_adm_menu_icons_add":false,"sys_adm_menu_icons_edit":false,"sys_adm_menu_icons_delete":false,"sys_adm_monitoring_add":false,"sys_adm_monitoring_edit":false,"sys_adm_monitoring_delete":false,"sys_adm_news_add":false,"sys_adm_news_edit":false,"sys_adm_news_delete":false,"sys_adm_news_cats_add":false,"sys_adm_news_cats_edit":false,"sys_adm_news_cats_delete":false,"sys_adm_statics_add":false,"sys_adm_statics_edit":false,"sys_adm_statics_delete":false,"sys_adm_users_add":false,"sys_adm_users_edit":false,"sys_adm_users_delete":false,"sys_adm_users_ban":false,"sys_adm_modules_edit":false,"sys_adm_news_views_delete":false,"sys_adm_news_votes_delete":false}'), -(3, 'Администратор', 'Группа администрации', '', '{"sys_debug":true,"sys_max_file_size":4096,"sys_max_ratio":32,"sys_monitoring":true,"sys_share":true,"sys_search":true,"sys_restore":true,"sys_register":true,"sys_profile":true,"sys_profile_del_skin":true,"sys_profile_del_cloak":true,"sys_profile_skin":true,"sys_profile_cloak":true,"sys_profile_settings":true,"sys_news_list":true,"sys_news_full":true,"sys_comment_list":true,"sys_comment_add":true,"sys_comment_edt":true,"sys_comment_edt_all":true,"sys_comment_del":true,"sys_comment_del_all":true,"sys_auth":true,"sys_adm_main":true,"sys_adm_news":true,"sys_adm_news_cats":true,"sys_adm_news_views":true,"sys_adm_news_votes":true,"sys_adm_comments":true,"sys_adm_menu":true,"sys_adm_menu_adm":true,"sys_adm_menu_groups":true,"sys_adm_menu_icons":true,"sys_adm_users":true,"sys_adm_groups":true,"sys_adm_permissions":true,"sys_adm_statics":true,"sys_adm_info":true,"sys_adm_settings":true,"sys_adm_monitoring":true,"sys_adm_modules":true,"sys_search_news":true,"sys_search_comments":true,"sys_news_like":true,"sys_adm_m_g_main":true,"sys_adm_m_g_news":true,"sys_adm_m_g_users":true,"sys_adm_m_g_menu":true,"sys_adm_m_g_settings":true,"sys_adm_m_i_news":true,"sys_adm_m_i_news_cats":true,"sys_adm_m_i_comments":true,"sys_adm_m_i_news_views":true,"sys_adm_m_i_news_votes":true,"sys_adm_m_i_users":true,"sys_adm_m_i_groups":true,"sys_adm_m_i_permissions":true,"sys_adm_m_i_menu":true,"sys_adm_m_i_menu_adm":true,"sys_adm_m_i_menu_groups_adm":true,"sys_adm_m_i_icons":true,"sys_adm_m_i_statics":true,"sys_adm_m_i_settings":true,"sys_adm_m_i_monitor":true,"sys_adm_m_i_info":true,"sys_adm_m_i_modules":true,"sys_adm_m_i_logs":true,"sys_adm_manager":true,"sys_adm_logs":true,"sys_adm_permissions_add":true,"sys_adm_permissions_edit":true,"sys_adm_permissions_delete":true,"sys_adm_comments_add":true,"sys_adm_comments_edit":true,"sys_adm_comments_delete":true,"sys_adm_groups_add":true,"sys_adm_groups_edit":true,"sys_adm_groups_delete":true,"sys_adm_menu_add":true,"sys_adm_menu_edit":true,"sys_adm_menu_delete":true,"sys_adm_menu_adm_add":true,"sys_adm_menu_adm_edit":true,"sys_adm_menu_adm_delete":true,"sys_adm_menu_groups_add":true,"sys_adm_menu_groups_edit":true,"sys_adm_menu_groups_delete":true,"sys_adm_menu_icons_add":true,"sys_adm_menu_icons_edit":true,"sys_adm_menu_icons_delete":true,"sys_adm_monitoring_add":true,"sys_adm_monitoring_edit":true,"sys_adm_monitoring_delete":true,"sys_adm_news_add":true,"sys_adm_news_edit":true,"sys_adm_news_delete":true,"sys_adm_news_cats_add":true,"sys_adm_news_cats_edit":true,"sys_adm_news_cats_delete":true,"sys_adm_statics_add":true,"sys_adm_statics_edit":true,"sys_adm_statics_delete":true,"sys_adm_users_add":true,"sys_adm_users_edit":true,"sys_adm_users_delete":true,"sys_adm_users_ban":true,"sys_adm_modules_edit":true,"sys_adm_news_views_delete":true,"sys_adm_news_votes_delete":true}'); +INSERT INTO `~ug~` (`~ug_id~`, `~ug_title~`, `~ug_text~`, `~ug_color~`, `~ug_perm~`) VALUES +(0, 'Заблокированный', 'Группа заблокированных пользователей', '', '{"color":0,"sys_debug":false,"sys_max_file_size":0,"sys_max_ratio":0,"sys_monitoring":true,"sys_share":true,"sys_search":true,"sys_restore":true,"sys_register":true,"sys_profile":true,"sys_profile_del_skin":false,"sys_profile_del_cloak":false,"sys_profile_skin":false,"sys_profile_cloak":false,"sys_profile_settings":false,"sys_news_list":true,"sys_news_full":true,"sys_comment_list":false,"sys_comment_add":false,"sys_comment_edt":false,"sys_comment_edt_all":false,"sys_comment_del":false,"sys_comment_del_all":false,"sys_auth":false,"sys_adm_main":false,"sys_adm_news":false,"sys_adm_news_cats":false,"sys_adm_news_views":false,"sys_adm_news_votes":false,"sys_adm_comments":false,"sys_adm_menu":false,"sys_adm_menu_adm":false,"sys_adm_menu_groups":false,"sys_adm_menu_icons":false,"sys_adm_users":false,"sys_adm_groups":false,"sys_adm_permissions":false,"sys_adm_statics":false,"sys_adm_info":false,"sys_adm_settings":false,"sys_adm_monitoring":false,"sys_adm_modules":false,"sys_search_news":false,"sys_search_comments":false,"sys_news_like":false,"sys_adm_m_g_main":false,"sys_adm_m_g_news":false,"sys_adm_m_g_users":false,"sys_adm_m_g_menu":false,"sys_adm_m_g_settings":false,"sys_adm_m_i_news":false,"sys_adm_m_i_news_cats":false,"sys_adm_m_i_comments":false,"sys_adm_m_i_news_views":false,"sys_adm_m_i_news_votes":false,"sys_adm_m_i_users":false,"sys_adm_m_i_groups":false,"sys_adm_m_i_permissions":false,"sys_adm_m_i_menu":false,"sys_adm_m_i_menu_adm":false,"sys_adm_m_i_menu_groups_adm":false,"sys_adm_m_i_icons":false,"sys_adm_m_i_statics":false,"sys_adm_m_i_settings":false,"sys_adm_m_i_monitor":false,"sys_adm_m_i_info":false,"sys_adm_m_i_modules":false,"sys_adm_m_i_logs":false,"sys_adm_manager":false,"sys_adm_logs":false,"sys_adm_permissions_add":false,"sys_adm_permissions_edit":false,"sys_adm_permissions_delete":false,"sys_adm_comments_add":false,"sys_adm_comments_edit":false,"sys_adm_comments_delete":false,"sys_adm_groups_add":false,"sys_adm_groups_edit":false,"sys_adm_groups_delete":false,"sys_adm_menu_add":false,"sys_adm_menu_edit":false,"sys_adm_menu_delete":false,"sys_adm_menu_adm_add":false,"sys_adm_menu_adm_edit":false,"sys_adm_menu_adm_delete":false,"sys_adm_menu_groups_add":false,"sys_adm_menu_groups_edit":false,"sys_adm_menu_groups_delete":false,"sys_adm_menu_icons_add":false,"sys_adm_menu_icons_edit":false,"sys_adm_menu_icons_delete":false,"sys_adm_monitoring_add":false,"sys_adm_monitoring_edit":false,"sys_adm_monitoring_delete":false,"sys_adm_news_add":false,"sys_adm_news_edit":false,"sys_adm_news_delete":false,"sys_adm_news_cats_add":false,"sys_adm_news_cats_edit":false,"sys_adm_news_cats_delete":false,"sys_adm_statics_add":false,"sys_adm_statics_edit":false,"sys_adm_statics_delete":false,"sys_adm_users_add":false,"sys_adm_users_edit":false,"sys_adm_users_delete":false,"sys_adm_users_ban":false,"sys_adm_modules_edit":false,"sys_adm_news_views_delete":false,"sys_adm_news_votes_delete":false,"sys_adm_blocks":false,"sys_adm_m_i_blocks":false,"sys_adm_blocks_edit":false,"block_online":false,"block_banner":false}'), +(1, 'Непроверенный', 'Группа непроверенных пользователей', '', '{"color":0,"sys_debug":false,"sys_max_file_size":1024,"sys_max_ratio":0,"sys_monitoring":true,"sys_share":true,"sys_search":true,"sys_restore":true,"sys_register":true,"sys_profile":true,"sys_profile_del_skin":false,"sys_profile_del_cloak":false,"sys_profile_skin":false,"sys_profile_cloak":false,"sys_profile_settings":false,"sys_news_list":true,"sys_news_full":true,"sys_comment_list":true,"sys_comment_add":false,"sys_comment_edt":false,"sys_comment_edt_all":false,"sys_comment_del":false,"sys_comment_del_all":false,"sys_auth":true,"sys_adm_main":false,"sys_adm_news":false,"sys_adm_news_cats":false,"sys_adm_news_views":false,"sys_adm_news_votes":false,"sys_adm_comments":false,"sys_adm_menu":false,"sys_adm_menu_adm":false,"sys_adm_menu_groups":false,"sys_adm_menu_icons":false,"sys_adm_users":false,"sys_adm_groups":false,"sys_adm_permissions":false,"sys_adm_statics":false,"sys_adm_info":false,"sys_adm_settings":false,"sys_adm_monitoring":false,"sys_adm_modules":false,"sys_search_news":true,"sys_search_comments":false,"sys_news_like":false,"sys_adm_m_g_main":false,"sys_adm_m_g_news":false,"sys_adm_m_g_users":false,"sys_adm_m_g_menu":false,"sys_adm_m_g_settings":false,"sys_adm_m_i_news":false,"sys_adm_m_i_news_cats":false,"sys_adm_m_i_comments":false,"sys_adm_m_i_news_views":false,"sys_adm_m_i_news_votes":false,"sys_adm_m_i_users":false,"sys_adm_m_i_groups":false,"sys_adm_m_i_permissions":false,"sys_adm_m_i_menu":false,"sys_adm_m_i_menu_adm":false,"sys_adm_m_i_menu_groups_adm":false,"sys_adm_m_i_icons":false,"sys_adm_m_i_statics":false,"sys_adm_m_i_settings":false,"sys_adm_m_i_monitor":false,"sys_adm_m_i_info":false,"sys_adm_m_i_modules":false,"sys_adm_m_i_logs":false,"sys_adm_manager":false,"sys_adm_logs":false,"sys_adm_permissions_add":false,"sys_adm_permissions_edit":false,"sys_adm_permissions_delete":false,"sys_adm_comments_add":false,"sys_adm_comments_edit":false,"sys_adm_comments_delete":false,"sys_adm_groups_add":false,"sys_adm_groups_edit":false,"sys_adm_groups_delete":false,"sys_adm_menu_add":false,"sys_adm_menu_edit":false,"sys_adm_menu_delete":false,"sys_adm_menu_adm_add":false,"sys_adm_menu_adm_edit":false,"sys_adm_menu_adm_delete":false,"sys_adm_menu_groups_add":false,"sys_adm_menu_groups_edit":false,"sys_adm_menu_groups_delete":false,"sys_adm_menu_icons_add":false,"sys_adm_menu_icons_edit":false,"sys_adm_menu_icons_delete":false,"sys_adm_monitoring_add":false,"sys_adm_monitoring_edit":false,"sys_adm_monitoring_delete":false,"sys_adm_news_add":false,"sys_adm_news_edit":false,"sys_adm_news_delete":false,"sys_adm_news_cats_add":false,"sys_adm_news_cats_edit":false,"sys_adm_news_cats_delete":false,"sys_adm_statics_add":false,"sys_adm_statics_edit":false,"sys_adm_statics_delete":false,"sys_adm_users_add":false,"sys_adm_users_edit":false,"sys_adm_users_delete":false,"sys_adm_users_ban":false,"sys_adm_modules_edit":false,"sys_adm_news_views_delete":false,"sys_adm_news_votes_delete":false,"sys_adm_blocks":false,"sys_adm_m_i_blocks":false,"sys_adm_blocks_edit":false,"block_online":true,"block_banner":false}'), +(2, 'Пользователь', 'Зарегистрированные и проверенные пользователи', '', '{"color":0,"sys_debug":false,"sys_max_file_size":1024,"sys_max_ratio":1,"sys_monitoring":true,"sys_share":true,"sys_search":true,"sys_restore":true,"sys_register":true,"sys_profile":true,"sys_profile_del_skin":true,"sys_profile_del_cloak":true,"sys_profile_skin":true,"sys_profile_cloak":true,"sys_profile_settings":true,"sys_news_list":true,"sys_news_full":true,"sys_comment_list":true,"sys_comment_add":true,"sys_comment_edt":true,"sys_comment_edt_all":false,"sys_comment_del":false,"sys_comment_del_all":false,"sys_auth":true,"sys_adm_main":false,"sys_adm_news":false,"sys_adm_news_cats":false,"sys_adm_news_views":false,"sys_adm_news_votes":false,"sys_adm_comments":false,"sys_adm_menu":false,"sys_adm_menu_adm":false,"sys_adm_menu_groups":false,"sys_adm_menu_icons":false,"sys_adm_users":false,"sys_adm_groups":false,"sys_adm_permissions":false,"sys_adm_statics":false,"sys_adm_info":false,"sys_adm_settings":false,"sys_adm_monitoring":false,"sys_adm_modules":false,"sys_search_news":true,"sys_search_comments":true,"sys_news_like":true,"sys_adm_m_g_main":false,"sys_adm_m_g_news":false,"sys_adm_m_g_users":false,"sys_adm_m_g_menu":false,"sys_adm_m_g_settings":false,"sys_adm_m_i_news":false,"sys_adm_m_i_news_cats":false,"sys_adm_m_i_comments":false,"sys_adm_m_i_news_views":false,"sys_adm_m_i_news_votes":false,"sys_adm_m_i_users":false,"sys_adm_m_i_groups":false,"sys_adm_m_i_permissions":false,"sys_adm_m_i_menu":false,"sys_adm_m_i_menu_adm":false,"sys_adm_m_i_menu_groups_adm":false,"sys_adm_m_i_icons":false,"sys_adm_m_i_statics":false,"sys_adm_m_i_settings":false,"sys_adm_m_i_monitor":false,"sys_adm_m_i_info":false,"sys_adm_m_i_modules":false,"sys_adm_m_i_logs":false,"sys_adm_manager":false,"sys_adm_logs":false,"sys_adm_permissions_add":false,"sys_adm_permissions_edit":false,"sys_adm_permissions_delete":false,"sys_adm_comments_add":false,"sys_adm_comments_edit":false,"sys_adm_comments_delete":false,"sys_adm_groups_add":false,"sys_adm_groups_edit":false,"sys_adm_groups_delete":false,"sys_adm_menu_add":false,"sys_adm_menu_edit":false,"sys_adm_menu_delete":false,"sys_adm_menu_adm_add":false,"sys_adm_menu_adm_edit":false,"sys_adm_menu_adm_delete":false,"sys_adm_menu_groups_add":false,"sys_adm_menu_groups_edit":false,"sys_adm_menu_groups_delete":false,"sys_adm_menu_icons_add":false,"sys_adm_menu_icons_edit":false,"sys_adm_menu_icons_delete":false,"sys_adm_monitoring_add":false,"sys_adm_monitoring_edit":false,"sys_adm_monitoring_delete":false,"sys_adm_news_add":false,"sys_adm_news_edit":false,"sys_adm_news_delete":false,"sys_adm_news_cats_add":false,"sys_adm_news_cats_edit":false,"sys_adm_news_cats_delete":false,"sys_adm_statics_add":false,"sys_adm_statics_edit":false,"sys_adm_statics_delete":false,"sys_adm_users_add":false,"sys_adm_users_edit":false,"sys_adm_users_delete":false,"sys_adm_users_ban":false,"sys_adm_modules_edit":false,"sys_adm_news_views_delete":false,"sys_adm_news_votes_delete":false,"sys_adm_blocks":false,"sys_adm_m_i_blocks":false,"sys_adm_blocks_edit":false,"block_online":true,"block_banner":false}'), +(3, 'Администратор', 'Группа администрации', '', '{"color":0,"sys_debug":true,"sys_max_file_size":4096,"sys_max_ratio":32,"sys_monitoring":true,"sys_share":true,"sys_search":true,"sys_restore":true,"sys_register":true,"sys_profile":true,"sys_profile_del_skin":true,"sys_profile_del_cloak":true,"sys_profile_skin":true,"sys_profile_cloak":true,"sys_profile_settings":true,"sys_news_list":true,"sys_news_full":true,"sys_comment_list":true,"sys_comment_add":true,"sys_comment_edt":true,"sys_comment_edt_all":true,"sys_comment_del":true,"sys_comment_del_all":true,"sys_auth":true,"sys_adm_main":true,"sys_adm_news":true,"sys_adm_news_cats":true,"sys_adm_news_views":true,"sys_adm_news_votes":true,"sys_adm_comments":true,"sys_adm_menu":true,"sys_adm_menu_adm":true,"sys_adm_menu_groups":true,"sys_adm_menu_icons":true,"sys_adm_users":true,"sys_adm_groups":true,"sys_adm_permissions":true,"sys_adm_statics":true,"sys_adm_info":true,"sys_adm_settings":true,"sys_adm_monitoring":true,"sys_adm_modules":true,"sys_search_news":true,"sys_search_comments":true,"sys_news_like":true,"sys_adm_m_g_main":true,"sys_adm_m_g_news":true,"sys_adm_m_g_users":true,"sys_adm_m_g_menu":true,"sys_adm_m_g_settings":true,"sys_adm_m_i_news":true,"sys_adm_m_i_news_cats":true,"sys_adm_m_i_comments":true,"sys_adm_m_i_news_views":true,"sys_adm_m_i_news_votes":true,"sys_adm_m_i_users":true,"sys_adm_m_i_groups":true,"sys_adm_m_i_permissions":true,"sys_adm_m_i_menu":true,"sys_adm_m_i_menu_adm":true,"sys_adm_m_i_menu_groups_adm":true,"sys_adm_m_i_icons":true,"sys_adm_m_i_statics":true,"sys_adm_m_i_settings":true,"sys_adm_m_i_monitor":true,"sys_adm_m_i_info":true,"sys_adm_m_i_modules":true,"sys_adm_m_i_logs":true,"sys_adm_manager":true,"sys_adm_logs":true,"sys_adm_permissions_add":true,"sys_adm_permissions_edit":true,"sys_adm_permissions_delete":true,"sys_adm_comments_add":true,"sys_adm_comments_edit":true,"sys_adm_comments_delete":true,"sys_adm_groups_add":true,"sys_adm_groups_edit":true,"sys_adm_groups_delete":true,"sys_adm_menu_add":true,"sys_adm_menu_edit":true,"sys_adm_menu_delete":true,"sys_adm_menu_adm_add":true,"sys_adm_menu_adm_edit":true,"sys_adm_menu_adm_delete":true,"sys_adm_menu_groups_add":true,"sys_adm_menu_groups_edit":true,"sys_adm_menu_groups_delete":true,"sys_adm_menu_icons_add":true,"sys_adm_menu_icons_edit":true,"sys_adm_menu_icons_delete":true,"sys_adm_monitoring_add":true,"sys_adm_monitoring_edit":true,"sys_adm_monitoring_delete":true,"sys_adm_news_add":true,"sys_adm_news_edit":true,"sys_adm_news_delete":true,"sys_adm_news_cats_add":true,"sys_adm_news_cats_edit":true,"sys_adm_news_cats_delete":true,"sys_adm_statics_add":true,"sys_adm_statics_edit":true,"sys_adm_statics_delete":true,"sys_adm_users_add":true,"sys_adm_users_edit":true,"sys_adm_users_delete":true,"sys_adm_users_ban":true,"sys_adm_modules_edit":true,"sys_adm_news_views_delete":true,"sys_adm_news_votes_delete":true,"sys_adm_blocks":true,"sys_adm_m_i_blocks":true,"sys_adm_blocks_edit":true,"block_online":true,"block_banner":true}'); #line -CREATE TABLE IF NOT EXISTS `mcr_iconomy` ( - `id` int(10) NOT NULL AUTO_INCREMENT, - `login` varchar(32) CHARACTER SET latin1 NOT NULL DEFAULT '', - `money` decimal(10,2) NOT NULL DEFAULT '0.00', - `realmoney` decimal(10,2) NOT NULL DEFAULT '0.00', - `bank` decimal(10,2) NOT NULL DEFAULT '0.00', - PRIMARY KEY (`id`), - KEY `login` (`login`) +CREATE TABLE IF NOT EXISTS `~ic~` ( + `~ic_id~` int(10) NOT NULL AUTO_INCREMENT, + `~ic_login~` varchar(32) CHARACTER SET latin1 NOT NULL DEFAULT '', + `~ic_money~` decimal(10,2) NOT NULL DEFAULT '0.00', + `~ic_rc~` decimal(10,2) NOT NULL DEFAULT '0.00', + `~ic_bank~` decimal(10,2) NOT NULL DEFAULT '0.00', + PRIMARY KEY (`~ic_id~`), + KEY `~ic_login~` (`~ic_login~`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; #line -CREATE TABLE IF NOT EXISTS `mcr_logs` ( - `id` int(10) NOT NULL AUTO_INCREMENT, - `uid` int(10) NOT NULL DEFAULT '0', - `message` varchar(255) NOT NULL DEFAULT '', - `date` int(10) NOT NULL DEFAULT '0', - PRIMARY KEY (`id`) +CREATE TABLE IF NOT EXISTS `~logs~` ( + `~logs_id~` int(10) NOT NULL AUTO_INCREMENT, + `~logs_uid~` int(10) NOT NULL DEFAULT '0', + `~logs_msg~` varchar(255) NOT NULL DEFAULT '', + `~logs_date~` int(10) NOT NULL DEFAULT '0', + PRIMARY KEY (`~logs_id~`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; #line CREATE TABLE IF NOT EXISTS `mcr_menu` ( @@ -65,6 +65,15 @@ PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ; #line +CREATE TABLE IF NOT EXISTS `mcr_online` ( + `id` int(10) NOT NULL AUTO_INCREMENT, + `ip` varchar(16) NOT NULL DEFAULT '127.0.0.1', + `online` tinyint(1) NOT NULL DEFAULT '0', + `date_create` int(10) NOT NULL DEFAULT '0', + `date_update` int(10) NOT NULL DEFAULT '0', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +#line INSERT INTO `mcr_menu` (`id`, `title`, `parent`, `url`, `target`, `permissions`) VALUES (1, 'Главная', 0, '/', '_self', 'sys_share'), (2, 'ПУ', 0, '/?mode=admin', '_self', 'sys_adm_main'); @@ -94,14 +103,15 @@ (8, 3, 'Группы', 'Управление группами пользователей и их привилегиями', '/?mode=admin&do=groups', '_self', 'sys_adm_m_i_groups', 2, 15), (9, 3, 'Привилегии', 'Управление доступными привилегиями', '/?mode=admin&do=permissions', '_self', 'sys_adm_m_i_permissions', 3, 17), (10, 4, 'Меню сайта', 'Управление пунктами основного меню', '/?mode=admin&do=menu', '_self', 'sys_adm_m_i_menu', 1, 7), -(11, 4, 'Меню ПУ', 'Управление пунктами меню панели управления', '/?mode=admin&do=menu_adm', '_self', 'sys_adm_m_i_menu_adm', 2, 18), +(11, 4, 'Меню ПУ', 'Управление пунктами меню панели управления', '/?mode=admin&do=menu_adm', '_self', 'sys_adm_m_i_menu_adm', 2, 24), (12, 4, 'Группы меню ПУ', 'Управление группами меню панели управления', '/?mode=admin&do=menu_groups', '_self', 'sys_adm_m_i_menu_groups_adm', 3, 11), (13, 4, 'Иконки', 'Управление иконками пунктов меню панели управления', '/?mode=admin&do=menu_icons', '_self', 'sys_adm_m_i_icons', 4, 19), (14, 1, 'Статические страницы', 'Управление статическими страницами ', '/?mode=admin&do=statics', '_self', 'sys_adm_m_i_statics', 2, 20), (15, 5, 'Настройки сайта', 'Основные настройки сайта', '/?mode=admin&do=settings', '_self', 'sys_adm_m_i_settings', 1, 6), (16, 1, 'Мониторинг серверов', 'Управление серверами мониторинга', '/?mode=admin&do=monitoring', '_self', 'sys_adm_m_i_monitor', 3, 21), (17, 1, 'Модули', 'Управление модулями', '/?mode=admin&do=modules', '_self', 'sys_adm_m_i_modules', 4, 22), -(18, 1, 'Лог действий', 'Журнал действий пользователей', '/?mode=admin&do=logs', '_self', 'sys_adm_m_i_logs', 5, 23); +(18, 1, 'Лог действий', 'Журнал действий пользователей', '/?mode=admin&do=logs', '_self', 'sys_adm_m_i_logs', 5, 23), +(19, 1, 'Блоки', 'Управление Блоками', '/?mode=admin&do=blocks', '_self', 'sys_adm_m_i_blocks', 6, 18); #line CREATE TABLE IF NOT EXISTS `mcr_menu_adm_groups` ( `id` int(10) NOT NULL AUTO_INCREMENT, @@ -149,7 +159,8 @@ (20, 'Два листа', 'pages.png'), (21, 'Монитор', 'monitor.png'), (22, 'Сеть', 'network.png'), -(23, 'Открытая книга', 'logs.png'); +(23, 'Открытая книга', 'logs.png'), +(24, 'Пустое древо', 'gealogy.png'); #line CREATE TABLE IF NOT EXISTS `mcr_monitoring` ( `id` int(10) NOT NULL AUTO_INCREMENT, @@ -352,7 +363,12 @@ (106, 'Бан/разбан пользователей', 'Доступ к банам и разбанам пользователей', 'sys_adm_users_ban', 1, 'boolean', 'false', '{"time_create":1005553535,"time_last":1005553535,"login_create":"admin","login_last":"admin"}'), (107, 'Редактирование модулей', 'Доступ к редактированию модулей', 'sys_adm_modules_edit', 1, 'boolean', 'false', '{"time_create":1005553535,"time_last":1005553535,"login_create":"admin","login_last":"admin"}'), (108, 'Удаление просмотров', 'Доступ к удалению просмотров новостей', 'sys_adm_news_views_delete', 1, 'boolean', 'false', '{"time_create":1005553535,"time_last":1005553535,"login_create":"admin","login_last":"admin"}'), -(109, 'Удаление голосов', 'Доступ к удалению голосов новостей', 'sys_adm_news_votes_delete', 1, 'boolean', 'false', '{"time_create":1005553535,"time_last":1005553535,"login_create":"admin","login_last":"admin"}'); +(109, 'Удаление голосов', 'Доступ к удалению голосов новостей', 'sys_adm_news_votes_delete', 1, 'boolean', 'false', '{"time_create":1005553535,"time_last":1005553535,"login_create":"admin","login_last":"admin"}'), +(110, 'Управление блоками', 'Доступ к управлению блоками', 'sys_adm_blocks', 1, 'boolean', 'false', '{"time_create":1005553535,"time_last":1005553535,"login_create":"admin","login_last":"admin"}'), +(111, 'Пункт меню "Блоки"', 'Доступ к пункту меню "Блоки" в панели управления.', 'sys_adm_m_i_blocks', 1, 'boolean', 'false', '{"time_create":1005553535,"time_last":1005553535,"login_create":"admin","login_last":"admin"}'), +(112, 'Редактирование блоков', 'Доступ к редактированию блоков', 'sys_adm_blocks_edit', 1, 'boolean', 'false', '{"time_create":1005553535,"time_last":1005553535,"login_create":"admin","login_last":"admin"}'), +(113, 'Доступ к блоку онлайна', 'Дает доступ к просмотру блока онлайн статистики', 'block_online', 0, 'boolean', 'true', '{"time_create":1005553535,"time_last":1005553535,"login_create":"admin","login_last":"admin"}'), +(114, 'Доступ к блоку баннера', 'Дает доступ к просмотру блока баннера', 'block_banner', 1, 'boolean', 'true', '{"time_create":1005553535,"time_last":1005553535,"login_create":"admin","login_last":"admin"}'); #line CREATE TABLE IF NOT EXISTS `mcr_statics` ( `id` int(10) NOT NULL AUTO_INCREMENT, @@ -368,56 +384,56 @@ KEY `uid` (`uid`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; #line -CREATE TABLE IF NOT EXISTS `mcr_users` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `gid` int(11) NOT NULL DEFAULT '1', - `login` varchar(32) CHARACTER SET latin1 NOT NULL DEFAULT '', - `email` varchar(64) CHARACTER SET latin1 NOT NULL DEFAULT '', - `password` varchar(128) CHARACTER SET latin1 NOT NULL DEFAULT '', - `uuid` varchar(64) NOT NULL DEFAULT '', - `salt` varchar(10) NOT NULL DEFAULT '', - `tmp` varchar(32) CHARACTER SET latin1 NOT NULL DEFAULT '', - `is_skin` tinyint(1) NOT NULL DEFAULT '0', - `is_cloak` tinyint(1) NOT NULL DEFAULT '0', - `ip_create` varchar(15) CHARACTER SET latin1 NOT NULL DEFAULT '127.0.0.1', - `ip_last` varchar(15) CHARACTER SET latin1 NOT NULL DEFAULT '127.0.0.1', - `color` varchar(24) NOT NULL DEFAULT '', - `data` text NOT NULL, - `ban_server` tinyint(1) NOT NULL DEFAULT '0', - PRIMARY KEY (`id`), - UNIQUE KEY `login` (`login`,`email`), - KEY `gid` (`gid`), - KEY `login_2` (`login`) +CREATE TABLE IF NOT EXISTS `~us~` ( + `~us_id~` int(11) NOT NULL AUTO_INCREMENT, + `~us_gid~` int(11) NOT NULL DEFAULT '1', + `~us_login~` varchar(32) CHARACTER SET latin1 NOT NULL DEFAULT '', + `~us_email~` varchar(64) CHARACTER SET latin1 NOT NULL DEFAULT '', + `~us_pass~` varchar(128) CHARACTER SET latin1 NOT NULL DEFAULT '', + `~us_uuid~` varchar(64) NOT NULL DEFAULT '', + `~us_salt~` varchar(10) NOT NULL DEFAULT '', + `~us_tmp~` varchar(32) CHARACTER SET latin1 NOT NULL DEFAULT '', + `~us_is_skin~` tinyint(1) NOT NULL DEFAULT '0', + `~us_is_cloak~` tinyint(1) NOT NULL DEFAULT '0', + `~us_ip_create~` varchar(15) CHARACTER SET latin1 NOT NULL DEFAULT '127.0.0.1', + `~us_ip_last~` varchar(15) CHARACTER SET latin1 NOT NULL DEFAULT '127.0.0.1', + `~us_color~` varchar(24) NOT NULL DEFAULT '', + `~us_data~` text NOT NULL, + `~us_ban_server~` tinyint(1) NOT NULL DEFAULT '0', + PRIMARY KEY (`~us_id~`), + UNIQUE KEY `~us_login~` (`~us_login~`,`~us_email~`), + KEY `~us_gid~` (`~us_gid~`), + KEY `~us_login~_2` (`~us_login~`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; #line ALTER TABLE `mcr_comments` - ADD CONSTRAINT `mcr_comments_ibfk_2` FOREIGN KEY (`uid`) REFERENCES `mcr_users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, + ADD CONSTRAINT `mcr_comments_ibfk_2` FOREIGN KEY (`uid`) REFERENCES `~us~` (`~us_id~`) ON DELETE CASCADE ON UPDATE CASCADE, ADD CONSTRAINT `mcr_comments_ibfk_1` FOREIGN KEY (`nid`) REFERENCES `mcr_news` (`id`) ON DELETE CASCADE ON UPDATE CASCADE; #line ALTER TABLE `mcr_files` - ADD CONSTRAINT `mcr_files_ibfk_1` FOREIGN KEY (`uid`) REFERENCES `mcr_users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE; + ADD CONSTRAINT `mcr_files_ibfk_1` FOREIGN KEY (`uid`) REFERENCES `~us~` (`~us_id~`) ON DELETE CASCADE ON UPDATE CASCADE; #line ALTER TABLE `mcr_iconomy` - ADD CONSTRAINT `mcr_iconomy_ibfk_1` FOREIGN KEY (`login`) REFERENCES `mcr_users` (`login`) ON DELETE CASCADE ON UPDATE CASCADE; + ADD CONSTRAINT `mcr_iconomy_ibfk_1` FOREIGN KEY (`login`) REFERENCES `~us~` (`~us_login~`) ON DELETE CASCADE ON UPDATE CASCADE; #line ALTER TABLE `mcr_menu_adm` ADD CONSTRAINT `mcr_menu_adm_ibfk_1` FOREIGN KEY (`gid`) REFERENCES `mcr_menu_adm_groups` (`id`) ON DELETE CASCADE ON UPDATE CASCADE; #line ALTER TABLE `mcr_news` ADD CONSTRAINT `mcr_news_ibfk_1` FOREIGN KEY (`cid`) REFERENCES `mcr_news_cats` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, - ADD CONSTRAINT `mcr_news_ibfk_2` FOREIGN KEY (`uid`) REFERENCES `mcr_users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE; + ADD CONSTRAINT `mcr_news_ibfk_2` FOREIGN KEY (`uid`) REFERENCES `~us~` (`~us_id~`) ON DELETE CASCADE ON UPDATE CASCADE; #line ALTER TABLE `mcr_news_views` - ADD CONSTRAINT `mcr_news_views_ibfk_2` FOREIGN KEY (`uid`) REFERENCES `mcr_users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, + ADD CONSTRAINT `mcr_news_views_ibfk_2` FOREIGN KEY (`uid`) REFERENCES `~us~` (`~us_id~`) ON DELETE CASCADE ON UPDATE CASCADE, ADD CONSTRAINT `mcr_news_views_ibfk_1` FOREIGN KEY (`nid`) REFERENCES `mcr_news` (`id`) ON DELETE CASCADE ON UPDATE CASCADE; #line ALTER TABLE `mcr_news_votes` - ADD CONSTRAINT `mcr_news_votes_ibfk_2` FOREIGN KEY (`uid`) REFERENCES `mcr_users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, + ADD CONSTRAINT `mcr_news_votes_ibfk_2` FOREIGN KEY (`uid`) REFERENCES `~us~` (`~us_id~`) ON DELETE CASCADE ON UPDATE CASCADE, ADD CONSTRAINT `mcr_news_votes_ibfk_1` FOREIGN KEY (`nid`) REFERENCES `mcr_news` (`id`) ON DELETE CASCADE ON UPDATE CASCADE; - -ALTER TABLE `mcr_statics` - ADD CONSTRAINT `mcr_statics_ibfk_1` FOREIGN KEY (`uid`) REFERENCES `mcr_users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE; #line -ALTER TABLE `mcr_users` - ADD CONSTRAINT `mcr_users_ibfk_1` FOREIGN KEY (`gid`) REFERENCES `mcr_groups` (`id`) ON DELETE CASCADE ON UPDATE CASCADE; +ALTER TABLE `mcr_statics` + ADD CONSTRAINT `mcr_statics_ibfk_1` FOREIGN KEY (`uid`) REFERENCES `~us~` (`~us_id~`) ON DELETE CASCADE ON UPDATE CASCADE; +#line +ALTER TABLE `~us~` + ADD CONSTRAINT `~us~_ibfk_1` FOREIGN KEY (`~us_gid~`) REFERENCES `~ug~` (`~ug_id~`) ON DELETE CASCADE ON UPDATE CASCADE; #line \ No newline at end of file diff --git a/upload/install/theme/finish.html b/upload/install/theme/finish.html index b40dc5b..0eddf34 100644 --- a/upload/install/theme/finish.html +++ b/upload/install/theme/finish.html @@ -12,7 +12,7 @@

    lng_m['fs_msg1']; ?>

    lng_m['fs_msg2']; ?> install lng_m['fs_msg3']; ?>

    -

    lng_m['go_home']; ?> lng_m['go_cp']; ?>

    +

    lng_m['go_home']; ?> lng_m['go_cp']; ?>


    diff --git a/upload/install/theme/global.html b/upload/install/theme/global.html index 537321e..86b0744 100644 --- a/upload/install/theme/global.html +++ b/upload/install/theme/global.html @@ -14,7 +14,7 @@ - +