root/dev/common/kill_detail.php @ 391

Revision 391, 18.2 KB (checked in by kovell, 11 years ago)

Fixes: kill_detail comment posting works and non-existent kll_id gives correct error, t3 subsystems have correct location, potential conflicts with old mods and db classes removed.

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