root/dev/common/class.toplist.php @ 92

Revision 92, 27.1 KB (checked in by exi, 14 years ago)

Updated about page for 1.2.
Made table bgcolor black for alliance images.
Made table bgcolor black for corp images.
The parser now reparsers dupes and deletes comments on killmail deletion.
Changed parser to output some error messages if he doesn't like the mail.
Added conversion code for those funny german mailheader.
Fixed bugs #3 and #4.
Included a fix from Coni to class.ship.php.
Removed the error for unknown solar systems, this is now covered by the parser itself.
Now ordering comments by date.
Fixed db.php:getRow to return false in case of a non valid mysql resource id.
Added the sql killmail limit for home.php.
Added default width/heigth for pictures in kill details.
The searchpage will now redirect you to your hit if it only gets one serach result.

Line 
1<?php
2require_once("class.killlist.php");
3require_once("class.corp.php");
4require_once("class.alliance.php");
5require_once("class.system.php");
6require_once("class.ship.php");
7
8class TopList
9{
10    function TopList()
11    {
12        $this->qry_ = new DBQuery();
13        $this->exclude_scl_ = array();
14        $this->vic_scl_id_ = array();
15        $this->regions_ = array();
16        $this->systems_ = array();
17    }
18
19    function setPodsNoobShips($flag)
20    {
21        if (!$flag)
22        {
23            array_push($this->exclude_scl_, 2);
24            array_push($this->exclude_scl_, 3);
25            array_push($this->exclude_scl_, 11);
26        }
27        else
28        {
29            $this->exclude_scl_ = array();
30        }
31    }
32
33    function setSQLTop($sql)
34    {
35        $this->sqltop_ = $sql;
36    }
37
38    function setSQLBottom($sql)
39    {
40        $this->sqlbottom_ = $sql;
41    }
42
43    function addInvolvedPilot($pilot)
44    {
45        $this->inv_plt_ .= $pilot->getID().", ";
46        if ($this->inv_crp_ || $this->inv_all_)
47            $this->mixedinvolved_ = true;
48    }
49
50    function addInvolvedCorp($corp)
51    {
52        $this->inv_crp_ .= $corp->getID().", ";
53        if ($this->inv_plt_ || $this->inv_all_)
54            $this->mixedinvolved_ = true;
55    }
56
57    function addInvolvedAlliance($alliance)
58    {
59        $this->inv_all_ .= $alliance->getID().", ";
60        if ($this->inv_plt_ || $this->inv_crp_)
61            $this->mixedinvolved_ = true;
62    }
63
64    function addVictimPilot($pilot)
65    {
66        $this->vic_plt_ .= $pilot->getID().", ";
67        if ($this->vic_crp_ || $this->vic_all_)
68            $this->mixedvictims_ = true;
69    }
70
71    function addVictimCorp($corp)
72    {
73        $this->vic_crp_ .= $corp->getID().", ";
74        if ($this->vic_plt_ || $this->vic_all_)
75            $this->mixedvictims_ = true;
76    }
77
78    function addVictimAlliance($alliance)
79    {
80        $this->vic_all_ .= $alliance->getID().", ";
81        if ($this->vic_plt_ || $this->vic_crp_)
82            $this->mixedvictims_ = true;
83    }
84
85    function addVictimShipClass($shipclass)
86    {
87        array_push($this->vic_scl_id_, $shipclass->getID());
88    }
89
90    function addVictimShip($ship)
91    {
92    }
93
94    function addItemDestroyed($item)
95    {
96    }
97
98    function addRegion($region)
99    {
100        array_push($this->regions_, $region->getID());
101    }
102
103    function addSystem($system)
104    {
105        array_push($this->systems_, $system->getID());
106    }
107
108    function addGroupBy($groupby)
109    {
110        array_push($this->groupby_, $groupby);
111    }
112
113    function setPageSplitter($pagesplitter)
114    {
115        if (isset($_GET['page'])) $page = $_GET['page'];
116        else $page = 1;
117        $this->plimit_ = $pagesplitter->getSplit();
118        $this->poffset_ = ($page * $this->plimit_) - $this->plimit_;
119        // echo $this->offset_;
120        // echo $this->limit_;
121    }
122
123    function setWeek($weekno)
124    {
125        $this->timeframe_ .= " and date_format( kll.kll_timestamp, \"%u\" ) = ";
126        $this->timeframe_ .= $weekno;
127    }
128
129    function setMonth($monthno)
130    {
131        $this->timeframe_ .= " and date_format( kll.kll_timestamp, \"%c\" ) = ";
132        $this->timeframe_ .= $monthno;
133    }
134
135    function setYear($yearno)
136    {
137        $this->timeframe_ .= " and date_format( kll.kll_timestamp, \"%Y\" ) = ";
138        $this->timeframe_ .= $yearno;
139    }
140
141    function setStartWeek($weekno)
142    {
143        $this->timeframe_ .= " and date_format( kll.kll_timestamp, \"%u\" ) >= ";
144        $this->timeframe_ .= $weekno;
145    }
146
147    function setStartDate($timestamp)
148    {
149        $this->timeframe_ .= " and kll.kll_timestamp >= '".$timestamp."'";
150    }
151
152    function setEndDate($timestamp)
153    {
154        $this->timeframe_ .= " and kll.kll_timestamp <= '".$timestamp."'";
155    }
156
157    function setGroupBy($groupby)
158    {
159        $this->groupby_ = $groupby;
160    }
161
162    function execQuery()
163    {
164        $this->sql_ .= $this->sqltop_;
165        // involved
166        if ($this->inv_plt_)
167            $this->sql_ .= " inner join kb3_inv_plt inp
168                                 on ( inp.inp_plt_id in ( ".substr($this->inv_plt_, 0, strlen($this->inv_plt_) - 2)." ) and kll.kll_id = inp.inp_kll_id ) ";
169        if ($this->inv_crp_)
170            $this->sql_ .= " inner join kb3_inv_crp inc
171                                 on ( inc.inc_crp_id in ( ".substr($this->inv_crp_, 0, strlen($this->inv_crp_) - 2)." ) and kll.kll_id = inc.inc_kll_id ) ";
172
173        if ($this->inv_all_)
174            $this->sql_ .= " inner join kb3_inv_all ina
175                                 on ( ina.ina_all_id in ( ".substr($this->inv_all_, 0, strlen($this->inv_all_) - 2)." ) and kll.kll_id = ina.ina_kll_id ) ";
176
177        if (count($this->exclude_scl_))
178        {
179            $this->sql_ .= " inner join kb3_ships shp
180                                 on ( shp.shp_id = kll.kll_ship_id )
181                         inner join kb3_ship_classes scl
182                                 on ( scl.scl_id = shp.shp_class )";
183            $this->sql_ .= " and scl.scl_id not in ( ".implode(",", $this->exclude_scl_)." )";
184        }
185
186        if (count($this->vic_scl_id_))
187        {
188            $this->sql_ .= " inner join kb3_ships shp
189                                 on ( shp.shp_id = kll.kll_ship_id )
190                         inner join kb3_ship_classes scl
191                                 on ( scl.scl_id = shp.shp_class )";
192            $this->sql_ .= " and scl.scl_id in ( ".implode(",", $this->vic_scl_id_)." )";
193        }
194
195        if (count($this->regions_))
196        {
197            $this->sql_ .= " inner join kb3_systems sys
198                                 on ( sys.sys_id = kll.kll_system_id )
199                         inner join kb3_constellations con
200                                 on ( con.con_id = sys.sys_con_id )
201                         inner join kb3_regions reg
202                                 on ( reg.reg_id = con.con_reg_id
203                                      and reg.reg_id in ( ".implode($this->regions_, ",")." ) )";
204        }
205        if (count($this->systems_))
206        {
207            $this->sql_ .= "   and kll.kll_system_id in ( ".implode($this->systems_, ",").")";
208        }
209        // victim filter
210        if ($this->mixedvictims_)
211        {
212            $this->sql_ .= " and ( 1 = 0 ";
213            $op = "or";
214        }
215        else $op = "and";
216
217        if ($this->vic_plt_)
218            $this->sql_ .= " ".$op." kll.kll_victim_id in ( ".substr($this->vic_plt_, 0, strlen($this->vic_plt_) - 2)." )";
219        if ($this->vic_crp_)
220            $this->sql_ .= " ".$op." kll.kll_crp_id in ( ".substr($this->vic_crp_, 0, strlen($this->vic_crp_) - 2)." )";
221        if ($this->vic_all_)
222            $this->sql_ .= " ".$op." kll.kll_all_id in ( ".substr($this->vic_all_, 0, strlen($this->vic_all_) - 2)." )";
223
224        if ($this->mixedvictims_)
225            $this->sql_ .= " ) ";
226
227        if ($this->timeframe_) $this->sql_ .= $this->timeframe_;
228
229        $this->sql_ .= " ".$this->sqlbottom_;
230        // echo $this->sql_."<br>";
231        $this->qry_->execute($this->sql_);
232    }
233
234    function getRow()
235    {
236        if (!$this->qry_->executed())
237            $this->execQuery();
238
239        $row = $this->qry_->getRow();
240        return $row;
241    }
242
243    function getTimeFrameSQL()
244    {
245        return $this->timeframe_;
246    }
247}
248
249class TopKillsList extends TopList
250{
251    function TopKillsList()
252    {
253        $this->TopList();
254    }
255
256    function generate()
257    {
258        $sql = "select count(*) as cnt, ind.ind_plt_id as plt_id
259                from kb3_kills kll
260              inner join kb3_inv_detail ind
261                      on ( ind.ind_kll_id = kll.kll_id )
262              inner join kb3_pilots plt
263                      on ( plt.plt_id = ind.ind_plt_id ";
264        if ($this->inv_crp_)
265            $sql .= " and plt.plt_crp_id in ( ".substr($this->inv_crp_, 0, strlen($this->inv_crp_) - 2)." )";
266        $sql .= ")";
267
268        if ($this->inv_all_)
269        {
270            $sql .= ' inner join kb3_corps crp on ( crp.crp_id = ind.ind_crp_id ';
271            $sql .= " and crp.crp_all_id in ( ".substr($this->inv_all_, 0, strlen($this->inv_all_) - 2)." )";
272            $sql .= ')';
273        }
274
275        $this->setSQLTop($sql);
276
277        $this->setSQLBottom("group by ind.ind_plt_id order by 1 desc
278                            limit 30");
279        $this->setPodsNoobShips(false);
280    }
281}
282
283class TopCorpKillsList extends TopList
284{
285    function TopKillsList()
286    {
287        $this->TopList();
288    }
289
290    function generate()
291    {
292        $sql = "select count(*) as cnt, ind.ind_crp_id as crp_id
293                from kb3_kills kll
294              inner join kb3_inv_detail ind
295                      on ( ind.ind_kll_id = kll.kll_id )
296              inner join kb3_corps crp
297                      on ( crp.crp_id = ind.ind_crp_id ";
298        if ($this->inv_all_)
299            $sql .= " and crp.crp_all_id in ( ".substr($this->inv_all_, 0, strlen($this->inv_all_) - 2)." )";
300
301        $sql .= ")";
302
303        $this->setSQLTop($sql);
304
305        $this->setSQLBottom("group by ind.ind_crp_id order by 1 desc
306                            limit 30");
307        $this->setPodsNoobShips(false);
308    }
309}
310
311class TopScoreList extends TopList
312{
313    function TopScoreList()
314    {
315        $this->TopList();
316    }
317
318    function generate()
319    {
320        $sql = "select sum(kll.kll_points) as cnt, ind.ind_plt_id as plt_id
321                from kb3_kills kll
322              inner join kb3_inv_detail ind
323                      on ( ind.ind_kll_id = kll.kll_id )
324              inner join kb3_pilots plt
325                      on ( plt.plt_id = ind.ind_plt_id ";
326        if ($this->inv_crp_)
327            $sql .= " and plt.plt_crp_id in ( ".substr($this->inv_crp_, 0, strlen($this->inv_crp_) - 2)." )";
328
329        $sql .= ")";
330
331        if ($this->inv_all_)
332        {
333            $sql .= ' inner join kb3_corps crp on ( crp.crp_id = ind.ind_crp_id ';
334            $sql .= " and crp.crp_all_id in ( ".substr($this->inv_all_, 0, strlen($this->inv_all_) - 2)." )";
335            $sql .= ')';
336        }
337
338        $this->setSQLTop($sql);
339
340        $this->setSQLBottom("group by ind.ind_plt_id order by 1 desc
341                            limit 30");
342        // $this->setPodsNoobShips(false);
343    }
344}
345
346class TopLossesList extends TopList
347{
348    function TopScoreList()
349    {
350        $this->TopList();
351    }
352
353    function generate()
354    {
355        $this->setSQLTop("select count(*) as cnt, kll.kll_victim_id as plt_id
356                           from kb3_kills kll");
357        $this->setSQLBottom("group by kll.kll_victim_id order by 1 desc
358                            limit 30");
359        $this->setPodsNoobShips(false);
360    }
361}
362
363class TopCorpLossesList extends TopList
364{
365    function TopScoreList()
366    {
367        $this->TopList();
368    }
369
370    function generate()
371    {
372        $this->setSQLTop("select count(*) as cnt, kll.kll_crp_id as crp_id
373                           from kb3_kills kll");
374        $this->setSQLBottom("group by kll.kll_crp_id order by 1 desc
375                            limit 30");
376        $this->setPodsNoobShips(false);
377    }
378}
379
380class TopFinalBlowList extends TopList
381{
382    function TopFinalBlowList()
383    {
384        $this->TopList();
385    }
386
387    function generate()
388    {
389        $sql = "select count(kll.kll_id) as cnt, kll.kll_fb_plt_id as plt_id
390                from kb3_kills kll
391              inner join kb3_inv_detail ind
392                      on ( ind.ind_kll_id = kll.kll_id)
393              inner join kb3_pilots plt
394                      on ( plt.plt_id = ind.ind_plt_id ";
395        if ($this->inv_crp_)
396            $sql .= " and plt.plt_crp_id in ( ".substr($this->inv_crp_, 0, strlen($this->inv_crp_) - 2)." )";
397
398        $sql .= ")";
399
400        $this->setSQLTop($sql);
401
402        $this->setSQLBottom("group by kll.kll_fb_plt_id order by 1 desc
403                            limit 30");
404        $this->setPodsNoobShips(false);
405    }
406}
407
408class TopDamageDealerList extends TopList
409{
410    function TopDamageDealerList()
411    {
412        $this->TopList();
413    }
414
415    function generate()
416    {
417        $sql = "select count(kll.kll_id) as cnt, ind.ind_plt_id as plt_id
418                from kb3_kills kll
419              inner join kb3_inv_detail ind
420                      on ( ind.ind_kll_id = kll.kll_id and ind.ind_order = 0)
421              inner join kb3_pilots plt
422                      on ( plt.plt_id = ind.ind_plt_id ";
423        if ($this->inv_crp_)
424            $sql .= " and plt.plt_crp_id in ( ".substr($this->inv_crp_, 0, strlen($this->inv_crp_) - 2)." )";
425
426        $sql .= ")";
427
428        $this->setSQLTop($sql);
429
430        $this->setSQLBottom("group by ind.ind_plt_id order by 1 desc
431                            limit 30");
432        $this->setPodsNoobShips(false);
433    }
434}
435
436class TopSoloKillerList extends TopList
437{
438    function TopSoloKillerList()
439    {
440        $this->TopList();
441    }
442
443    function generate()
444    {
445        $sql = "select count(kll.kll_id) as cnt, ind.ind_plt_id as plt_id
446                from kb3_kills kll
447              inner join kb3_inv_detail ind
448                      on ( ind.ind_kll_id = kll.kll_id and ind.ind_order = 0)
449              inner join kb3_inv_detail ind2
450                      on ( ind2.ind_kll_id = ind.ind_kll_id
451                           and not (ind2.ind_order > 0 ) )
452              inner join kb3_pilots plt
453                      on ( plt.plt_id = ind.ind_plt_id
454                           and kll.kll_fb_plt_id = plt.plt_id";
455        if ($this->inv_crp_)
456            $sql .= " and plt.plt_crp_id in ( ".substr($this->inv_crp_, 0, strlen($this->inv_crp_) - 2)." )";
457
458        $sql .= ")";
459
460        $this->setSQLTop($sql);
461
462        $this->setSQLBottom("group by ind.ind_plt_id order by 1 desc
463                            limit 30");
464        $this->setPodsNoobShips(false);
465    }
466}
467
468class TopPodKillerList extends TopList
469{
470    function TopPodKillerList()
471    {
472        $this->TopList();
473    }
474
475    function generate()
476    {
477        $sql = "select count(kll.kll_id) as cnt, ind.ind_plt_id as plt_id
478                from kb3_kills kll
479              inner join kb3_inv_detail ind
480                      on ( ind.ind_kll_id = kll.kll_id )
481              inner join kb3_pilots plt
482                      on ( plt.plt_id = ind.ind_plt_id";
483        if ($this->inv_crp_)
484            $sql .= " and plt.plt_crp_id in ( ".substr($this->inv_crp_, 0, strlen($this->inv_crp_) - 2)." )";
485
486        $sql .= ")";
487
488        $this->setSQLTop($sql);
489
490        $this->setSQLBottom("group by ind.ind_plt_id order by 1 desc
491                            limit 30");
492        $this->addVictimShipClass(new ShipClass(2)); // capsule
493    }
494}
495
496class TopGrieferList extends TopList
497{
498    function TopGrieferList()
499    {
500        $this->TopList();
501    }
502
503    function generate()
504    {
505        $sql = "select count(kll.kll_id) as cnt, ind.ind_plt_id as plt_id
506                from kb3_kills kll
507              inner join kb3_inv_detail ind
508                      on ( ind.ind_kll_id = kll.kll_id )
509              inner join kb3_pilots plt
510                      on ( plt.plt_id = ind.ind_plt_id";
511        if ($this->inv_crp_)
512            $sql .= " and plt.plt_crp_id in ( ".substr($this->inv_crp_, 0, strlen($this->inv_crp_) - 2)." )";
513
514        $sql .= ")";
515
516        $this->setSQLTop($sql);
517
518        $this->setSQLBottom("group by ind.ind_plt_id order by 1 desc
519                            limit 30");
520        $this->addVictimShipClass(new ShipClass(20)); // freighter
521        $this->addVictimShipClass(new ShipClass(22)); // exhumer
522        $this->addVictimShipClass(new ShipClass(7)); // industrial
523        $this->addVictimShipClass(new ShipClass(12)); // barge
524        $this->addVictimShipClass(new ShipClass(14)); // transport
525    }
526}
527
528class TopCapitalShipKillerList extends TopList
529{
530    function TopCapitalShipKillerList()
531    {
532        $this->TopList();
533    }
534
535    function generate()
536    {
537        $sql = "select count(kll.kll_id) as cnt, ind.ind_plt_id as plt_id
538                from kb3_kills kll
539              inner join kb3_inv_detail ind
540                      on ( ind.ind_kll_id = kll.kll_id )
541              inner join kb3_pilots plt
542                      on ( plt.plt_id = ind.ind_plt_id";
543        if ($this->inv_crp_)
544            $sql .= " and plt.plt_crp_id in ( ".substr($this->inv_crp_, 0, strlen($this->inv_crp_) - 2)." )";
545
546        $sql .= ")";
547
548        $this->setSQLTop($sql);
549
550        $this->setSQLBottom("group by ind.ind_plt_id order by 1 desc
551                            limit 30");
552        $this->addVictimShipClass(new ShipClass(20)); // freighter
553        $this->addVictimShipClass(new ShipClass(19)); // dread
554        $this->addVictimShipClass(new ShipClass(27)); // carrier
555        $this->addVictimShipClass(new ShipClass(28)); // mothership
556        $this->addVictimShipClass(new ShipClass(26)); // titan
557    }
558}
559
560class TopContractKillsList extends TopKillsList
561{
562    function TopContractKillsList()
563    {
564        $this->TopKillsList();
565    }
566
567    function generate()
568    {
569        parent::generate();
570    }
571
572    function setContract($contract)
573    {
574        $this->setStartDate($contract->getStartDate());
575        if ($contract->getEndDate() != "")
576            $this->setEndDate($contract->getEndDate());
577
578        while ($target = $contract->getContractTarget())
579        {
580            switch ($target->getType())
581            {
582                case "corp":
583                    $this->addVictimCorp(new Corporation($target->getID()));
584                    break;
585                case "alliance":
586                    $this->addVictimAlliance(new Alliance($target->getID()));
587                    break;
588                case "region":
589                    $this->addRegion(new Region($target->getID()));
590                    break;
591                case "system":
592                    $this->addSystem(new SolarSystem($target->getID()));
593                    break;
594            }
595        }
596    }
597}
598
599class TopContractScoreList extends TopScoreList
600{
601    function TopContractScoreList()
602    {
603        $this->TopScoreList();
604    }
605
606    function generate()
607    {
608        parent::generate();
609    }
610
611    function setContract($contract)
612    {
613        $this->setStartDate($contract->getStartDate());
614        if ($contract->getEndDate() != "")
615            $this->setEndDate($contract->getEndDate());
616
617        while ($target = $contract->getContractTarget())
618        {
619            switch ($target->getType())
620            {
621                case "corp":
622                    $this->addVictimCorp(new Corporation($target->getID()));
623                    break;
624                case "alliance":
625                    $this->addVictimAlliance(new Alliance($target->getID()));
626                    break;
627                case "region":
628                    $this->addRegion(new Region($target->getID()));
629                    break;
630                case "system":
631                    $this->addSystem(new SolarSystem($target->getID()));
632                    break;
633            }
634        }
635    }
636}
637
638class TopPilotTable
639{
640    function TopPilotTable($toplist, $entity)
641    {
642        $this->toplist_ = $toplist;
643        $this->entity_ = $entity;
644    }
645
646    function generate()
647    {
648        $this->toplist_->generate();
649
650        $html .= "<table class=kb-table cellspacing=1>";
651        $html .= "<tr class=kb-table-header>";
652        $html .= "<td class=kb-table-cell align=center colspan=2>Pilot</td>";
653        $html .= "<td class=kb-table-cell align=center width=60>".$this->entity_."</td>";
654        $html .= "</tr>";
655
656        $odd = true;
657        $i = 1;
658        while ($row = $this->toplist_->getRow())
659        {
660            $pilot = new Pilot($row['plt_id']);
661            if ($odd)
662            {
663                $class = "kb-table-row-odd";
664                $odd = false;
665            }
666            else
667            {
668                $class = "kb-table-row-even";
669                $odd = true;
670            }
671            $html .= "<tr class=".$class.">";
672            $html .= "<td><img src=\"".$pilot->getPortraitURL(32)."\"></td>";
673            $html .= "<td class=kb-table-cell width=200><b>".$i.".</b>&nbsp;<a class=kb-shipclass href=\"?a=pilot_detail&plt_id=".$row['plt_id']."\">".$pilot->getName()."</a></td>";
674            $html .= "<td class=kb-table-cell align=center><b>".$row['cnt']."</b></td>";
675
676            $html .= "</tr>";
677            $i++;
678        }
679
680        $html .= "</table>";
681
682        return $html;
683    }
684}
685
686class TopCorpTable
687{
688    function TopCorpTable($toplist, $entity)
689    {
690        $this->toplist_ = $toplist;
691        $this->entity_ = $entity;
692    }
693
694    function generate()
695    {
696        $this->toplist_->generate();
697
698        $html .= "<table class=kb-table cellspacing=1>";
699        $html .= "<tr class=kb-table-header>";
700        $html .= "<td class=kb-table-cell align=center>#</td>";
701        $html .= "<td class=kb-table-cell align=center>Corporation</td>";
702        $html .= "<td class=kb-table-cell align=center width=60>".$this->entity_."</td>";
703        $html .= "</tr>";
704
705        $odd = true;
706        $i = 1;
707        while ($row = $this->toplist_->getRow())
708        {
709            $corp = new Corporation($row['crp_id']);
710            if ($odd)
711            {
712                $class = "kb-table-row-odd";
713                $odd = false;
714            }
715            else
716            {
717                $class = "kb-table-row-even";
718                $odd = true;
719            }
720            $html .= "<tr class=".$class.">";
721            $html .= "<td class=kb-table-cell align=center><b>".$i.".</b></td>";
722            $html .= "<td class=kb-table-cell width=200><a href=\"?a=corp_detail&crp_id=".$row['crp_id']."\">".$corp->getName()."</a></td>";
723            $html .= "<td class=kb-table-cell align=center><b>".$row['cnt']."</b></td>";
724
725            $html .= "</tr>";
726            $i++;
727        }
728
729        $html .= "</table>";
730
731        return $html;
732    }
733}
734
735class TopShipList extends TopList
736{
737    function TopShipList()
738    {
739        $this->TopList();
740    }
741
742    function addInvolvedPilot($pilot)
743    {
744        $this->invplt_ = $pilot;
745    }
746
747    function addInvolvedCorp($corp)
748    {
749        $this->invcrp_ = $corp;
750    }
751
752    function addInvolvedAlliance($alliance)
753    {
754        $this->invall_ = $alliance;
755    }
756
757    function generate()
758    {
759        $sql = "select count(*) as cnt, ind.ind_shp_id as shp_id
760              from kb3_inv_detail ind
761              inner join kb3_ships shp on ( shp_id = ind.ind_shp_id )";
762
763        if ($this->invplt_)
764            $sql .= " inner join kb3_inv_plt inp
765                          on ( inp.inp_kll_id = ind.ind_kll_id
766                               and inp.inp_plt_id = ind.ind_plt_id
767                               and inp.inp_plt_id = ".$this->invplt_->getID().")";
768
769        if ($this->invcrp_)
770            $sql .= " inner join kb3_inv_crp inc
771                          on ( inc.inc_kll_id = ind.ind_kll_id
772                               and inc.inc_crp_id = ind.ind_crp_id
773                               and inc.inc_crp_id = ".$this->invcrp_->getID().")";
774
775        if ($this->invall_)
776            $sql .= " inner join kb3_inv_all ina
777                          on ( ina.ina_kll_id = ind.ind_kll_id
778                               and ina.ina_all_id = ind.ind_all_id
779                               and ina.ina_all_id = ".$this->invall_->getID().")";
780
781        $this->setSQLTop($sql);
782        $this->setSQLBottom(" and ind.ind_shp_id not in ( 6, 31 )
783                             and shp.shp_class != 17
784                             group by ind.ind_shp_id order by 1 desc
785                             limit 20");
786    }
787}
788
789class TopShipListTable
790{
791    function TopShipListTable($toplist)
792    {
793        $this->toplist_ = $toplist;
794    }
795
796    function generate()
797    {
798        $this->toplist_->generate();
799
800        $html .= "<table class=kb-table cellspacing=1>";
801        $html .= "<tr class=kb-table-header>";
802        $html .= "<td class=kb-table-cell align=center colspan=2>Ship</td>";
803        $html .= "<td class=kb-table-cell align=center width=60>Kills</td>";
804        $html .= "</tr>";
805
806        $odd = true;
807        while ($row = $this->toplist_->getRow())
808        {
809            $ship = new Ship($row['shp_id']);
810            $shipclass = $ship->getClass();
811            if ($odd)
812            {
813                $class = "kb-table-row-odd";
814                $odd = false;
815            }
816            else
817            {
818                $class = "kb-table-row-even";
819                $odd = true;
820            }
821            $html .= "<tr class=".$class.">";
822            $html .= "<td><img src=\"".$ship->getImage(32)."\"></td>";
823            $html .= "<td class=kb-table-cell width=200><b>".$ship->getName()."</b><br>".$shipclass->getName()."</td>";
824            $html .= "<td class=kb-table-cell align=center><b>".$row['cnt']."</b></td>";
825
826            $html .= "</tr>";
827        }
828
829        $html .= "</table>";
830
831        return $html;
832    }
833}
834
835class TopWeaponList extends TopList
836{
837    function TopWeaponList()
838    {
839        $this->TopList();
840    }
841
842    function addInvolvedPilot($pilot)
843    {
844        $this->invplt_ = $pilot;
845    }
846
847    function addInvolvedCorp($corp)
848    {
849        $this->invcrp_ = $corp;
850    }
851
852    function addInvolvedAlliance($alliance)
853    {
854        $this->invall_ = $alliance;
855    }
856
857    function generate()
858    {
859        $sql = "select count(*) as cnt, ind.ind_wep_id as itm_id
860              from kb3_inv_detail ind
861              inner join kb3_items itm on ( itm_id = ind.ind_wep_id )";
862
863        if ($this->invplt_)
864            $sql .= " inner join kb3_inv_plt inp
865                          on ( inp.inp_kll_id = ind.ind_kll_id
866                               and inp.inp_plt_id = ind.ind_plt_id
867                               and inp.inp_plt_id = ".$this->invplt_->getID().")";
868
869        if ($this->invcrp_)
870            $sql .= " inner join kb3_inv_crp inc
871                          on ( inc.inc_kll_id = ind.ind_kll_id
872                               and inc.inc_crp_id = ind.ind_crp_id
873                               and inc.inc_crp_id = ".$this->invcrp_->getID().")";
874
875        if ($this->invall_)
876            $sql .= " inner join kb3_inv_all ina
877                          on ( ina.ina_kll_id = ind.ind_kll_id
878                               and ina.ina_all_id = ind.ind_all_id
879                               and ina.ina_all_id = ".$this->invall_->getID().")";
880
881        $this->setSQLTop($sql);
882        $this->setSQLBottom(" and itm.itm_icon not in ( '1', 'icon_null' )
883                             and itm.itm_name != 'Unknown'
884                             group by ind.ind_wep_id order by 1 desc
885                             limit 20");
886    }
887}
888
889class TopWeaponListTable
890{
891    function TopWeaponListTable($toplist)
892    {
893        $this->toplist_ = $toplist;
894    }
895
896    function generate()
897    {
898        $this->toplist_->generate();
899
900        $html .= "<table class=kb-table cellspacing=1>";
901        $html .= "<tr class=kb-table-header>";
902        $html .= "<td class=kb-table-cell align=center colspan=2>Weapon</td>";
903        $html .= "<td class=kb-table-cell align=center width=60>Kills</td>";
904        $html .= "</tr>";
905
906        $odd = true;
907        while ($row = $this->toplist_->getRow())
908        {
909            $item = new Item($row['itm_id']);
910            if ($odd)
911            {
912                $class = "kb-table-row-odd";
913                $odd = false;
914            }
915            else
916            {
917                $class = "kb-table-row-even";
918                $odd = true;
919            }
920            $html .= "<tr class=".$class.">";
921            $html .= $item->getIcon(32);
922            $html .= "<td class=kb-table-cell width=200><b>".$item->getName()."</b></td>";
923            $html .= "<td class=kb-table-cell align=center><b>".$row['cnt']."</b></td>";
924
925            $html .= "</tr>";
926        }
927
928        $html .= "</table>";
929
930        return $html;
931    }
932}
933
934?>
Note: See TracBrowser for help on using the browser.