Much quicker item parser (335 items in 12ms instead of 2100ms)

Now checking if character is offline before changing gender.
Restructured Admin_shop.php, it will now show pending orders and the whole transaction log.
This commit is contained in:
Stefan Brannfjell 2014-06-17 02:35:48 +02:00
parent 52721610c4
commit d3807bfafe
6 changed files with 116 additions and 74 deletions

View File

@ -3,17 +3,15 @@ require_once 'engine/init.php';
include 'layout/overall/header.php'; include 'layout/overall/header.php';
protect_page(); protect_page();
admin_only($user_data); admin_only($user_data);
$orders_ammount = isset($_GET['orders_ammount']) && $_GET['orders_ammount'] > 0 && $_GET['orders_ammount'] <= 200 ? (int)$_GET['orders_ammount'] : 50;
$orders = mysql_select_multi('SELECT * FROM `znote_shop_orders` ORDER BY `id` DESC LIMIT ' . $orders_ammount); $orders = mysql_select_multi('SELECT * FROM `znote_shop_orders` ORDER BY `id` DESC;');
$order_types = array(1 => 'Item', 2 => 'Premium Days', 3 => 'Sex Change', 4 => 'Custom'); $order_types = array(1 => 'Item', 2 => 'Premium Days', 3 => 'Gender Change', 4 => 'Name Change', 5 => 'Custom');
$items = getItemList();
?> ?>
<h1>Admin Shop</h1> <h1>Shop Logs</h1>
<h2>Shop Orders</h2>
<p>Shows latest <?php echo $orders_ammount; ?> shop orders.</p> <h2>Pending Orders</h2>
<form action="" method="get"> <p>These are pending orders, like items bought, but not received or used yet.</p>
<label for="orders_length">Enter ammount of orders to show:</label> <input type="number" max="200" min="1" name="orders_ammount" value="<?php echo $orders_ammount; ?>"/>
<input type="submit" value="Submit"/>
</form>
<table> <table>
<thead> <thead>
<th>Id</th> <th>Id</th>
@ -29,13 +27,43 @@ $order_types = array(1 => 'Item', 2 => 'Premium Days', 3 => 'Sex Change', 4 => '
<td><?php echo $order['id']; ?></td> <td><?php echo $order['id']; ?></td>
<td><?php echo user_account_id_from_name($order['account_id']); ?></td> <td><?php echo user_account_id_from_name($order['account_id']); ?></td>
<td><?php echo $order_types[$order['type']] ?></td> <td><?php echo $order_types[$order['type']] ?></td>
<td><?php echo getItemNameById($order['itemid']) . ' (' . $order['itemid'] . ')' ?></td> <td><?php echo '(' . $order['itemid'] . ') ', (isset($items[$order['itemid']])) ? $items[$order['itemid']] : ''; ?></td>
<td><?php echo $order['count'] ?></td> <td><?php echo $order['count'] ?></td>
<td><?php echo date('Y/m/d H:i', $order['time']) ?></td> <td><?php echo date('Y/m/d H:i', $order['time']) ?></td>
</tr> </tr>
<?php } ?> <?php } ?>
</tbody> </tbody>
</table> </table>
<?php
$orders = mysql_select_multi("SELECT `id`, `account_id`, `type`, `itemid`, `count`, `points`, `time` FROM `znote_shop_logs` ORDER BY `id` DESC;");
?>
<h2>Order History</h2>
<p>This list contains all transactions bought in the shop.</p>
<table>
<thead>
<th>Id</th>
<th>Account</th>
<th>Type</th>
<th>Item</th>
<th>Count</th>
<th>points</th>
<th>Date</th>
</thead>
<tbody>
<?php foreach(($orders ? $orders : array()) as $order) { ?>
<tr>
<td><?php echo $order['id']; ?></td>
<td><?php echo $order['account_id']; ?></td>
<td><?php echo $order_types[$order['type']] ?></td>
<td><?php echo '(' . $order['itemid'] . ') ', (isset($items[$order['itemid']])) ? $items[$order['itemid']] : ''; ?></td>
<td><?php echo $order['count'] ?></td>
<td><?php echo $order['points'] ?></td>
<td><?php echo getClock($order['time'], true, false); ?></td>
</tr>
<?php } ?>
</tbody>
</table>
<?php <?php
include 'layout/overall/footer.php'; include 'layout/overall/footer.php';
?> ?>

View File

@ -56,62 +56,62 @@
// array for filling questlog (Questid, max value, name, end of the quest fill 1 for the last part 0 for all others) // array for filling questlog (Questid, max value, name, end of the quest fill 1 for the last part 0 for all others)
$config['Quests'] = array( $config['Quests'] = array(
array(1501,100,'Killing in the Name of',0), array(1501,100,"Killing in the Name of",0),
array(1502,150,'Killing in the Name of',0), array(1502,150,"Killing in the Name of",0),
array(65001,100,'Killing in the Name of',0), array(65001,100,"Killing in the Name of",0),
array(65002,150,'Killing in the Name of',0), array(65002,150,"Killing in the Name of",0),
array(65003,300,'Killing in the Name of',0), array(65003,300,"Killing in the Name of",0),
array(65004,3,'Killing in the Name of',0), array(65004,3,"Killing in the Name of",0),
array(65005,300,'Killing in the Name of',0), array(65005,300,"Killing in the Name of",0),
array(65006,150,'Killing in the Name of',0), array(65006,150,"Killing in the Name of",0),
array(65007,200,'Killing in the Name of',0), array(65007,200,"Killing in the Name of",0),
array(65008,300,'Killing in the Name of',0), array(65008,300,"Killing in the Name of",0),
array(65009,300,'Killing in the Name of',0), array(65009,300,"Killing in the Name of",0),
array(65010,300,'Killing in the Name of',0), array(65010,300,"Killing in the Name of",0),
array(65011,300,'Killing in the Name of',0), array(65011,300,"Killing in the Name of",0),
array(65012,300,'Killing in the Name of',0), array(65012,300,"Killing in the Name of",0),
array(65013,300,'Killing in the Name of',0), array(65013,300,"Killing in the Name of",0),
array(65014,300,'Killing in the Name of',1), array(65014,300,"Killing in the Name of",1),
array(12110,2,'The Inquisition',0), array(12110,2,"The Inquisition",0),
array(12111,7,'The Inquisition',0), array(12111,7,"The Inquisition",0),
array(12112,3,'The Inquisition',0), array(12112,3,"The Inquisition",0),
array(12113,6,'The Inquisition',0), array(12113,6,"The Inquisition",0),
array(12114,3,'The Inquisition',0), array(12114,3,"The Inquisition",0),
array(12115,3,'The Inquisition',0), array(12115,3,"The Inquisition",0),
array(12116,3,'The Inquisition',0), array(12116,3,"The Inquisition",0),
array(12117,5,'The Inquisition',1), array(12117,5,"The Inquisition",1),
array(330,3,'Sam\'s Old Backpack',1), array(330,3,"Sam's Old Backpack",1),
array(12121,3,'The Ape City',0), array(12121,3,"The Ape City",0),
array(12122,5,'The Ape City',0), array(12122,5,"The Ape City",0),
array(12123,3,'The Ape City',0), array(12123,3,"The Ape City",0),
array(12124,3,'The Ape City',0), array(12124,3,"The Ape City",0),
array(12125,3,'The Ape City',0), array(12125,3,"The Ape City",0),
array(12126,3,'The Ape City',0), array(12126,3,"The Ape City",0),
array(12127,4,'The Ape City',0), array(12127,4,"The Ape City",0),
array(12128,3,'The Ape City',0), array(12128,3,"The Ape City",0),
array(12129,3,'The Ape City',1), array(12129,3,"The Ape City",1),
array(12101,1,'The Ancient Tombs',0), array(12101,1,"The Ancient Tombs",0),
array(12102,1,'The Ancient Tombs',0), array(12102,1,"The Ancient Tombs",0),
array(12103,1,'The Ancient Tombs',0), array(12103,1,"The Ancient Tombs",0),
array(12104,1,'The Ancient Tombs',0), array(12104,1,"The Ancient Tombs",0),
array(12105,1,'The Ancient Tombs',0), array(12105,1,"The Ancient Tombs",0),
array(12106,1,'The Ancient Tombs',0), array(12106,1,"The Ancient Tombs",0),
array(12107,1,'The Ancient Tombs',1), array(12107,1,"The Ancient Tombs",1),
array(12022,3,'Barbarian Test Quest',0), array(12022,3,"Barbarian Test Quest",0),
array(12022,3,'Barbarian Test Quest',0), array(12022,3,"Barbarian Test Quest",0),
array(12022,3,'Barbarian Test Quest',1), array(12022,3,"Barbarian Test Quest",1),
array(12025,3,'The Ice Islands Quest',0), array(12025,3,"The Ice Islands Quest",0),
array(12026,5,'The Ice Islands Quest',0), array(12026,5,"The Ice Islands Quest",0),
array(12027,3,'The Ice Islands Quest',0), array(12027,3,"The Ice Islands Quest",0),
array(12028,2,'The Ice Islands Quest',0), array(12028,2,"The Ice Islands Quest",0),
array(12029,6,'The Ice Islands Quest',0), array(12029,6,"The Ice Islands Quest",0),
array(12030,8,'The Ice Islands Quest',0), array(12030,8,"The Ice Islands Quest",0),
array(12031,3,'The Ice Islands Quest',0), array(12031,3,"The Ice Islands Quest",0),
array(12032,4,'The Ice Islands Quest',0), array(12032,4,"The Ice Islands Quest",0),
array(12033,2,'The Ice Islands Quest',0), array(12033,2,"The Ice Islands Quest",0),
array(12034,2,'The Ice Islands Quest',0), array(12034,2,"The Ice Islands Quest",0),
array(12035,2,'The Ice Islands Quest',0), array(12035,2,"The Ice Islands Quest",0),
array(12036,6,'The Ice Islands Quest',1), array(12036,6,"The Ice Islands Quest",1),
); );
// Vocation ids and names. // Vocation ids and names.

View File

@ -16,6 +16,20 @@ function getItemNameById($id) {
} }
} }
/* Returns a PHP array $id => 'name'
$items = getItemList();
echo $items[2160]; // Returns 'Crystal Coin'
*/
function getItemList() {
$item_list = explode(PHP_EOL, file_get_contents('item_list.txt'));
$ia = array();
for ($i = 0; $i < count($item_list) - 1; $i++) {
$it = explode('@', $item_list[$i]);
$ia[(int)$it[0]] = ucfirst($it[1]);
}
return $ia;
}
function getItemIdByName($name) { function getItemIdByName($name) {
$item_list = explode(PHP_EOL, file_get_contents('item_list.txt')); $item_list = explode(PHP_EOL, file_get_contents('item_list.txt'));

View File

@ -2,7 +2,7 @@
$server = $config['shop']['imageServer']; $server = $config['shop']['imageServer'];
$imageType = $config['shop']['imageType']; $imageType = $config['shop']['imageType'];
$items = getItemList();
$compare = &$_GET['compare']; $compare = &$_GET['compare'];
// If you are not comparing any items, present the list. // If you are not comparing any items, present the list.
@ -37,7 +37,7 @@ if (!$compare) {
foreach (($offers['wts'] ? $offers['wts'] : array()) as $o) { foreach (($offers['wts'] ? $offers['wts'] : array()) as $o) {
?> ?>
<tr> <tr>
<td><?php getItemNameById($o['item_id']); ?></td> <td><?php echo (isset($items[$o['item_id']])) ? $items[$o['item_id']] : $o['item_id']; ?></td>
<td><img src="<?php echo "http://".$server."/".$o['item_id'].".".$imageType; ?>" alt="Item Image"></td> <td><img src="<?php echo "http://".$server."/".$o['item_id'].".".$imageType; ?>" alt="Item Image"></td>
<td><?php echo $o['amount']; ?></td> <td><?php echo $o['amount']; ?></td>
<td><?php echo number_format($o['price'], 0, "", " "); ?></td> <td><?php echo number_format($o['price'], 0, "", " "); ?></td>

View File

@ -131,7 +131,7 @@ if (!empty($_POST['change_gender'])) {
$account_id = user_character_account_id($char_name); $account_id = user_character_account_id($char_name);
if ($config['TFSVersion'] == 'TFS_10') { if ($config['TFSVersion'] == 'TFS_10') {
$chr_data = user_is_online_10($user_id); $chr_data = user_is_online_10($char_id);
} else $chr_data = user_character_data($char_id, 'online'); } else $chr_data = user_character_data($char_id, 'online');
if ($chr_data['online'] != 1) { if ($chr_data['online'] != 1) {

View File

@ -44,11 +44,11 @@ if (!empty($_POST['buy'])) {
user_account_add_premdays($cid, $buy['count']); user_account_add_premdays($cid, $buy['count']);
echo '<font color="green" size="4">You now have '.$buy['count'].' additional days of premium membership.</font>'; echo '<font color="green" size="4">You now have '.$buy['count'].' additional days of premium membership.</font>';
} else if ($buy['type'] == 3) { } else if ($buy['type'] == 3) {
// Character sex // Character Gender
mysql_insert("INSERT INTO `znote_shop_orders` (`account_id`, `type`, `itemid`, `count`, `time`) VALUES ('$cid', '". $buy['type'] ."', '". $buy['itemid'] ."', '". $buy['count'] ."', '$time')"); mysql_insert("INSERT INTO `znote_shop_orders` (`account_id`, `type`, `itemid`, `count`, `time`) VALUES ('$cid', '". $buy['type'] ."', '". $buy['itemid'] ."', '". $buy['count'] ."', '$time')");
echo '<font color="green" size="4">You now have access to change character gender on your characters. Visit <a href="myaccount.php">My Account</a> to select character and change the gender.</font>'; echo '<font color="green" size="4">You now have access to change character gender on your characters. Visit <a href="myaccount.php">My Account</a> to select character and change the gender.</font>';
} else if ($buy['type'] == 4) { } else if ($buy['type'] == 4) {
// Character sex // Character Name
mysql_insert("INSERT INTO `znote_shop_orders` (`account_id`, `type`, `itemid`, `count`, `time`) VALUES ('$cid', '". $buy['type'] ."', '". $buy['itemid'] ."', '". $buy['count'] ."', '$time')"); mysql_insert("INSERT INTO `znote_shop_orders` (`account_id`, `type`, `itemid`, `count`, `time`) VALUES ('$cid', '". $buy['type'] ."', '". $buy['itemid'] ."', '". $buy['count'] ."', '$time')");
echo '<font color="green" size="4">You now have access to change character name on your characters. Visit <a href="myaccount.php">My Account</a> to select character and change the name.</font>'; echo '<font color="green" size="4">You now have access to change character name on your characters. Visit <a href="myaccount.php">My Account</a> to select character and change the name.</font>';
} else { } else {