annotate reproctool.cgi @ 54:7e8040e64051 default tip

removed stray text
author df
date Tue, 03 Feb 2009 11:53:35 +0000
parents 421e17de31af
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
9c46727ce7ab Initial version
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff changeset
1 #!/usr/bin/perl -T
32
583e4c324c24 Adding file copyright
Dominic Cleal <dominic@computerkb.co.uk>
parents: 30
diff changeset
2 #
583e4c324c24 Adding file copyright
Dominic Cleal <dominic@computerkb.co.uk>
parents: 30
diff changeset
3 # CGI script for assessing reprocessing value of items in EVE-Online based
583e4c324c24 Adding file copyright
Dominic Cleal <dominic@computerkb.co.uk>
parents: 30
diff changeset
4 # on mineral prices.
583e4c324c24 Adding file copyright
Dominic Cleal <dominic@computerkb.co.uk>
parents: 30
diff changeset
5 #
583e4c324c24 Adding file copyright
Dominic Cleal <dominic@computerkb.co.uk>
parents: 30
diff changeset
6 # Released under the revised BSD licence
583e4c324c24 Adding file copyright
Dominic Cleal <dominic@computerkb.co.uk>
parents: 30
diff changeset
7 # Copyright (c) 2009 Dominic Cleal
583e4c324c24 Adding file copyright
Dominic Cleal <dominic@computerkb.co.uk>
parents: 30
diff changeset
8 # Portions copyright (c) 2009 Bjorn Hamels
0
9c46727ce7ab Initial version
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff changeset
9
9c46727ce7ab Initial version
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff changeset
10 use warnings;
9c46727ce7ab Initial version
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff changeset
11 use strict;
9c46727ce7ab Initial version
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff changeset
12
22
66a63068fb23 Cleaned up the styles and added colour s on meta level .... the happy colour show.
df
parents: 21
diff changeset
13 use Switch;
0
9c46727ce7ab Initial version
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff changeset
14 use CGI;
9c46727ce7ab Initial version
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff changeset
15 use DBI;
17
a79168f03fc4 Replacing XML::DOM with LWP and regex, tidying code
Dominic Cleal <dominic@computerkb.co.uk>
parents: 16
diff changeset
16 use LWP::UserAgent;
25
ccbd8fa63b9f Adding a cache for mineral marks
Dominic Cleal <dominic@computerkb.co.uk>
parents: 24
diff changeset
17 use Storable qw/store_fd fd_retrieve/;
0
9c46727ce7ab Initial version
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff changeset
18
27
789877ff0e1a Changing dbparams to contain all settings
Dominic Cleal <dominic@computerkb.co.uk>
parents: 26
diff changeset
19 # Settings from params.cgi
789877ff0e1a Changing dbparams to contain all settings
Dominic Cleal <dominic@computerkb.co.uk>
parents: 26
diff changeset
20 our (@dbparams, $img_http_path, $eve_central_url,
789877ff0e1a Changing dbparams to contain all settings
Dominic Cleal <dominic@computerkb.co.uk>
parents: 26
diff changeset
21 $marks_cache, $marks_cache_expiry);
0
9c46727ce7ab Initial version
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff changeset
22
27
789877ff0e1a Changing dbparams to contain all settings
Dominic Cleal <dominic@computerkb.co.uk>
parents: 26
diff changeset
23 $img_http_path = '/itemimgs';
789877ff0e1a Changing dbparams to contain all settings
Dominic Cleal <dominic@computerkb.co.uk>
parents: 26
diff changeset
24 $eve_central_url = 'http://eve-central.com/api/evemon';
789877ff0e1a Changing dbparams to contain all settings
Dominic Cleal <dominic@computerkb.co.uk>
parents: 26
diff changeset
25 $marks_cache = 'minerals.cache';
789877ff0e1a Changing dbparams to contain all settings
Dominic Cleal <dominic@computerkb.co.uk>
parents: 26
diff changeset
26 $marks_cache_expiry = 4 * 60 * 60; # 4 hours
789877ff0e1a Changing dbparams to contain all settings
Dominic Cleal <dominic@computerkb.co.uk>
parents: 26
diff changeset
27
789877ff0e1a Changing dbparams to contain all settings
Dominic Cleal <dominic@computerkb.co.uk>
parents: 26
diff changeset
28 require './params.cgi';
789877ff0e1a Changing dbparams to contain all settings
Dominic Cleal <dominic@computerkb.co.uk>
parents: 26
diff changeset
29
789877ff0e1a Changing dbparams to contain all settings
Dominic Cleal <dominic@computerkb.co.uk>
parents: 26
diff changeset
30 # Begin script
0
9c46727ce7ab Initial version
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff changeset
31 my $cgi = new CGI;
9c46727ce7ab Initial version
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff changeset
32 print $cgi->header(-type => 'text/html',
9c46727ce7ab Initial version
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff changeset
33 -pragma => 'no-cache',
9c46727ce7ab Initial version
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff changeset
34 -expires => '-365d');
9c46727ce7ab Initial version
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff changeset
35
12
6d5296efb9ef Shows user-errors to output, not dying
Dominic Cleal <dominic@computerkb.co.uk>
parents: 11
diff changeset
36 sub user_error
6d5296efb9ef Shows user-errors to output, not dying
Dominic Cleal <dominic@computerkb.co.uk>
parents: 11
diff changeset
37 {
6d5296efb9ef Shows user-errors to output, not dying
Dominic Cleal <dominic@computerkb.co.uk>
parents: 11
diff changeset
38 my $text = shift;
6d5296efb9ef Shows user-errors to output, not dying
Dominic Cleal <dominic@computerkb.co.uk>
parents: 11
diff changeset
39 print<<END;
6d5296efb9ef Shows user-errors to output, not dying
Dominic Cleal <dominic@computerkb.co.uk>
parents: 11
diff changeset
40 <html><head><title>Error</title></head>
13
135adaf0eed2 Colour!
Dominic Cleal <dominic@computerkb.co.uk>
parents: 12
diff changeset
41 <body><font color="#FF0000"><b>Error:</b></font> $text</body></html>
12
6d5296efb9ef Shows user-errors to output, not dying
Dominic Cleal <dominic@computerkb.co.uk>
parents: 11
diff changeset
42 END
6d5296efb9ef Shows user-errors to output, not dying
Dominic Cleal <dominic@computerkb.co.uk>
parents: 11
diff changeset
43 exit;
6d5296efb9ef Shows user-errors to output, not dying
Dominic Cleal <dominic@computerkb.co.uk>
parents: 11
diff changeset
44 }
6d5296efb9ef Shows user-errors to output, not dying
Dominic Cleal <dominic@computerkb.co.uk>
parents: 11
diff changeset
45
24
266c93756c1b Putting inputs next to each other again
Dominic Cleal <dominic@computerkb.co.uk>
parents: 21
diff changeset
46 # Inputs
266c93756c1b Putting inputs next to each other again
Dominic Cleal <dominic@computerkb.co.uk>
parents: 21
diff changeset
47 my $cols = $cgi->param('cols') || 4;
266c93756c1b Putting inputs next to each other again
Dominic Cleal <dominic@computerkb.co.uk>
parents: 21
diff changeset
48 my $str_items = $cgi->param('items');
266c93756c1b Putting inputs next to each other again
Dominic Cleal <dominic@computerkb.co.uk>
parents: 21
diff changeset
49
8
ccd5e74fa58e Untested xml import of prices from evecentral. solution is a dead end, as the rammsrdi.com dont support dom xlm.
df
parents: 7
diff changeset
50 # Generate the first page, where eve-central mineral prices are prefilled.
17
a79168f03fc4 Replacing XML::DOM with LWP and regex, tidying code
Dominic Cleal <dominic@computerkb.co.uk>
parents: 16
diff changeset
51 unless ($str_items)
8
ccd5e74fa58e Untested xml import of prices from evecentral. solution is a dead end, as the rammsrdi.com dont support dom xlm.
df
parents: 7
diff changeset
52 {
29
420807d41e04 Updating comments
Dominic Cleal <dominic@computerkb.co.uk>
parents: 28
diff changeset
53 # Try and pull the marks out of a stored cache
25
ccbd8fa63b9f Adding a cache for mineral marks
Dominic Cleal <dominic@computerkb.co.uk>
parents: 24
diff changeset
54 my $marks;
ccbd8fa63b9f Adding a cache for mineral marks
Dominic Cleal <dominic@computerkb.co.uk>
parents: 24
diff changeset
55 if (-e $marks_cache)
ccbd8fa63b9f Adding a cache for mineral marks
Dominic Cleal <dominic@computerkb.co.uk>
parents: 24
diff changeset
56 {
ccbd8fa63b9f Adding a cache for mineral marks
Dominic Cleal <dominic@computerkb.co.uk>
parents: 24
diff changeset
57 open CACHE, "< $marks_cache" || die("Can't open cache $marks_cache: $!");
ccbd8fa63b9f Adding a cache for mineral marks
Dominic Cleal <dominic@computerkb.co.uk>
parents: 24
diff changeset
58 $marks = fd_retrieve(*CACHE) || die("Can't read marks from cache: $!");
ccbd8fa63b9f Adding a cache for mineral marks
Dominic Cleal <dominic@computerkb.co.uk>
parents: 24
diff changeset
59 close CACHE;
ccbd8fa63b9f Adding a cache for mineral marks
Dominic Cleal <dominic@computerkb.co.uk>
parents: 24
diff changeset
60
29
420807d41e04 Updating comments
Dominic Cleal <dominic@computerkb.co.uk>
parents: 28
diff changeset
61 # Check expiry time
25
ccbd8fa63b9f Adding a cache for mineral marks
Dominic Cleal <dominic@computerkb.co.uk>
parents: 24
diff changeset
62 if (time > ($marks->{timestamp} + $marks_cache_expiry))
ccbd8fa63b9f Adding a cache for mineral marks
Dominic Cleal <dominic@computerkb.co.uk>
parents: 24
diff changeset
63 {
ccbd8fa63b9f Adding a cache for mineral marks
Dominic Cleal <dominic@computerkb.co.uk>
parents: 24
diff changeset
64 $marks = undef;
ccbd8fa63b9f Adding a cache for mineral marks
Dominic Cleal <dominic@computerkb.co.uk>
parents: 24
diff changeset
65 }
ccbd8fa63b9f Adding a cache for mineral marks
Dominic Cleal <dominic@computerkb.co.uk>
parents: 24
diff changeset
66 }
17
a79168f03fc4 Replacing XML::DOM with LWP and regex, tidying code
Dominic Cleal <dominic@computerkb.co.uk>
parents: 16
diff changeset
67
25
ccbd8fa63b9f Adding a cache for mineral marks
Dominic Cleal <dominic@computerkb.co.uk>
parents: 24
diff changeset
68 unless ($marks)
17
a79168f03fc4 Replacing XML::DOM with LWP and regex, tidying code
Dominic Cleal <dominic@computerkb.co.uk>
parents: 16
diff changeset
69 {
35
7d9abc345081 Handling mineral defaults correctly
Dominic Cleal <dominic@computerkb.co.uk>
parents: 33
diff changeset
70 # User can enter their own numbers if eve-central was down
7d9abc345081 Handling mineral defaults correctly
Dominic Cleal <dominic@computerkb.co.uk>
parents: 33
diff changeset
71 $marks->{$_} = 1 foreach ('Tritanium', 'Pyerite', 'Mexallon',
7d9abc345081 Handling mineral defaults correctly
Dominic Cleal <dominic@computerkb.co.uk>
parents: 33
diff changeset
72 'Isogen', 'Nocxium', 'Zydrine',
7d9abc345081 Handling mineral defaults correctly
Dominic Cleal <dominic@computerkb.co.uk>
parents: 33
diff changeset
73 'Megacyte', 'Morphite');
7d9abc345081 Handling mineral defaults correctly
Dominic Cleal <dominic@computerkb.co.uk>
parents: 33
diff changeset
74
29
420807d41e04 Updating comments
Dominic Cleal <dominic@computerkb.co.uk>
parents: 28
diff changeset
75 # If cache was unavailable or had expired, pull again from eve-central
25
ccbd8fa63b9f Adding a cache for mineral marks
Dominic Cleal <dominic@computerkb.co.uk>
parents: 24
diff changeset
76 my $ua = LWP::UserAgent->new;
ccbd8fa63b9f Adding a cache for mineral marks
Dominic Cleal <dominic@computerkb.co.uk>
parents: 24
diff changeset
77 $ua->agent('reproctool');
ccbd8fa63b9f Adding a cache for mineral marks
Dominic Cleal <dominic@computerkb.co.uk>
parents: 24
diff changeset
78 my $resp = $ua->request(HTTP::Request->new(GET => $eve_central_url));
ccbd8fa63b9f Adding a cache for mineral marks
Dominic Cleal <dominic@computerkb.co.uk>
parents: 24
diff changeset
79
ccbd8fa63b9f Adding a cache for mineral marks
Dominic Cleal <dominic@computerkb.co.uk>
parents: 24
diff changeset
80 if ($resp->is_success)
17
a79168f03fc4 Replacing XML::DOM with LWP and regex, tidying code
Dominic Cleal <dominic@computerkb.co.uk>
parents: 16
diff changeset
81 {
29
420807d41e04 Updating comments
Dominic Cleal <dominic@computerkb.co.uk>
parents: 28
diff changeset
82 # Store as Mineral => 1234
25
ccbd8fa63b9f Adding a cache for mineral marks
Dominic Cleal <dominic@computerkb.co.uk>
parents: 24
diff changeset
83 $marks = { timestamp => time };
ccbd8fa63b9f Adding a cache for mineral marks
Dominic Cleal <dominic@computerkb.co.uk>
parents: 24
diff changeset
84 foreach (split(/[\n\r]/, $resp->content))
ccbd8fa63b9f Adding a cache for mineral marks
Dominic Cleal <dominic@computerkb.co.uk>
parents: 24
diff changeset
85 {
ccbd8fa63b9f Adding a cache for mineral marks
Dominic Cleal <dominic@computerkb.co.uk>
parents: 24
diff changeset
86 next unless (/<name>(.+)<\/name>.*<price>([0-9\.]+)<\/price>/i);
ccbd8fa63b9f Adding a cache for mineral marks
Dominic Cleal <dominic@computerkb.co.uk>
parents: 24
diff changeset
87 $marks->{$1} = $2;
ccbd8fa63b9f Adding a cache for mineral marks
Dominic Cleal <dominic@computerkb.co.uk>
parents: 24
diff changeset
88 }
ccbd8fa63b9f Adding a cache for mineral marks
Dominic Cleal <dominic@computerkb.co.uk>
parents: 24
diff changeset
89
ccbd8fa63b9f Adding a cache for mineral marks
Dominic Cleal <dominic@computerkb.co.uk>
parents: 24
diff changeset
90 if (-e $marks_cache)
ccbd8fa63b9f Adding a cache for mineral marks
Dominic Cleal <dominic@computerkb.co.uk>
parents: 24
diff changeset
91 {
ccbd8fa63b9f Adding a cache for mineral marks
Dominic Cleal <dominic@computerkb.co.uk>
parents: 24
diff changeset
92 unlink $marks_cache
ccbd8fa63b9f Adding a cache for mineral marks
Dominic Cleal <dominic@computerkb.co.uk>
parents: 24
diff changeset
93 || die("Unable to unlink cache $marks_cache: $!");
ccbd8fa63b9f Adding a cache for mineral marks
Dominic Cleal <dominic@computerkb.co.uk>
parents: 24
diff changeset
94 }
ccbd8fa63b9f Adding a cache for mineral marks
Dominic Cleal <dominic@computerkb.co.uk>
parents: 24
diff changeset
95
29
420807d41e04 Updating comments
Dominic Cleal <dominic@computerkb.co.uk>
parents: 28
diff changeset
96 # Store into the cache
25
ccbd8fa63b9f Adding a cache for mineral marks
Dominic Cleal <dominic@computerkb.co.uk>
parents: 24
diff changeset
97 open CACHE, "> $marks_cache"
ccbd8fa63b9f Adding a cache for mineral marks
Dominic Cleal <dominic@computerkb.co.uk>
parents: 24
diff changeset
98 || die("Can't open cache $marks_cache to write: $!");
ccbd8fa63b9f Adding a cache for mineral marks
Dominic Cleal <dominic@computerkb.co.uk>
parents: 24
diff changeset
99 store_fd($marks, *CACHE) || die("Can't write to cache: $!");
ccbd8fa63b9f Adding a cache for mineral marks
Dominic Cleal <dominic@computerkb.co.uk>
parents: 24
diff changeset
100 close CACHE;
ccbd8fa63b9f Adding a cache for mineral marks
Dominic Cleal <dominic@computerkb.co.uk>
parents: 24
diff changeset
101 }
17
a79168f03fc4 Replacing XML::DOM with LWP and regex, tidying code
Dominic Cleal <dominic@computerkb.co.uk>
parents: 16
diff changeset
102 }
a79168f03fc4 Replacing XML::DOM with LWP and regex, tidying code
Dominic Cleal <dominic@computerkb.co.uk>
parents: 16
diff changeset
103
28
61fb1a6de2c5 Fixing timestamp entry sometimes left
Dominic Cleal <dominic@computerkb.co.uk>
parents: 27
diff changeset
104 delete $marks->{timestamp} if exists $marks->{timestamp};
61fb1a6de2c5 Fixing timestamp entry sometimes left
Dominic Cleal <dominic@computerkb.co.uk>
parents: 27
diff changeset
105
8
ccd5e74fa58e Untested xml import of prices from evecentral. solution is a dead end, as the rammsrdi.com dont support dom xlm.
df
parents: 7
diff changeset
106 # What evenutally will be printed.
17
a79168f03fc4 Replacing XML::DOM with LWP and regex, tidying code
Dominic Cleal <dominic@computerkb.co.uk>
parents: 16
diff changeset
107 print<<END;
45
bb8e080b25da Added title ... thanks adam for the reminder
df
parents: 44
diff changeset
108 <html><head><title>Ramm's RDI's reprocessing tool</title></head>
8
ccd5e74fa58e Untested xml import of prices from evecentral. solution is a dead end, as the rammsrdi.com dont support dom xlm.
df
parents: 7
diff changeset
109 <body>
34
2709fae95b1e Added help text.
df
parents: 33
diff changeset
110 Welcome to the sell, reprocess or keep tool. :)
2709fae95b1e Added help text.
df
parents: 33
diff changeset
111 <p />
2709fae95b1e Added help text.
df
parents: 33
diff changeset
112 Here's a <a href="http://rammsrdi.com/img/reproctool.png">screenshot</a>
2709fae95b1e Added help text.
df
parents: 33
diff changeset
113 on how it looks in game.
2709fae95b1e Added help text.
df
parents: 33
diff changeset
114 <p />
2709fae95b1e Added help text.
df
parents: 33
diff changeset
115 Mineral prices below are empire averages from <a
39
b231022614aa Proof-reading
Dominic Cleal <dominic@computerkb.co.uk>
parents: 38
diff changeset
116 href="http://www.eve-central.com/">EVE-Central</a>. Usually you dont need to
b231022614aa Proof-reading
Dominic Cleal <dominic@computerkb.co.uk>
parents: 38
diff changeset
117 update those yourself, unless the EVE-Central is down, or you live in
b231022614aa Proof-reading
Dominic Cleal <dominic@computerkb.co.uk>
parents: 38
diff changeset
118 special areas and are not welcome in empire space anymore.
34
2709fae95b1e Added help text.
df
parents: 33
diff changeset
119 <p />
2709fae95b1e Added help text.
df
parents: 33
diff changeset
120 How does this work? Well, you need to copy paste an item list (text) in the
39
b231022614aa Proof-reading
Dominic Cleal <dominic@computerkb.co.uk>
parents: 38
diff changeset
121 input box below, then press submit. Getting this item list from your
34
2709fae95b1e Added help text.
df
parents: 33
diff changeset
122 inventory is simple, albeit unusual. Follow these steps:
2709fae95b1e Added help text.
df
parents: 33
diff changeset
123 <ol>
2709fae95b1e Added help text.
df
parents: 33
diff changeset
124 <li>Put all the items in a container in your station</li>
2709fae95b1e Added help text.
df
parents: 33
diff changeset
125 <li>Richt click to container and select 'Create contract'.</li>
2709fae95b1e Added help text.
df
parents: 33
diff changeset
126 <li>Click 'Next' and then again 'Next'.</li>
2709fae95b1e Added help text.
df
parents: 33
diff changeset
127 <li>A popup will appear which will list the items in the container!
2709fae95b1e Added help text.
df
parents: 33
diff changeset
128 Richt click the text area of the popup, and select 'Copy'.</li>
2709fae95b1e Added help text.
df
parents: 33
diff changeset
129 <li>Cancel the contract creation! (We only needed the item list, there
39
b231022614aa Proof-reading
Dominic Cleal <dominic@computerkb.co.uk>
parents: 38
diff changeset
130 is no contract needed).</li>
34
2709fae95b1e Added help text.
df
parents: 33
diff changeset
131 <li>Paste the text you just copied in the text box below, and click
2709fae95b1e Added help text.
df
parents: 33
diff changeset
132 'Submit'.</li>
2709fae95b1e Added help text.
df
parents: 33
diff changeset
133 <li>The page will take some seconds to load, be patient. If the server
2709fae95b1e Added help text.
df
parents: 33
diff changeset
134 gives you an error, you just copy pasted too many items. Try again with
2709fae95b1e Added help text.
df
parents: 33
diff changeset
135 half the list.</li>
2709fae95b1e Added help text.
df
parents: 33
diff changeset
136 </ol>
2709fae95b1e Added help text.
df
parents: 33
diff changeset
137 <p />
2709fae95b1e Added help text.
df
parents: 33
diff changeset
138 Tip: Set the number of columns to match your inventory columns for easy comparison.
2709fae95b1e Added help text.
df
parents: 33
diff changeset
139 <p />
2709fae95b1e Added help text.
df
parents: 33
diff changeset
140 <hr>
17
a79168f03fc4 Replacing XML::DOM with LWP and regex, tidying code
Dominic Cleal <dominic@computerkb.co.uk>
parents: 16
diff changeset
141 <form method="post">
8
ccd5e74fa58e Untested xml import of prices from evecentral. solution is a dead end, as the rammsrdi.com dont support dom xlm.
df
parents: 7
diff changeset
142 <textarea rows="5" cols="80" name="items"></textarea>
ccd5e74fa58e Untested xml import of prices from evecentral. solution is a dead end, as the rammsrdi.com dont support dom xlm.
df
parents: 7
diff changeset
143 <table border="0" cellspacing="4">
ccd5e74fa58e Untested xml import of prices from evecentral. solution is a dead end, as the rammsrdi.com dont support dom xlm.
df
parents: 7
diff changeset
144 <tr>
ccd5e74fa58e Untested xml import of prices from evecentral. solution is a dead end, as the rammsrdi.com dont support dom xlm.
df
parents: 7
diff changeset
145 END
ccd5e74fa58e Untested xml import of prices from evecentral. solution is a dead end, as the rammsrdi.com dont support dom xlm.
df
parents: 7
diff changeset
146 # Lists the name of the minerals.
25
ccbd8fa63b9f Adding a cache for mineral marks
Dominic Cleal <dominic@computerkb.co.uk>
parents: 24
diff changeset
147 print "<td>$_</td>\n" foreach (keys %{$marks});
17
a79168f03fc4 Replacing XML::DOM with LWP and regex, tidying code
Dominic Cleal <dominic@computerkb.co.uk>
parents: 16
diff changeset
148 print "</tr><tr>";
a79168f03fc4 Replacing XML::DOM with LWP and regex, tidying code
Dominic Cleal <dominic@computerkb.co.uk>
parents: 16
diff changeset
149
25
ccbd8fa63b9f Adding a cache for mineral marks
Dominic Cleal <dominic@computerkb.co.uk>
parents: 24
diff changeset
150 foreach (keys %{$marks})
8
ccd5e74fa58e Untested xml import of prices from evecentral. solution is a dead end, as the rammsrdi.com dont support dom xlm.
df
parents: 7
diff changeset
151 {
17
a79168f03fc4 Replacing XML::DOM with LWP and regex, tidying code
Dominic Cleal <dominic@computerkb.co.uk>
parents: 16
diff changeset
152 my $sname = lc substr($_, 0, 4);
25
ccbd8fa63b9f Adding a cache for mineral marks
Dominic Cleal <dominic@computerkb.co.uk>
parents: 24
diff changeset
153 my $fmt = sprintf('%.2f', $marks->{$_});
17
a79168f03fc4 Replacing XML::DOM with LWP and regex, tidying code
Dominic Cleal <dominic@computerkb.co.uk>
parents: 16
diff changeset
154 print "<td><input type='text' name='$sname' size='7' value='$fmt' /></td>\n";
8
ccd5e74fa58e Untested xml import of prices from evecentral. solution is a dead end, as the rammsrdi.com dont support dom xlm.
df
parents: 7
diff changeset
155 }
17
a79168f03fc4 Replacing XML::DOM with LWP and regex, tidying code
Dominic Cleal <dominic@computerkb.co.uk>
parents: 16
diff changeset
156
a79168f03fc4 Replacing XML::DOM with LWP and regex, tidying code
Dominic Cleal <dominic@computerkb.co.uk>
parents: 16
diff changeset
157 print <<END;
8
ccd5e74fa58e Untested xml import of prices from evecentral. solution is a dead end, as the rammsrdi.com dont support dom xlm.
df
parents: 7
diff changeset
158 </tr>
ccd5e74fa58e Untested xml import of prices from evecentral. solution is a dead end, as the rammsrdi.com dont support dom xlm.
df
parents: 7
diff changeset
159 </table>
18
67f13a371c18 Adding columns input
Dominic Cleal <dominic@computerkb.co.uk>
parents: 17
diff changeset
160 Columns: <input type='text' name='cols' size='2' value='4' /><br /><br />
8
ccd5e74fa58e Untested xml import of prices from evecentral. solution is a dead end, as the rammsrdi.com dont support dom xlm.
df
parents: 7
diff changeset
161 <input type="submit" />
ccd5e74fa58e Untested xml import of prices from evecentral. solution is a dead end, as the rammsrdi.com dont support dom xlm.
df
parents: 7
diff changeset
162 </form>
21
5ae40a1161e6 Added eve central credit (still need to cache some vals, got an idea on that dom?)
df
parents: 20
diff changeset
163 <br />
36
e8772d1bd517 Correcting capitalisation
Dominic Cleal <dominic@computerkb.co.uk>
parents: 35
diff changeset
164 Mineral prices are empire averages from <a href="http://www.eve-central.com/">EVE-Central</a>.
8
ccd5e74fa58e Untested xml import of prices from evecentral. solution is a dead end, as the rammsrdi.com dont support dom xlm.
df
parents: 7
diff changeset
165 </body>
ccd5e74fa58e Untested xml import of prices from evecentral. solution is a dead end, as the rammsrdi.com dont support dom xlm.
df
parents: 7
diff changeset
166 </html>
ccd5e74fa58e Untested xml import of prices from evecentral. solution is a dead end, as the rammsrdi.com dont support dom xlm.
df
parents: 7
diff changeset
167 END
ccd5e74fa58e Untested xml import of prices from evecentral. solution is a dead end, as the rammsrdi.com dont support dom xlm.
df
parents: 7
diff changeset
168
17
a79168f03fc4 Replacing XML::DOM with LWP and regex, tidying code
Dominic Cleal <dominic@computerkb.co.uk>
parents: 16
diff changeset
169 exit;
8
ccd5e74fa58e Untested xml import of prices from evecentral. solution is a dead end, as the rammsrdi.com dont support dom xlm.
df
parents: 7
diff changeset
170 }
ccd5e74fa58e Untested xml import of prices from evecentral. solution is a dead end, as the rammsrdi.com dont support dom xlm.
df
parents: 7
diff changeset
171
0
9c46727ce7ab Initial version
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff changeset
172 # Load mineral prices
15
50d8619bce32 Improving mineral errors
Dominic Cleal <dominic@computerkb.co.uk>
parents: 14
diff changeset
173 my $trit = $cgi->param('trit') || user_error('No tritanium price');
50d8619bce32 Improving mineral errors
Dominic Cleal <dominic@computerkb.co.uk>
parents: 14
diff changeset
174 my $pyer = $cgi->param('pyer') || user_error('No pyerite price');
50d8619bce32 Improving mineral errors
Dominic Cleal <dominic@computerkb.co.uk>
parents: 14
diff changeset
175 my $mexa = $cgi->param('mexa') || user_error('No mexallon price');
50d8619bce32 Improving mineral errors
Dominic Cleal <dominic@computerkb.co.uk>
parents: 14
diff changeset
176 my $isog = $cgi->param('isog') || user_error('No isogen price');
50d8619bce32 Improving mineral errors
Dominic Cleal <dominic@computerkb.co.uk>
parents: 14
diff changeset
177 my $nocx = $cgi->param('nocx') || user_error('No nocxium price');
50d8619bce32 Improving mineral errors
Dominic Cleal <dominic@computerkb.co.uk>
parents: 14
diff changeset
178 my $zydr = $cgi->param('zydr') || user_error('No zydrine price');
50d8619bce32 Improving mineral errors
Dominic Cleal <dominic@computerkb.co.uk>
parents: 14
diff changeset
179 my $mega = $cgi->param('mega') || user_error('No megacyte price');
50d8619bce32 Improving mineral errors
Dominic Cleal <dominic@computerkb.co.uk>
parents: 14
diff changeset
180 my $morp = $cgi->param('morp') || user_error('No morphite price');
0
9c46727ce7ab Initial version
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff changeset
181
1
c39512d94605 Adding dbparams config
Dominic Cleal <dominic@computerkb.co.uk>
parents: 0
diff changeset
182 my $db = DBI->connect(@dbparams)
0
9c46727ce7ab Initial version
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff changeset
183 or die("Database connection failure: $DBI::errstr");
9c46727ce7ab Initial version
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff changeset
184
9c46727ce7ab Initial version
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff changeset
185 # Strip out line endings
9c46727ce7ab Initial version
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff changeset
186 $str_items =~ s/[\n\r]+//g;
9c46727ce7ab Initial version
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff changeset
187
9c46727ce7ab Initial version
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff changeset
188 # If the items string contains the contract info too, strip it out
9c46727ce7ab Initial version
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff changeset
189 $str_items = $1 if ($str_items =~ /The container .+ contains the following items:(.+)/);
9c46727ce7ab Initial version
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff changeset
190 $str_items = $1 if ($str_items =~ /(.+)Are you sure you want to continue?/);
9c46727ce7ab Initial version
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff changeset
191
9
6b98a17fbe22 Changing to a single SQL query for type-based sorting and efficiency
Dominic Cleal <dominic@computerkb.co.uk>
parents: 7
diff changeset
192 my @item_names = split(/\s*,\s*/, $str_items);
6b98a17fbe22 Changing to a single SQL query for type-based sorting and efficiency
Dominic Cleal <dominic@computerkb.co.uk>
parents: 7
diff changeset
193
6b98a17fbe22 Changing to a single SQL query for type-based sorting and efficiency
Dominic Cleal <dominic@computerkb.co.uk>
parents: 7
diff changeset
194 # SQL fragment to match all items
6b98a17fbe22 Changing to a single SQL query for type-based sorting and efficiency
Dominic Cleal <dominic@computerkb.co.uk>
parents: 7
diff changeset
195 my $sql_typenames = '';
6b98a17fbe22 Changing to a single SQL query for type-based sorting and efficiency
Dominic Cleal <dominic@computerkb.co.uk>
parents: 7
diff changeset
196 $sql_typenames = 'types.typeName = ?' if ($#item_names >= 0);
6b98a17fbe22 Changing to a single SQL query for type-based sorting and efficiency
Dominic Cleal <dominic@computerkb.co.uk>
parents: 7
diff changeset
197 $sql_typenames .= " OR types.typeName = ?" foreach (1..$#item_names);
6b98a17fbe22 Changing to a single SQL query for type-based sorting and efficiency
Dominic Cleal <dominic@computerkb.co.uk>
parents: 7
diff changeset
198
0
9c46727ce7ab Initial version
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff changeset
199 # SQL lookup for reprocessing amounts
9c46727ce7ab Initial version
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff changeset
200 my $sql_reprocess = <<END;
9c46727ce7ab Initial version
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff changeset
201 SELECT
9c46727ce7ab Initial version
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff changeset
202 types.typeID,
9c46727ce7ab Initial version
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff changeset
203 types.typeName,
9
6b98a17fbe22 Changing to a single SQL query for type-based sorting and efficiency
Dominic Cleal <dominic@computerkb.co.uk>
parents: 7
diff changeset
204 groups.groupName,
3
e640eb6cefc3 Making DB stuff more generic, fixing missing mineral
Dominic Cleal <dominic@computerkb.co.uk>
parents: 1
diff changeset
205 attrs.valueInt, -- metaLevel
0
9c46727ce7ab Initial version
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff changeset
206 types.basePrice,
9c46727ce7ab Initial version
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff changeset
207 graphics.icon,
3
e640eb6cefc3 Making DB stuff more generic, fixing missing mineral
Dominic Cleal <dominic@computerkb.co.uk>
parents: 1
diff changeset
208 SUM(CASE WHEN m1.requiredTypeID = 34 THEN m1.quantity ELSE 0 END), -- [Tritanium]
e640eb6cefc3 Making DB stuff more generic, fixing missing mineral
Dominic Cleal <dominic@computerkb.co.uk>
parents: 1
diff changeset
209 SUM(CASE WHEN m1.requiredTypeID = 35 THEN m1.quantity ELSE 0 END), -- [Pyerite]
e640eb6cefc3 Making DB stuff more generic, fixing missing mineral
Dominic Cleal <dominic@computerkb.co.uk>
parents: 1
diff changeset
210 SUM(CASE WHEN m1.requiredTypeID = 36 THEN m1.quantity ELSE 0 END), -- [Mexallon]
e640eb6cefc3 Making DB stuff more generic, fixing missing mineral
Dominic Cleal <dominic@computerkb.co.uk>
parents: 1
diff changeset
211 SUM(CASE WHEN m1.requiredTypeID = 37 THEN m1.quantity ELSE 0 END), -- [Isogen]
e640eb6cefc3 Making DB stuff more generic, fixing missing mineral
Dominic Cleal <dominic@computerkb.co.uk>
parents: 1
diff changeset
212 SUM(CASE WHEN m1.requiredTypeID = 38 THEN m1.quantity ELSE 0 END), -- [Nocxium]
e640eb6cefc3 Making DB stuff more generic, fixing missing mineral
Dominic Cleal <dominic@computerkb.co.uk>
parents: 1
diff changeset
213 SUM(CASE WHEN m1.requiredTypeID = 39 THEN m1.quantity ELSE 0 END), -- [Zydrine]
e640eb6cefc3 Making DB stuff more generic, fixing missing mineral
Dominic Cleal <dominic@computerkb.co.uk>
parents: 1
diff changeset
214 SUM(CASE WHEN m1.requiredTypeID = 40 THEN m1.quantity ELSE 0 END), -- [Megacyte]
e640eb6cefc3 Making DB stuff more generic, fixing missing mineral
Dominic Cleal <dominic@computerkb.co.uk>
parents: 1
diff changeset
215 SUM(CASE WHEN m1.requiredTypeID = 11399 THEN m1.quantity ELSE 0 END) -- [Morphite]
0
9c46727ce7ab Initial version
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff changeset
216 FROM invTypes types
11
f749981ad862 Fixes items with no metalevel attribute, improves sorting
Dominic Cleal <dominic@computerkb.co.uk>
parents: 10
diff changeset
217 LEFT JOIN dgmTypeAttributes attrs ON types.typeID = attrs.typeID AND attrs.attributeID = 633
0
9c46727ce7ab Initial version
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff changeset
218 INNER JOIN typeActivityMaterials m1 ON types.typeID = m1.typeID
9
6b98a17fbe22 Changing to a single SQL query for type-based sorting and efficiency
Dominic Cleal <dominic@computerkb.co.uk>
parents: 7
diff changeset
219 INNER JOIN invGroups groups ON types.groupID = groups.groupID
0
9c46727ce7ab Initial version
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff changeset
220 INNER JOIN eveGraphics graphics ON types.graphicID = graphics.graphicID
9
6b98a17fbe22 Changing to a single SQL query for type-based sorting and efficiency
Dominic Cleal <dominic@computerkb.co.uk>
parents: 7
diff changeset
221 WHERE $sql_typenames
6b98a17fbe22 Changing to a single SQL query for type-based sorting and efficiency
Dominic Cleal <dominic@computerkb.co.uk>
parents: 7
diff changeset
222 GROUP BY types.typeID
40
20870c5d9b45 Using name sorting, handling unknowns
Dominic Cleal <dominic@computerkb.co.uk>
parents: 39
diff changeset
223 ORDER BY typeName ASC
0
9c46727ce7ab Initial version
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff changeset
224 END
9c46727ce7ab Initial version
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff changeset
225 my $pre_reprocess = $db->prepare($sql_reprocess);
9c46727ce7ab Initial version
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff changeset
226
46
30bbda81f13b Quick statatistic adding and some small text changes.
df
parents: 45
diff changeset
227 # Global statistical vars
30bbda81f13b Quick statatistic adding and some small text changes.
df
parents: 45
diff changeset
228 my ($totalTrit, $totalPyer, $totalMexa, $totalIsog, $totalNocx, $totalZydr,
30bbda81f13b Quick statatistic adding and some small text changes.
df
parents: 45
diff changeset
229 $totalMega, $totalMorp, $totalIsk, $meta0, $meta1, $meta2, $meta3, $meta4,
30bbda81f13b Quick statatistic adding and some small text changes.
df
parents: 45
diff changeset
230 $meta5, $meta6Plus );
30bbda81f13b Quick statatistic adding and some small text changes.
df
parents: 45
diff changeset
231
9
6b98a17fbe22 Changing to a single SQL query for type-based sorting and efficiency
Dominic Cleal <dominic@computerkb.co.uk>
parents: 7
diff changeset
232 # Execute, bring back one row per item
6b98a17fbe22 Changing to a single SQL query for type-based sorting and efficiency
Dominic Cleal <dominic@computerkb.co.uk>
parents: 7
diff changeset
233 my ($tid, $tname, $gname, $meta, $basePrice, $icon,
6b98a17fbe22 Changing to a single SQL query for type-based sorting and efficiency
Dominic Cleal <dominic@computerkb.co.uk>
parents: 7
diff changeset
234 $ttrit, $tpyer, $tmexa, $tisog, $tnocx, $tzydr, $tmega, $tmorp);
6b98a17fbe22 Changing to a single SQL query for type-based sorting and efficiency
Dominic Cleal <dominic@computerkb.co.uk>
parents: 7
diff changeset
235
6b98a17fbe22 Changing to a single SQL query for type-based sorting and efficiency
Dominic Cleal <dominic@computerkb.co.uk>
parents: 7
diff changeset
236 $pre_reprocess->execute(@item_names) or die("Can't lookup items: $DBI::errstr");
6b98a17fbe22 Changing to a single SQL query for type-based sorting and efficiency
Dominic Cleal <dominic@computerkb.co.uk>
parents: 7
diff changeset
237 $pre_reprocess->bind_columns(undef, \$tid, \$tname, \$gname, \$meta, \$basePrice,
6b98a17fbe22 Changing to a single SQL query for type-based sorting and efficiency
Dominic Cleal <dominic@computerkb.co.uk>
parents: 7
diff changeset
238 \$icon, \$ttrit, \$tpyer, \$tmexa, \$tisog,
6b98a17fbe22 Changing to a single SQL query for type-based sorting and efficiency
Dominic Cleal <dominic@computerkb.co.uk>
parents: 7
diff changeset
239 \$tnocx, \$tzydr, \$tmega, \$tmorp);
6b98a17fbe22 Changing to a single SQL query for type-based sorting and efficiency
Dominic Cleal <dominic@computerkb.co.uk>
parents: 7
diff changeset
240
40
20870c5d9b45 Using name sorting, handling unknowns
Dominic Cleal <dominic@computerkb.co.uk>
parents: 39
diff changeset
241 my $item_lookup = {};
0
9c46727ce7ab Initial version
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff changeset
242 my @output = ();
9
6b98a17fbe22 Changing to a single SQL query for type-based sorting and efficiency
Dominic Cleal <dominic@computerkb.co.uk>
parents: 7
diff changeset
243 while ($pre_reprocess->fetch())
0
9c46727ce7ab Initial version
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff changeset
244 {
9c46727ce7ab Initial version
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff changeset
245 my $item = {};
9
6b98a17fbe22 Changing to a single SQL query for type-based sorting and efficiency
Dominic Cleal <dominic@computerkb.co.uk>
parents: 7
diff changeset
246 my $isk = ($trit * $ttrit) + ($pyer * $tpyer) + ($mexa * $tmexa) +
37
56794934b5b2 Indentation
Dominic Cleal <dominic@computerkb.co.uk>
parents: 36
diff changeset
247 ($isog * $tisog) + ($nocx * $tnocx) + ($zydr * $tzydr) +
56794934b5b2 Indentation
Dominic Cleal <dominic@computerkb.co.uk>
parents: 36
diff changeset
248 ($mega * $tmega) + ($morp * $tmorp);
52
abcfe7739433 numer formatting and adding of isk in the alt text for all items
df
parents: 51
diff changeset
249 my $repDetails = sprintf( "Trit=%s Py=%s Mex=%s Iso=%s Nocx=%s " .
abcfe7739433 numer formatting and adding of isk in the alt text for all items
df
parents: 51
diff changeset
250 "Zyd=%s Mega=%s Morp=%s Isk=%s",
abcfe7739433 numer formatting and adding of isk in the alt text for all items
df
parents: 51
diff changeset
251 pretty_numbers( $ttrit ), pretty_numbers( $tpyer ),
abcfe7739433 numer formatting and adding of isk in the alt text for all items
df
parents: 51
diff changeset
252 pretty_numbers( $tmexa ), pretty_numbers( $tisog ),
abcfe7739433 numer formatting and adding of isk in the alt text for all items
df
parents: 51
diff changeset
253 pretty_numbers( $tnocx ), pretty_numbers( $tzydr ),
abcfe7739433 numer formatting and adding of isk in the alt text for all items
df
parents: 51
diff changeset
254 pretty_numbers( $tmega ), pretty_numbers( $tmorp ),
abcfe7739433 numer formatting and adding of isk in the alt text for all items
df
parents: 51
diff changeset
255 pretty_numbers( $isk ) );
46
30bbda81f13b Quick statatistic adding and some small text changes.
df
parents: 45
diff changeset
256
30bbda81f13b Quick statatistic adding and some small text changes.
df
parents: 45
diff changeset
257 # End statistics.
30bbda81f13b Quick statatistic adding and some small text changes.
df
parents: 45
diff changeset
258 $totalTrit += $ttrit; $totalPyer += $tpyer; $totalMexa += $tmexa;
30bbda81f13b Quick statatistic adding and some small text changes.
df
parents: 45
diff changeset
259 $totalIsog += $tisog; $totalNocx += $tnocx; $totalZydr += $tzydr;
30bbda81f13b Quick statatistic adding and some small text changes.
df
parents: 45
diff changeset
260 $totalMega += $tmega; $totalMorp += $tmorp; $totalIsk += $isk;
9
6b98a17fbe22 Changing to a single SQL query for type-based sorting and efficiency
Dominic Cleal <dominic@computerkb.co.uk>
parents: 7
diff changeset
261
6b98a17fbe22 Changing to a single SQL query for type-based sorting and efficiency
Dominic Cleal <dominic@computerkb.co.uk>
parents: 7
diff changeset
262 $meta = 0 unless defined $meta;
6b98a17fbe22 Changing to a single SQL query for type-based sorting and efficiency
Dominic Cleal <dominic@computerkb.co.uk>
parents: 7
diff changeset
263 $item = { id => $tid, name => $tname, meta => $meta, icon => $icon,
20
877806fb69a3 Fixed double use of var, and added reprocessing details in ALT
df
parents: 18
diff changeset
264 price => $basePrice, reprocessIsk => $isk, reprocessDetails => $repDetails };
40
20870c5d9b45 Using name sorting, handling unknowns
Dominic Cleal <dominic@computerkb.co.uk>
parents: 39
diff changeset
265 $item_lookup->{$tname} = $item;
20870c5d9b45 Using name sorting, handling unknowns
Dominic Cleal <dominic@computerkb.co.uk>
parents: 39
diff changeset
266 }
20870c5d9b45 Using name sorting, handling unknowns
Dominic Cleal <dominic@computerkb.co.uk>
parents: 39
diff changeset
267
20870c5d9b45 Using name sorting, handling unknowns
Dominic Cleal <dominic@computerkb.co.uk>
parents: 39
diff changeset
268 # Now match up the item lookups to the input list
47
964393fff57e Case insensitive sorting to match game
Dominic Cleal <dominic@computerkb.co.uk>
parents: 43
diff changeset
269 foreach (sort { lc $a cmp lc $b } @item_names)
40
20870c5d9b45 Using name sorting, handling unknowns
Dominic Cleal <dominic@computerkb.co.uk>
parents: 39
diff changeset
270 {
20870c5d9b45 Using name sorting, handling unknowns
Dominic Cleal <dominic@computerkb.co.uk>
parents: 39
diff changeset
271 push @output, (exists $item_lookup->{$_} ? $item_lookup->{$_}
20870c5d9b45 Using name sorting, handling unknowns
Dominic Cleal <dominic@computerkb.co.uk>
parents: 39
diff changeset
272 : { name => $_ } );
0
9c46727ce7ab Initial version
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff changeset
273 }
9c46727ce7ab Initial version
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff changeset
274
9c46727ce7ab Initial version
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff changeset
275 my $col = 0;
9c46727ce7ab Initial version
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff changeset
276 print<<END;
45
bb8e080b25da Added title ... thanks adam for the reminder
df
parents: 44
diff changeset
277 <html><head><title>Ramm's RDI's reprocessing tool</title></head>
0
9c46727ce7ab Initial version
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff changeset
278 <head>
9c46727ce7ab Initial version
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff changeset
279 <style type="text/css">
22
66a63068fb23 Cleaned up the styles and added colour s on meta level .... the happy colour show.
df
parents: 21
diff changeset
280 .reg
3
e640eb6cefc3 Making DB stuff more generic, fixing missing mineral
Dominic Cleal <dominic@computerkb.co.uk>
parents: 1
diff changeset
281 {
4
4351c0bf33d4 Improving IGB formatting
Dominic Cleal <dominic@computerkb.co.uk>
parents: 3
diff changeset
282 text-align: center;
3
e640eb6cefc3 Making DB stuff more generic, fixing missing mineral
Dominic Cleal <dominic@computerkb.co.uk>
parents: 1
diff changeset
283 }
0
9c46727ce7ab Initial version
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff changeset
284 </style>
9c46727ce7ab Initial version
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff changeset
285 </head>
4
4351c0bf33d4 Improving IGB formatting
Dominic Cleal <dominic@computerkb.co.uk>
parents: 3
diff changeset
286
0
9c46727ce7ab Initial version
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff changeset
287 <body>
46
30bbda81f13b Quick statatistic adding and some small text changes.
df
parents: 45
diff changeset
288 <h1>Results</h1>
34
2709fae95b1e Added help text.
df
parents: 33
diff changeset
289 Here is how it works, the colour coding:
2709fae95b1e Added help text.
df
parents: 33
diff changeset
290 <ul>
2709fae95b1e Added help text.
df
parents: 33
diff changeset
291 <li>Items in <font color='#666600'>dark yellow</font> are meta 0.</li>
2709fae95b1e Added help text.
df
parents: 33
diff changeset
292 <li>Items in grey to white are meta 1, 2 or 3.</li>
2709fae95b1e Added help text.
df
parents: 33
diff changeset
293 <li>Items in <font color='#4444FF'>blue</font> are meta 4.</li>
2709fae95b1e Added help text.
df
parents: 33
diff changeset
294 <li>Items in <font color='#FF0000'>red</font> are T2 (meta 5).</li>
2709fae95b1e Added help text.
df
parents: 33
diff changeset
295 <li>items in <font color='#00FF00'>green</font> are above meta 5.</li>
2709fae95b1e Added help text.
df
parents: 33
diff changeset
296 </ul>
2709fae95b1e Added help text.
df
parents: 33
diff changeset
297 <p />
39
b231022614aa Proof-reading
Dominic Cleal <dominic@computerkb.co.uk>
parents: 38
diff changeset
298 The number below the item represents the item's value if you would reprocess
b231022614aa Proof-reading
Dominic Cleal <dominic@computerkb.co.uk>
parents: 38
diff changeset
299 and sell the minerals on the market. Basically, if you have the option of
34
2709fae95b1e Added help text.
df
parents: 33
diff changeset
300 selling that item for a price below that number, its better to keep the item
50
2545b24a2e31 Bit better teminology, as basepreice ususaly is the cost of the mins involced at building the item.
df
parents: 49
diff changeset
301 and reprocess it. (Depending what you need more, mins or isk you are free to
2545b24a2e31 Bit better teminology, as basepreice ususaly is the cost of the mins involced at building the item.
df
parents: 49
diff changeset
302 sell or reprocess ofcourse.)
34
2709fae95b1e Added help text.
df
parents: 33
diff changeset
303 <p />
40
20870c5d9b45 Using name sorting, handling unknowns
Dominic Cleal <dominic@computerkb.co.uk>
parents: 39
diff changeset
304 As you might see, the items are listed similarly to your inventory in EVE.
44
06bf920d0c0d Small text change
df
parents: 43
diff changeset
305 You will need to sort your inventory window in EVE <b>by name</b> to match.
06bf920d0c0d Small text change
df
parents: 43
diff changeset
306 If you have this browser window next to your inventory window, matching the
06bf920d0c0d Small text change
df
parents: 43
diff changeset
307 columns(!), it is very easy to pick out those valuable items.
34
2709fae95b1e Added help text.
df
parents: 33
diff changeset
308 <p />
39
b231022614aa Proof-reading
Dominic Cleal <dominic@computerkb.co.uk>
parents: 38
diff changeset
309 Tip: Because this can be a huge page to load in EVE, resizing might freeze the
34
2709fae95b1e Added help text.
df
parents: 33
diff changeset
310 game a bit.<br />
39
b231022614aa Proof-reading
Dominic Cleal <dominic@computerkb.co.uk>
parents: 38
diff changeset
311 Also, clicking on the item gives you the general information of that item. It
34
2709fae95b1e Added help text.
df
parents: 33
diff changeset
312 is not the same as clicking 'Show info' on the real item. (For example: the
39
b231022614aa Proof-reading
Dominic Cleal <dominic@computerkb.co.uk>
parents: 38
diff changeset
313 real item might be damaged.)<br />
51
229f009effc0 added link back to the startpage of the tool
df
parents: 50
diff changeset
314 <a href="http://rammsrdi.com/">Ramm's RDI</a>, or <a
53
421e17de31af fixed an incorrect link
df
parents: 52
diff changeset
315 href="reproctool.cgi">back</a> to the start page of this tool.
34
2709fae95b1e Added help text.
df
parents: 33
diff changeset
316 <p />
2709fae95b1e Added help text.
df
parents: 33
diff changeset
317 <hr>
46
30bbda81f13b Quick statatistic adding and some small text changes.
df
parents: 45
diff changeset
318 <p />
0
9c46727ce7ab Initial version
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff changeset
319 <table>
9c46727ce7ab Initial version
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff changeset
320 END
9c46727ce7ab Initial version
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff changeset
321
30
d1028107ab75 Pretty numbers function
Dominic Cleal <dominic@computerkb.co.uk>
parents: 29
diff changeset
322 sub pretty_numbers
d1028107ab75 Pretty numbers function
Dominic Cleal <dominic@computerkb.co.uk>
parents: 29
diff changeset
323 {
d1028107ab75 Pretty numbers function
Dominic Cleal <dominic@computerkb.co.uk>
parents: 29
diff changeset
324 my $num = shift;
43
783d0f954927 Rounding numbers off, not 2dp
Dominic Cleal <dominic@computerkb.co.uk>
parents: 42
diff changeset
325 $num = int($num);
30
d1028107ab75 Pretty numbers function
Dominic Cleal <dominic@computerkb.co.uk>
parents: 29
diff changeset
326 $num = reverse $num;
d1028107ab75 Pretty numbers function
Dominic Cleal <dominic@computerkb.co.uk>
parents: 29
diff changeset
327 $num =~ s/(\d\d\d)(?=\d)(?!\d*\.)/$1,/g;
d1028107ab75 Pretty numbers function
Dominic Cleal <dominic@computerkb.co.uk>
parents: 29
diff changeset
328 return reverse $num;
d1028107ab75 Pretty numbers function
Dominic Cleal <dominic@computerkb.co.uk>
parents: 29
diff changeset
329 }
d1028107ab75 Pretty numbers function
Dominic Cleal <dominic@computerkb.co.uk>
parents: 29
diff changeset
330
10
de10d02dc715 Using item images for non-IGB browsers
Dominic Cleal <dominic@computerkb.co.uk>
parents: 9
diff changeset
331 my $igb = ($ENV{HTTP_USER_AGENT} =~ /EVE-minibrowser/i);
de10d02dc715 Using item images for non-IGB browsers
Dominic Cleal <dominic@computerkb.co.uk>
parents: 9
diff changeset
332
0
9c46727ce7ab Initial version
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff changeset
333 for my $item (@output)
9c46727ce7ab Initial version
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff changeset
334 {
9c46727ce7ab Initial version
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff changeset
335 if ($col == $cols)
9c46727ce7ab Initial version
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff changeset
336 {
9c46727ce7ab Initial version
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff changeset
337 print "</tr><tr>\n";
9c46727ce7ab Initial version
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff changeset
338 $col = 0;
9c46727ce7ab Initial version
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff changeset
339 }
9c46727ce7ab Initial version
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff changeset
340
42
e9429d4a7942 Making alt and title text consistent
Dominic Cleal <dominic@computerkb.co.uk>
parents: 40
diff changeset
341 my ($img, $alt, $text, $link, $colour);
0
9c46727ce7ab Initial version
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff changeset
342
42
e9429d4a7942 Making alt and title text consistent
Dominic Cleal <dominic@computerkb.co.uk>
parents: 40
diff changeset
343 $alt = $item->{name};
0
9c46727ce7ab Initial version
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff changeset
344 if (defined $item->{id})
9c46727ce7ab Initial version
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff changeset
345 {
10
de10d02dc715 Using item images for non-IGB browsers
Dominic Cleal <dominic@computerkb.co.uk>
parents: 9
diff changeset
346 if ($igb)
de10d02dc715 Using item images for non-IGB browsers
Dominic Cleal <dominic@computerkb.co.uk>
parents: 9
diff changeset
347 {
de10d02dc715 Using item images for non-IGB browsers
Dominic Cleal <dominic@computerkb.co.uk>
parents: 9
diff changeset
348 $img = "typeicon:$item->{id}";
de10d02dc715 Using item images for non-IGB browsers
Dominic Cleal <dominic@computerkb.co.uk>
parents: 9
diff changeset
349 $link = "showinfo:$item->{id}";
de10d02dc715 Using item images for non-IGB browsers
Dominic Cleal <dominic@computerkb.co.uk>
parents: 9
diff changeset
350 }
de10d02dc715 Using item images for non-IGB browsers
Dominic Cleal <dominic@computerkb.co.uk>
parents: 9
diff changeset
351 else
de10d02dc715 Using item images for non-IGB browsers
Dominic Cleal <dominic@computerkb.co.uk>
parents: 9
diff changeset
352 {
de10d02dc715 Using item images for non-IGB browsers
Dominic Cleal <dominic@computerkb.co.uk>
parents: 9
diff changeset
353 $img = "$img_http_path/icons/icons_items_png/64_64/icon$item->{icon}.png";
de10d02dc715 Using item images for non-IGB browsers
Dominic Cleal <dominic@computerkb.co.uk>
parents: 9
diff changeset
354 }
de10d02dc715 Using item images for non-IGB browsers
Dominic Cleal <dominic@computerkb.co.uk>
parents: 9
diff changeset
355
22
66a63068fb23 Cleaned up the styles and added colour s on meta level .... the happy colour show.
df
parents: 21
diff changeset
356 switch ($item->{meta})
66a63068fb23 Cleaned up the styles and added colour s on meta level .... the happy colour show.
df
parents: 21
diff changeset
357 {
46
30bbda81f13b Quick statatistic adding and some small text changes.
df
parents: 45
diff changeset
358 case 0 { $colour = "#666600"; $meta0 += 1; }
30bbda81f13b Quick statatistic adding and some small text changes.
df
parents: 45
diff changeset
359 case 1 { $colour = "#777777"; $meta1 += 1; }
30bbda81f13b Quick statatistic adding and some small text changes.
df
parents: 45
diff changeset
360 case 2 { $colour = "#BBBBBB"; $meta2 += 1; }
30bbda81f13b Quick statatistic adding and some small text changes.
df
parents: 45
diff changeset
361 case 3 { $colour = "#FFFFFF"; $meta3 += 1; }
30bbda81f13b Quick statatistic adding and some small text changes.
df
parents: 45
diff changeset
362 case 4 { $colour = "#4444FF"; $meta4 += 1; }
30bbda81f13b Quick statatistic adding and some small text changes.
df
parents: 45
diff changeset
363 case 5 { $colour = "#FF0000"; $meta5 += 1; }
30bbda81f13b Quick statatistic adding and some small text changes.
df
parents: 45
diff changeset
364 case [6..30]{ $colour = "#00FF00"; $meta6Plus += 1; }
22
66a63068fb23 Cleaned up the styles and added colour s on meta level .... the happy colour show.
df
parents: 21
diff changeset
365 }
66a63068fb23 Cleaned up the styles and added colour s on meta level .... the happy colour show.
df
parents: 21
diff changeset
366
66a63068fb23 Cleaned up the styles and added colour s on meta level .... the happy colour show.
df
parents: 21
diff changeset
367 if ($item->{meta} >= 4)
0
9c46727ce7ab Initial version
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff changeset
368 {
9c46727ce7ab Initial version
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff changeset
369 $text = $item->{name};
9c46727ce7ab Initial version
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff changeset
370 }
9c46727ce7ab Initial version
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff changeset
371 else
9c46727ce7ab Initial version
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff changeset
372 {
33
a4197a854e79 Using pretty numbers on output
Dominic Cleal <dominic@computerkb.co.uk>
parents: 32 31
diff changeset
373 $text = pretty_numbers($item->{reprocessIsk});
0
9c46727ce7ab Initial version
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff changeset
374 }
42
e9429d4a7942 Making alt and title text consistent
Dominic Cleal <dominic@computerkb.co.uk>
parents: 40
diff changeset
375
54
7e8040e64051 removed stray text
df
parents: 53
diff changeset
376 $alt .= " ($item->{reprocessDetails})";
0
9c46727ce7ab Initial version
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff changeset
377 }
9c46727ce7ab Initial version
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff changeset
378 else
9c46727ce7ab Initial version
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff changeset
379 {
9c46727ce7ab Initial version
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff changeset
380 $text = 'Unknown item';
5
42268fc087a9 Improving IGB integration with links and images
Dominic Cleal <dominic@computerkb.co.uk>
parents: 4
diff changeset
381 $img = "typeicon:07_15";
0
9c46727ce7ab Initial version
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff changeset
382 }
9c46727ce7ab Initial version
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff changeset
383
22
66a63068fb23 Cleaned up the styles and added colour s on meta level .... the happy colour show.
df
parents: 21
diff changeset
384 print "<td width='64' class='reg'>";
5
42268fc087a9 Improving IGB integration with links and images
Dominic Cleal <dominic@computerkb.co.uk>
parents: 4
diff changeset
385 print "<a href='$link'>" if defined $link;
14
9b8670ac1bcc Adding title attr to images
Dominic Cleal <dominic@computerkb.co.uk>
parents: 13
diff changeset
386 print "<img src='$img' width='64' height='64' border='1' ";
42
e9429d4a7942 Making alt and title text consistent
Dominic Cleal <dominic@computerkb.co.uk>
parents: 40
diff changeset
387 print "title=\"$alt\" alt=\"$alt\" />";
5
42268fc087a9 Improving IGB integration with links and images
Dominic Cleal <dominic@computerkb.co.uk>
parents: 4
diff changeset
388 print "</a>" if defined $link;
42268fc087a9 Improving IGB integration with links and images
Dominic Cleal <dominic@computerkb.co.uk>
parents: 4
diff changeset
389 print "<br />";
42268fc087a9 Improving IGB integration with links and images
Dominic Cleal <dominic@computerkb.co.uk>
parents: 4
diff changeset
390 print "<font color='$colour'>" if defined $colour;
42268fc087a9 Improving IGB integration with links and images
Dominic Cleal <dominic@computerkb.co.uk>
parents: 4
diff changeset
391 print $text;
42268fc087a9 Improving IGB integration with links and images
Dominic Cleal <dominic@computerkb.co.uk>
parents: 4
diff changeset
392 print "</font>" if defined $colour;
0
9c46727ce7ab Initial version
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff changeset
393 print "</td>\n";
9c46727ce7ab Initial version
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff changeset
394
9c46727ce7ab Initial version
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff changeset
395 $col++;
9c46727ce7ab Initial version
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff changeset
396 }
9c46727ce7ab Initial version
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff changeset
397
9c46727ce7ab Initial version
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff changeset
398 print<<END;
9c46727ce7ab Initial version
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff changeset
399 </tr>
9c46727ce7ab Initial version
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff changeset
400 </table>
46
30bbda81f13b Quick statatistic adding and some small text changes.
df
parents: 45
diff changeset
401 <hr>
30bbda81f13b Quick statatistic adding and some small text changes.
df
parents: 45
diff changeset
402 <p />
30bbda81f13b Quick statatistic adding and some small text changes.
df
parents: 45
diff changeset
403 <h1>Totals</h1>
49
e0dd561faac1 Added warning about stackless processing.
df
parents: 48
diff changeset
404 Note: This is assuming you exactly got 1 item stacked per item listed. (This tool
e0dd561faac1 Added warning about stackless processing.
df
parents: 48
diff changeset
405 does not take the stacked size into account.<br />
46
30bbda81f13b Quick statatistic adding and some small text changes.
df
parents: 45
diff changeset
406 END
30bbda81f13b Quick statatistic adding and some small text changes.
df
parents: 45
diff changeset
407 # TODO: df wonders if there is a std::map :)
50
2545b24a2e31 Bit better teminology, as basepreice ususaly is the cost of the mins involced at building the item.
df
parents: 49
diff changeset
408 print "Total ISK for raw reprocessed materials: " . pretty_numbers( $totalIsk ) . "<br />\n";
46
30bbda81f13b Quick statatistic adding and some small text changes.
df
parents: 45
diff changeset
409 print "<br />Trit: " . pretty_numbers( $totalTrit ) if ($totalTrit>0);
30bbda81f13b Quick statatistic adding and some small text changes.
df
parents: 45
diff changeset
410 print "<br />Py: " . pretty_numbers( $totalPyer ) if ($totalPyer>0);
30bbda81f13b Quick statatistic adding and some small text changes.
df
parents: 45
diff changeset
411 print "<br />Mex: " . pretty_numbers( $totalMexa ) if ($totalMexa>0);
30bbda81f13b Quick statatistic adding and some small text changes.
df
parents: 45
diff changeset
412 print "<br />Iso: " . pretty_numbers( $totalIsog ) if ($totalIsog>0);
30bbda81f13b Quick statatistic adding and some small text changes.
df
parents: 45
diff changeset
413 print "<br />Nox: " . pretty_numbers( $totalNocx ) if ($totalNocx>0);
30bbda81f13b Quick statatistic adding and some small text changes.
df
parents: 45
diff changeset
414 print "<br />Zyd: " . pretty_numbers( $totalZydr ) if ($totalZydr>0);
30bbda81f13b Quick statatistic adding and some small text changes.
df
parents: 45
diff changeset
415 print "<br />Mega: " . pretty_numbers( $totalMega ) if ($totalMega>0);
30bbda81f13b Quick statatistic adding and some small text changes.
df
parents: 45
diff changeset
416 print "<br />Morp: " . pretty_numbers( $totalMorp ) if ($totalMorp>0);
30bbda81f13b Quick statatistic adding and some small text changes.
df
parents: 45
diff changeset
417 print "<br />\n";
30bbda81f13b Quick statatistic adding and some small text changes.
df
parents: 45
diff changeset
418 print "<br /><font color='#666600'>Meta 0: " . pretty_numbers( $meta0 ) . "</font>" if ($meta0>0);
30bbda81f13b Quick statatistic adding and some small text changes.
df
parents: 45
diff changeset
419 print "<br /><font color='#777777'>Meta 1: " . pretty_numbers( $meta1 ) . "</font>" if ($meta1>0);
30bbda81f13b Quick statatistic adding and some small text changes.
df
parents: 45
diff changeset
420 print "<br /><font color='#BBBBBB'>Meta 2: " . pretty_numbers( $meta2 ) . "</font>" if ($meta2>0);
30bbda81f13b Quick statatistic adding and some small text changes.
df
parents: 45
diff changeset
421 print "<br /><font color='#FFFFFF'>Meta 3: " . pretty_numbers( $meta3 ) . "</font>" if ($meta3>0);
30bbda81f13b Quick statatistic adding and some small text changes.
df
parents: 45
diff changeset
422 print "<br /><font color='#4444FF'>Meta 4: " . pretty_numbers( $meta4 ) . "</font>" if ($meta4>0);
30bbda81f13b Quick statatistic adding and some small text changes.
df
parents: 45
diff changeset
423 print "<br /><font color='#FF0000'>Meta 5: " . pretty_numbers( $meta5 ) . " (T2)</font>" if ($meta5>0);
30bbda81f13b Quick statatistic adding and some small text changes.
df
parents: 45
diff changeset
424 print "<br /><font color='#00FF00'>Meta 6+: " . pretty_numbers( $meta6Plus ) . "</font>" if ($meta6Plus>0);
30bbda81f13b Quick statatistic adding and some small text changes.
df
parents: 45
diff changeset
425
30bbda81f13b Quick statatistic adding and some small text changes.
df
parents: 45
diff changeset
426 print<<END;
30bbda81f13b Quick statatistic adding and some small text changes.
df
parents: 45
diff changeset
427 <hr>
30bbda81f13b Quick statatistic adding and some small text changes.
df
parents: 45
diff changeset
428 <p />
30bbda81f13b Quick statatistic adding and some small text changes.
df
parents: 45
diff changeset
429 <h1>Credits</h1>
30bbda81f13b Quick statatistic adding and some small text changes.
df
parents: 45
diff changeset
430 By an idea of <a href="showinfo:1383//1374652644">hfo ohforf</a>, coded by
30bbda81f13b Quick statatistic adding and some small text changes.
df
parents: 45
diff changeset
431 <a href="showinfo:1384//689057791">hfo Omnix</a>. From
30bbda81f13b Quick statatistic adding and some small text changes.
df
parents: 45
diff changeset
432 <a href="showinfo:2//1176688893">Ramm's RDI</a>.<br />
30bbda81f13b Quick statatistic adding and some small text changes.
df
parents: 45
diff changeset
433 How about you donate 0.1% of your total (which got calucalted at
30bbda81f13b Quick statatistic adding and some small text changes.
df
parents: 45
diff changeset
434 END
30bbda81f13b Quick statatistic adding and some small text changes.
df
parents: 45
diff changeset
435 # TODO: Weird things happen when you use the pretty numbers function here :( (replace int)
30bbda81f13b Quick statatistic adding and some small text changes.
df
parents: 45
diff changeset
436 print int( $totalIsk /1000 );
30bbda81f13b Quick statatistic adding and some small text changes.
df
parents: 45
diff changeset
437 print<<END
30bbda81f13b Quick statatistic adding and some small text changes.
df
parents: 45
diff changeset
438 ISK) to <a href="showinfo:1386//532549592">hfo</a> which will distribute it towards the
30bbda81f13b Quick statatistic adding and some small text changes.
df
parents: 45
diff changeset
439 creators and corperation of this tool that you are using now :). Thanks!
0
9c46727ce7ab Initial version
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff changeset
440 </body>
9c46727ce7ab Initial version
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff changeset
441 </html>
9c46727ce7ab Initial version
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff changeset
442 END
9c46727ce7ab Initial version
Dominic Cleal <dominic@computerkb.co.uk>
parents:
diff changeset
443