root/dev/common/includes/class.toplist.php @ 200

Revision 200, 27.3 KB (checked in by ralle030583, 15 years ago)

bug in toplist.class ... made a stupid error which killed the loose page and some awards... fixed now

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