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

Revision 199, 27.2 KB (checked in by ralle030583, 16 years ago)

- fixed a small bug with cause SQL Errors when you have settings to avoid podkills and try to add Victim shipclasses at same time
- added new statistics "Destroyed/Lost? Ship(types)" to alliance_detail.php for Corps and Pilots

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