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

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

Reduced one potential sql-bug.
Added ability to identify items as t2 via their techlevel rather than just 'II'.
Fixed item location 0 to not cause skipping that item.
Added anzahl/quantity-replace for the german killpreparser.
Fixed final blow award to show correct numbers.
Removed unnecessary code from db.php.
Added a table data check to the sql importer and made the importer more verbose, this should minimize support requests caused by empty table data.
Fixed a small misalignment of the comment block.

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/><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_pilots plt
392                      on ( plt.plt_id = kll.kll_fb_plt_id ";
393        if ($this->inv_crp_)
394            $sql .= " and plt.plt_crp_id in ( ".substr($this->inv_crp_, 0, strlen($this->inv_crp_) - 2)." )";
395
396        $sql .= ")";
397
398        $this->setSQLTop($sql);
399
400        $this->setSQLBottom("group by kll.kll_fb_plt_id order by 1 desc
401                            limit 30");
402        $this->setPodsNoobShips(false);
403    }
404}
405
406class TopDamageDealerList extends TopList
407{
408    function TopDamageDealerList()
409    {
410        $this->TopList();
411    }
412
413    function generate()
414    {
415        $sql = "select count(kll.kll_id) as cnt, ind.ind_plt_id as plt_id
416                from kb3_kills kll
417              inner join kb3_inv_detail ind
418                      on ( ind.ind_kll_id = kll.kll_id and ind.ind_order = 0)
419              inner join kb3_pilots plt
420                      on ( plt.plt_id = ind.ind_plt_id ";
421        if ($this->inv_crp_)
422            $sql .= " and plt.plt_crp_id in ( ".substr($this->inv_crp_, 0, strlen($this->inv_crp_) - 2)." )";
423
424        $sql .= ")";
425
426        $this->setSQLTop($sql);
427
428        $this->setSQLBottom("group by ind.ind_plt_id order by 1 desc
429                            limit 30");
430        $this->setPodsNoobShips(false);
431    }
432}
433
434class TopSoloKillerList extends TopList
435{
436    function TopSoloKillerList()
437    {
438        $this->TopList();
439    }
440
441    function generate()
442    {
443        $sql = "select count(kll.kll_id) as cnt, ind.ind_plt_id as plt_id
444                from kb3_kills kll
445              inner join kb3_inv_detail ind
446                      on ( ind.ind_kll_id = kll.kll_id and ind.ind_order = 0)
447              inner join kb3_inv_detail ind2
448                      on ( ind2.ind_kll_id = ind.ind_kll_id
449                           and not (ind2.ind_order > 0 ) )
450              inner join kb3_pilots plt
451                      on ( plt.plt_id = ind.ind_plt_id
452                           and kll.kll_fb_plt_id = plt.plt_id";
453        if ($this->inv_crp_)
454            $sql .= " and plt.plt_crp_id in ( ".substr($this->inv_crp_, 0, strlen($this->inv_crp_) - 2)." )";
455
456        $sql .= ")";
457
458        $this->setSQLTop($sql);
459
460        $this->setSQLBottom("group by ind.ind_plt_id order by 1 desc
461                            limit 30");
462        $this->setPodsNoobShips(false);
463    }
464}
465
466class TopPodKillerList extends TopList
467{
468    function TopPodKillerList()
469    {
470        $this->TopList();
471    }
472
473    function generate()
474    {
475        $sql = "select count(kll.kll_id) as cnt, ind.ind_plt_id as plt_id
476                from kb3_kills kll
477              inner join kb3_inv_detail ind
478                      on ( ind.ind_kll_id = kll.kll_id )
479              inner join kb3_pilots plt
480                      on ( plt.plt_id = ind.ind_plt_id";
481        if ($this->inv_crp_)
482            $sql .= " and plt.plt_crp_id in ( ".substr($this->inv_crp_, 0, strlen($this->inv_crp_) - 2)." )";
483
484        $sql .= ")";
485
486        $this->setSQLTop($sql);
487
488        $this->setSQLBottom("group by ind.ind_plt_id order by 1 desc
489                            limit 30");
490        $this->addVictimShipClass(new ShipClass(2)); // capsule
491    }
492}
493
494class TopGrieferList extends TopList
495{
496    function TopGrieferList()
497    {
498        $this->TopList();
499    }
500
501    function generate()
502    {
503        $sql = "select count(kll.kll_id) as cnt, ind.ind_plt_id as plt_id
504                from kb3_kills kll
505              inner join kb3_inv_detail ind
506                      on ( ind.ind_kll_id = kll.kll_id )
507              inner join kb3_pilots plt
508                      on ( plt.plt_id = ind.ind_plt_id";
509        if ($this->inv_crp_)
510            $sql .= " and plt.plt_crp_id in ( ".substr($this->inv_crp_, 0, strlen($this->inv_crp_) - 2)." )";
511
512        $sql .= ")";
513
514        $this->setSQLTop($sql);
515
516        $this->setSQLBottom("group by ind.ind_plt_id order by 1 desc
517                            limit 30");
518        $this->addVictimShipClass(new ShipClass(20)); // freighter
519        $this->addVictimShipClass(new ShipClass(22)); // exhumer
520        $this->addVictimShipClass(new ShipClass(7)); // industrial
521        $this->addVictimShipClass(new ShipClass(12)); // barge
522        $this->addVictimShipClass(new ShipClass(14)); // transport
523    }
524}
525
526class TopCapitalShipKillerList extends TopList
527{
528    function TopCapitalShipKillerList()
529    {
530        $this->TopList();
531    }
532
533    function generate()
534    {
535        $sql = "select count(kll.kll_id) as cnt, ind.ind_plt_id as plt_id
536                from kb3_kills kll
537              inner join kb3_inv_detail ind
538                      on ( ind.ind_kll_id = kll.kll_id )
539              inner join kb3_pilots plt
540                      on ( plt.plt_id = ind.ind_plt_id";
541        if ($this->inv_crp_)
542            $sql .= " and plt.plt_crp_id in ( ".substr($this->inv_crp_, 0, strlen($this->inv_crp_) - 2)." )";
543
544        $sql .= ")";
545
546        $this->setSQLTop($sql);
547
548        $this->setSQLBottom("group by ind.ind_plt_id order by 1 desc
549                            limit 30");
550        $this->addVictimShipClass(new ShipClass(20)); // freighter
551        $this->addVictimShipClass(new ShipClass(19)); // dread
552        $this->addVictimShipClass(new ShipClass(27)); // carrier
553        $this->addVictimShipClass(new ShipClass(28)); // mothership
554        $this->addVictimShipClass(new ShipClass(26)); // titan
555    }
556}
557
558class TopContractKillsList extends TopKillsList
559{
560    function TopContractKillsList()
561    {
562        $this->TopKillsList();
563    }
564
565    function generate()
566    {
567        parent::generate();
568    }
569
570    function setContract($contract)
571    {
572        $this->setStartDate($contract->getStartDate());
573        if ($contract->getEndDate() != "")
574            $this->setEndDate($contract->getEndDate());
575
576        while ($target = $contract->getContractTarget())
577        {
578            switch ($target->getType())
579            {
580                case "corp":
581                    $this->addVictimCorp(new Corporation($target->getID()));
582                    break;
583                case "alliance":
584                    $this->addVictimAlliance(new Alliance($target->getID()));
585                    break;
586                case "region":
587                    $this->addRegion(new Region($target->getID()));
588                    break;
589                case "system":
590                    $this->addSystem(new SolarSystem($target->getID()));
591                    break;
592            }
593        }
594    }
595}
596
597class TopContractScoreList extends TopScoreList
598{
599    function TopContractScoreList()
600    {
601        $this->TopScoreList();
602    }
603
604    function generate()
605    {
606        parent::generate();
607    }
608
609    function setContract($contract)
610    {
611        $this->setStartDate($contract->getStartDate());
612        if ($contract->getEndDate() != "")
613            $this->setEndDate($contract->getEndDate());
614
615        while ($target = $contract->getContractTarget())
616        {
617            switch ($target->getType())
618            {
619                case "corp":
620                    $this->addVictimCorp(new Corporation($target->getID()));
621                    break;
622                case "alliance":
623                    $this->addVictimAlliance(new Alliance($target->getID()));
624                    break;
625                case "region":
626                    $this->addRegion(new Region($target->getID()));
627                    break;
628                case "system":
629                    $this->addSystem(new SolarSystem($target->getID()));
630                    break;
631            }
632        }
633    }
634}
635
636class TopPilotTable
637{
638    function TopPilotTable($toplist, $entity)
639    {
640        $this->toplist_ = $toplist;
641        $this->entity_ = $entity;
642    }
643
644    function generate()
645    {
646        $this->toplist_->generate();
647
648        $html .= "<table class=kb-table cellspacing=1>";
649        $html .= "<tr class=kb-table-header>";
650        $html .= "<td class=kb-table-cell align=center colspan=2>Pilot</td>";
651        $html .= "<td class=kb-table-cell align=center width=60>".$this->entity_."</td>";
652        $html .= "</tr>";
653
654        $odd = true;
655        $i = 1;
656        while ($row = $this->toplist_->getRow())
657        {
658            $pilot = new Pilot($row['plt_id']);
659            if ($odd)
660            {
661                $class = "kb-table-row-odd";
662                $odd = false;
663            }
664            else
665            {
666                $class = "kb-table-row-even";
667                $odd = true;
668            }
669            $html .= "<tr class=".$class.">";
670            $html .= "<td><img src=\"".$pilot->getPortraitURL(32)."\"></td>";
671            $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>";
672            $html .= "<td class=kb-table-cell align=center><b>".$row['cnt']."</b></td>";
673
674            $html .= "</tr>";
675            $i++;
676        }
677
678        $html .= "</table>";
679
680        return $html;
681    }
682}
683
684class TopCorpTable
685{
686    function TopCorpTable($toplist, $entity)
687    {
688        $this->toplist_ = $toplist;
689        $this->entity_ = $entity;
690    }
691
692    function generate()
693    {
694        $this->toplist_->generate();
695
696        $html .= "<table class=kb-table cellspacing=1>";
697        $html .= "<tr class=kb-table-header>";
698        $html .= "<td class=kb-table-cell align=center>#</td>";
699        $html .= "<td class=kb-table-cell align=center>Corporation</td>";
700        $html .= "<td class=kb-table-cell align=center width=60>".$this->entity_."</td>";
701        $html .= "</tr>";
702
703        $odd = true;
704        $i = 1;
705        while ($row = $this->toplist_->getRow())
706        {
707            $corp = new Corporation($row['crp_id']);
708            if ($odd)
709            {
710                $class = "kb-table-row-odd";
711                $odd = false;
712            }
713            else
714            {
715                $class = "kb-table-row-even";
716                $odd = true;
717            }
718            $html .= "<tr class=".$class.">";
719            $html .= "<td class=kb-table-cell align=center><b>".$i.".</b></td>";
720            $html .= "<td class=kb-table-cell width=200><a href=\"?a=corp_detail&crp_id=".$row['crp_id']."\">".$corp->getName()."</a></td>";
721            $html .= "<td class=kb-table-cell align=center><b>".$row['cnt']."</b></td>";
722
723            $html .= "</tr>";
724            $i++;
725        }
726
727        $html .= "</table>";
728
729        return $html;
730    }
731}
732
733class TopShipList extends TopList
734{
735    function TopShipList()
736    {
737        $this->TopList();
738    }
739
740    function addInvolvedPilot($pilot)
741    {
742        $this->invplt_ = $pilot;
743    }
744
745    function addInvolvedCorp($corp)
746    {
747        $this->invcrp_ = $corp;
748    }
749
750    function addInvolvedAlliance($alliance)
751    {
752        $this->invall_ = $alliance;
753    }
754
755    function generate()
756    {
757        $sql = "select count(*) as cnt, ind.ind_shp_id as shp_id
758              from kb3_inv_detail ind
759              inner join kb3_ships shp on ( shp_id = ind.ind_shp_id )";
760
761        if ($this->invplt_)
762            $sql .= " inner join kb3_inv_plt inp
763                          on ( inp.inp_kll_id = ind.ind_kll_id
764                               and inp.inp_plt_id = ind.ind_plt_id
765                               and inp.inp_plt_id = ".$this->invplt_->getID().")";
766
767        if ($this->invcrp_)
768            $sql .= " inner join kb3_inv_crp inc
769                          on ( inc.inc_kll_id = ind.ind_kll_id
770                               and inc.inc_crp_id = ind.ind_crp_id
771                               and inc.inc_crp_id = ".$this->invcrp_->getID().")";
772
773        if ($this->invall_)
774            $sql .= " inner join kb3_inv_all ina
775                          on ( ina.ina_kll_id = ind.ind_kll_id
776                               and ina.ina_all_id = ind.ind_all_id
777                               and ina.ina_all_id = ".$this->invall_->getID().")";
778
779        $this->setSQLTop($sql);
780        $this->setSQLBottom(" and ind.ind_shp_id not in ( 6, 31 )
781                             and shp.shp_class != 17
782                             group by ind.ind_shp_id order by 1 desc
783                             limit 20");
784    }
785}
786
787class TopShipListTable
788{
789    function TopShipListTable($toplist)
790    {
791        $this->toplist_ = $toplist;
792    }
793
794    function generate()
795    {
796        $this->toplist_->generate();
797
798        $html .= "<table class=kb-table cellspacing=1>";
799        $html .= "<tr class=kb-table-header>";
800        $html .= "<td class=kb-table-cell align=center colspan=2>Ship</td>";
801        $html .= "<td class=kb-table-cell align=center width=60>Kills</td>";
802        $html .= "</tr>";
803
804        $odd = true;
805        while ($row = $this->toplist_->getRow())
806        {
807            $ship = new Ship($row['shp_id']);
808            $shipclass = $ship->getClass();
809            if ($odd)
810            {
811                $class = "kb-table-row-odd";
812                $odd = false;
813            }
814            else
815            {
816                $class = "kb-table-row-even";
817                $odd = true;
818            }
819            $html .= "<tr class=".$class.">";
820            $html .= "<td><img src=\"".$ship->getImage(32)."\"></td>";
821            $html .= "<td class=kb-table-cell width=200><b>".$ship->getName()."</b><br>".$shipclass->getName()."</td>";
822            $html .= "<td class=kb-table-cell align=center><b>".$row['cnt']."</b></td>";
823
824            $html .= "</tr>";
825        }
826
827        $html .= "</table>";
828
829        return $html;
830    }
831}
832
833class TopWeaponList extends TopList
834{
835    function TopWeaponList()
836    {
837        $this->TopList();
838    }
839
840    function addInvolvedPilot($pilot)
841    {
842        $this->invplt_ = $pilot;
843    }
844
845    function addInvolvedCorp($corp)
846    {
847        $this->invcrp_ = $corp;
848    }
849
850    function addInvolvedAlliance($alliance)
851    {
852        $this->invall_ = $alliance;
853    }
854
855    function generate()
856    {
857        $sql = "select count(*) as cnt, ind.ind_wep_id as itm_id
858              from kb3_inv_detail ind
859              inner join kb3_items itm on ( itm_id = ind.ind_wep_id )";
860
861        if ($this->invplt_)
862            $sql .= " inner join kb3_inv_plt inp
863                          on ( inp.inp_kll_id = ind.ind_kll_id
864                               and inp.inp_plt_id = ind.ind_plt_id
865                               and inp.inp_plt_id = ".$this->invplt_->getID().")";
866
867        if ($this->invcrp_)
868            $sql .= " inner join kb3_inv_crp inc
869                          on ( inc.inc_kll_id = ind.ind_kll_id
870                               and inc.inc_crp_id = ind.ind_crp_id
871                               and inc.inc_crp_id = ".$this->invcrp_->getID().")";
872
873        if ($this->invall_)
874            $sql .= " inner join kb3_inv_all ina
875                          on ( ina.ina_kll_id = ind.ind_kll_id
876                               and ina.ina_all_id = ind.ind_all_id
877                               and ina.ina_all_id = ".$this->invall_->getID().")";
878
879        $this->setSQLTop($sql);
880        $this->setSQLBottom(" and itm.itm_icon not in ( '1', 'icon_null' )
881                             and itm.itm_name != 'Unknown'
882                             group by ind.ind_wep_id order by 1 desc
883                             limit 20");
884    }
885}
886
887class TopWeaponListTable
888{
889    function TopWeaponListTable($toplist)
890    {
891        $this->toplist_ = $toplist;
892    }
893
894    function generate()
895    {
896        $this->toplist_->generate();
897
898        $html .= "<table class=kb-table cellspacing=1>";
899        $html .= "<tr class=kb-table-header>";
900        $html .= "<td class=kb-table-cell align=center colspan=2>Weapon</td>";
901        $html .= "<td class=kb-table-cell align=center width=60>Kills</td>";
902        $html .= "</tr>";
903
904        $odd = true;
905        while ($row = $this->toplist_->getRow())
906        {
907            $item = new Item($row['itm_id']);
908            if ($odd)
909            {
910                $class = "kb-table-row-odd";
911                $odd = false;
912            }
913            else
914            {
915                $class = "kb-table-row-even";
916                $odd = true;
917            }
918            $html .= "<tr class=".$class.">";
919            $html .= "<td>".$item->getIcon(32)."</td>";
920            $html .= "<td class=kb-table-cell width=200><b>".$item->getName()."</b></td>";
921            $html .= "<td class=kb-table-cell align=center><b>".$row['cnt']."</b></td>";
922
923            $html .= "</tr>";
924        }
925
926        $html .= "</table>";
927
928        return $html;
929    }
930}
931
932?>
Note: See TracBrowser for help on using the browser.