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

Revision 392, 27.0 KB (checked in by kovell, 13 years ago)

Fixes: rss feed no longer shows classified kills, default banner corrected. Derelict code removed. Code streamlined. Summary tables moved to a template.

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