root/dev/common/includes/class.kill.php @ 289

Revision 289, 31.8 KB (checked in by exi, 15 years ago)

Added the change from ticket:54 - customizable rowcount on KillSummaryTable?.
Added the change from ticket:55 - ship classes shouldnt wrap anymore.
Added the fix from ticket:56 - proper png output by the signature generator.

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";
211        $mail .= "Damage Taken: ".$this->VictimDamageTaken."\r\n\r\n";
212        $mail .= "Involved parties:\r\n\r\n";
213
214        foreach ($this->involvedparties_ as $inv)
215        {
216            $pilot = new Pilot($inv->getPilotID());
217            $corp = new Corporation($inv->getCorpID());
218            $alliance = new Alliance($inv->getAllianceID());
219
220            $weapon = $inv->getWeapon();
221            $ship = $inv->getShip();
222            if ($pilot->getName() == $weapon->getName())
223            {
224                $name = $pilot->getName()." / ".$corp->getName();
225            }
226            else
227            {
228                $name = $pilot->getName();
229            }
230
231            $mail .= "Name: ".$name;
232            if ($pilot->getID() == $this->getFBPilotID())
233            {
234                $mail .= " (laid the final blow)";
235            }
236            $mail .= "\r\n";
237
238            if ($pilot->getName() != $weapon->getName())
239            {
240                $mail .= "Security: ".$inv->getSecStatus()."\r\n";
241                $mail .= "Alliance: ".$alliance->getName()."\r\n";
242                $mail .= "Corp: ".$corp->getName()."\r\n";
243                $mail .= "Ship: ".$ship->getName()."\r\n";
244                $mail .= "Weapon: ".$weapon->getName()."\r\n";
245                $mail .= "Damage Done: ".$inv->dmgdone_."\r\n";
246            }
247            else
248            {
249                $mail .= "Damage Done: ".$inv->dmgdone_."\r\n";
250            }
251            $mail .= "\r\n";
252        }
253
254        if (count($this->destroyeditems_) > 0)
255        {
256            $mail .= "\r\nDestroyed items:\r\n\r\n";
257
258            foreach($this->destroyeditems_ as $destroyed)
259            {
260                $item = $destroyed->getItem();
261                $mail .= $item->getName();
262                if ($destroyed->getQuantity() > 1)
263                {
264                    // if the option is enabled and the item is fitted then split it up
265                    // this is aworkaround for the lazy parser of griefwatch
266                    if (config::get('kill_splitfit') && $destroyed->getQuantity() < 9 && ($destroyed->getLocationID() == 1
267                        || $destroyed->getLocationID() == 2 || $destroyed->getLocationID() == 3))
268                    {
269                        for ($i = $destroyed->getQuantity(); $i > 1; $i--)
270                        {
271                            $mail .= "\r\n".$item->getName();
272                        }
273
274                    }
275                    else
276                    {
277                        $mail .= ", Qty: ".$destroyed->getQuantity();
278                    }
279                }
280                if ($destroyed->getLocationID() == 4) // cargo
281                    $mail .= " (Cargo)";
282                if ($destroyed->getLocationID() == 6) // drone
283                    $mail .= " (Drone Bay)";
284                $mail .= "\r\n";
285            }
286        }
287
288        if (count($this->droppeditems_) > 0)
289        {
290            $mail .= "\r\nDropped items:\r\n\r\n";
291
292            foreach($this->droppeditems_ as $dropped)
293            {
294                $item = $dropped->getItem();
295                $mail .= $item->getName();
296                if ($dropped->getQuantity() > 1)
297                {
298                    // if the option is enabled and the item is fitted then split it up
299                    // this is aworkaround for the lazy parser of griefwatch
300                    if (config::get('kill_splitfit') && $dropped->getQuantity() < 9 && ($dropped->getLocationID() == 1
301                        || $dropped->getLocationID() == 2 || $dropped->getLocationID() == 3))
302                    {
303                        for ($i = $dropped->getQuantity(); $i > 1; $i--)
304                        {
305                            $mail .= "\r\n".$item->getName();
306                        }
307
308                    }
309                    else
310                    {
311                        $mail .= ", Qty: ".$dropped->getQuantity();
312                    }
313                }
314                if ($dropped->getLocationID() == 4) // cargo
315                    $mail .= " (Cargo)";
316                if ($dropped->getLocationID() == 6) // drone
317                    $mail .= " (Drone Bay)";
318                $mail .= "\r\n";
319            }
320        }
321
322        return $mail;
323    }
324
325    function getDupe($checkonly = false)
326    {
327        if (!$checkonly)
328        {
329            $this->execQuery();
330        }
331        $dupe = 0;
332        $qry = new DBQuery();
333        if (!$this->getFBPilotID() || !$this->victimid_)
334            return 0;
335        $qry->execute("select kll_id
336                        from kb3_kills
337                        where kll_timestamp <=
338                        date_add( '".$this->timestamp_."', INTERVAL '5:0' MINUTE_SECOND )
339                        and kll_timestamp >=
340                        date_sub( '".$this->timestamp_."', INTERVAL '5:0' MINUTE_SECOND )
341                        and kll_victim_id = ".$this->victimid_."
342                        and kll_ship_id = ".$this->victimship_->getID()."
343                        and kll_system_id = ".$this->solarsystem_->getID()."
344                        and kll_fb_plt_id = ".$this->getFBPilotID()."
345                        and kll_id != ".$this->id_);
346
347        $row = $qry->getRow();
348        if ($row)
349            return $row['kll_id'];
350        else
351            return 0;
352    }
353
354    function execQuery()
355    {
356        if (!$this->timestamp_)
357        {
358            $qry = new DBQuery();
359
360            $this->qry_ = new DBQuery();
361            $this->sql_ = "select kll.kll_id, kll.kll_timestamp, plt.plt_name,
362                              crp.crp_name, ali.all_name, ali.all_id, kll.kll_ship_id,
363                              kll.kll_system_id, kll.kll_ship_id,
364                                      kll.kll_victim_id, plt.plt_externalid,
365                                      kll.kll_crp_id, kll.kll_points,
366                                      fbplt.plt_id as fbplt_id,
367                                      fbplt.plt_externalid as fbplt_externalid,
368                                      fbcrp.crp_id as fbcrp_id,
369                                      fbali.all_id as fbali_id,
370                              fbplt.plt_name as fbplt_name,
371                              fbcrp.crp_name as fbcrp_name,
372                              fbali.all_name as fbali_name,
373                              kll_dmgtaken
374                         from kb3_kills kll, kb3_pilots plt, kb3_corps crp,
375                              kb3_alliances ali, kb3_alliances fbali, kb3_corps fbcrp,
376                              kb3_pilots fbplt
377                        where kll.kll_id = '".$this->id_."'
378                          and plt.plt_id = kll.kll_victim_id
379                          and crp.crp_id = kll.kll_crp_id
380                          and ali.all_id = kll.kll_all_id
381                          and fbali.all_id = kll.kll_fb_all_id
382                          and fbcrp.crp_id = kll.kll_fb_crp_id
383                          and fbplt.plt_id = kll.kll_fb_plt_id";
384
385            $this->qry_->execute($this->sql_);
386            $row = $this->qry_->getRow();
387            if (!$row)
388            {
389                $this->valid_ = false;
390                return false;
391            }
392            else
393            {
394                $this->valid_ = true;
395            }
396
397            $this->setTimeStamp($row['kll_timestamp']);
398            $this->setSolarSystem(new SolarSystem($row['kll_system_id']));
399            $this->setVictimID($row['kll_victim_id']);
400            $this->setVictimName($row['plt_name']);
401            $this->setVictimCorpID($row['kll_crp_id']);
402            $this->setVictimCorpName($row['crp_name']);
403            $this->setVictimAllianceID($row['all_id']);
404            $this->setVictimAllianceName($row['all_name']);
405            $this->setVictimShip(new Ship($row['kll_ship_id']));
406            $this->setFBPilotID($row['fbplt_id']);
407            $this->setFBPilotName($row['fbplt_name']);
408            $this->setFBCorpID($row['fbcrp_id']);
409            $this->setFBCorpName($row['fbcrp_name']);
410            $this->setFBAllianceID($row['fbali_id']);
411            $this->setFBAllianceName($row['fbali_name']);
412            $this->setKillPoints($row['kll_points']);
413            $this->plt_ext_ = $row['plt_externalid'];
414            $this->fbplt_ext_ = $row['fbplt_externalid'];
415            $this->VictimDamageTaken = $row['kll_dmgtaken'];
416
417            // involved
418            $sql = "select ind_plt_id, ind_crp_id, ind_all_id, ind_sec_status,
419                    ind_shp_id, ind_wep_id, ind_dmgdone
420                    from kb3_inv_detail
421                    where ind_kll_id = ".$this->getID()."
422                    order by ind_order";
423
424            $qry->execute($sql) or die($qry->getErrorMsg());
425            while ($row = $qry->getRow())
426            {
427                $involved = new InvolvedParty($row['ind_plt_id'],
428                    $row['ind_crp_id'],
429                    $row['ind_all_id'],
430                    $row['ind_sec_status'],
431                    new Ship($row['ind_shp_id']),
432                    new Item($row['ind_wep_id']));
433                $involved->dmgdone_ = $row['ind_dmgdone'];
434                array_push($this->involvedparties_, $involved);
435            }
436            // destroyed items
437            $sql = "select sum(itd.itd_quantity) as itd_quantity, itd_itm_id,
438                        itd_itl_id, itl_location
439                    from kb3_items_destroyed itd
440                        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))
441                    where itd.itd_kll_id = ".$this->getID()."
442                    group by itd_itm_id, itd_itl_id
443                    order by itd.itd_itl_id";
444            $qry->execute($sql);
445            while ($row = $qry->getRow())
446            {
447                $destroyed = new DestroyedItem(new Item($row['itd_itm_id']),
448                    $row['itd_quantity'],
449                    $row['itl_location']);
450                array_push($this->destroyeditems_, $destroyed);
451            }
452
453            // dropped items
454            $sql = "select sum(itd.itd_quantity) as itd_quantity, itd_itm_id,
455                    itd_itl_id, itl_location
456                from kb3_items_dropped itd
457                    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))
458                where itd.itd_kll_id = ".$this->getID()."
459                group by itd_itm_id, itd_itl_id
460                order by itd.itd_itl_id";
461            $qry->execute($sql);
462            while ($row = $qry->getRow())
463            {
464                $destroyed = new DroppedItem(new Item($row['itd_itm_id']),
465                    $row['itd_quantity'],
466                    $row['itl_location']);
467                array_push($this->droppeditems_, $destroyed);
468            }
469        }
470    }
471
472    function isClassified()
473    {
474        if (config::get('kill_classified'))
475        {
476            if (user::role('classified_see'))
477            {
478                return false;
479            }
480
481            $offset = config::get('kill_classified')*3600;
482            if (config::get('date_gmtime'))
483            {
484                $time = time()-date('Z');
485            }
486            else
487            {
488                $time = time();
489            }
490            if (strtotime($this->timestamp_) > $time-$offset)
491            {
492                return true;
493            }
494        }
495        return false;
496    }
497
498    function getClassifiedTime()
499    {
500        if (config::get('kill_classified'))
501        {
502            $offset = config::get('kill_classified')*3600;
503            if (config::get('date_gmtime'))
504            {
505                $time = time()-date('Z');
506            }
507            else
508            {
509                $time = time();
510            }
511            if (strtotime($this->timestamp_) > $time-$offset)
512            {
513                return ($offset-$time+strtotime($this->timestamp_));
514            }
515        }
516        return 0;
517    }
518
519    function exists()
520    {
521        $this->execQuery();
522        return $this->valid_;
523    }
524
525    function relatedKillCount()
526    {
527        $kslist = new KillList();
528        $kslist->setRelated($this->id_);
529        involved::load($kslist,'kill');
530
531        return $kslist->getCount();
532    }
533
534    function relatedLossCount()
535    {
536        $lslist = new KillList();
537        $lslist->setRelated($this->id_);
538        involved::load($lslist,'loss');
539
540        return $lslist->getCount();
541    }
542
543    function countComment($kll_id)
544    {
545        $qry = new DBQuery();
546        $sql = "SELECT * FROM kb3_comments WHERE kll_id = '$kll_id'";
547        $count = $qry->execute($sql);
548        $count = $qry->recordCount();
549        return $count;
550    }
551
552    function setID($id)
553    {
554        $this->id_ = $id;
555    }
556
557    function setTimeStamp($timestamp)
558    {
559        $this->timestamp_ = $timestamp;
560    }
561
562    function setSolarSystem($solarsystem)
563    {
564        $this->solarsystem_ = $solarsystem;
565    }
566
567    function setSolarSystemName($solarsystemname)
568    {
569        $this->solarsystemname_ = $solarsystemname;
570    }
571
572    function setSolarSystemSecurity($solarsystemsecurity)
573    {
574        $this->solarsystemsecurity_ = $solarsystemsecurity;
575    }
576
577    function setVictim($victim)
578    {
579        $this->victim_ = $victim;
580    }
581
582    function setVictimID($victimid)
583    {
584        $this->victimid_ = $victimid;
585    }
586
587    function setVictimName($victimname)
588    {
589        $this->victimname_ = $victimname;
590    }
591
592    function setVictimCorpID($victimcorpid)
593    {
594        $this->victimcorpid_ = $victimcorpid;
595    }
596
597    function setVictimCorpName($victimcorpname)
598    {
599        $this->victimcorpname_ = $victimcorpname;
600    }
601
602    function setVictimAllianceID($victimallianceid)
603    {
604        $this->victimallianceid_ = $victimallianceid;
605    }
606
607    function setVictimAllianceName($victimalliancename)
608    {
609        $this->victimalliancename_ = $victimalliancename;
610    }
611
612    function setVictimShip($victimship)
613    {
614        $this->victimship_ = $victimship;
615    }
616
617    function setVictimShipName($victimshipname)
618    {
619        $this->victimshipname_ = $victimshipname;
620    }
621
622    function setVictimShipExternalID($victimshipexternalid)
623    {
624        $this->victimshipexternalid_ = $victimshipexternalid;
625    }
626
627    function setVictimShipClassName($victimshipclassname)
628    {
629        $this->victimshipclassname_ = $victimshipclassname;
630    }
631
632    function setVictimShipValue($victimshipvalue)
633    {
634        $this->victimshipvalue_ = $victimshipvalue;
635    }
636
637    function setFBPilotID($fbpilotid)
638    {
639        $this->fbpilotid_ = $fbpilotid;
640    }
641
642    function setFBPilotName($fbpilotname)
643    {
644        $npc = strpos($fbpilotname, "#");
645                if ($npc === false)
646        {
647                $this->fbpilotname_ = $fbpilotname;
648                }
649                else
650        {
651                $name = explode("#", $fbpilotname);
652                $plt = new Item($name[2]);
653                $this->fbpilotname_ = $plt->getName();
654                }
655    }
656
657    function setFBCorpID($fbcorpid)
658    {
659        $this->fbcorpid_ = $fbcorpid;
660    }
661
662    function setFBCorpName($fbcorpname)
663    {
664        $this->fbcorpname_ = $fbcorpname;
665    }
666
667    function setFBAllianceID($fballianceid)
668    {
669        $this->fballianceid_ = $fballianceid;
670    }
671
672    function setFBAllianceName($fballiancename)
673    {
674        $this->fballiancename_ = $fballiancename;
675    }
676    function setKillPoints($killpoints)
677    {
678        $this->killpoints_ = $killpoints;
679    }
680
681    function calculateKillPoints()
682    {
683        $ship = $this->getVictimShip();
684        $shipclass = $ship->getClass();
685        $vicpoints = $shipclass->getPoints();
686        $maxpoints = round($vicpoints * 1.2);
687
688        foreach ($this->involvedparties_ as $inv)
689        {
690            $shipinv = $inv->getShip();
691            $shipclassinv = $shipinv->getClass();
692            $invpoints += $shipclassinv->getPoints();
693        }
694
695        $gankfactor = $vicpoints / ($vicpoints + $invpoints);
696        $points = ceil($vicpoints * ($gankfactor / 0.75));
697
698        if ($points > $maxpoints) $points = $maxpoints;
699
700        $points = round($points, 0);
701        return $points;
702    }
703
704    function add($id = null)
705    {
706        if (!$this->solarsystem_->getID())
707        {
708            echo 'INTERNAL ERROR; SOLARSYSTEM NOT FOUND; PLEASE CONTACT A DEV WITH THIS MESSAGE<br/>';
709            var_dump($this->solarsystem_);
710            var_dump($this->solarsystemname_);
711            return 0;
712        }
713
714        $dupe = $this->getDupe(true);
715        if ($dupe == 0)
716        {
717            $this->realadd();
718        }
719        elseif (config::get('readd_dupes'))
720        {
721            $this->dupeid_ = $dupe;
722            $this->id_ = $dupe;
723            $this->remove(false);
724            $this->realadd($dupe);
725            $this->id_ = -1;
726        }
727        else
728        {
729            $this->dupeid_ = $dupe;
730            $this->id_ = -1;
731        }
732        return $this->id_;
733    }
734
735    function realadd($id = null)
736    {
737        // if ( $this->timestamp_ == "" || !$this->victimid_ || !$this->victimship_->getID() || !$this->solarsystem_->getID() ||
738        // !$this->victimallianceid_ || !$this->victimcorpid_ || !$this->getFBAllianceID() || !$this->getFBCorpID() ||
739        // !$this->getFBPilotID() )
740        // return 0;
741        if ($id == null)
742        {
743            $qid = 'null';
744        }
745        else
746        {
747            $qid = $id;
748        }
749        if (!$this->dmgtaken)
750        {
751            $this->dmgtaken = 0;
752        }
753
754        $qry = new DBQuery();
755        $sql = "insert into kb3_kills values (".$qid.",
756                    date_format('".$this->timestamp_."', '%Y.%m.%d %H:%i:%s'),
757                ".$this->victimid_.", ".$this->victimallianceid_.",
758                ".$this->victimcorpid_.", ".$this->victimship_->getID().",
759                ".$this->solarsystem_->getID().", ".$this->getFBAllianceID().",
760                ".$this->getFBCorpID().", ".$this->getFBPilotID().", ".$this->calculateKillPoints().", ".$this->dmgtaken." )";
761        $qry->execute($sql);
762
763        if ($id)
764        {
765            $this->id_ = $id;
766        }
767        else
768        {
769            $this->id_ = $qry->getInsertID();
770        }
771
772        // involved
773        $order = 0;
774        $invall = array();
775        $invcrp = array();
776        $invplt = array();
777        foreach ($this->involvedparties_ as $inv)
778        {
779            $ship = $inv->getShip();
780            $weapon = $inv->getWeapon();
781            if (!$inv->getPilotID() || $inv->getSecStatus() == "" || !$inv->getAllianceID() || !$inv->getCorpID() || !$ship->getID() || !$weapon->getID())
782            {
783                $this->remove();
784                return 0;
785            }
786
787            if (!$inv->dmgdone_)
788            {
789                $inv->dmgdone_ = 0;
790            }
791
792            $sql = "insert into kb3_inv_detail
793                    values ( ".$this->getID().", ".$inv->getPilotID().", '".$inv->getSecStatus()."', "
794                    .$inv->getAllianceID().", ".$inv->getCorpID().", ".$ship->getID().", "
795                    .$weapon->getID().", ".$order++.", ".$inv->dmgdone_.")";
796            $qry->execute($sql) or die($qry->getErrorMsg());
797
798            if (!in_array($inv->getAllianceID(), $invall) && $inv->getAllianceID() != 14)
799            {
800                array_push($invall, $inv->getAllianceID());
801                $qry->execute("insert into kb3_inv_all values ( ".$this->getID().", ".$inv->getAllianceID()." )") or die($qry->getErrorMsg());
802            }
803            if (!in_array($inv->getCorpID(), $invcrp))
804            {
805                array_push($invcrp, $inv->getCorpID());
806                $qry->execute("insert into kb3_inv_crp values ( ".$this->getID().", ".$inv->getCorpID()." )") or die($qry->getErrorMsg());
807            }
808            if (!in_array($inv->getPilotID(), $invplt))
809            {
810                array_push($invplt, $inv->getPilotID());
811                $qry->execute("insert into kb3_inv_plt values ( ".$this->getID().", ".$inv->getPilotID()." )") or die($qry->getErrorMsg());
812            }
813        }
814
815        // destroyed
816        foreach ($this->destroyeditems_ as $dest)
817        {
818            $item = $dest->getItem();
819            $loc_id = $dest->getLocationID();
820            if (!is_numeric($this->getID()) || !is_numeric($item->getID()) || !is_numeric($dest->getQuantity()) || !is_numeric($loc_id))
821            {
822                trigger_error('error with destroyed item.', E_USER_WARNING);
823                var_dump($dest);exit;
824                continue;
825            }
826
827            $sql = "insert into kb3_items_destroyed
828                        values ( ".$this->getID().", ".$item->getID().", ".$dest->getQuantity().", "
829                    .$loc_id." )";
830            $qry->execute($sql);
831        }
832
833        // dropped
834        foreach ($this->droppeditems_ as $dest)
835        {
836            $item = $dest->getItem();
837            $loc_id = $dest->getLocationID();
838            if (!is_numeric($this->getID()) || !is_numeric($item->getID()) || !is_numeric($dest->getQuantity()) || !is_numeric($loc_id))
839            {
840                trigger_error('error with dropped item.', E_USER_WARNING);
841                var_dump($dest);exit;
842                continue;
843            }
844
845            $sql = "insert into kb3_items_dropped
846                        values ( ".$this->getID().", ".$item->getID().", ".$dest->getQuantity().", "
847                    .$loc_id." )";
848            $qry->execute($sql);
849        }
850
851        // call the event that we added this mail
852        event::call('killmail_added', $this);
853        return $this->id_;
854    }
855
856    function remove($delcomments = true)
857    {
858        if (!$this->id_)
859            return;
860
861        event::call('killmail_delete', $this);
862
863        $qry = new DBQuery();
864        $qry->execute("delete from kb3_kills where kll_id = ".$this->id_);
865        $qry->execute("delete from kb3_inv_detail where ind_kll_id = ".$this->id_);
866        $qry->execute("delete from kb3_inv_all where ina_kll_id = ".$this->id_);
867        $qry->execute("delete from kb3_inv_crp where inc_kll_id = ".$this->id_);
868        $qry->execute("delete from kb3_inv_plt where inp_kll_id = ".$this->id_);
869        $qry->execute("delete from kb3_items_destroyed where itd_kll_id = ".$this->id_);
870        $qry->execute("delete from kb3_items_dropped where itd_kll_id = ".$this->id_);
871        if ($delcomments)
872        {
873            $qry->execute("delete from kb3_comments where kll_id = ".$this->id_);
874        }
875    }
876
877    function addInvolvedParty($involved)
878    {
879        array_push($this->involvedparties_, $involved);
880    }
881
882    function addDestroyedItem($destroyed)
883    {
884        array_push($this->destroyeditems_, $destroyed);
885    }
886
887    function addDroppedItem($dropped)
888    {
889        array_push($this->droppeditems_, $dropped);
890    }
891}
892
893class InvolvedParty
894{
895    function InvolvedParty($pilotid, $corpid, $allianceid, $secstatus, $ship, $weapon)
896    {
897        $this->pilotid_ = $pilotid;
898        $this->corpid_ = $corpid;
899        $this->allianceid_ = $allianceid;
900        $this->secstatus_ = $secstatus;
901        $this->ship_ = $ship;
902        $this->weapon_ = $weapon;
903    }
904
905    function getPilotID()
906    {
907        return $this->pilotid_;
908    }
909
910    function getCorpID()
911    {
912        return $this->corpid_;
913    }
914
915    function getAllianceID()
916    {
917        return $this->allianceid_;
918    }
919
920    function getSecStatus()
921    {
922        return $this->secstatus_;
923    }
924
925    function getShip()
926    {
927        return $this->ship_;
928    }
929
930    function getWeapon()
931    {
932        return $this->weapon_;
933    }
934}
935
936class DestroyedItem
937{
938    function DestroyedItem($item, $quantity, $location)
939    {
940        $this->item_ = $item;
941        $this->quantity_ = $quantity;
942        $this->location_ = $location;
943    }
944
945    function getItem()
946    {
947        return $this->item_;
948    }
949
950    function getQuantity()
951    {
952        if ($this->quantity_ == "") $this->quantity = 1;
953        return $this->quantity_;
954    }
955
956    function getFormatttedValue()
957    {
958        if (!isset($this->value))
959        {
960            $this->getValue();
961        }
962        if ($this->value > 0)
963        {
964            $value = $this->value * $this->getQuantity();
965            // Value Manipulation for prettyness.
966            if (strlen($value) > 6) // Is this value in the millions?
967            {
968                $formatted = round($value / 1000000, 2);
969                $formatted = number_format($formatted, 2);
970                $formatted = $formatted." M";
971            }
972            elseif (strlen($value) > 3) // 1000's ?
973            {
974                $formatted = round($value / 1000, 2);
975
976                $formatted = number_format($formatted, 2);
977                $formatted = $formatted." K";
978            }
979            else
980            {
981                $formatted = number_format($value, 2);
982                $formatted = $formatted." isk";
983            }
984        }
985        else
986        {
987            $formatted = "0 isk";
988        }
989        return $formatted;
990    }
991
992        function getValue()
993        {
994            if ($this->value)
995            {
996                return $this->value;
997            }
998            if (DB_USE_CCP)
999            {
1000                $this->value = 0;
1001            $qry = new DBQuery();
1002            $qry->execute("select basePrice, price
1003                            from kb3_invtypes
1004                            left join kb3_item_price on kb3_invtypes.typeID=kb3_item_price.typeID
1005                            where kb3_invtypes.typeID='".$this->item_->getID()."'");
1006            if ($row = $qry->getRow())
1007            {
1008                if ($row['price'])
1009                {
1010                    $this->value = $row['price'];
1011                }
1012                else
1013                {
1014                    $this->value = $row['basePrice'];
1015                }
1016            }
1017            return $this->value;
1018            }
1019
1020        //returns the value of an item
1021                $value = 0;                             // Set 0 value incase nothing comes back
1022                $id = $this->item_->getID(); // get Item ID
1023                $qry = new DBQuery();
1024        $qry->execute("select itm_value from kb3_items where itm_id= '".$id."'");
1025        $row = $qry->getRow();
1026        $value = $row['itm_value'];
1027                if ($value == '')
1028        {
1029                        $value = 0;
1030                }
1031                return $value;
1032        }
1033
1034    function getLocationID()
1035    {
1036        $id = false;
1037        if (strlen($this->location_) < 2)
1038        {
1039            $id = $this->item_->getSlot();
1040        }
1041        else
1042        {
1043            $qry = new DBQuery();
1044            $qry->execute("select itl_id from kb3_item_locations where itl_location = '".$this->location_."'");
1045            $row = $qry->getRow();
1046            $id = $row['itl_id'];
1047        }
1048        return $id;
1049    }
1050}
1051
1052class DroppedItem extends DestroyedItem
1053{
1054    function DroppedItem($item, $quantity, $location)
1055    {
1056        $this->item_ = $item;
1057        $this->quantity_ = $quantity;
1058        $this->location_ = $location;
1059    }
1060}
1061?>
Note: See TracBrowser for help on using the browser.