Market: Display error message instead of crashing if fail to load items.xml file.

This commit is contained in:
Znote 2019-02-05 00:44:47 +01:00
parent 9404c902f5
commit 594e2c015f
2 changed files with 27 additions and 12 deletions

View File

@ -1,5 +1,4 @@
<?php <?php
/* Returns a PHP array $id => 'name' /* Returns a PHP array $id => 'name'
$items = getItemList(); $items = getItemList();
echo $items[2160]; // Returns 'Crystal Coin' echo $items[2160]; // Returns 'Crystal Coin'
@ -18,17 +17,18 @@ function getItemById($id) {
} }
function parseItems() { function parseItems() {
global $config; $file = Config('server_path') . '/data/items/items.xml';
if (file_exists($file)) {
$items = simplexml_load_file($config['server_path'].'/data/items/items.xml'); $itemList = array();
$out = array(); $items = simplexml_load_file($file);
// Create our parsed item list
// Create our parsed item list foreach ($items->children() as $item) {
foreach ($items->children() as $item) { if ($item['id'] && $item['name'] != NULL) {
if ($item['id'] && $item['name'] != NULL) { $itemList[(int)$item['id']] = (string)$item['name'];
$out[(int)$item['id']] = (string)$item['name']; }
} }
return $itemList;
} }
return $file;
return $out;
} }
?>

View File

@ -5,6 +5,21 @@ $imageType = $config['shop']['imageType'];
$items = getItemList(); $items = getItemList();
$compare = &$_GET['compare']; $compare = &$_GET['compare'];
// If we failed to load items.xml, a string is returned (not an array)
// with the attempted loaded file path.
// So if $items is not an array, send an error message, include the footer and ignore rest of this page.
if (is_array($items) === false):
?>
<h1>Marketplace</h1>
<p>Failed to load item list.</p>
<p>Attempted to load this file: <?php echo $items; ?></p>
<p>Configure correct 'server_path' in config.php.</p>
<p>If the path is correct, make sure your web user has access to read it.</p>
<?php
include 'layout/overall/footer.php';
die();
endif;
// If you are not comparing any items, present the list. // If you are not comparing any items, present the list.
if (!$compare) { if (!$compare) {
$cache = new Cache('engine/cache/market'); $cache = new Cache('engine/cache/market');