Mercurial > hg > reproctool-df
view reproctool.cgi @ 3:e640eb6cefc3
Making DB stuff more generic, fixing missing mineral
author | Dominic Cleal <dominic@computerkb.co.uk> |
---|---|
date | Sat, 24 Jan 2009 17:18:17 +0000 |
parents | c39512d94605 |
children | 4351c0bf33d4 |
line wrap: on
line source
#!/usr/bin/perl -T use warnings; use strict; use CGI; use DBI; # Settings my $img_http_path = '/itemimgs'; my $cgi = new CGI; print $cgi->header(-type => 'text/html', -pragma => 'no-cache', -expires => '-365d'); # Inputs my $str_items = $cgi->param('items') or die('Items missing'); my $cols = $cgi->param('cols') || 4; # Load mineral prices my $trit = $cgi->param('trit') || die('No trit price'); my $pyer = $cgi->param('pyer') || die('No pyer price'); my $mexa = $cgi->param('mexa') || die('No mexa price'); my $isog = $cgi->param('isog') || die('No isog price'); my $nocx = $cgi->param('nocx') || die('No nocx price'); my $zydr = $cgi->param('zydr') || die('No zydr price'); my $mega = $cgi->param('mega') || die('No mega price'); my $morp = $cgi->param('morp') || die('No morp price'); our @dbparams; require './dbparams.cgi'; my $db = DBI->connect(@dbparams) or die("Database connection failure: $DBI::errstr"); # Strip out line endings $str_items =~ s/[\n\r]+//g; # If the items string contains the contract info too, strip it out $str_items = $1 if ($str_items =~ /The container .+ contains the following items:(.+)/); $str_items = $1 if ($str_items =~ /(.+)Are you sure you want to continue?/); # SQL lookup for reprocessing amounts my $sql_reprocess = <<END; SELECT types.typeID, types.typeName, attrs.valueInt, -- metaLevel types.basePrice, graphics.icon, SUM(CASE WHEN m1.requiredTypeID = 34 THEN m1.quantity ELSE 0 END), -- [Tritanium] SUM(CASE WHEN m1.requiredTypeID = 35 THEN m1.quantity ELSE 0 END), -- [Pyerite] SUM(CASE WHEN m1.requiredTypeID = 36 THEN m1.quantity ELSE 0 END), -- [Mexallon] SUM(CASE WHEN m1.requiredTypeID = 37 THEN m1.quantity ELSE 0 END), -- [Isogen] SUM(CASE WHEN m1.requiredTypeID = 38 THEN m1.quantity ELSE 0 END), -- [Nocxium] SUM(CASE WHEN m1.requiredTypeID = 39 THEN m1.quantity ELSE 0 END), -- [Zydrine] SUM(CASE WHEN m1.requiredTypeID = 40 THEN m1.quantity ELSE 0 END), -- [Megacyte] SUM(CASE WHEN m1.requiredTypeID = 11399 THEN m1.quantity ELSE 0 END) -- [Morphite] FROM invTypes types INNER JOIN dgmTypeAttributes attrs ON types.typeID = attrs.typeID AND attrs.attributeID = 633 INNER JOIN typeActivityMaterials m1 ON types.typeID = m1.typeID INNER JOIN eveGraphics graphics ON types.graphicID = graphics.graphicID WHERE types.typeName = ? GROUP BY types.typeID, types.typeName, attrs.valueInt, types.basePrice END my $pre_reprocess = $db->prepare($sql_reprocess); my @output = (); for my $sitem (split(/\s*,\s*/, $str_items)) { my ($tid, $tname, $meta, $basePrice, $icon, $ttrit, $tpyer, $tmexa, $tisog, $tnocx, $tzydr, $tmega, $tmorp); $pre_reprocess->execute($sitem) or die("Can't lookup $sitem: $DBI::errstr"); $pre_reprocess->bind_columns(undef, \$tid, \$tname, \$meta, \$basePrice, \$icon, \$ttrit, \$tpyer, \$tmexa, \$tisog, \$tnocx, \$tzydr, \$tmega, \$tmorp); my $item = {}; if ($pre_reprocess->fetch()) { my $isk = ($trit * $ttrit) + ($pyer * $tpyer) + ($mexa * $tmexa) + ($isog * $tisog) + ($nocx * $tnocx) + ($zydr * $tzydr) + ($mega * $tmega) + ($morp * $tmorp); $meta = 0 unless defined $meta; $item = { id => $tid, name => $tname, meta => $meta, icon => $icon, price => $basePrice, reprocess => $isk }; } push @output, $item; } my $col = 0; print<<END; <html> <head> <style type="text/css"> .meta4, .meta5, .meta6, .meta7, .meta8, .meta9 { border: 2px #FF0000 solid; } .item { width: 64px; } </style> </head> <body> <table> END for my $item (@output) { if ($col == $cols) { print "</tr><tr>\n"; $col = 0; } my ($style, $img, $text); if (defined $item->{id}) { $style = "meta$item->{meta}"; $img = "icons/icons_items_png/64_64/icon$item->{icon}.png"; if ($item->{meta} == 4) { $text = $item->{name}; } else { $text = $item->{reprocess}; } } else { $text = 'Unknown item'; $img = "icons/icons_items_png/64_64/icon07_15.png"; } print "<td class='item $style'>"; print "<img src='$img_http_path/$img' width='64' height='64' alt='$item->{name}' /><br />$text"; print "</td>\n"; $col++; } print<<END; </tr> </table> </body> </html> END