0
|
1 #!/usr/bin/perl -T
|
|
2
|
|
3 use warnings;
|
|
4 use strict;
|
|
5
|
|
6 use CGI;
|
|
7 use DBI;
|
|
8
|
|
9 # Settings
|
|
10 my $db_path = 'qr100-sqlite3-v1.db';
|
|
11 my $img_http_path = '/itemimgs';
|
|
12
|
|
13 my $cgi = new CGI;
|
|
14 print $cgi->header(-type => 'text/html',
|
|
15 -pragma => 'no-cache',
|
|
16 -expires => '-365d');
|
|
17
|
|
18 # Inputs
|
|
19 my $str_items = $cgi->param('items') or die('Items missing');
|
|
20 my $cols = $cgi->param('cols') || 4;
|
|
21
|
|
22 # Load mineral prices
|
|
23 my $trit = $cgi->param('trit') || die('No trit price');
|
|
24 my $pyer = $cgi->param('pyer') || die('No pyer price');
|
|
25 my $mexa = $cgi->param('mexa') || die('No mexa price');
|
|
26 my $isog = $cgi->param('isog') || die('No isog price');
|
|
27 my $nocx = $cgi->param('nocx') || die('No nocx price');
|
|
28 my $zydr = $cgi->param('zydr') || die('No zydr price');
|
|
29 my $mega = $cgi->param('mega') || die('No mega price');
|
|
30 my $morp = $cgi->param('morp') || die('No morp price');
|
|
31
|
|
32 my $db = DBI->connect("DBI:SQLite:$db_path")
|
|
33 or die("Database connection failure: $DBI::errstr");
|
|
34
|
|
35 # Strip out line endings
|
|
36 $str_items =~ s/[\n\r]+//g;
|
|
37
|
|
38 # If the items string contains the contract info too, strip it out
|
|
39 $str_items = $1 if ($str_items =~ /The container .+ contains the following items:(.+)/);
|
|
40 $str_items = $1 if ($str_items =~ /(.+)Are you sure you want to continue?/);
|
|
41
|
|
42 # SQL lookup for reprocessing amounts
|
|
43 my $sql_reprocess = <<END;
|
|
44 SELECT
|
|
45 types.typeID,
|
|
46 types.typeName,
|
|
47 attrs.valueInt [metaLevel],
|
|
48 types.basePrice,
|
|
49 graphics.icon,
|
|
50 SUM(CASE WHEN m1.requiredTypeID = 34 THEN m1.quantity ELSE 0 END) [Tritanium],
|
|
51 SUM(CASE WHEN m1.requiredTypeID = 35 THEN m1.quantity ELSE 0 END) [Pyerite],
|
|
52 SUM(CASE WHEN m1.requiredTypeID = 36 THEN m1.quantity ELSE 0 END) [Mexallon],
|
|
53 SUM(CASE WHEN m1.requiredTypeID = 37 THEN m1.quantity ELSE 0 END) [Isogen],
|
|
54 SUM(CASE WHEN m1.requiredTypeID = 38 THEN m1.quantity ELSE 0 END) [Nocxium],
|
|
55 SUM(CASE WHEN m1.requiredTypeID = 39 THEN m1.quantity ELSE 0 END) [Zydrine],
|
|
56 SUM(CASE WHEN m1.requiredTypeID = 40 THEN m1.quantity ELSE 0 END) [Megacyte],
|
|
57 SUM(CASE WHEN m1.requiredTypeID = 11399 THEN m1.quantity ELSE 0 END) [Morphite]
|
|
58 FROM invTypes types
|
|
59 INNER JOIN dgmTypeAttributes attrs ON types.typeID = attrs.typeID AND attrs.attributeID = 633
|
|
60 INNER JOIN typeActivityMaterials m1 ON types.typeID = m1.typeID
|
|
61 INNER JOIN eveGraphics graphics ON types.graphicID = graphics.graphicID
|
|
62 WHERE types.typeName = ?
|
|
63 GROUP BY
|
|
64 types.typeID,
|
|
65 types.typeName,
|
|
66 attrs.valueInt,
|
|
67 types.basePrice
|
|
68 END
|
|
69 my $pre_reprocess = $db->prepare($sql_reprocess);
|
|
70
|
|
71 my @output = ();
|
|
72 for my $sitem (split(/\s*,\s*/, $str_items))
|
|
73 {
|
|
74 my ($tid, $tname, $meta, $basePrice, $icon,
|
|
75 $ttrit, $tpyer, $tmexa, $tisog, $tnocx, $tzydr, $tmega);
|
|
76
|
|
77 $pre_reprocess->execute($sitem) or die("Can't lookup $sitem: $DBI::errstr");
|
|
78 $pre_reprocess->bind_columns(undef, \$tid, \$tname, \$meta, \$basePrice,
|
|
79 \$icon, \$ttrit, \$tpyer, \$tmexa, \$tisog, \$tnocx, \$tzydr, \$tmega);
|
|
80
|
|
81 my $item = {};
|
|
82 if ($pre_reprocess->fetch())
|
|
83 {
|
|
84 my $isk = ($trit * $ttrit) + ($pyer * $tpyer) + ($mexa * $tmexa) +
|
|
85 ($isog * $tisog) + ($nocx * $tnocx) + ($zydr * $tzydr) +
|
|
86 ($mega * $tmega);
|
|
87
|
|
88 $item = { id => $tid, name => $tname, meta => $meta, icon => $icon,
|
|
89 price => $basePrice, reprocess => $isk };
|
|
90 }
|
|
91 push @output, $item;
|
|
92 }
|
|
93
|
|
94 my $col = 0;
|
|
95 print<<END;
|
|
96 <html>
|
|
97 <head>
|
|
98 <style type="text/css">
|
|
99 .meta4, .meta5, .meta6, .meta7, .meta8, .meta9
|
|
100 {
|
|
101 border: 2px #FF0000 solid;
|
|
102 }
|
|
103 </style>
|
|
104 </head>
|
|
105 <body>
|
|
106 <table>
|
|
107 END
|
|
108
|
|
109 for my $item (@output)
|
|
110 {
|
|
111 if ($col == $cols)
|
|
112 {
|
|
113 print "</tr><tr>\n";
|
|
114 $col = 0;
|
|
115 }
|
|
116
|
|
117 my ($style, $img, $text);
|
|
118
|
|
119 if (defined $item->{id})
|
|
120 {
|
|
121 $style = "meta$item->{meta}";
|
|
122 $img = "icons/icons_items_png/64_64/icon$item->{icon}.png";
|
|
123 if ($item->{meta} == 4)
|
|
124 {
|
|
125 $text = $item->{name};
|
|
126 }
|
|
127 else
|
|
128 {
|
|
129 $text = $item->{reprocess};
|
|
130 }
|
|
131 }
|
|
132 else
|
|
133 {
|
|
134 $text = 'Unknown item';
|
|
135 $img = "icons/icons_items_png/64_64/icon07_15.png";
|
|
136 }
|
|
137
|
|
138 print "<td class='item $style'>";
|
|
139 print "<img src='$img_http_path/$img' width='64' height='64' alt='$item->{name}' /><br />$text";
|
|
140 print "</td>\n";
|
|
141
|
|
142 $col++;
|
|
143 }
|
|
144
|
|
145 print<<END;
|
|
146 </tr>
|
|
147 </table>
|
|
148 </body>
|
|
149 </html>
|
|
150 END
|
|
151
|