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

Revision 250, 32.4 KB (checked in by exi, 15 years ago)

Important fix in the sql cache code.
The classified function now obeys the gmtime-setting.
Added a callback for assembling the html header, use the event 'page_assembleheader' to access Page::addHeader($line);.
Moved victim damage in the kill details.
The raw mail function should now return the new data format.

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_items itm on itd.itd_itm_id = itm.itm_id
441                        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))
442                    where itd.itd_kll_id = ".$this->getID()."
443                    group by itd_itm_id, itd_itl_id
444                    order by itd.itd_itl_id, itm.itm_type";
445
446            if (DB_USE_CCP)
447            {
448                $sql = "select sum(itd.itd_quantity) as itd_quantity, itd_itm_id,
449                        itd_itl_id, itl_location
450                    from kb3_items_destroyed itd
451                        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))
452                    where itd.itd_kll_id = ".$this->getID()."
453                    group by itd_itm_id, itd_itl_id
454                    order by itd.itd_itl_id";
455            }
456            $qry->execute($sql);
457            while ($row = $qry->getRow())
458            {
459                $destroyed = new DestroyedItem(new Item($row['itd_itm_id']),
460                    $row['itd_quantity'],
461                    $row['itl_location']);
462                array_push($this->destroyeditems_, $destroyed);
463            }
464
465            if (DB_USE_CCP)
466            {
467                $sql = "select sum(itd.itd_quantity) as itd_quantity, itd_itm_id,
468                        itd_itl_id, itl_location
469                    from kb3_items_dropped itd
470                        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))
471                    where itd.itd_kll_id = ".$this->getID()."
472                    group by itd_itm_id, itd_itl_id
473                    order by itd.itd_itl_id";
474                $qry->execute($sql);
475                while ($row = $qry->getRow())
476                {
477                    $destroyed = new DroppedItem(new Item($row['itd_itm_id']),
478                        $row['itd_quantity'],
479                        $row['itl_location']);
480                    array_push($this->droppeditems_, $destroyed);
481                }
482            }
483        }
484    }
485
486    function isClassified()
487    {
488        if (config::get('kill_classified'))
489        {
490            if (user::role('classified_see'))
491            {
492                return false;
493            }
494
495            $offset = config::get('kill_classified')*3600;
496            if (config::get('date_gmtime'))
497            {
498                $time = time()-date('Z');
499            }
500            else
501            {
502                $time = time();
503            }
504            if (strtotime($this->timestamp_) > $time-$offset)
505            {
506                return true;
507            }
508        }
509        return false;
510    }
511
512    function getClassifiedTime()
513    {
514        if (config::get('kill_classified'))
515        {
516            $offset = config::get('kill_classified')*3600;
517            if (config::get('date_gmtime'))
518            {
519                $time = time()-date('Z');
520            }
521            else
522            {
523                $time = time();
524            }
525            if (strtotime($this->timestamp_) > $time-$offset)
526            {
527                return ($offset-$time+strtotime($this->timestamp_));
528            }
529        }
530        return 0;
531    }
532
533    function exists()
534    {
535        $this->execQuery();
536        return $this->valid_;
537    }
538
539    function relatedKillCount()
540    {
541        $kslist = new KillList();
542        $kslist->setRelated($this->id_);
543        involved::load($kslist,'kill');
544
545        return $kslist->getCount();
546    }
547
548    function relatedLossCount()
549    {
550        $lslist = new KillList();
551        $lslist->setRelated($this->id_);
552        involved::load($lslist,'loss');
553
554        return $lslist->getCount();
555    }
556
557    function countComment($kll_id)
558    {
559        $qry = new DBQuery();
560        $sql = "SELECT * FROM kb3_comments WHERE kll_id = '$kll_id'";
561        $count = $qry->execute($sql);
562        $count = $qry->recordCount();
563        return $count;
564    }
565
566    function setID($id)
567    {
568        $this->id_ = $id;
569    }
570
571    function setTimeStamp($timestamp)
572    {
573        $this->timestamp_ = $timestamp;
574    }
575
576    function setSolarSystem($solarsystem)
577    {
578        $this->solarsystem_ = $solarsystem;
579    }
580
581    function setSolarSystemName($solarsystemname)
582    {
583        $this->solarsystemname_ = $solarsystemname;
584    }
585
586    function setSolarSystemSecurity($solarsystemsecurity)
587    {
588        $this->solarsystemsecurity_ = $solarsystemsecurity;
589    }
590
591    function setVictim($victim)
592    {
593        $this->victim_ = $victim;
594    }
595
596    function setVictimID($victimid)
597    {
598        $this->victimid_ = $victimid;
599    }
600
601    function setVictimName($victimname)
602    {
603        $this->victimname_ = $victimname;
604    }
605
606    function setVictimCorpID($victimcorpid)
607    {
608        $this->victimcorpid_ = $victimcorpid;
609    }
610
611    function setVictimCorpName($victimcorpname)
612    {
613        $this->victimcorpname_ = $victimcorpname;
614    }
615
616    function setVictimAllianceID($victimallianceid)
617    {
618        $this->victimallianceid_ = $victimallianceid;
619    }
620
621    function setVictimAllianceName($victimalliancename)
622    {
623        $this->victimalliancename_ = $victimalliancename;
624    }
625
626    function setVictimShip($victimship)
627    {
628        $this->victimship_ = $victimship;
629    }
630
631    function setVictimShipName($victimshipname)
632    {
633        $this->victimshipname_ = $victimshipname;
634    }
635
636    function setVictimShipExternalID($victimshipexternalid)
637    {
638        $this->victimshipexternalid_ = $victimshipexternalid;
639    }
640
641    function setVictimShipClassName($victimshipclassname)
642    {
643        $this->victimshipclassname_ = $victimshipclassname;
644    }
645
646    function setVictimShipValue($victimshipvalue)
647    {
648        $this->victimshipvalue_ = $victimshipvalue;
649    }
650
651    function setFBPilotID($fbpilotid)
652    {
653        $this->fbpilotid_ = $fbpilotid;
654    }
655
656    function setFBPilotName($fbpilotname)
657    {
658        $npc = strpos($fbpilotname, "#");
659                if ($npc === false)
660        {
661                $this->fbpilotname_ = $fbpilotname;
662                }
663                else
664        {
665                $name = explode("#", $fbpilotname);
666                $plt = new Item($name[2]);
667                $this->fbpilotname_ = $plt->getName();
668                }
669    }
670
671    function setFBCorpID($fbcorpid)
672    {
673        $this->fbcorpid_ = $fbcorpid;
674    }
675
676    function setFBCorpName($fbcorpname)
677    {
678        $this->fbcorpname_ = $fbcorpname;
679    }
680
681    function setFBAllianceID($fballianceid)
682    {
683        $this->fballianceid_ = $fballianceid;
684    }
685
686    function setFBAllianceName($fballiancename)
687    {
688        $this->fballiancename_ = $fballiancename;
689    }
690    function setKillPoints($killpoints)
691    {
692        $this->killpoints_ = $killpoints;
693    }
694
695    function calculateKillPoints()
696    {
697        $ship = $this->getVictimShip();
698        $shipclass = $ship->getClass();
699        $vicpoints = $shipclass->getPoints();
700        $maxpoints = round($vicpoints * 1.2);
701
702        foreach ($this->involvedparties_ as $inv)
703        {
704            $shipinv = $inv->getShip();
705            $shipclassinv = $shipinv->getClass();
706            $invpoints += $shipclassinv->getPoints();
707        }
708
709        $gankfactor = $vicpoints / ($vicpoints + $invpoints);
710        $points = ceil($vicpoints * ($gankfactor / 0.75));
711
712        if ($points > $maxpoints) $points = $maxpoints;
713
714        $points = round($points, 0);
715        return $points;
716    }
717
718    function add($id = null)
719    {
720        if (!$this->solarsystem_->getID())
721        {
722            echo 'INTERNAL ERROR; SOLARSYSTEM NOT FOUND; PLEASE CONTACT A DEV WITH THIS MESSAGE<br/>';
723            var_dump($this->solarsystem_);
724            var_dump($this->solarsystemname_);
725            return 0;
726        }
727
728        $dupe = $this->getDupe(true);
729        if ($dupe == 0)
730        {
731            $this->realadd();
732        }
733        elseif (config::get('readd_dupes'))
734        {
735            $this->dupeid_ = $dupe;
736            $this->id_ = $dupe;
737            $this->remove(false);
738            $this->realadd($dupe);
739            $this->id_ = -1;
740        }
741        else
742        {
743            $this->dupeid_ = $dupe;
744            $this->id_ = -1;
745        }
746        return $this->id_;
747    }
748
749    function realadd($id = null)
750    {
751        // if ( $this->timestamp_ == "" || !$this->victimid_ || !$this->victimship_->getID() || !$this->solarsystem_->getID() ||
752        // !$this->victimallianceid_ || !$this->victimcorpid_ || !$this->getFBAllianceID() || !$this->getFBCorpID() ||
753        // !$this->getFBPilotID() )
754        // return 0;
755        if ($id == null)
756        {
757            $qid = 'null';
758        }
759        else
760        {
761            $qid = $id;
762        }
763        if (!$this->dmgtaken)
764        {
765            $this->dmgtaken = 0;
766        }
767
768        $qry = new DBQuery();
769        $sql = "insert into kb3_kills values (".$qid.",
770                    date_format('".$this->timestamp_."', '%Y.%m.%d %H:%i:%s'),
771                ".$this->victimid_.", ".$this->victimallianceid_.",
772                ".$this->victimcorpid_.", ".$this->victimship_->getID().",
773                ".$this->solarsystem_->getID().", ".$this->getFBAllianceID().",
774                ".$this->getFBCorpID().", ".$this->getFBPilotID().", ".$this->calculateKillPoints().", ".$this->dmgtaken." )";
775        $qry->execute($sql);
776
777        if ($id)
778        {
779            $this->id_ = $id;
780        }
781        else
782        {
783            $this->id_ = $qry->getInsertID();
784        }
785
786        // involved
787        $order = 0;
788        $invall = array();
789        $invcrp = array();
790        $invplt = array();
791        foreach ($this->involvedparties_ as $inv)
792        {
793            $ship = $inv->getShip();
794            $weapon = $inv->getWeapon();
795            if (!$inv->getPilotID() || $inv->getSecStatus() == "" || !$inv->getAllianceID() || !$inv->getCorpID() || !$ship->getID() || !$weapon->getID())
796            {
797                $this->remove();
798                return 0;
799            }
800
801            if (!$inv->dmgdone_)
802            {
803                $inv->dmgdone_ = 0;
804            }
805
806            $sql = "insert into kb3_inv_detail
807                    values ( ".$this->getID().", ".$inv->getPilotID().", '".$inv->getSecStatus()."', "
808                    .$inv->getAllianceID().", ".$inv->getCorpID().", ".$ship->getID().", "
809                    .$weapon->getID().", ".$order++.", ".$inv->dmgdone_.")";
810            $qry->execute($sql) or die($qry->getErrorMsg());
811
812            if (!in_array($inv->getAllianceID(), $invall) && $inv->getAllianceID() != 14)
813            {
814                array_push($invall, $inv->getAllianceID());
815                $qry->execute("insert into kb3_inv_all values ( ".$this->getID().", ".$inv->getAllianceID()." )") or die($qry->getErrorMsg());
816            }
817            if (!in_array($inv->getCorpID(), $invcrp))
818            {
819                array_push($invcrp, $inv->getCorpID());
820                $qry->execute("insert into kb3_inv_crp values ( ".$this->getID().", ".$inv->getCorpID()." )") or die($qry->getErrorMsg());
821            }
822            if (!in_array($inv->getPilotID(), $invplt))
823            {
824                array_push($invplt, $inv->getPilotID());
825                $qry->execute("insert into kb3_inv_plt values ( ".$this->getID().", ".$inv->getPilotID()." )") or die($qry->getErrorMsg());
826            }
827        }
828
829        // destroyed
830        foreach ($this->destroyeditems_ as $dest)
831        {
832            $item = $dest->getItem();
833            $loc_id = $dest->getLocationID();
834            if (!is_numeric($this->getID()) || !is_numeric($item->getID()) || !is_numeric($dest->getQuantity()) || !is_numeric($loc_id))
835            {
836                trigger_error('error with destroyed item.', E_USER_WARNING);
837                var_dump($dest);exit;
838                continue;
839            }
840
841            $sql = "insert into kb3_items_destroyed
842                        values ( ".$this->getID().", ".$item->getID().", ".$dest->getQuantity().", "
843                    .$loc_id." )";
844            $qry->execute($sql);
845        }
846
847        // dropped
848        foreach ($this->droppeditems_ as $dest)
849        {
850            $item = $dest->getItem();
851            $loc_id = $dest->getLocationID();
852            if (!is_numeric($this->getID()) || !is_numeric($item->getID()) || !is_numeric($dest->getQuantity()) || !is_numeric($loc_id))
853            {
854                trigger_error('error with dropped item.', E_USER_WARNING);
855                var_dump($dest);exit;
856                continue;
857            }
858
859            $sql = "insert into kb3_items_dropped
860                        values ( ".$this->getID().", ".$item->getID().", ".$dest->getQuantity().", "
861                    .$loc_id." )";
862            $qry->execute($sql);
863        }
864
865        // call the event that we added this mail
866        event::call('killmail_added', $this);
867        return $this->id_;
868    }
869
870    function remove($delcomments = true)
871    {
872        if (!$this->id_)
873            return;
874
875        event::call('killmail_delete', $this);
876
877        $qry = new DBQuery();
878        $qry->execute("delete from kb3_kills where kll_id = ".$this->id_);
879        $qry->execute("delete from kb3_inv_detail where ind_kll_id = ".$this->id_);
880        $qry->execute("delete from kb3_inv_all where ina_kll_id = ".$this->id_);
881        $qry->execute("delete from kb3_inv_crp where inc_kll_id = ".$this->id_);
882        $qry->execute("delete from kb3_inv_plt where inp_kll_id = ".$this->id_);
883        $qry->execute("delete from kb3_items_destroyed where itd_kll_id = ".$this->id_);
884        $qry->execute("delete from kb3_items_dropped where itd_kll_id = ".$this->id_);
885        if ($delcomments)
886        {
887            $qry->execute("delete from kb3_comments where kll_id = ".$this->id_);
888        }
889    }
890
891    function addInvolvedParty($involved)
892    {
893        array_push($this->involvedparties_, $involved);
894    }
895
896    function addDestroyedItem($destroyed)
897    {
898        array_push($this->destroyeditems_, $destroyed);
899    }
900
901    function addDroppedItem($dropped)
902    {
903        array_push($this->droppeditems_, $dropped);
904    }
905}
906
907class InvolvedParty
908{
909    function InvolvedParty($pilotid, $corpid, $allianceid, $secstatus, $ship, $weapon)
910    {
911        $this->pilotid_ = $pilotid;
912        $this->corpid_ = $corpid;
913        $this->allianceid_ = $allianceid;
914        $this->secstatus_ = $secstatus;
915        $this->ship_ = $ship;
916        $this->weapon_ = $weapon;
917    }
918
919    function getPilotID()
920    {
921        return $this->pilotid_;
922    }
923
924    function getCorpID()
925    {
926        return $this->corpid_;
927    }
928
929    function getAllianceID()
930    {
931        return $this->allianceid_;
932    }
933
934    function getSecStatus()
935    {
936        return $this->secstatus_;
937    }
938
939    function getShip()
940    {
941        return $this->ship_;
942    }
943
944    function getWeapon()
945    {
946        return $this->weapon_;
947    }
948}
949
950class DestroyedItem
951{
952    function DestroyedItem($item, $quantity, $location)
953    {
954        $this->item_ = $item;
955        $this->quantity_ = $quantity;
956        $this->location_ = $location;
957    }
958
959    function getItem()
960    {
961        return $this->item_;
962    }
963
964    function getQuantity()
965    {
966        if ($this->quantity_ == "") $this->quantity = 1;
967        return $this->quantity_;
968    }
969
970    function getFormatttedValue()
971    {
972        if (!isset($this->value))
973        {
974            $this->getValue();
975        }
976        if ($this->value > 0)
977        {
978            $value = $this->value * $this->getQuantity();
979            // Value Manipulation for prettyness.
980            if (strlen($value) > 6) // Is this value in the millions?
981            {
982                $formatted = round($value / 1000000, 2);
983                $formatted = number_format($formatted, 2);
984                $formatted = $formatted." M";
985            }
986            elseif (strlen($value) > 3) // 1000's ?
987            {
988                $formatted = round($value / 1000, 2);
989
990                $formatted = number_format($formatted, 2);
991                $formatted = $formatted." K";
992            }
993            else
994            {
995                $formatted = number_format($value, 2);
996                $formatted = $formatted." isk";
997            }
998        }
999        else
1000        {
1001            $formatted = "0 isk";
1002        }
1003        return $formatted;
1004    }
1005
1006        function getValue()
1007        {
1008            if ($this->value)
1009            {
1010                return $this->value;
1011            }
1012            if (DB_USE_CCP)
1013            {
1014                $this->value = 0;
1015            $qry = new DBQuery();
1016            $qry->execute("select basePrice, price from kb3_invtypes left join kb3_item_price using (typeID) where typeID='".$this->item_->getID()."'");
1017            if ($row = $qry->getRow())
1018            {
1019                if ($row['price'])
1020                {
1021                    $this->value = $row['price'];
1022                }
1023                else
1024                {
1025                    $this->value = $row['basePrice'];
1026                }
1027            }
1028            return $this->value;
1029            }
1030
1031        //returns the value of an item
1032                $value = 0;                             // Set 0 value incase nothing comes back
1033                $id = $this->item_->getID(); // get Item ID
1034                $qry = new DBQuery();
1035        $qry->execute("select itm_value from kb3_items where itm_id= '".$id."'");
1036        $row = $qry->getRow();
1037        $value = $row['itm_value'];
1038                if ($value == '')
1039        {
1040                        $value = 0;
1041                }
1042                return $value;
1043        }
1044
1045    function getLocationID()
1046    {
1047        $id = false;
1048        if (strlen($this->location_) < 2)
1049        {
1050            $id = $this->item_->getSlot();
1051        }
1052        else
1053        {
1054            $qry = new DBQuery();
1055            $qry->execute("select itl_id from kb3_item_locations where itl_location = '".$this->location_."'");
1056            $row = $qry->getRow();
1057            $id = $row['itl_id'];
1058        }
1059        return $id;
1060    }
1061}
1062
1063class DroppedItem extends DestroyedItem
1064{
1065    function DroppedItem($item, $quantity, $location)
1066    {
1067        $this->item_ = $item;
1068        $this->quantity_ = $quantity;
1069        $this->location_ = $location;
1070    }
1071}
1072?>
Note: See TracBrowser for help on using the browser.