diff --git a/admin/tools/reload_data.php b/admin/tools/reload_data.php new file mode 100644 index 00000000..858c4f03 --- /dev/null +++ b/admin/tools/reload_data.php @@ -0,0 +1,45 @@ + + * @copyright 2020 MyAAC + * @link https://my-aac.org + */ + +require '../../common.php'; +require SYSTEM . 'functions.php'; +require SYSTEM . 'init.php'; +require SYSTEM . 'login.php'; + +if (!admin()) + die('Access denied.'); + +ini_set('max_execution_time', 300); +ob_implicit_flush(); +ob_end_flush(); +header('X-Accel-Buffering: no'); + +require LIBS . 'DataLoader.php'; + +require LOCALE . 'en/main.php'; +require LOCALE . 'en/install.php'; + +DataLoader::setLocale($locale); +DataLoader::load(); \ No newline at end of file diff --git a/install/tools/7-finish.php b/install/tools/7-finish.php index dc72b469..65787849 100644 --- a/install/tools/7-finish.php +++ b/install/tools/7-finish.php @@ -43,45 +43,9 @@ if($success) { success($locale['step_database_imported_players']); } -require LIBS . 'items.php'; -if(Items::loadFromXML()) - success($locale['step_database_loaded_items']); -else - error(Items::getError()); - -require LIBS . 'weapons.php'; -if(Weapons::loadFromXML()) - success($locale['step_database_loaded_weapons']); -else - error(Weapons::getError()); - -require LIBS . 'creatures.php'; -if(Creatures::loadFromXML()) { - success($locale['step_database_loaded_monsters']); - - if(Creatures::getMonstersList()->hasErrors()) { - $locale['step_database_error_monsters'] = str_replace('$LOG$', 'system/logs/error.log', $locale['step_database_error_monsters']); - warning($locale['step_database_error_monsters']); - } -} -else { - error(Creatures::getLastError()); -} - -require LIBS . 'spells.php'; -if(Spells::loadFromXML()) { - success($locale['step_database_loaded_spells']); -} -else { - error(Spells::getLastError()); -} - -if (Towns::save()) { - success($locale['step_database_loaded_towns']); -} -else { - warning($locale['step_database_error_towns']); -} +require LIBS . 'DataLoader.php'; +DataLoader::setLocale($locale); +DataLoader::load(); // update config.highscores_ids_hidden require_once SYSTEM . 'migrations/20.php'; diff --git a/system/libs/DataLoader.php b/system/libs/DataLoader.php new file mode 100644 index 00000000..12511e4d --- /dev/null +++ b/system/libs/DataLoader.php @@ -0,0 +1,103 @@ + + * @copyright 2020 MyAAC + * @link https://my-aac.org + */ + +/** + * Class DataLoader + */ +class DataLoader +{ + private static $locale; + private static $startTime; + + /** + * Load data from server + */ + public static function load() + { + self::$startTime = microtime(true); + + require LIBS . 'items.php'; + if(Items::loadFromXML()) { + success(self::$locale['step_database_loaded_items'] . self::getLoadedTime()); + } + else { + error(Items::getError()); + } + + self::$startTime = microtime(true); + + require LIBS . 'creatures.php'; + if(Creatures::loadFromXML()) { + success(self::$locale['step_database_loaded_monsters'] . self::getLoadedTime()); + + if(Creatures::getMonstersList()->hasErrors()) { + self::$locale['step_database_error_monsters'] = str_replace('$LOG$', 'system/logs/error.log', self::$locale['step_database_error_monsters']); + warning(self::$locale['step_database_error_monsters']); + } + } + else { + error(Creatures::getLastError()); + } + + self::$startTime = microtime(true); + + require LIBS . 'spells.php'; + if(Spells::loadFromXML()) { + success(self::$locale['step_database_loaded_spells'] . self::getLoadedTime()); + } + else { + error(Spells::getLastError()); + } + + self::$startTime = microtime(true); + + if (Towns::save()) { + success(self::$locale['step_database_loaded_towns'] . self::getLoadedTime()); + } + else { + warning(self::$locale['step_database_error_towns']); + } + + self::$startTime = microtime(true); + + require LIBS . 'weapons.php'; + if(Weapons::loadFromXML()) { + success(self::$locale['step_database_loaded_weapons'] . self::getLoadedTime()); + } + else { + error(Weapons::getError()); + } + } + + public static function setLocale($locale) { + self::$locale = $locale; + } + + private static function getLoadedTime() + { + $endTime = round(microtime(true) - self::$startTime, 3); + return ' (' . str_replace('$TIME$', $endTime, self::$locale['loaded_in_ms']) . ')'; + } +} \ No newline at end of file diff --git a/system/locale/en/main.php b/system/locale/en/main.php index 2907d34e..e235937a 100644 --- a/system/locale/en/main.php +++ b/system/locale/en/main.php @@ -12,4 +12,4 @@ $locale['direction']= 'ltr'; $locale['error404'] = 'The requested page was not found.'; $locale['news'] = 'Latest news'; -?> \ No newline at end of file +$locale['loaded_in_ms'] = 'in $TIME$ ms'; \ No newline at end of file diff --git a/system/locale/pl/main.php b/system/locale/pl/main.php index 20507188..200bba22 100644 --- a/system/locale/pl/main.php +++ b/system/locale/pl/main.php @@ -12,4 +12,4 @@ $locale['direction']= 'ltr'; $locale['error404'] = 'Strona nie zostaƂa odnaleziona.'; $locale['news'] = 'Ostatnie newsy'; -?> \ No newline at end of file +$locale['loaded_in_ms'] = 'w $TIME$ ms'; \ No newline at end of file diff --git a/system/pages/admin/data.php b/system/pages/admin/data.php index 3cc77638..d6131cec 100644 --- a/system/pages/admin/data.php +++ b/system/pages/admin/data.php @@ -8,36 +8,6 @@ * @link https://my-aac.org */ defined('MYAAC') or die('Direct access not allowed!'); -$title = 'Load items.xml'; - -require LIBS . 'items.php'; -require LIBS . 'weapons.php'; +$title = 'Server Data'; $twig->display('admin.items.html.twig'); - -$reload = isset($_REQUEST['reload']) && (int)$_REQUEST['reload'] === 1; -if ($reload) { - $items_start_time = microtime(true); - if (Items::loadFromXML(true)) { - success('Successfully loaded items (in ' . round(microtime(true) - $items_start_time, 4) . ' seconds).'); - } - else { - error(Items::getError()); - } - - $weapons_start_time = microtime(true); - if (Weapons::loadFromXML(true)) { - success('Successfully loaded weapons (in ' . round(microtime(true) - $weapons_start_time, 4) . ' seconds).'); - } - else { - error(Weapons::getError()); - } - - $towns_start_time = microtime(true); - if (Towns::save()) { - success('Successfully loaded towns (in ' . round(microtime(true) - $towns_start_time, 4) . ' seconds).'); - } - else { - error('Error: No towns found.'); - } -} diff --git a/system/templates/admin.items.html.twig b/system/templates/admin.items.html.twig index 436ebc46..9ff8c1bc 100644 --- a/system/templates/admin.items.html.twig +++ b/system/templates/admin.items.html.twig @@ -1,26 +1,30 @@ -
- - -
+

Clicking the button will reload server data (items, monsters, spells, towns, weapons).

+

It may take up to few minutes.

+ -
+
Loading...
- (it may take some time to finish) +
+ +
\ No newline at end of file + + \ No newline at end of file