root/dev/common/kill_detail.php @ 388

Revision 388, 18.1 KB (checked in by kovell, 11 years ago)

Page cache fixes for comments.
refresh no longer reposts comment.
comments display again.
304 sent for refresh of cached pages.
html fixes

Line 
1<?php
2require_once('common/includes/class.kill.php');
3
4$kll_id = intval($_GET['kll_id']);
5$kll_external_id = intval($_GET['kll_external_id']);
6if (!$kll_id && !$kll_external_id)
7{
8    $html = "No kill id specified.";
9    $page->setContent($html);
10    $page->generate($html);
11    exit;
12}
13
14if($kll_id)
15{
16        $kill = new Kill($kll_id);
17}
18else
19{
20        $kill = new Kill($kll_external_id, true);
21        $kll_id = $kill->getID();
22}
23$kill->setDetailedInvolved();
24
25if (!$kill->exists())
26{
27    $html="That kill doesn't exist.";
28    $page->setContent($html);
29    $page->generate($html);
30    exit;
31}
32
33// If a comment is being posted then we don't exit this block.
34if(isset($_POST['comment']) && config::get('comments'))
35{
36    include('common/comments.php');
37}
38
39require_once('common/includes/class.pilot.php');
40require_once('common/includes/class.corp.php');
41require_once('common/includes/class.alliance.php');
42
43$page = new Page('Kill details');
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                $i_id = $item->getID();
243                $i_usedgroup = $item->get_used_launcher_group();
244                $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());
245            if(config::get('fp_show'))
246            { // BEGIN ADDING DESTROYED ITEMS TO FITTING LAYOUT         
247                        if(($i_location != 4) && ($i_location != 5) && ($i_location != 6)) // NOT IN CARGO, DRONE BAY OR RIG SLOT
248                        {
249                                if(($i_usedgroup != 0)) // AMMO
250                                {
251                                        if ($i_location == 1)
252                                        {
253                                                $i_ammo=$item->get_ammo_size($i_name); // GET SIZE IF IN HI SLOT
254
255                                        }
256                                        else
257                                        {
258                                                $i_ammo = 0; // NULL FOR OTHER SLOTS
259                                        }
260                                        $ammo_array[$i_location][]=array('Name'=>$i_name, 'Icon' => $item->getIcon(24), 'itemID' => $i_id, 'usedgroupID' => $i_usedgroup, 'size' => $i_ammo);
261                                }
262                                else // MODULES
263                                {
264                                        for ($count = 0; $count < $i_qty; $count++)
265                                        {
266                                                if ($i_location == 1)
267                                                {
268                                                        $i_charge=$item->get_used_charge_size(); // GET TURRET SIZE
269                                                }
270                                                else
271                                                {
272                                                        $i_charge = 0; // NULL FOR OTHER MODULES
273                                                }
274                                                $fitting_array[$i_location][]=array('Name'=>$i_name, 'Icon' => $item->getIcon(48), 'itemID' => $i_id, 'groupID' => $item->get_group_id(), 'chargeSize' => $i_charge);
275                                        }
276                                }
277                        }
278                        else if(($destroyed->getLocationID() == 5)) // RIG SLOT
279                        {
280                                for ($count = 0; $count < $i_qty; $count++)
281                                {
282                                        $fitting_array[$i_location][]=array('Name'=>$i_name, 'Icon' => $item->getIcon(32), 'itemID' => $i_id);
283                                }
284                        }
285            } // END ADDING DESTROYED ITEMS TO FITTING LAYOUT
286    }
287    for($i=1;$i<=6;$i++)
288    {
289        if(!is_array($dest_array[$i])) continue;
290        foreach($dest_array[$i] as $row)
291        {
292            $group[] = $row["groupID"];
293            $named[] = $row["Name"];
294        }
295        array_multisort($group, SORT_ASC, $named, SORT_ASC, $dest_array[$i]);
296        unset($named);unset($group);
297    }
298}
299
300if (count($kill->droppeditems_) > 0)
301{
302    $drop_array = array();
303    foreach($kill->droppeditems_ as $dropped)
304    {
305        $item = $dropped->getItem();
306        $i_qty = $dropped->getQuantity();
307        if (config::get('item_values'))
308        {
309            $value = $dropped->getValue();
310            $dropvalue += $value*$i_qty;
311            $formatted = $dropped->getFormattedValue();
312        }
313        $i_name = $item->getName();
314        $i_location = $dropped->getLocationID();
315        $i_id = $item->getID();
316        $i_usedgroup = $item->get_used_launcher_group();
317        $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());
318            if(config::get('fp_show'))
319            { // BEGIN ADDING DROPPED ITEMS TO FITTING LAYOUT
320                if(($i_location != 4) && ($i_location != 6))
321                {
322                        if(($i_usedgroup != 0)) // AMMO
323                        {
324                                if ($i_location == 1)
325                                {
326                                        $i_ammo=$item->get_ammo_size($i_name); // GET SIZE IF IN HI SLOT
327
328                                }
329                                else
330                                {
331                                        $i_ammo = 0; // NULL FOR OTHER SLOTS
332                                }
333                                $ammo_array[$i_location][]=array('Name'=>$i_name, 'Icon' => $item->getIcon(24), 'itemID' => $i_id, 'usedgroupID' => $i_usedgroup, 'size' => $i_ammo);
334                        } 
335                        else // MODULES
336                        {
337                                for ($count = 0; $count < $i_qty; $count++)
338                                {
339                                        if ($i_location == 1)
340                                        {
341                                                $i_charge=$item->get_used_charge_size(); // GET TURRET SIZE
342                                        }
343                                        else
344                                        {
345                                                $i_charge = 0; // NULL FOR OTHER MODULES
346                                        }
347                                        $fitting_array[$i_location][]=array('Name'=>$i_name, 'Icon' => $item->getIcon(48), 'itemID' => $i_id, 'groupID' => $item->get_group_id(), 'chargeSize' => $i_charge);
348                                }
349                        }
350                }
351            } // END ADDING DROPPED ITEMS TO FITTING LAYOUT
352               
353    }
354    for($i=1;$i<=6;$i++)
355    {
356        if(!is_array($drop_array[$i])) continue;
357        foreach($drop_array[$i] as $row)
358        {
359            $group[] = $row["groupID"];
360            $named[] = $row["Name"];
361        }
362        array_multisort($group, SORT_ASC, $named, SORT_ASC, $drop_array[$i]);
363        unset($named);unset($group);
364    }
365}
366if(config::get('fp_show'))
367{ // BEGIN AMMO FITTING & ITEM SORTING
368if(is_array($fitting_array[1]))
369{
370        foreach ($fitting_array[1] as $array_rowh)
371        {
372                $sort_by_nameh["groupID"][] = $array_rowh["groupID"]; // SORTING BY GROUP ID
373        }
374        array_multisort($sort_by_nameh["groupID"],SORT_ASC,$fitting_array[1]);
375}
376
377if(is_array($fitting_array[2]))
378{
379        foreach ($fitting_array[2] as $array_rowm) 
380        {
381                 $sort_by_namem["groupID"][] = $array_rowm["groupID"]; // SORTING BY GROUP ID
382        }
383        array_multisort($sort_by_namem["groupID"],SORT_ASC,$fitting_array[2]);
384}
385
386if(is_array($fitting_array[3]))
387{
388        foreach ($fitting_array[3] as $array_rowl) 
389        {
390                 $sort_by_namel["groupID"][] = $array_rowl["groupID"]; // SORTING BY GROUP ID
391        }
392        array_multisort($sort_by_namel["groupID"],SORT_ASC,$fitting_array[3]);
393}
394
395if(is_array($fitting_array[5]))
396{
397        foreach ($fitting_array[5] as $array_rowr) 
398        {
399                 $sort_by_namer["Name"][] = $array_rowr["Name"]; // SORTING BY NAME
400        }
401        array_multisort($sort_by_namer["Name"],SORT_ASC,$fitting_array[5]);
402}
403
404// SORTING THINGY END
405
406$length = count($ammo_array[1]);
407$temp = array();
408if(is_array($fitting_array[1])) // AMMO FOR HIGH SLOTS
409{
410        $hiammo = array();
411        foreach ($fitting_array[1] as $highfit)
412        {
413                $group = $highfit["groupID"];
414                $size = $highfit["chargeSize"];
415                if($group == 483 // Modulated Deep Core Miner II, Modulated Strip Miner II and Modulated Deep Core Strip Miner II
416                        || $group == 53 // Laser Turrets
417                        || $group == 55 // Projectile Turrets
418                        || $group == 74 // Hybrid Turrets
419                        || ($group >= 506 && $group <= 511) // Some Missile Lauchers
420                        || $group == 481 // Probe Launchers
421                        || $group == 899 // Warp Disruption Field Generator I
422                        || $group == 771 // Heavy Assault Missile Launchers
423                        || $group == 589 // Interdiction Sphere Lauchers
424                        || $group == 524 // Citadel Torpedo Launchers
425                        )
426                {
427                        $found = 0;
428                        if ($group == 511) { $group = 509; } // Assault Missile Lauchers uses same ammo as Standard Missile Lauchers
429                        if(is_array($ammo_array[1]))
430                        {
431                                $i = 0;
432                                while (!($found) && $i<$length)
433                                {
434                                        $temp = array_shift($ammo_array[1]);
435                                        if (($temp["usedgroupID"] == $group) && ($temp["size"] == $size))
436                                        {
437                                                $hiammo[]=array('show'=>$smarty->fetch(get_tpl('ammo')), 'type'=>$temp["Icon"]);
438                                                $found = 1;     
439                                        }
440                                        array_push($ammo_array[1],$temp);
441                                        $i++;                                   
442                                }                               
443                        }
444                        if (!($found)) 
445                        {
446                                $hiammo[]=array('show'=>$smarty->fetch(get_tpl('ammo')), 'type'=>$smarty->fetch(get_tpl('noicon')));
447                        }
448                } else {
449                        $hiammo[]=array('show'=>$smarty->fetch(get_tpl('blank')), 'type'=>$smarty->fetch(get_tpl('blank')));
450                }
451        }
452}
453
454$length = count($ammo_array[2]);
455if(is_array($fitting_array[2])) // AMMO FOR MID SLOTS
456{
457        $midammo = array();
458        foreach ($fitting_array[2] as $midfit)
459        {
460                $group = $midfit["groupID"];
461                if($group == 76 // Capacitor Boosters
462                        || $group == 208 // Remote Sensor Dampeners
463                        || $group == 212 // Sensor Boosters
464                        || $group == 291 // Tracking Disruptors
465                        || $group == 213 // Tracking Computers
466                        || $group == 209 // Tracking Links
467                        || $group == 290 // Remote Sensor Boosters
468                        )
469                {
470                        $found = 0;
471                        if(is_array($ammo_array[2]))
472                        {                               
473                                $i = 0;
474                                while (!($found) && $i<$length)
475                                {
476                                        $temp = array_shift($ammo_array[2]);
477                                        if ($temp["usedgroupID"] == $group)
478                                        {
479                                                $midammo[]=array('show'=>$smarty->fetch(get_tpl('ammo')), 'type'=>$temp["Icon"]);
480                                                $found = 1;     
481                                        }
482                                        array_push($ammo_array[2],$temp);
483                                        $i++;                                   
484                                }                               
485                        }
486                        if (!($found)) 
487                        {
488                                $midammo[]=array('show'=>$smarty->fetch(get_tpl('ammo')), 'type'=>$smarty->fetch(get_tpl('noicon')));
489                        }
490                } else {
491                        $midammo[]=array('show'=>$smarty->fetch(get_tpl('blank')), 'type'=>$smarty->fetch(get_tpl('blank')));
492                }
493        }
494}
495} // END FITTING PANEL AMMO THINGY
496
497if ($TotalValue >= 0)
498{
499    $Formatted = number_format($TotalValue, 2);
500}
501
502// Get Ship Value
503$ShipValue = $ship->getPrice();
504if (config::get('kd_droptototal'))
505{
506    $TotalValue += $dropvalue;
507}
508$TotalLoss = number_format($TotalValue + $ShipValue, 2);
509$ShipValue = number_format($ShipValue, 2);
510$dropvalue = number_format($dropvalue, 2);
511
512$smarty->assign_by_ref('destroyed', $dest_array);
513$smarty->assign_by_ref('dropped', $drop_array);
514$smarty->assign_by_ref('slots', $slot_array);
515$smarty->assign_by_ref('fitting_high', $fitting_array[1]);
516$smarty->assign_by_ref('fitting_med', $fitting_array[2]);
517$smarty->assign_by_ref('fitting_low', $fitting_array[3]);
518$smarty->assign_by_ref('fitting_rig', $fitting_array[5]);
519$smarty->assign_by_ref('fitting_ammo_high', $hiammo);
520$smarty->assign_by_ref('fitting_ammo_mid', $midammo);
521$smarty->assign('ItemValue', $Formatted);
522$smarty->assign('DropValue', $dropvalue);
523$smarty->assign('ShipValue', $ShipValue);
524$smarty->assign('TotalLoss', $TotalLoss);
525
526$hicount = count($fitting_array[1]);
527$medcount = count($fitting_array[2]);
528$lowcount = count($fitting_array[3]);
529
530$smarty->assign('hic', $hicount);
531$smarty->assign('medc', $medcount);
532$smarty->assign('lowc', $lowcount);
533
534$menubox = new Box("Menu");
535$menubox->setIcon("menu-item.gif");
536$menubox->addOption("caption", "View");
537$menubox->addOption("link", "Killmail", "javascript:sndReq('index.php?a=kill_mail&amp;kll_id=".$kill->getID()."');ReverseContentDisplay('popup')");
538if (config::get('kd_EFT')) // CHECKS IF EFT EXPORT IS ENABLED
539{
540        $menubox->addOption("link", "EFT Fitting", "javascript:sndReq('index.php?a=eft_fitting&amp;kll_id=".$kill->getID()."');ReverseContentDisplay('popup')");
541}
542if ($kill->relatedKillCount() > 1 || $kill->relatedLossCount() > 1 ||
543        ((ALLIANCE_ID || CORP_ID || PILOT_ID) && $kill->relatedKillCount() + $kill->relatedLossCount() > 1))
544{
545    $menubox->addOption("link", "Related kills (".$kill->relatedKillCount()."/".$kill->relatedLossCount().")", "?a=kill_related&amp;kll_id=".$kill->getID());
546}
547if ($page->isAdmin())
548{
549    $menubox->addOption("caption", "Admin");
550    $menubox->addOption("link", "Delete", "javascript:openWindow('?a=admin_kill_delete&amp;kll_id=".$kill->getID()."', null, 420, 300, '' );");
551    if (isset($_GET['view']) && $_GET['view'] == 'FixSlot')
552    {
553        $menubox->addOption("link", "Adjust Values", "?a=kill_detail&amp;kll_id=".$kill->getID()."");
554    }
555    else
556    {
557        $menubox->addOption("link", "Fix Slots", "?a=kill_detail&amp;kll_id=".$kill->getID()."&amp;view=FixSlot");
558    }
559}
560$page->addContext($menubox->generate());
561
562if (config::get('kill_points'))
563{
564    $scorebox = new Box("Points");
565    $scorebox->addOption("points", $kill->getKillPoints());
566    $page->addContext($scorebox->generate());
567}
568
569//Admin is able to see classsiefied systems
570if ((!$kill->isClassified()) || ($page->isAdmin()))
571{
572    $mapbox = new Box("Map");
573    $mapbox->addOption("img", "?a=mapview&amp;sys_id=".$system->getID()."&amp;mode=map&amp;size=145");
574    $mapbox->addOption("img", "?a=mapview&amp;sys_id=".$system->getID()."&amp;mode=region&amp;size=145");
575    $mapbox->addOption("img", "?a=mapview&amp;sys_id=".$system->getID()."&amp;mode=cons&amp;size=145");
576    $page->addContext($mapbox->generate());
577}
578
579
580$html = $smarty->fetch(get_tpl('kill_detail'));
581$page->setContent($html);
582$page->generate();
583?>
Note: See TracBrowser for help on using the browser.