root/dev/common/kill_detail.php @ 376

Revision 376, 17.9 KB (checked in by kovell, 11 years ago)

MyISAM can be selected again on install
duplicate item descriptions removed from install
alliance/corp/pilot optional installs now have external id and correct structure
alliance/corp/pilot/kill details can be selected by external id
corp/alliance/kill now have get and set methods for external ids
killlist has method to select only kills with an external id set
monthly views mod now shows clock and combined kills if selected
optimisations and fixes to killlists and toplists

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