root/dev/common/kill_detail.php @ 381

Revision 381, 18.0 KB (checked in by kovell, 11 years ago)

kill class can constructs all involved pilot/ship/etc objects
kill_detail reduced load using new kill method.
display fixes.

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