root/dev/mods/forum_post/class.killsummarytable.php @ 207

Revision 207, 16.1 KB (checked in by ralle030583, 13 years ago)

- added system search
- added 12 new ship Signatures (thx to Arthur Ffrub)
- removed again some not needed includes

Line 
1<?php
2require_once("common/includes/class.ship.php");
3
4class KillSummaryTable
5{
6    function KillSummaryTable($klist = null, $llist = null)
7    {
8        $this->klist_ = $klist;
9        $this->llist_ = $llist;
10
11        $this->verbose_ = false;
12        $this->filter_ = true;
13        $this->inv_crp_ = array();
14        $this->inv_all_ = array();
15    }
16
17    function setBreak($break)
18    {
19        $this->break_ = $break;
20    }
21
22    function setVerbose($verbose)
23    {
24        $this->verbose_ = $verbose;
25    }
26
27    function setFilter($filter)
28    {
29        $this->filter_ = $filter;
30    }
31
32    function getTotalKills()
33    {
34        return $this->tkcount_;
35    }
36
37    function getTotalLosses()
38    {
39        return $this->tlcount_;
40    }
41
42    function getTotalKillPoints()
43    {
44        return $this->tkpoints_;
45    }
46
47    function getTotalLossPoints()
48    {
49        return $this->tlpoints_;
50    }
51
52    function getTotalKillISK()
53    {
54        return $this->tkisk_;
55    }
56
57    function getTotalLossISK()
58    {
59        return $this->tlisk_;
60    }
61
62    function setView($string)
63    {
64        $this->view_ = $string;
65    }
66
67    function addInvolvedCorp($corp)
68    {
69        $this->inv_crp_[] = $corp->getID();
70        if ($this->inv_plt_ || $this->inv_all_)
71        {
72            $this->mixedinvolved_ = true;
73        }
74    }
75
76    function addInvolvedAlliance($alliance)
77    {
78        $this->inv_all_[] = $alliance->getID();
79        if ($this->inv_plt_ || $this->inv_crp_)
80        {
81            $this->mixedinvolved_ = true;
82        }
83    }
84
85    // do it faster, baby!
86    function getkills()
87    {
88        global $config;
89        if ($this->mixedinvolved_)
90        {
91            echo 'mode not supported<br>';
92            exit;
93        }
94
95        $this->entry_ = array();
96        // as there is no way to do this elegant in sql
97        // i'll keep it in php
98        $sql = "select scl_id, scl_class from kb3_ship_classes
99               where scl_class not in ('Drone','Unknown') order by scl_class";
100
101        $qry = new DBQuery();
102        $qry->execute($sql);
103        while ($row = $qry->getRow())
104        {
105            $this->entry_[$row['scl_class']] = array('id' => $row['scl_id'],
106                                                     'kills' => 0, 'kills_isk' => 0,
107                                                     'losses' => 0, 'losses_isk' => 0);
108        }
109
110        $sql = 'SELECT count(*) AS knb, scl_id, scl_class,';
111        if ($config->getConfig('ship_values'))
112        {
113            $sql .= ' sum(ifnull(ksv.shp_value,scl.scl_value)) AS kisk FROM kb3_kills kll
114                    INNER JOIN kb3_ships shp ON ( shp.shp_id = kll.kll_ship_id )
115                    left join kb3_ships_values ksv on (shp.shp_id = ksv.shp_id)';
116        }
117        else
118        {
119            $sql .= ' sum(scl.scl_value) AS kisk FROM kb3_kills kll
120                    INNER JOIN kb3_ships shp ON ( shp.shp_id = kll.kll_ship_id )';
121        }
122        $sql .= ' INNER JOIN kb3_ship_classes scl ON ( scl.scl_id = shp.shp_class )';
123
124        if ($this->inv_crp_)
125        {
126            $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 ) ';
127        }
128        elseif ($this->inv_all_)
129        {
130            $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 ) ';
131        }
132        $sql .= 'GROUP BY scl_class order by scl_class';
133
134        $qry = new DBQuery();
135        $qry->execute($sql);
136        while ($row = $qry->getRow())
137        {
138            $this->entry_[$row['scl_class']]['kills'] = $row['knb'];
139            $this->entry_[$row['scl_class']]['kills_isk'] = $row['kisk'];
140            $this->tkcount_ += $row['knb'];
141            $this->tkisk_ += $row['kisk'];
142        }
143
144        $sql = 'SELECT count(*) AS lnb, scl_id, scl_class,';
145        if ($config->getConfig('ship_values'))
146        {
147            $sql .= ' sum(ifnull(ksv.shp_value,scl.scl_value)) AS lisk FROM kb3_kills kll
148                    INNER JOIN kb3_ships shp ON ( shp.shp_id = kll.kll_ship_id )
149                    left join kb3_ships_values ksv on (shp.shp_id = ksv.shp_id)';
150        }
151        else
152        {
153            $sql .= ' sum(scl.scl_value) AS lisk FROM kb3_kills kll
154                    INNER JOIN kb3_ships shp ON ( shp.shp_id = kll.kll_ship_id )';
155        }
156        $sql .= ' INNER JOIN kb3_ship_classes scl ON ( scl.scl_id = shp.shp_class )';
157
158        if ($this->inv_crp_)
159        {
160            $sql .= ' where kll.kll_crp_id in ( '.join(',', $this->inv_crp_).' ) ';
161        }
162        elseif ($this->inv_all_)
163        {
164            $sql .= ' where kll.kll_all_id in ( '.join(',', $this->inv_all_).' ) ';
165        }
166        $sql .= 'GROUP BY scl_class order by scl_class';
167
168        $qry = new DBQuery();
169        $qry->execute($sql);
170        while ($row = $qry->getRow())
171        {
172            $this->entry_[$row['scl_class']]['losses'] = $row['lnb'];
173            $this->entry_[$row['scl_class']]['losses_isk'] =  $row['lisk'];
174
175            $this->tlcount_ += $row['lnb'];
176            $this->tlisk_ += $row['lisk'];
177        }
178    }
179
180    function generate()
181    {
182        if ($this->klist_)
183        {
184            $entry = array();
185            // build array
186            $sql = "select scl_id, scl_class
187                    from kb3_ship_classes
188                   where scl_class not in ( 'Drone', 'Unknown' )
189                  order by scl_class";
190
191            $qry = new DBQuery();
192            $qry->execute($sql) or die($qry->getErrorMsg());
193            while ($row = $qry->getRow())
194            {
195                if (!$row['scl_id'])
196                    continue;
197
198                $shipclass = new ShipClass($row['scl_id']);
199                $shipclass->setName($row['scl_class']);
200
201                $entry[$shipclass->getName()]['id'] = $row['scl_id'];
202                $entry[$shipclass->getName()]['kills'] = 0;
203                $entry[$shipclass->getName()]['kills_isk'] = 0;
204                $entry[$shipclass->getName()]['losses'] = 0;
205                $entry[$shipclass->getName()]['losses_isk'] = 0;
206            }
207            // kills
208            while ($kill = $this->klist_->getKill())
209            {
210                $classname = $kill->getVictimShipClassName();
211                $entry[$classname]['kills']++;
212                $entry[$classname]['kills_isk'] += $kill->getVictimShipValue();
213                $this->tkcount_++;
214                $this->tkisk_ += $kill->getVictimShipValue();
215            }
216            // losses
217            while ($kill = $this->llist_->getKill())
218            {
219                $classname = $kill->getVictimShipClassName();
220                $entry[$classname]['losses']++;
221                $entry[$classname]['losses_isk'] += $kill->getVictimShipValue();
222                $this->tlcount_++;
223                $this->tlisk_ += $kill->getVictimShipValue();
224            }
225        }
226        else
227        {
228            $this->getkills();
229            $entry = &$this->entry_;
230        }
231
232        $odd = false;
233        $prevdate = "";
234        $html .= "<table class=kb-subtable width=\"100%\" border=\"0\" cellspacing=0>";
235        if ($this->break_)
236            $html .= "<tr><td valign=top><table class=kb-table cellspacing=\"1\" width=\"100%\">";
237        $counter = 1;
238
239        if ($this->verbose_)
240        {
241            $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>";
242        }
243        else
244        {
245            $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>";
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            if ($this->verbose_)
288            {
289                $kclass .= "-bg";
290                $lclass .= "-bg";
291            }
292
293            $html .= "<tr class=".$class.">";
294
295            $qrystring = preg_replace("/&scl_id=([0-9]?[0-9])/", "", $_SERVER['QUERY_STRING']);
296            $qrystring = preg_replace("/&page=([0-9]?[0-9])/", "", $qrystring);
297            if ($this->view_)
298            {
299                $qrystring .= '&view='.$this->view_;
300            }
301            $html .= "<td class=kb-table-cell><b>";
302
303            if ($this->filter_) $html .= "<a class=kb-shipclass".$highlight." href=\"?".$qrystring."&scl_id=".$v['id']."\">";
304
305            $html .= $k;
306
307            if ($this->filter_) $html .= "</a>";
308
309            $html .= "</b></td>";
310
311            $html .= "<td class=".$kclass." align=center>".$v['kills']."</td>";
312            if ($this->verbose_)
313                $html .= "<td class=".$kclass." align=center>".round($v['kills_isk']/1000000, 2)."</td>";
314            $html .= "<td class=".$lclass." align=center>".$v['losses']."</td>";
315            if ($this->verbose_)
316                $html .= "<td class=".$lclass." align=center>".round($v['losses_isk']/1000000, 2)."</td>";
317
318            $html .= "</tr>";
319
320            $counter++;
321            $this->tkcount_ += $kcount;
322            $this->tlcount_ += $lcount;
323            $this->tkisk_ += $kisk;
324            $this->tlisk_ += $lisk;
325            $this->tkpoints_ += $kpoints;
326            $this->tlpoints_ += $lpoints;
327        }
328        if ($this->break_)
329            $html .= "</table></td>";
330
331        $html .= "</tr></table>";
332
333        if (config::get('summarytable_summary'))
334        {
335            $html .= '<table width=100% border=0 cellspacing=2>'
336                     .'<tr align=center><td width=51%><span align=right class="killcount">'
337                     .$this->tkcount_.' Ships killed ('.round($this->tkisk_/1000000, 2).'M ISK)</span></td><td width=49%><span class="losscount">'
338                     .$this->tlcount_.' Ships lost ('.round($this->tlisk_/1000000, 2).'M ISK)</span></td></tr></table>';
339        }
340        if ($_GET['scl_id'] != "")
341        {
342            $html .= "<table align=center><tr><td align=center valign=top class=weeknav>";
343            $qrystring = preg_replace("/&scl_id=([0-9]?[0-9])/", "", $_SERVER['QUERY_STRING']);
344            $html .= "[<a href=\"?".$qrystring."\">clear filter</a>]</td></tr></table>";
345        }
346
347        return $html;
348    }
349       
350            function forum()
351    {
352       
353        if ($this->klist_)
354        {
355            $entry = array();
356            // build array
357            $sql = "select scl_id, scl_class
358                    from kb3_ship_classes
359                   where scl_class not in ( 'Drone', 'Unknown' )
360                  order by scl_class";
361
362            $qry = new DBQuery();
363            $qry->execute($sql) or die($qry->getErrorMsg());
364            while ($row = $qry->getRow())
365            {
366                if (!$row['scl_id'])
367                    continue;
368
369                $shipclass = new ShipClass($row['scl_id']);
370                $shipclass->setName($row['scl_class']);
371
372                $entry[$shipclass->getName()]['id'] = $row['scl_id'];
373                $entry[$shipclass->getName()]['kills'] = 0;
374                $entry[$shipclass->getName()]['kills_isk'] = 0;
375                $entry[$shipclass->getName()]['losses'] = 0;
376                $entry[$shipclass->getName()]['losses_isk'] = 0;
377            }
378            // kills
379            while ($kill = $this->klist_->getKill())
380            {
381                $classname = $kill->getVictimShipClassName();
382                $entry[$classname]['kills']++;
383                $entry[$classname]['kills_isk'] += $kill->getVictimShipValue();
384                $this->tkcount_++;
385                $this->tkisk_ += $kill->getVictimShipValue();
386            }
387            // losses
388            while ($kill = $this->llist_->getKill())
389            {
390                $classname = $kill->getVictimShipClassName();
391                $entry[$classname]['losses']++;
392                $entry[$classname]['losses_isk'] += $kill->getVictimShipValue();
393                $this->tlcount_++;
394                $this->tlisk_ += $kill->getVictimShipValue();
395            }
396        }
397        else
398        {
399            $this->getkills();
400            $entry = &$this->entry_;
401        }
402
403                // Build our Post
404                $config = new config(KB_SITE);
405                $set_colours = unserialize($config->getConfig('forum_post_colours'));   //load colour settings
406                if(!is_array($set_colours)) { $set_colours = array(); }                                 // if the settings have been reset create an empty array so as not to brake the code later on
407                $set_styles = unserialize($config->getConfig('forum_post_styles'));             //load style settings
408                if(!is_array($set_styles)) { $set_styles = array(); }                                   // if the settings have been reset create an empty array so as not to brake the code later on
409                $set_isk = $config->getConfig('forum_post_isk',$_POST['isk']);                  // load isk setting
410               
411                //print_r($set_styles);
412        foreach ($entry as $k => $v)
413        {
414               
415                $class =  $k.$kclass;
416                $kills = $v['kills'];
417                        if($set_isk == "yes")
418                        {
419                        $kills_isk = "(".round($v['kills_isk']/1000000, 2)."M)"; 
420                        $loss_isk = "(".round($v['losses_isk']/1000000, 2)."M)";
421                        }
422                $loss = $v['losses'];
423                $close = "\r\n";
424                $spacer = " / "; 
425                if(array_key_exists(str_replace(" ","",$class),$set_colours))
426                {
427                $colour_open = "[".$set_colours[str_replace(" ","",$class)]."]";
428                $colour_close = "[/".$set_colours[str_replace(" ","",$class)]."]";
429                }
430                else
431                {
432                $colour_open = "";
433                $colour_close = "";
434                }
435                if(array_key_exists(str_replace(" ","",$class),$set_styles))
436                {
437                $style_open = "[".$set_styles[str_replace(" ","",$class)]."]";
438                $style_close = "[/".$set_styles[str_replace(" ","",$class)]."]";
439                }
440                else
441                {
442                $style_open = "";
443                $style_close = "";
444                }               
445                $order = $config->getConfig('forum_post_order');
446               
447                if($order == "first"){
448                $kills_list .= $colour_open . $style_open . $class . $spacer . $kills . $kills_isk . $spacer . $loss . $loss_isk . $style_close . $colour_close. $close;
449                }
450                else
451                {
452                $kills_list .= $colour_open . $style_open . $kills . $kills_isk . $spacer . $loss . $loss_isk . $spacer . $class  . $style_close . $colour_close. $close;
453                }
454            $counter++;
455            $this->tkcount_ += $kcount;
456            $this->tlcount_ += $lcount;
457            $this->tkisk_ += $kisk;
458            $this->tlisk_ += $lisk;
459            $this->tkpoints_ += $kpoints;
460            $this->tlpoints_ += $lpoints;
461        }
462                $html.= "Class / Kills";
463                        if($set_isk == "yes")
464                        { 
465                        $html .= "(kills isk)";
466                        }
467                $html .="/ losses ";
468                        if($set_isk == "yes")
469                        { 
470                        $html .= "(losses isk)";
471                        }
472                $html .="\r\n";
473                $html .= $kills_list;
474                $html .= "Total / ".$this->tkcount_;
475                $html .= " (".round($this->tkisk_/1000000, 2)."M)";
476                $html .= " / ".$this->tlcount_;
477                $html .= " (".round($this->tlisk_/1000000, 2)."M)";
478        return $html;
479    }
480}
481?>
Note: See TracBrowser for help on using the browser.