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

Revision 357, 33.0 KB (checked in by ralle, 13 years ago)

-fix of swf banner parth <br/>-upd of history mod and fix of trac linking -del of old DB_USE_CCP stuff -CHG of inserts to name adressed ones

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