root/dev/common/includes/class.killsummarytable.php @ 281

Revision 281, 11.4 KB (checked in by ralle030583, 15 years ago)

- redesign of public mode, so only choosen summarytables are changed not all
- rowcount summarytables increased setBreak(5)-> setBreak(6)

Line 
1<?php
2require_once("class.ship.php");
3
4class KillSummaryTable
5{
6    function KillSummaryTable($klist = null, $llist = null)
7    {
8        $this->klist_ = $klist;
9            $this->llist_ = $llist;
10        $this->verbose_ = false;
11        $this->filter_ = true;
12        $this->inv_crp_ = array();
13        $this->inv_all_ = array();
14    }
15
16    function setBreak($break)
17    {
18        $this->break_ = $break;
19    }
20
21    function setVerbose($verbose)
22    {
23        $this->verbose_ = $verbose;
24    }
25
26    function setFilter($filter)
27    {
28        $this->filter_ = $filter;
29    }
30
31    function getTotalKills()
32    {
33        return $this->tkcount_;
34    }
35
36    function getTotalLosses()
37    {
38        return $this->tlcount_;
39    }
40
41    function getTotalKillPoints()
42    {
43        return $this->tkpoints_;
44    }
45
46    function getTotalLossPoints()
47    {
48        return $this->tlpoints_;
49    }
50
51    function getTotalKillISK()
52    {
53        return $this->tkisk_;
54    }
55
56    function getTotalLossISK()
57    {
58        return $this->tlisk_;
59    }
60
61    function setView($string)
62    {
63        $this->view_ = $string;
64    }
65
66    function addInvolvedCorp($corp)
67    {
68        $this->inv_crp_[] = $corp->getID();
69        if ($this->inv_plt_ || $this->inv_all_)
70        {
71            $this->mixedinvolved_ = true;
72        }
73    }
74
75    function addInvolvedAlliance($alliance)
76    {
77        $this->inv_all_[] = $alliance->getID();
78        if ($this->inv_plt_ || $this->inv_crp_)
79        {
80            $this->mixedinvolved_ = true;
81        }
82    }
83
84    // do it faster, baby!
85    function getkills()
86    {
87        if ($this->mixedinvolved_)
88        {
89            echo 'mode not supported<br>';
90            exit;
91        }
92
93        $this->entry_ = array();
94        // as there is no way to do this elegant in sql
95        // i'll keep it in php
96        $sql = "select scl_id, scl_class from kb3_ship_classes
97               where scl_class not in ('Drone','Unknown') order by scl_class";
98
99        $qry = new DBQuery();
100        $qry->execute($sql);
101        while ($row = $qry->getRow())
102        {
103            $this->entry_[$row['scl_class']] = array('id' => $row['scl_id'],
104                                                     'kills' => 0, 'kills_isk' => 0,
105                                                     'losses' => 0, 'losses_isk' => 0);
106        }
107
108        $sql = 'SELECT count(*) AS knb, scl_id, scl_class,';
109        if (config::get('ship_values'))
110        {
111            $sql .= ' sum(ifnull(ksv.shp_value,scl.scl_value)) AS kisk FROM kb3_kills kll
112                    INNER JOIN kb3_ships shp ON ( shp.shp_id = kll.kll_ship_id )
113                    left join kb3_ships_values ksv on (shp.shp_id = ksv.shp_id)';
114        }
115        else
116        {
117            $sql .= ' sum(scl.scl_value) AS kisk FROM kb3_kills kll
118                    INNER JOIN kb3_ships shp ON ( shp.shp_id = kll.kll_ship_id )';
119        }
120        $sql .= ' INNER JOIN kb3_ship_classes scl ON ( scl.scl_id = shp.shp_class )';
121
122        if ($this->inv_crp_)
123        {
124            $sql .= ' inner join kb3_inv_crp inc on ( inc.inc_crp_id in ( '.join(',', $this->inv_crp_).' ) and kll.kll_id = inc.inc_kll_id ) ';
125        }
126        elseif ($this->inv_all_)
127        {
128            $sql .= ' inner join kb3_inv_all ina on ( ina.ina_all_id in ( '.join(',', $this->inv_all_).' ) and kll.kll_id = ina.ina_kll_id ) ';
129        }
130        $sql .= 'GROUP BY scl_class order by scl_class';
131
132        $qry = new DBQuery();
133        $qry->execute($sql);
134        while ($row = $qry->getRow())
135        {
136            $this->entry_[$row['scl_class']]['kills'] = $row['knb'];
137            $this->entry_[$row['scl_class']]['kills_isk'] = $row['kisk'];
138            $this->tkcount_ += $row['knb'];
139            $this->tkisk_ += $row['kisk'];
140        }
141
142     
143        $sql = 'SELECT count(*) AS lnb, scl_id, scl_class,';
144        if (config::get('ship_values'))
145        {
146            $sql .= ' sum(ifnull(ksv.shp_value,scl.scl_value)) AS lisk FROM kb3_kills kll
147                    INNER JOIN kb3_ships shp ON ( shp.shp_id = kll.kll_ship_id )
148                    left join kb3_ships_values ksv on (shp.shp_id = ksv.shp_id)';
149        }
150        else
151        {
152            $sql .= ' sum(scl.scl_value) AS lisk FROM kb3_kills kll
153                    INNER JOIN kb3_ships shp ON ( shp.shp_id = kll.kll_ship_id )';
154        }
155        $sql .= ' INNER JOIN kb3_ship_classes scl ON ( scl.scl_id = shp.shp_class )';
156
157        if ($this->inv_crp_)
158        {
159            $sql .= ' where kll.kll_crp_id in ( '.join(',', $this->inv_crp_).' ) ';
160        }
161        elseif ($this->inv_all_)
162        {
163            $sql .= ' where kll.kll_all_id in ( '.join(',', $this->inv_all_).' ) ';
164        }
165        $sql .= 'GROUP BY scl_class order by scl_class';
166
167        $qry = new DBQuery();
168        $qry->execute($sql);
169        while ($row = $qry->getRow())
170        {
171            $this->entry_[$row['scl_class']]['losses'] = $row['lnb'];
172            $this->entry_[$row['scl_class']]['losses_isk'] =  $row['lisk'];
173
174            $this->tlcount_ += $row['lnb'];
175            $this->tlisk_ += $row['lisk'];
176        }
177    }
178
179    function generate()
180    {
181        if ($this->klist_)
182        {
183            $entry = array();
184            // build array
185            $sql = "select scl_id, scl_class
186                    from kb3_ship_classes
187                   where scl_class not in ( 'Drone', 'Unknown' )
188                  order by scl_class";
189
190            $qry = new DBQuery();
191            $qry->execute($sql) or die($qry->getErrorMsg());
192            while ($row = $qry->getRow())
193            {
194                if (!$row['scl_id'])
195                    continue;
196
197                $shipclass = new ShipClass($row['scl_id']);
198                $shipclass->setName($row['scl_class']);
199
200                $entry[$shipclass->getName()]['id'] = $row['scl_id'];
201                $entry[$shipclass->getName()]['kills'] = 0;
202                $entry[$shipclass->getName()]['kills_isk'] = 0;
203                $entry[$shipclass->getName()]['losses'] = 0;
204                $entry[$shipclass->getName()]['losses_isk'] = 0;
205            }
206            // kills
207            while ($kill = $this->klist_->getKill())
208            {
209                $classname = $kill->getVictimShipClassName();
210                $entry[$classname]['kills']++;
211                $entry[$classname]['kills_isk'] += $kill->getVictimShipValue();
212                $this->tkcount_++;
213                $this->tkisk_ += $kill->getVictimShipValue();
214            }
215            // losses
216            while ($kill = $this->llist_->getKill())
217            {
218                $classname = $kill->getVictimShipClassName();
219                $entry[$classname]['losses']++;
220                $entry[$classname]['losses_isk'] += $kill->getVictimShipValue();
221                $this->tlcount_++;
222                $this->tlisk_ += $kill->getVictimShipValue();
223            }
224        }
225        else
226        {
227            $this->getkills();
228            $entry = &$this->entry_;
229        }
230
231        $odd = false;
232        $prevdate = "";
233        $html .= "<table class=kb-subtable width=\"100%\" border=\"0\" cellspacing=0>";
234        if ($this->break_)
235            $html .= "<tr><td valign=top><table class=kb-table cellspacing=\"1\" width=\"100%\">";
236        $counter = 1;
237
238        if ($this->verbose_) 
239        {
240            $header = "<tr class=kb-table-header><td class=kb-table-cell width=110>Ship class</td><td class=kb-table-cell width=60 align=center>Kills</td><td class=kb-table-cell width=60 align=center>ISK (M)</td><td class=kb-table-cell width=60 align=center>Losses</td><td class=kb-table-cell width=60 align=center>ISK (M)</td></tr>";
241        }
242        else
243        {
244            $header = "<tr class=kb-table-header><td class=kb-table-cell width=110>Ship class</td><td class=kb-table-cell width=30 align=center>K</td><td class=kb-table-cell width=30 align=center>L</td></tr>";
245        }
246       
247        $html .= $header;
248
249        foreach ($entry as $k => $v)
250        {
251            if (!$v['id'] || $v['id'] == 3)
252                continue;
253            if ($this->break_ && $counter > $this->break_)
254            {
255                $html .= "</table></td>";
256                $html .= "<td valign=top><table class=kb-table cellspacing=\"1\">";
257                $html .= $header;
258                $counter = 1;
259            }
260
261            if (!$odd)
262            {
263                $odd = true;
264                $class = 'kb-table-row-odd';
265            }
266            else
267            {
268                $odd = false;
269                $class = 'kb-table-row-even';
270            }
271
272            if ($_GET['scl_id'] != "" && $v['id'] == $_GET['scl_id'])
273                $highlight = "-hl";
274            else
275                $highlight = "";
276
277            if ($v['kills'] == 0)
278                $kclass = "kl-kill-null";
279            else
280                $kclass = "kl-kill";
281
282            if ($v['losses'] == 0)
283                $lclass = "kl-loss-null";
284            else
285                $lclass = "kl-loss";
286
287            $html .= "<tr class=".$class.">";
288
289            $qrystring = preg_replace("/&scl_id=([0-9]?[0-9])/", "", $_SERVER['QUERY_STRING']);
290            $qrystring = preg_replace("/&page=([0-9]?[0-9])/", "", $qrystring);
291            if ($this->view_)
292            {
293                $qrystring .= '&view='.$this->view_;
294            }
295            $html .= "<td class=kb-table-cell><b>";
296
297            if ($this->filter_) $html .= "<a class=kb-shipclass".$highlight." href=\"?".$qrystring."&scl_id=".$v['id']."\">";
298
299            $html .= $k;
300
301            if ($this->filter_) $html .= "</a>";
302
303            $html .= "</b></td>";
304
305            $html .= "<td class=".$kclass." align=center>".$v['kills']."</td>";
306            if ($this->verbose_)
307                $html .= "<td class=".$kclass." align=center>".round($v['kills_isk']/1000000, 2)."</td>";
308           
309            $html .= "<td class=".$lclass." align=center>".$v['losses']."</td>";
310                if ($this->verbose_)
311                    $html .= "<td class=".$lclass." align=center>".round($v['losses_isk']/1000000, 2)."</td>";
312
313            $html .= "</tr>";
314
315            $counter++;
316           
317            $this->tkcount_ += $kcount;
318            $this->tkisk_ += $kisk;
319            $this->tkpoints_ += $kpoints;     
320            $this->tlcount_ += $lcount;
321            $this->tlisk_ += $lisk;
322            $this->tlpoints_ += $lpoints;
323        }
324        if ($this->break_)
325            $html .= "</table></td>";
326
327        $html .= "</tr></table>";
328
329        if (config::get('summarytable_summary'))
330        {
331            $html .= '<table width=100% border=0 cellspacing=2>'
332                     .'<tr align=center><td width=51%><span align=right class="killcount">'
333                     .$this->tkcount_.' Ships killed ('.round($this->tkisk_/1000000, 2).'M ISK)</span></td><td width=49%><span class="losscount">'.$this->tlcount_.' Ships lost ('.round($this->tlisk_/1000000, 2).'M ISK)</span></td></tr></table>';
334        }
335       
336        if ($_GET['scl_id'] != "")
337        {
338            $html .= "<table align=center><tr><td align=center valign=top class=weeknav>";
339            $qrystring = preg_replace("/&scl_id=([0-9]?[0-9])/", "", $_SERVER['QUERY_STRING']);
340            $html .= "[<a href=\"?".$qrystring."\">clear filter</a>]</td></tr></table>";
341        }
342
343        return $html;
344    }
345}
346?>
Note: See TracBrowser for help on using the browser.