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

Revision 129, 27.1 KB (checked in by knifee, 14 years ago)

fixed a problem with the 'items used' table not being formed properly.

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 .= "<td>".$item->getIcon(32)."</td>";
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.