root/dev/mods/fitting/kill_detail.php @ 336

Revision 320, 16.9 KB (checked in by beansman, 14 years ago)
  • Fitting mod update
Line 
1<?php
2require_once('common/includes/class.kill.php');
3require_once('common/includes/class.pilot.php');
4require_once('common/includes/class.corp.php');
5require_once('common/includes/class.alliance.php');
6
7$page = new Page('Kill details');
8
9$smarty->assign('panel_style', config::get('fittingxp_style'));
10$smarty->assign('panel_colour', config::get('fittingxp_colour'));
11$smarty->assign('dropped_colour', config::get('fittingxp_dropped_colour'));
12$smarty->assign('themedir', config::get('fittingxp_themedir')); 
13
14if (config::get('item_values'))
15{
16    $smarty->assign('item_values', 'true');
17    if ($page->isAdmin())
18    {
19        $smarty->assign('admin', 'true');
20        if (isset($_POST['submit']) && $_POST['submit'] == 'UpdateValue')
21        {
22            // Send new value for item to the database
23            $IID = $_POST['IID'];
24            $Val = $_POST[$IID];
25            $qry = new DBQuery();
26            $qry->execute("INSERT INTO kb3_item_price (typeID, price) VALUES ('".$IID."', '".$Val."') ON DUPLICATE KEY UPDATE price = '".$Val."'");
27        }
28    }
29}
30
31if ($page->isAdmin())
32{
33    if (isset($_GET['view']) && $_GET['view']== 'FixSlot')
34    {
35            $smarty->assign('fixSlot', 'true');
36    }
37
38    $smarty->assign('admin', 'true');
39    if (isset($_POST['submit']) && $_POST['submit'] == 'UpdateSlot')
40    {
41        $IID = $_POST['IID'];
42        $KID = $_POST['KID'];
43        $Val = $_POST[$IID];
44        $table = $_POST['TYPE'];
45        $old = $_POST['OLDSLOT'];
46        $qry = new DBQuery();
47        $qry->execute("UPDATE kb3_items_".$table." SET itd_itl_id ='".$Val."' WHERE itd_itm_id=".$IID." AND itd_kll_id = ".$KID." AND itd_itl_id = ".$old);
48    }
49}
50
51if (!$kll_id = intval($_GET['kll_id']))
52{
53    $html = "No kill id specified.";
54    $page->setContent($html);
55    $page->generate($html);
56    exit;
57}
58
59$kill = new Kill($kll_id);
60if (!$kill->exists())
61{
62    $html = "That kill doesn't exist.";
63    $page->setContent($html);
64    $page->generate($html);
65    exit;
66}
67
68// victim $smarty->assign('',);
69$smarty->assign('KillId', $kill->getID());
70$smarty->assign('VictimPortrait', $kill->getVictimPortrait(64));
71$smarty->assign('VictimURL', "?a=pilot_detail&plt_id=".$kill->getVictimID());
72$smarty->assign('VictimName', $kill->getVictimName());
73$smarty->assign('VictimCorpURL', "?a=corp_detail&crp_id=".$kill->getVictimCorpID());
74$smarty->assign('VictimCorpName', $kill->getVictimCorpName());
75$smarty->assign('VictimAllianceURL', "?a=alliance_detail&all_id=".$kill->getVictimAllianceID());
76$smarty->assign('VictimAllianceName', $kill->getVictimAllianceName());
77$smarty->assign('VictimDamageTaken', $kill->VictimDamageTaken);
78
79// involved
80$i = 1;
81$involved = array();
82foreach ($kill->involvedparties_ as $inv)
83{
84    $pilot = new Pilot($inv->getPilotID());
85    $corp = new Corporation($inv->getCorpID());
86    $alliance = new Alliance($inv->getAllianceID());
87    $ship = $inv->getShip();
88    $weapon = $inv->getWeapon();
89
90    $involved[$i]['shipImage'] = $ship->getImage(64);
91    $involved[$i]['PilotURL'] = "?a=pilot_detail&plt_id=".$pilot->getID();
92    $involved[$i]['PilotName'] = $pilot->getName();
93    $involved[$i]['CorpURL'] = "?a=corp_detail&crp_id=".$corp->getID();
94    $involved[$i]['CorpName'] = $corp->getName();
95    $involved[$i]['AlliURL'] = "?a=alliance_detail&all_id=".$alliance->getID();
96    $involved[$i]['AlliName'] = $alliance->getName();
97    $involved[$i]['ShipName'] = $ship->getName();
98    $involved[$i]['ShipID'] = $ship->externalid_;
99    $involved[$i]['damageDone'] = $inv->dmgdone_;
100
101    if ($pilot->getID() == $kill->getFBPilotID())
102    {
103        $involved[$i]['FB'] = "true";
104    }
105    else
106    {
107        $involved[$i]['FB'] = "false";
108    }
109
110    if ($corp->isNPCCorp())
111    {
112        $involved[$i]['portrait'] = $corp->getPortraitURL(64);
113    }
114    else
115    {
116        $involved[$i]['portrait'] = $pilot->getPortraitURL(64);
117    }
118
119    if ($weapon->getName() != "Unknown" && $weapon->getName() != $ship->getName())
120    {
121        $involved[$i]['weaponName'] = $weapon->getName();
122        $involved[$i]['weaponID'] = $weapon->row_['itm_externalid'];
123    }
124    else
125        $involved[$i]['weaponName'] = "Unknown";
126    ++$i;
127}
128$smarty->assign_by_ref('involved', $involved);
129
130if (config::get('comments'))
131{
132    include('common/comments.php');
133    $smarty->assign('comments', $comment);
134}
135// ship, ship details
136$ship = $kill->getVictimShip();
137$shipclass = $ship->getClass();
138$system = $kill->getSystem();
139
140$smarty->assign('VictimShip', $kill->getVictimShip());
141$smarty->assign('ShipClass', $ship->getClass());
142$smarty->assign('ShipImage', $ship->getImage(64));
143$smarty->assign('ShipName', $ship->getName());
144$smarty->assign('ShipID', $ship->externalid_);
145$smarty->assign('ClassName', $shipclass->getName());
146
147include_once('common/includes/class.dogma.php');
148
149$ssc = new dogma($ship->externalid_);
150
151$smarty->assign_by_ref('ssc', $ssc);
152
153if ($kill->isClassified())
154{
155        //Admin is able to see classified Systems
156        if ($page->isAdmin())
157        {
158            $smarty->assign('System', $system->getName().' (Classified)');
159        $smarty->assign('SystemURL', "?a=system_detail&amp;sys_id=".$system->getID());
160            $smarty->assign('SystemSecurity', $system->getSecurity(true));
161        }
162        else
163        {
164                $smarty->assign('System', 'Classified');
165        $smarty->assign('SystemURL', "");
166            $smarty->assign('SystemSecurity', '0.0');
167        }
168}
169else
170{
171    $smarty->assign('System', $system->getName());
172    $smarty->assign('SystemURL', "?a=system_detail&amp;sys_id=".$system->getID());
173    $smarty->assign('SystemSecurity', $system->getSecurity(true));
174}
175$smarty->assign('TimeStamp', $kill->getTimeStamp());
176$smarty->assign('VictimShipImg', $ship->getImage(64));
177
178// preparing slot layout
179
180    $slot_array = array();
181    $slot_array[1] = array('img' => 'icon08_11.png', 'text' => 'Fitted - High slot', 'items' => array());
182    $slot_array[2] = array('img' => 'icon08_10.png', 'text' => 'Fitted - Mid slot', 'items' => array());
183    $slot_array[3] = array('img' => 'icon08_09.png', 'text' => 'Fitted - Low slot', 'items' => array());
184    $slot_array[5] = array('img' => 'icon68_01.png', 'text' => 'Fitted - Rig slot', 'items' => array());
185    $slot_array[6] = array('img' => 'icon02_10.png', 'text' => 'Drone bay', 'items' => array());
186    $slot_array[4] = array('img' => 'icon03_14.png', 'text' => 'Cargo Bay', 'items' => array());
187
188// ship fitting
189if (count($kill->destroyeditems_) > 0)
190{
191    $dest_array = array();
192    foreach($kill->destroyeditems_ as $destroyed)
193    {
194        $item = $destroyed->getItem();
195        $i_qty = $destroyed->getQuantity();
196        if (config::get('item_values'))
197        {
198            $value = $destroyed->getValue();
199            $TotalValue += $value*$i_qty;
200            $formatted = $destroyed->getFormatttedValue();
201        }
202        $i_name = $item->getName();
203        $i_location = $destroyed->getLocationID();
204        $i_id = $item->getID();
205        $i_usedgroup = $item->get_used_launcher_group($i_name);
206        $dest_array[$i_location][] = array('Icon' => $item->getIcon(32), 'Name' => $i_name, 'Quantity' => $i_qty, 'Value' => $formatted, 'single_unit' => $value, 'itemID' => $i_id,'slotID' => $i_location);
207               
208                //Fitting, KE - add destroyed items to an array of all fitted items.
209                if(($i_location != 4) && ($i_location != 5) && ($i_location != 6))
210                {
211                        if(($i_usedgroup != 0))
212                        {
213                                if ($i_location == 1)
214                                {
215                                        $i_ammo=$item->get_ammo_size($i_name);
216                                        if ($i_usedgroup == 481) { $i_ammo = 0; }
217                                }
218                                else
219                                {
220                                        $i_ammo = 0;
221                                }
222                                $ammo_array[$i_location][]=array('Name'=>$i_name, 'Icon' => $item->getIcon(24), 'itemID' => $i_id, 'usedgroupID' => $i_usedgroup, 'size' => $i_ammo);
223                        } else 
224                        {
225                                for ($count = 0; $count < $i_qty; $count++)
226                                {
227                                        if ($i_location == 1)
228                                        {
229                                                $i_charge=$item->get_used_charge_size($i_name);
230                                        }
231                                        else
232                                        {
233                                                $i_charge = 0;
234                                        }
235                                        $fitting_array[$i_location][]=array('Name'=>$i_name, 'Icon' => $item->getIcon(48), 'itemID' => $i_id, 'groupID' => $item->get_group_id($i_name), 'chargeSize' => $i_charge);
236                                }
237                        }
238                } else if(($destroyed->getLocationID() == 5))
239                {
240                        for ($count = 0; $count < $i_qty; $count++)
241                        {
242                                $fitting_array[$i_location][]=array('Name'=>$i_name, 'Icon' => $item->getIcon(32), 'itemID' => $i_id);
243                        }
244                }
245                //fitting thing end
246    }
247}
248
249if (count($kill->droppeditems_) > 0)
250{
251    $drop_array = array();
252    foreach($kill->droppeditems_ as $dropped)
253    {
254        $item = $dropped->getItem();
255        $i_qty = $dropped->getQuantity();
256        if (config::get('item_values'))
257        {
258            $value = $dropped->getValue();
259            $dropvalue += $value*$i_qty;
260            $formatted = $dropped->getFormatttedValue();
261        }
262        $i_name = $item->getName();
263        $i_location = $dropped->getLocationID();
264        $i_id = $item->getID();
265        $i_usedgroup = $item->get_used_launcher_group($i_name);
266        $drop_array[$i_location][] = array('Icon' => $item->getIcon(32), 'Name' => $i_name, 'Quantity' => $i_qty, 'Value' => $formatted, 'single_unit' => $value, 'itemID' => $i_id,'slotID' => $i_location);
267               
268                //Fitting -KE, add dropped items to the list
269                if(($i_location != 4) && ($i_location != 6))
270                {
271                        if(($i_usedgroup != 0))
272                        {
273                                if ($i_location == 1)
274                                {
275                                        $i_ammo=$item->get_ammo_size($i_name);
276                                        if ($i_usedgroup == 481) { $i_ammo = 0; }
277                                }
278                                else
279                                {
280                                        $i_ammo = 0;
281                                }
282                                $ammo_array[$i_location][]=array('Name'=>$i_name, 'Icon' => $item->getIcon(24), 'itemID' => $i_id, 'usedgroupID' => $i_usedgroup, 'size' => $i_ammo);
283                        } else 
284                        {
285                                for ($count = 0; $count < $i_qty; $count++)
286                                {
287                                        if ($i_location == 1)
288                                        {
289                                                $i_charge=$item->get_used_charge_size($i_name);
290                                        }
291                                        else
292                                        {
293                                                $i_charge = 0;
294                                        }
295                                        $fitting_array[$i_location][]=array('Name'=>$i_name, 'Icon' => $item->getIcon(48), 'itemID' => $i_id, 'groupID' => $item->get_group_id($i_name), 'chargeSize' => $i_charge);
296                                }
297                        }
298                }
299                //fitting thing end
300               
301               
302    }
303}
304
305//Fitting - KE, sort the fitted items into groupID order, so that several of the same item apear next to each other.
306if(is_array($fitting_array[1]))
307{
308        foreach ($fitting_array[1] as $array_rowh)
309        {
310                 $sort_by_nameh["groupID"][] = $array_rowh["groupID"];
311        }
312        array_multisort($sort_by_nameh["groupID"],SORT_ASC,$fitting_array[1]);
313}
314
315if(is_array($fitting_array[2]))
316{
317        foreach ($fitting_array[2] as $array_rowm) 
318        {
319                 $sort_by_namem["groupID"][] = $array_rowm["groupID"];
320        }
321        array_multisort($sort_by_namem["groupID"],SORT_ASC,$fitting_array[2]);
322}
323
324if(is_array($fitting_array[3]))
325{
326        foreach ($fitting_array[3] as $array_rowl) 
327        {
328                 $sort_by_namel["groupID"][] = $array_rowl["Name"];
329        }
330        array_multisort($sort_by_namel["groupID"],SORT_ASC,$fitting_array[3]);
331}
332
333if(is_array($fitting_array[5]))
334{
335        foreach ($fitting_array[5] as $array_rowr) 
336        {
337                 $sort_by_namer["Name"][] = $array_rowr["Name"];
338        }
339        array_multisort($sort_by_namer["Name"],SORT_ASC,$fitting_array[5]);
340}
341
342//Fitting - KE, sort the fitted items into name order, so that several of the same item apear next to each other. -end
343
344$lenght = count($ammo_array[1]);
345$temp = array();
346if(is_array($fitting_array[1]))
347{
348        $hiammo = array();
349        foreach ($fitting_array[1] as $highfit)
350        {
351                $group = $highfit["groupID"];
352                $size = $highfit["chargeSize"];
353                if($group == 483 // Modulated Deep Core Miner II, Modulated Strip Miner II and Modulated Deep Core Strip Miner II
354                        || $group == 53 // Laser Turrets
355                        || $group == 55 // Projectile Turrets
356                        || $group == 74 // Hybrid Turrets
357                        || ($group >= 506 && $group <= 511) // Some Missile Lauchers
358                        || $group == 481 // Probe Launchers
359                        || $group == 899 // Warp Disruption Field Generator I
360                        || $group == 771 // Heavy Assault Missile Launchers
361                        || $group == 589 // Interdiction Sphere Lauchers
362                        || $group == 524 // Citadel Torpedo Launchers
363                        )
364                {
365                        $found = 0;
366                        if ($group == 511) { $group = 509; } // Assault Missile Lauchers uses same ammo as Standard Missile Lauchers
367                        if(is_array($ammo_array[1]))
368                        {
369                                $i = 0;
370                                while (!($found) && $i<$lenght)
371                                {
372                                        $temp = array_shift($ammo_array[1]);
373                                        if (($temp["usedgroupID"] == $group) && ($temp["size"] == $size))
374                                        {
375                                                $hiammo[]=array('show'=>$smarty->fetch(get_tpl('ammo')), 'type'=>$temp["Icon"]);
376                                                $found = 1;     
377                                        }
378                                        array_push($ammo_array[1],$temp);
379                                        $i++;                                   
380                                }                               
381                        }
382                        if (!($found)) 
383                        {
384                                $hiammo[]=array('show'=>$smarty->fetch(get_tpl('ammo')), 'type'=>$smarty->fetch(get_tpl('noicon')));
385                        }
386                } else {
387                        $hiammo[]=array('show'=>$smarty->fetch(get_tpl('blank')), 'type'=>$smarty->fetch(get_tpl('blank')));
388                }
389        }
390}
391
392$lenght = count($ammo_array[2]);
393if(is_array($fitting_array[2]))
394{
395        $midammo = array();
396        foreach ($fitting_array[2] as $midfit)
397        {
398                $group = $midfit["groupID"];
399                if($group == 76 // Capacitor Boosters
400                        || $group == 208 // Remote Sensor Dampeners
401                        || $group == 212 // Sensor Boosters
402                        || $group == 291 // Tracking Disruptors
403                        || $group == 213 // Tracking Computers
404                        || $group == 209 // Tracking Links
405                        || $group == 290 // Remote Sensor Boosters
406                        )
407                {
408                        $found = 0;
409                        if(is_array($ammo_array[2]))
410                        {                               
411                                $i = 0;
412                                while (!($found) && $i<$lenght)
413                                {
414                                        $temp = array_shift($ammo_array[2]);
415                                        if ($temp["usedgroupID"] == $group)
416                                        {
417                                                $midammo[]=array('show'=>$smarty->fetch(get_tpl('ammo')), 'type'=>$temp["Icon"]);
418                                                $found = 1;     
419                                        }
420                                        array_push($ammo_array[2],$temp);
421                                        $i++;                                   
422                                }                               
423                        }
424                        if (!($found)) 
425                        {
426                                $midammo[]=array('show'=>$smarty->fetch(get_tpl('ammo')), 'type'=>$smarty->fetch(get_tpl('noicon')));
427                        }
428                } else {
429                        $midammo[]=array('show'=>$smarty->fetch(get_tpl('blank')), 'type'=>$smarty->fetch(get_tpl('blank')));
430                }
431        }
432}
433
434
435if ($TotalValue >= 0)
436{
437    $Formatted = number_format($TotalValue, 2);
438}
439
440// Get Ship Value
441$ShipValue = $ship->getPrice();
442if (config::get('kd_droptototal'))
443{
444    $TotalValue += $dropvalue;
445}
446$TotalLoss = number_format($TotalValue + $ShipValue, 2);
447$ShipValue = number_format($ShipValue, 2);
448$dropvalue = number_format($dropvalue, 2);
449
450$smarty->assign_by_ref('destroyed', $dest_array);
451$smarty->assign_by_ref('dropped', $drop_array);
452$smarty->assign_by_ref('slots', $slot_array);
453$smarty->assign_by_ref('fitting_high', $fitting_array[1]);
454$smarty->assign_by_ref('fitting_med', $fitting_array[2]);
455$smarty->assign_by_ref('fitting_low', $fitting_array[3]);
456$smarty->assign_by_ref('fitting_rig', $fitting_array[5]);
457$smarty->assign_by_ref('fitting_ammo_high', $hiammo);
458$smarty->assign_by_ref('fitting_ammo_mid', $midammo);
459$smarty->assign('ItemValue', $Formatted);
460$smarty->assign('DropValue', $dropvalue);
461$smarty->assign('ShipValue', $ShipValue);
462$smarty->assign('TotalLoss', $TotalLoss);
463
464$hicount = count($fitting_array[1]);
465$medcount = count($fitting_array[2]);
466$lowcount = count($fitting_array[3]);
467
468$smarty->assign('hic', $hicount);
469$smarty->assign('medc', $medcount);
470$smarty->assign('lowc', $lowcount);
471
472$menubox = new Box("Menu");
473$menubox->setIcon("menu-item.gif");
474$menubox->addOption("caption", "View");
475$menubox->addOption("link", "Killmail", "javascript:sndReq('index.php?a=kill_mail&kll_id=".$kill->getID()."');ReverseContentDisplay('popup')");
476$menubox->addOption("link", "EFT Fitting", "javascript:sndReq('index.php?a=eft_fitting&kll_id=".$kill->getID()."');ReverseContentDisplay('popup')");
477if ($kill->relatedKillCount() > 1 || $kill->relatedLossCount() > 1)
478{
479    $menubox->addOption("link", "Related kills (".$kill->relatedKillCount()."/".$kill->relatedLossCount().")", "?a=kill_related&kll_id=".$kill->getID());
480}
481if ($page->isAdmin())
482{
483    $menubox->addOption("caption", "Admin");
484    $menubox->addOption("link", "Delete", "javascript:openWindow('?a=admin_kill_delete&kll_id=".$kill->getID()."', null, 420, 300, '' );");
485    if (isset($_GET['view']) && $_GET['view'] == 'FixSlot')
486    {
487        $menubox->addOption("link", "Adjust Values", "?a=kill_detail&kll_id=".$kill->getID()."");
488    }
489    else
490    {
491        $menubox->addOption("link", "Fix Slots", "?a=kill_detail&kll_id=".$kill->getID()."&view=FixSlot");
492    }
493}
494$page->addContext($menubox->generate());
495
496if (config::get('kill_points'))
497{
498    $scorebox = new Box("Points");
499    $scorebox->addOption("points", $kill->getKillPoints());
500    $page->addContext($scorebox->generate());
501}
502
503//Admin is able to see classsiefied systems
504if ((!$kill->isClassified()) || ($page->isAdmin()))
505{
506    $mapbox = new Box("Map");
507    $mapbox->addOption("img", "?a=mapview&sys_id=".$system->getID()."&mode=map&size=145");
508    $mapbox->addOption("img", "?a=mapview&sys_id=".$system->getID()."&mode=region&size=145");
509    $mapbox->addOption("img", "?a=mapview&sys_id=".$system->getID()."&mode=cons&size=145");
510    $page->addContext($mapbox->generate());
511}
512
513
514$html = $smarty->fetch('../mods/fitting/kill_detail.tpl');
515$page->setContent($html);
516$page->generate();
517?>
Note: See TracBrowser for help on using the browser.