root/branch/rev3/common/includes/class.kill.php @ 244

Revision 244, 30.4 KB (checked in by exi, 15 years ago)

Removed rig0rs mail on request.
New option in Mapoptions to cache region maps.
Added several NPC corp images.
Improved corp image handling, you can now store the logo as <corpname>.jpg in img/corps/.
Killmails now handle the Killmail Mk1.5 format.
A reinforced killboard will now cache all generated maps regardless of their type.
Page kill_detail will now show damage and dropped items.
Upgraded category icons on kill_detail to ones with alpha channel.

Line 
1<?php
2require_once('common/includes/class.item.php');
3require_once('common/includes/class.corp.php');
4require_once('common/includes/class.alliance.php');
5require_once('common/includes/class.ship.php');
6require_once('common/includes/class.system.php');
7require_once('common/includes/class.pilot.php');
8require_once('common/includes/class.killlist.php');
9
10class Kill
11{
12    function Kill($id = 0)
13    {
14        $this->id_ = $id;
15        $this->involvedparties_ = array();
16        $this->destroyeditems_ = array();
17        $this->droppeditems_ = array();
18    }
19
20    function set($var, $value)
21    {
22        $this->$var = $value;
23    }
24
25    function getID()
26    {
27        return $this->id_;
28    }
29
30    function getTimeStamp()
31    {
32        $this->execQuery();
33        return $this->timestamp_;
34    }
35
36    function getVictimName()
37    {
38        $this->execQuery();
39        return $this->victimname_;
40    }
41
42    function getVictimID()
43    {
44        $this->execQuery();
45        return $this->victimid_;
46    }
47
48    function getVictimPortrait($size = 32)
49    {
50        $this->execQuery();
51        $plt = new Pilot($this->victimid_);
52        return $plt->getPortraitURL($size);
53    }
54
55    function getVictimCorpID()
56    {
57        $this->execQuery();
58        return $this->victimcorpid_;
59    }
60
61    function getVictimCorpName()
62    {
63        $this->execQuery();
64        return $this->victimcorpname_;
65    }
66
67    function getVictimAllianceName()
68    {
69        $this->execQuery();
70        return $this->victimalliancename_;
71    }
72
73    function getVictimAllianceID()
74    {
75        $this->execQuery();
76        return $this->victimallianceid_;
77    }
78
79    function getVictimShip()
80    {
81        $this->execQuery();
82        return $this->victimship_;
83    }
84
85    function getSystem()
86    {
87        $this->execQuery();
88        return $this->solarsystem_;
89    }
90
91    function getFBPilotID()
92    {
93        $this->execQuery();
94        if (!$this->fbpilotid_) return "null";
95        else return $this->fbpilotid_;
96    }
97
98    function getFBPilotName()
99    {
100        $this->execQuery();
101        return $this->fbpilotname_;
102    }
103
104    function getFBCorpID()
105    {
106        $this->execQuery();
107        if (!$this->fbcorpid_) return "null";
108        else return $this->fbcorpid_;
109    }
110
111    function getFBCorpName()
112    {
113        $this->execQuery();
114        return $this->fbcorpname_;
115    }
116
117    function getFBAllianceID()
118    {
119        $this->execQuery();
120        if (!$this->fballianceid_) return "null";
121        else return $this->fballianceid_;
122    }
123
124    function getFBAllianceName()
125    {
126        $this->execQuery();
127        return $this->fballiancename_;
128    }
129
130    function getKillPoints()
131    {
132        $this->execQuery();
133        return $this->killpoints_;
134    }
135
136    function getSolarSystemName()
137    {
138        return $this->solarsystemname_;
139    }
140
141    function getSolarSystemSecurity()
142    {
143        return $this->solarsystemsecurity_;
144    }
145
146    function getVictimShipName()
147    {
148        return $this->victimshipname_;
149    }
150
151    function getVictimShipExternalID()
152    {
153        return $this->victimshipexternalid_;
154    }
155
156    function getVictimShipClassName()
157    {
158        return $this->victimshipclassname_;
159    }
160
161    function getVictimShipValue()
162    {
163        return $this->victimshipvalue_;
164    }
165
166    function getVictimShipImage($size)
167    {
168        return IMG_URL."/ships/".$size."_".$size."/".$this->victimshipexternalid_.".png";
169    }
170
171    function getVictimShipValueIndicator()
172    {
173        // value is now raw
174        $value = $this->getVictimShipValue()/1000000;
175
176        if ($value >= 0 && $value <= 1)
177            $color = 'gray';
178        elseif ($value > 1 && $value <= 15)
179            $color = 'blue';
180        elseif ($value > 15 && $value <= 25)
181            $color = 'green';
182        elseif ($value > 25 && $value <= 40)
183            $color = 'yellow';
184        elseif ($value > 40 && $value <= 80)
185            $color = 'red';
186        elseif ($value > 80 && $value <= 250)
187            $color = 'orange';
188        elseif ($value > 250)
189            $color = 'purple';
190
191        return IMG_URL.'/ships/ship-'.$color.'.gif';
192    }
193
194    function getRawMail()
195    {
196        $this->execQuery();
197        if ($this->isClassified())
198        {
199            return 'Killmail not yet available, try again in '.round($this->getClassifiedTime()/3600, 2).' hrs.';
200        }
201
202        $mail .= substr(str_replace('-', '.' , $this->getTimeStamp()), 0, 16)."\r\n\r\n";
203        $mail .= "Victim: ".$this->getVictimName()."\r\n";
204        $mail .= "Alliance: ".$this->getVictimAllianceName()."\r\n";
205        $mail .= "Corp: ".$this->getVictimCorpName()."\r\n";
206        $ship = $this->getVictimShip();
207        $mail .= "Destroyed: ".$ship->getName()."\r\n";
208        $system = $this->getSystem();
209        $mail .= "System: ".$system->getName()."\r\n";
210        $mail .= "Security: ".$system->getSecurity(true)."\r\n\r\n";
211        $mail .= "Involved parties:\r\n\r\n";
212
213        foreach ($this->involvedparties_ as $inv)
214        {
215            $pilot = new Pilot($inv->getPilotID());
216            $corp = new Corporation($inv->getCorpID());
217            $alliance = new Alliance($inv->getAllianceID());
218
219            $weapon = $inv->getWeapon();
220            $ship = $inv->getShip();
221            if ($pilot->getName() == $weapon->getName())
222            {
223                $name = $pilot->getName()." / ".$corp->getName();
224            }
225            else
226            {
227                $name = $pilot->getName();
228            }
229
230            $mail .= "Name: ".$name;
231            if ($pilot->getID() == $this->getFBPilotID())
232            {
233                $mail .= " (laid the final blow)";
234            }
235            $mail .= "\r\n";
236
237            if ($pilot->getName() != $weapon->getName())
238            {
239                $mail .= "Security: ".$inv->getSecStatus()."\r\n";
240                $mail .= "Alliance: ".$alliance->getName()."\r\n";
241                $mail .= "Corp: ".$corp->getName()."\r\n";
242                $mail .= "Ship: ".$ship->getName()."\r\n";
243                $mail .= "Weapon: ".$weapon->getName()."\r\n";
244            }
245            $mail .= "\r\n";
246        }
247
248        if (count($this->destroyeditems_) > 0)
249        {
250            $mail .= "\r\nDestroyed items:\r\n\r\n";
251
252            foreach($this->destroyeditems_ as $destroyed)
253            {
254                $item = $destroyed->getItem();
255                $mail .= $item->getName();
256                if ($destroyed->getQuantity() > 1)
257                {
258                    // if the option is enabled and the item is fitted then split it up
259                    // this is aworkaround for the lazy parser of griefwatch
260                    if (config::get('kill_splitfit') && $destroyed->getQuantity() < 9 && ($destroyed->getLocationID() == 1
261                        || $destroyed->getLocationID() == 2 || $destroyed->getLocationID() == 3))
262                    {
263                        for ($i = $destroyed->getQuantity(); $i > 1; $i--)
264                        {
265                            $mail .= "\r\n".$item->getName();
266                        }
267
268                    }
269                    else
270                    {
271                        $mail .= ", Qty: ".$destroyed->getQuantity();
272                    }
273                }
274                if ($destroyed->getLocationID() == 4) // cargo
275                    $mail .= " (Cargo)";
276                if ($destroyed->getLocationID() == 6) // drone
277                    $mail .= " (Drone Bay)";
278                $mail .= "\r\n";
279            }
280        }
281
282        return $mail;
283    }
284
285    function getDupe($checkonly = false)
286    {
287        if (!$checkonly)
288        {
289            $this->execQuery();
290        }
291        $dupe = 0;
292        $qry = new DBQuery();
293        if (!$this->getFBPilotID() || !$this->victimid_)
294            return 0;
295        $qry->execute("select kll_id
296                        from kb3_kills
297                        where kll_timestamp <=
298                        date_add( '".$this->timestamp_."', INTERVAL '5:0' MINUTE_SECOND )
299                        and kll_timestamp >=
300                        date_sub( '".$this->timestamp_."', INTERVAL '5:0' MINUTE_SECOND )
301                        and kll_victim_id = ".$this->victimid_."
302                        and kll_ship_id = ".$this->victimship_->getID()."
303                        and kll_system_id = ".$this->solarsystem_->getID()."
304                        and kll_fb_plt_id = ".$this->getFBPilotID()."
305                        and kll_id != ".$this->id_);
306
307        $row = $qry->getRow();
308        if ($row)
309            return $row['kll_id'];
310        else
311            return 0;
312    }
313
314    function execQuery()
315    {
316        if (!$this->timestamp_)
317        {
318            $qry = new DBQuery();
319
320            $this->qry_ = new DBQuery();
321            $this->sql_ = "select kll.kll_id, kll.kll_timestamp, plt.plt_name,
322                              crp.crp_name, ali.all_name, ali.all_id, kll.kll_ship_id,
323                              kll.kll_system_id, kll.kll_ship_id,
324                                      kll.kll_victim_id, plt.plt_externalid,
325                                      kll.kll_crp_id, kll.kll_points,
326                                      fbplt.plt_id as fbplt_id,
327                                      fbplt.plt_externalid as fbplt_externalid,
328                                      fbcrp.crp_id as fbcrp_id,
329                                      fbali.all_id as fbali_id,
330                              fbplt.plt_name as fbplt_name,
331                              fbcrp.crp_name as fbcrp_name,
332                              fbali.all_name as fbali_name,
333                              kll_dmgtaken
334                         from kb3_kills kll, kb3_pilots plt, kb3_corps crp,
335                              kb3_alliances ali, kb3_alliances fbali, kb3_corps fbcrp,
336                              kb3_pilots fbplt
337                        where kll.kll_id = '".$this->id_."'
338                          and plt.plt_id = kll.kll_victim_id
339                          and crp.crp_id = kll.kll_crp_id
340                          and ali.all_id = kll.kll_all_id
341                          and fbali.all_id = kll.kll_fb_all_id
342                          and fbcrp.crp_id = kll.kll_fb_crp_id
343                          and fbplt.plt_id = kll.kll_fb_plt_id";
344
345            $this->qry_->execute($this->sql_);
346            $row = $this->qry_->getRow();
347            if (!$row)
348            {
349                $this->valid_ = false;
350                return false;
351            }
352            else
353            {
354                $this->valid_ = true;
355            }
356
357            $this->setTimeStamp($row['kll_timestamp']);
358            $this->setSolarSystem(new SolarSystem($row['kll_system_id']));
359            $this->setVictimID($row['kll_victim_id']);
360            $this->setVictimName($row['plt_name']);
361            $this->setVictimCorpID($row['kll_crp_id']);
362            $this->setVictimCorpName($row['crp_name']);
363            $this->setVictimAllianceID($row['all_id']);
364            $this->setVictimAllianceName($row['all_name']);
365            $this->setVictimShip(new Ship($row['kll_ship_id']));
366            $this->setFBPilotID($row['fbplt_id']);
367            $this->setFBPilotName($row['fbplt_name']);
368            $this->setFBCorpID($row['fbcrp_id']);
369            $this->setFBCorpName($row['fbcrp_name']);
370            $this->setFBAllianceID($row['fbali_id']);
371            $this->setFBAllianceName($row['fbali_name']);
372            $this->setKillPoints($row['kll_points']);
373            $this->plt_ext_ = $row['plt_externalid'];
374            $this->fbplt_ext_ = $row['fbplt_externalid'];
375            $this->VictimDamageTaken = $row['kll_dmgtaken'];
376
377            // involved
378            $sql = "select ind_plt_id, ind_crp_id, ind_all_id, ind_sec_status,
379                    ind_shp_id, ind_wep_id, ind_dmgdone
380                    from kb3_inv_detail
381                    where ind_kll_id = ".$this->getID()."
382                    order by ind_order";
383
384            $qry->execute($sql) or die($qry->getErrorMsg());
385            while ($row = $qry->getRow())
386            {
387                $involved = new InvolvedParty($row['ind_plt_id'],
388                    $row['ind_crp_id'],
389                    $row['ind_all_id'],
390                    $row['ind_sec_status'],
391                    new Ship($row['ind_shp_id']),
392                    new Item($row['ind_wep_id']));
393                $involved->dmgdone_ = $row['ind_dmgdone'];
394                array_push($this->involvedparties_, $involved);
395            }
396            // destroyed items
397            $sql = "select sum(itd.itd_quantity) as itd_quantity, itd_itm_id,
398                        itd_itl_id, itl_location
399                    from kb3_items_destroyed itd
400                        left join kb3_items itm on itd.itd_itm_id = itm.itm_id
401                        left join kb3_item_locations itl on (itd.itd_itl_id = itl.itl_id or (itd.itd_itl_id = 0 and itl.itl_id = 1))
402                    where itd.itd_kll_id = ".$this->getID()."
403                    group by itd_itm_id, itd_itl_id
404                    order by itd.itd_itl_id, itm.itm_type";
405
406            if (DB_USE_CCP)
407            {
408                $sql = "select sum(itd.itd_quantity) as itd_quantity, itd_itm_id,
409                        itd_itl_id, itl_location
410                    from kb3_items_destroyed itd
411                        left join kb3_item_locations itl on (itd.itd_itl_id = itl.itl_id or (itd.itd_itl_id = 0 and itl.itl_id = 1))
412                    where itd.itd_kll_id = ".$this->getID()."
413                    group by itd_itm_id, itd_itl_id
414                    order by itd.itd_itl_id";
415            }
416            $qry->execute($sql);
417            while ($row = $qry->getRow())
418            {
419                $destroyed = new DestroyedItem(new Item($row['itd_itm_id']),
420                    $row['itd_quantity'],
421                    $row['itl_location']);
422                array_push($this->destroyeditems_, $destroyed);
423            }
424
425            if (DB_USE_CCP)
426            {
427                $sql = "select sum(itd.itd_quantity) as itd_quantity, itd_itm_id,
428                        itd_itl_id, itl_location
429                    from kb3_items_dropped itd
430                        left join kb3_item_locations itl on (itd.itd_itl_id = itl.itl_id or (itd.itd_itl_id = 0 and itl.itl_id = 1))
431                    where itd.itd_kll_id = ".$this->getID()."
432                    group by itd_itm_id, itd_itl_id
433                    order by itd.itd_itl_id";
434                $qry->execute($sql);
435                while ($row = $qry->getRow())
436                {
437                    $destroyed = new DroppedItem(new Item($row['itd_itm_id']),
438                        $row['itd_quantity'],
439                        $row['itl_location']);
440                    array_push($this->droppeditems_, $destroyed);
441                }
442            }
443        }
444    }
445
446    function isClassified()
447    {
448        if (config::get('kill_classified'))
449        {
450            if (user::role('classified_see'))
451            {
452                return false;
453            }
454
455            $offset = config::get('kill_classified')*3600;
456            if (strtotime($this->timestamp_) > time()-$offset)
457            {
458                return true;
459            }
460        }
461        return false;
462    }
463
464    function getClassifiedTime()
465    {
466        if (config::get('kill_classified'))
467        {
468            $offset = config::get('kill_classified')*3600;
469            if (strtotime($this->timestamp_) > time()-$offset)
470            {
471                return ($offset-time()+strtotime($this->timestamp_));
472            }
473        }
474        return 0;
475    }
476
477    function exists()
478    {
479        $this->execQuery();
480        return $this->valid_;
481    }
482
483    function relatedKillCount()
484    {
485        $kslist = new KillList();
486        $kslist->setRelated($this->id_);
487        involved::load($kslist,'kill');
488
489        return $kslist->getCount();
490    }
491
492    function relatedLossCount()
493    {
494        $lslist = new KillList();
495        $lslist->setRelated($this->id_);
496        involved::load($lslist,'loss');
497
498        return $lslist->getCount();
499    }
500
501    function countComment($kll_id)
502    {
503        $qry = new DBQuery();
504        $sql = "SELECT * FROM kb3_comments WHERE kll_id = '$kll_id'";
505        $count = $qry->execute($sql);
506        $count = $qry->recordCount();
507        return $count;
508    }
509
510    function setID($id)
511    {
512        $this->id_ = $id;
513    }
514
515    function setTimeStamp($timestamp)
516    {
517        $this->timestamp_ = $timestamp;
518    }
519
520    function setSolarSystem($solarsystem)
521    {
522        $this->solarsystem_ = $solarsystem;
523    }
524
525    function setSolarSystemName($solarsystemname)
526    {
527        $this->solarsystemname_ = $solarsystemname;
528    }
529
530    function setSolarSystemSecurity($solarsystemsecurity)
531    {
532        $this->solarsystemsecurity_ = $solarsystemsecurity;
533    }
534
535    function setVictim($victim)
536    {
537        $this->victim_ = $victim;
538    }
539
540    function setVictimID($victimid)
541    {
542        $this->victimid_ = $victimid;
543    }
544
545    function setVictimName($victimname)
546    {
547        $this->victimname_ = $victimname;
548    }
549
550    function setVictimCorpID($victimcorpid)
551    {
552        $this->victimcorpid_ = $victimcorpid;
553    }
554
555    function setVictimCorpName($victimcorpname)
556    {
557        $this->victimcorpname_ = $victimcorpname;
558    }
559
560    function setVictimAllianceID($victimallianceid)
561    {
562        $this->victimallianceid_ = $victimallianceid;
563    }
564
565    function setVictimAllianceName($victimalliancename)
566    {
567        $this->victimalliancename_ = $victimalliancename;
568    }
569
570    function setVictimShip($victimship)
571    {
572        $this->victimship_ = $victimship;
573    }
574
575    function setVictimShipName($victimshipname)
576    {
577        $this->victimshipname_ = $victimshipname;
578    }
579
580    function setVictimShipExternalID($victimshipexternalid)
581    {
582        $this->victimshipexternalid_ = $victimshipexternalid;
583    }
584
585    function setVictimShipClassName($victimshipclassname)
586    {
587        $this->victimshipclassname_ = $victimshipclassname;
588    }
589
590    function setVictimShipValue($victimshipvalue)
591    {
592        $this->victimshipvalue_ = $victimshipvalue;
593    }
594
595    function setFBPilotID($fbpilotid)
596    {
597        $this->fbpilotid_ = $fbpilotid;
598    }
599
600    function setFBPilotName($fbpilotname)
601    {
602        $npc = strpos($fbpilotname, "#");
603                if ($npc === false)
604        {
605                $this->fbpilotname_ = $fbpilotname;
606                }
607                else
608        {
609                $name = explode("#", $fbpilotname);
610                $plt = new Item($name[2]);
611                $this->fbpilotname_ = $plt->getName();
612                }
613    }
614
615    function setFBCorpID($fbcorpid)
616    {
617        $this->fbcorpid_ = $fbcorpid;
618    }
619
620    function setFBCorpName($fbcorpname)
621    {
622        $this->fbcorpname_ = $fbcorpname;
623    }
624
625    function setFBAllianceID($fballianceid)
626    {
627        $this->fballianceid_ = $fballianceid;
628    }
629
630    function setFBAllianceName($fballiancename)
631    {
632        $this->fballiancename_ = $fballiancename;
633    }
634    function setKillPoints($killpoints)
635    {
636        $this->killpoints_ = $killpoints;
637    }
638
639    function calculateKillPoints()
640    {
641        $ship = $this->getVictimShip();
642        $shipclass = $ship->getClass();
643        $vicpoints = $shipclass->getPoints();
644        $maxpoints = round($vicpoints * 1.2);
645
646        foreach ($this->involvedparties_ as $inv)
647        {
648            $shipinv = $inv->getShip();
649            $shipclassinv = $shipinv->getClass();
650            $invpoints += $shipclassinv->getPoints();
651        }
652
653        $gankfactor = $vicpoints / ($vicpoints + $invpoints);
654        $points = ceil($vicpoints * ($gankfactor / 0.75));
655
656        if ($points > $maxpoints) $points = $maxpoints;
657
658        $points = round($points, 0);
659        return $points;
660    }
661
662    function add($id = null)
663    {
664        if (!$this->solarsystem_->getID())
665        {
666            echo 'INTERNAL ERROR; SOLARSYSTEM NOT FOUND; PLEASE CONTACT A DEV WITH THIS MESSAGE<br/>';
667            var_dump($this->solarsystem_);
668            var_dump($this->solarsystemname_);
669            return 0;
670        }
671
672        $dupe = $this->getDupe(true);
673        if ($dupe == 0)
674        {
675            $this->realadd();
676        }
677        elseif (config::get('readd_dupes'))
678        {
679            $this->dupeid_ = $dupe;
680            $this->id_ = $dupe;
681            $this->remove(false);
682            $this->realadd($dupe);
683            $this->id_ = -1;
684        }
685        else
686        {
687            $this->dupeid_ = $dupe;
688            $this->id_ = -1;
689        }
690        return $this->id_;
691    }
692
693    function realadd($id = null)
694    {
695        // if ( $this->timestamp_ == "" || !$this->victimid_ || !$this->victimship_->getID() || !$this->solarsystem_->getID() ||
696        // !$this->victimallianceid_ || !$this->victimcorpid_ || !$this->getFBAllianceID() || !$this->getFBCorpID() ||
697        // !$this->getFBPilotID() )
698        // return 0;
699        if ($id == null)
700        {
701            $qid = 'null';
702        }
703        else
704        {
705            $qid = $id;
706        }
707        if (!$this->dmgtaken)
708        {
709            $this->dmgtaken = 0;
710        }
711
712        $qry = new DBQuery();
713        $sql = "insert into kb3_kills values (".$qid.",
714                    date_format('".$this->timestamp_."', '%Y.%m.%d %H:%i:%s'),
715                ".$this->victimid_.", ".$this->victimallianceid_.",
716                ".$this->victimcorpid_.", ".$this->victimship_->getID().",
717                ".$this->solarsystem_->getID().", ".$this->getFBAllianceID().",
718                ".$this->getFBCorpID().", ".$this->getFBPilotID().", ".$this->calculateKillPoints().", ".$this->dmgtaken." )";
719        $qry->execute($sql);
720
721        if ($id)
722        {
723            $this->id_ = $id;
724        }
725        else
726        {
727            $this->id_ = $qry->getInsertID();
728        }
729
730        // involved
731        $order = 0;
732        $invall = array();
733        $invcrp = array();
734        $invplt = array();
735        foreach ($this->involvedparties_ as $inv)
736        {
737            $ship = $inv->getShip();
738            $weapon = $inv->getWeapon();
739            if (!$inv->getPilotID() || $inv->getSecStatus() == "" || !$inv->getAllianceID() || !$inv->getCorpID() || !$ship->getID() || !$weapon->getID())
740            {
741                $this->remove();
742                return 0;
743            }
744
745            if (!$inv->dmgdone_)
746            {
747                $inv->dmgdone_ = 0;
748            }
749
750            $sql = "insert into kb3_inv_detail
751                    values ( ".$this->getID().", ".$inv->getPilotID().", '".$inv->getSecStatus()."', "
752                    .$inv->getAllianceID().", ".$inv->getCorpID().", ".$ship->getID().", "
753                    .$weapon->getID().", ".$order++.", ".$inv->dmgdone_.")";
754            $qry->execute($sql) or die($qry->getErrorMsg());
755
756            if (!in_array($inv->getAllianceID(), $invall) && $inv->getAllianceID() != 14)
757            {
758                array_push($invall, $inv->getAllianceID());
759                $qry->execute("insert into kb3_inv_all values ( ".$this->getID().", ".$inv->getAllianceID()." )") or die($qry->getErrorMsg());
760            }
761            if (!in_array($inv->getCorpID(), $invcrp))
762            {
763                array_push($invcrp, $inv->getCorpID());
764                $qry->execute("insert into kb3_inv_crp values ( ".$this->getID().", ".$inv->getCorpID()." )") or die($qry->getErrorMsg());
765            }
766            if (!in_array($inv->getPilotID(), $invplt))
767            {
768                array_push($invplt, $inv->getPilotID());
769                $qry->execute("insert into kb3_inv_plt values ( ".$this->getID().", ".$inv->getPilotID()." )") or die($qry->getErrorMsg());
770            }
771        }
772
773        // destroyed
774        foreach ($this->destroyeditems_ as $dest)
775        {
776            $item = $dest->getItem();
777            $loc_id = $dest->getLocationID();
778            if (!is_numeric($this->getID()) || !is_numeric($item->getID()) || !is_numeric($dest->getQuantity()) || !is_numeric($loc_id))
779            {
780                trigger_error('error with destroyed item.', E_USER_WARNING);
781                var_dump($dest);exit;
782                continue;
783            }
784
785            $sql = "insert into kb3_items_destroyed
786                        values ( ".$this->getID().", ".$item->getID().", ".$dest->getQuantity().", "
787                    .$loc_id." )";
788            $qry->execute($sql);
789        }
790
791        // dropped
792        foreach ($this->droppeditems_ as $dest)
793        {
794            $item = $dest->getItem();
795            $loc_id = $dest->getLocationID();
796            if (!is_numeric($this->getID()) || !is_numeric($item->getID()) || !is_numeric($dest->getQuantity()) || !is_numeric($loc_id))
797            {
798                trigger_error('error with dropped item.', E_USER_WARNING);
799                var_dump($dest);exit;
800                continue;
801            }
802
803            $sql = "insert into kb3_items_dropped
804                        values ( ".$this->getID().", ".$item->getID().", ".$dest->getQuantity().", "
805                    .$loc_id." )";
806            $qry->execute($sql);
807        }
808
809        // call the event that we added this mail
810        event::call('killmail_added', $this);
811        return $this->id_;
812    }
813
814    function remove($delcomments = true)
815    {
816        if (!$this->id_)
817            return;
818
819        event::call('killmail_delete', $this);
820
821        $qry = new DBQuery();
822        $qry->execute("delete from kb3_kills where kll_id = ".$this->id_);
823        $qry->execute("delete from kb3_inv_detail where ind_kll_id = ".$this->id_);
824        $qry->execute("delete from kb3_inv_all where ina_kll_id = ".$this->id_);
825        $qry->execute("delete from kb3_inv_crp where inc_kll_id = ".$this->id_);
826        $qry->execute("delete from kb3_inv_plt where inp_kll_id = ".$this->id_);
827        $qry->execute("delete from kb3_items_destroyed where itd_kll_id = ".$this->id_);
828        $qry->execute("delete from kb3_items_dropped where itd_kll_id = ".$this->id_);
829        if ($delcomments)
830        {
831            $qry->execute("delete from kb3_comments where kll_id = ".$this->id_);
832        }
833    }
834
835    function addInvolvedParty($involved)
836    {
837        array_push($this->involvedparties_, $involved);
838    }
839
840    function addDestroyedItem($destroyed)
841    {
842        array_push($this->destroyeditems_, $destroyed);
843    }
844
845    function addDroppedItem($dropped)
846    {
847        array_push($this->droppeditems_, $dropped);
848    }
849}
850
851class InvolvedParty
852{
853    function InvolvedParty($pilotid, $corpid, $allianceid, $secstatus, $ship, $weapon)
854    {
855        $this->pilotid_ = $pilotid;
856        $this->corpid_ = $corpid;
857        $this->allianceid_ = $allianceid;
858        $this->secstatus_ = $secstatus;
859        $this->ship_ = $ship;
860        $this->weapon_ = $weapon;
861    }
862
863    function getPilotID()
864    {
865        return $this->pilotid_;
866    }
867
868    function getCorpID()
869    {
870        return $this->corpid_;
871    }
872
873    function getAllianceID()
874    {
875        return $this->allianceid_;
876    }
877
878    function getSecStatus()
879    {
880        return $this->secstatus_;
881    }
882
883    function getShip()
884    {
885        return $this->ship_;
886    }
887
888    function getWeapon()
889    {
890        return $this->weapon_;
891    }
892}
893
894class DestroyedItem
895{
896    function DestroyedItem($item, $quantity, $location)
897    {
898        $this->item_ = $item;
899        $this->quantity_ = $quantity;
900        $this->location_ = $location;
901    }
902
903    function getItem()
904    {
905        return $this->item_;
906    }
907
908    function getQuantity()
909    {
910        if ($this->quantity_ == "") $this->quantity = 1;
911        return $this->quantity_;
912    }
913
914    function getFormatttedValue()
915    {
916        if (!isset($this->value))
917        {
918            $this->getValue();
919        }
920        if ($this->value > 0)
921        {
922            $value = $this->value * $this->getQuantity();
923            // Value Manipulation for prettyness.
924            if (strlen($value) > 6) // Is this value in the millions?
925            {
926                $formatted = round($value / 1000000, 2);
927                $formatted = number_format($formatted, 2);
928                $formatted = $formatted." M";
929            }
930            elseif (strlen($value) > 3) // 1000's ?
931            {
932                $formatted = round($value / 1000, 2);
933
934                $formatted = number_format($formatted, 2);
935                $formatted = $formatted." K";
936            }
937            else
938            {
939                $formatted = number_format($value, 2);
940                $formatted = $formatted." isk";
941            }
942        }
943        else
944        {
945            $formatted = "0 isk";
946        }
947        return $formatted;
948    }
949
950        function getValue()
951        {
952            if ($this->value)
953            {
954                return $this->value;
955            }
956            if (DB_USE_CCP)
957            {
958                $this->value = 0;
959            $qry = new DBQuery();
960            $qry->execute("select basePrice, price from kb3_invtypes left join kb3_item_price using (typeID) where typeID='".$this->item_->getID()."'");
961            if ($row = $qry->getRow())
962            {
963                if ($row['price'])
964                {
965                    $this->value = $row['price'];
966                }
967                else
968                {
969                    $this->value = $row['basePrice'];
970                }
971            }
972            return $this->value;
973            }
974
975        //returns the value of an item
976                $value = 0;                             // Set 0 value incase nothing comes back
977                $id = $this->item_->getID(); // get Item ID
978                $qry = new DBQuery();
979        $qry->execute("select itm_value from kb3_items where itm_id= '".$id."'");
980        $row = $qry->getRow();
981        $value = $row['itm_value'];
982                if ($value == '')
983        {
984                        $value = 0;
985                }
986                return $value;
987        }
988
989    function getLocationID()
990    {
991        $id = false;
992        if (strlen($this->location_) < 2)
993        {
994            $id = $this->item_->getSlot();
995        }
996        else
997        {
998            $qry = new DBQuery();
999            $qry->execute("select itl_id from kb3_item_locations where itl_location = '".$this->location_."'");
1000            $row = $qry->getRow();
1001            $id = $row['itl_id'];
1002        }
1003        return $id;
1004    }
1005}
1006
1007class DroppedItem extends DestroyedItem
1008{
1009    function DroppedItem($item, $quantity, $location)
1010    {
1011        $this->item_ = $item;
1012        $this->quantity_ = $quantity;
1013        $this->location_ = $location;
1014    }
1015}
1016?>
Note: See TracBrowser for help on using the browser.