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

Revision 212, 16.0 KB (checked in by ralle030583, 13 years ago)

- replaced $config->getConfig with config::getconfig so we havent a mix in all files<br>
- added valing='top' to award boxes to make the awards nice in board with not many pilots<br>
- removed not needed includes<br>
- added event 'killmail_delete' which is called before real delete of a killmail<br>
- admin can see classified system in the killmaildetails

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        if ($this->mixedinvolved_)
89        {
90            echo 'mode not supported<br>';
91            exit;
92        }
93
94        $this->entry_ = array();
95        // as there is no way to do this elegant in sql
96        // i'll keep it in php
97        $sql = "select scl_id, scl_class from kb3_ship_classes
98               where scl_class not in ('Drone','Unknown') order by scl_class";
99
100        $qry = new DBQuery();
101        $qry->execute($sql);
102        while ($row = $qry->getRow())
103        {
104            $this->entry_[$row['scl_class']] = array('id' => $row['scl_id'],
105                                                     'kills' => 0, 'kills_isk' => 0,
106                                                     'losses' => 0, 'losses_isk' => 0);
107        }
108
109        $sql = 'SELECT count(*) AS knb, scl_id, scl_class,';
110        if (config::getConfig('ship_values'))
111        {
112            $sql .= ' sum(ifnull(ksv.shp_value,scl.scl_value)) AS kisk FROM kb3_kills kll
113                    INNER JOIN kb3_ships shp ON ( shp.shp_id = kll.kll_ship_id )
114                    left join kb3_ships_values ksv on (shp.shp_id = ksv.shp_id)';
115        }
116        else
117        {
118            $sql .= ' sum(scl.scl_value) AS kisk FROM kb3_kills kll
119                    INNER JOIN kb3_ships shp ON ( shp.shp_id = kll.kll_ship_id )';
120        }
121        $sql .= ' INNER JOIN kb3_ship_classes scl ON ( scl.scl_id = shp.shp_class )';
122
123        if ($this->inv_crp_)
124        {
125            $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 ) ';
126        }
127        elseif ($this->inv_all_)
128        {
129            $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 ) ';
130        }
131        $sql .= 'GROUP BY scl_class order by scl_class';
132
133        $qry = new DBQuery();
134        $qry->execute($sql);
135        while ($row = $qry->getRow())
136        {
137            $this->entry_[$row['scl_class']]['kills'] = $row['knb'];
138            $this->entry_[$row['scl_class']]['kills_isk'] = $row['kisk'];
139            $this->tkcount_ += $row['knb'];
140            $this->tkisk_ += $row['kisk'];
141        }
142
143        $sql = 'SELECT count(*) AS lnb, scl_id, scl_class,';
144        if (config::getConfig('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        $html .= $header;
247
248        foreach ($entry as $k => $v)
249        {
250            if (!$v['id'] || $v['id'] == 3)
251                continue;
252            if ($this->break_ && $counter > $this->break_)
253            {
254                $html .= "</table></td>";
255                $html .= "<td valign=top><table class=kb-table cellspacing=\"1\">";
256                $html .= $header;
257                $counter = 1;
258            }
259
260            if (!$odd)
261            {
262                $odd = true;
263                $class = 'kb-table-row-odd';
264            }
265            else
266            {
267                $odd = false;
268                $class = 'kb-table-row-even';
269            }
270
271            if ($_GET['scl_id'] != "" && $v['id'] == $_GET['scl_id'])
272                $highlight = "-hl";
273            else
274                $highlight = "";
275
276            if ($v['kills'] == 0)
277                $kclass = "kl-kill-null";
278            else
279                $kclass = "kl-kill";
280
281            if ($v['losses'] == 0)
282                $lclass = "kl-loss-null";
283            else
284                $lclass = "kl-loss";
285
286            if ($this->verbose_)
287            {
288                $kclass .= "-bg";
289                $lclass .= "-bg";
290            }
291
292            $html .= "<tr class=".$class.">";
293
294            $qrystring = preg_replace("/&scl_id=([0-9]?[0-9])/", "", $_SERVER['QUERY_STRING']);
295            $qrystring = preg_replace("/&page=([0-9]?[0-9])/", "", $qrystring);
296            if ($this->view_)
297            {
298                $qrystring .= '&view='.$this->view_;
299            }
300            $html .= "<td class=kb-table-cell><b>";
301
302            if ($this->filter_) $html .= "<a class=kb-shipclass".$highlight." href=\"?".$qrystring."&scl_id=".$v['id']."\">";
303
304            $html .= $k;
305
306            if ($this->filter_) $html .= "</a>";
307
308            $html .= "</b></td>";
309
310            $html .= "<td class=".$kclass." align=center>".$v['kills']."</td>";
311            if ($this->verbose_)
312                $html .= "<td class=".$kclass." align=center>".round($v['kills_isk']/1000000, 2)."</td>";
313            $html .= "<td class=".$lclass." align=center>".$v['losses']."</td>";
314            if ($this->verbose_)
315                $html .= "<td class=".$lclass." align=center>".round($v['losses_isk']/1000000, 2)."</td>";
316
317            $html .= "</tr>";
318
319            $counter++;
320            $this->tkcount_ += $kcount;
321            $this->tlcount_ += $lcount;
322            $this->tkisk_ += $kisk;
323            $this->tlisk_ += $lisk;
324            $this->tkpoints_ += $kpoints;
325            $this->tlpoints_ += $lpoints;
326        }
327        if ($this->break_)
328            $html .= "</table></td>";
329
330        $html .= "</tr></table>";
331
332        if (config::get('summarytable_summary'))
333        {
334            $html .= '<table width=100% border=0 cellspacing=2>'
335                     .'<tr align=center><td width=51%><span align=right class="killcount">'
336                     .$this->tkcount_.' Ships killed ('.round($this->tkisk_/1000000, 2).'M ISK)</span></td><td width=49%><span class="losscount">'
337                     .$this->tlcount_.' Ships lost ('.round($this->tlisk_/1000000, 2).'M ISK)</span></td></tr></table>';
338        }
339        if ($_GET['scl_id'] != "")
340        {
341            $html .= "<table align=center><tr><td align=center valign=top class=weeknav>";
342            $qrystring = preg_replace("/&scl_id=([0-9]?[0-9])/", "", $_SERVER['QUERY_STRING']);
343            $html .= "[<a href=\"?".$qrystring."\">clear filter</a>]</td></tr></table>";
344        }
345
346        return $html;
347    }
348       
349            function forum()
350    {
351       
352        if ($this->klist_)
353        {
354            $entry = array();
355            // build array
356            $sql = "select scl_id, scl_class
357                    from kb3_ship_classes
358                   where scl_class not in ( 'Drone', 'Unknown' )
359                  order by scl_class";
360
361            $qry = new DBQuery();
362            $qry->execute($sql) or die($qry->getErrorMsg());
363            while ($row = $qry->getRow())
364            {
365                if (!$row['scl_id'])
366                    continue;
367
368                $shipclass = new ShipClass($row['scl_id']);
369                $shipclass->setName($row['scl_class']);
370
371                $entry[$shipclass->getName()]['id'] = $row['scl_id'];
372                $entry[$shipclass->getName()]['kills'] = 0;
373                $entry[$shipclass->getName()]['kills_isk'] = 0;
374                $entry[$shipclass->getName()]['losses'] = 0;
375                $entry[$shipclass->getName()]['losses_isk'] = 0;
376            }
377            // kills
378            while ($kill = $this->klist_->getKill())
379            {
380                $classname = $kill->getVictimShipClassName();
381                $entry[$classname]['kills']++;
382                $entry[$classname]['kills_isk'] += $kill->getVictimShipValue();
383                $this->tkcount_++;
384                $this->tkisk_ += $kill->getVictimShipValue();
385            }
386            // losses
387            while ($kill = $this->llist_->getKill())
388            {
389                $classname = $kill->getVictimShipClassName();
390                $entry[$classname]['losses']++;
391                $entry[$classname]['losses_isk'] += $kill->getVictimShipValue();
392                $this->tlcount_++;
393                $this->tlisk_ += $kill->getVictimShipValue();
394            }
395        }
396        else
397        {
398            $this->getkills();
399            $entry = &$this->entry_;
400        }
401
402                // Build our Post
403                $set_colours = unserialize(config::getConfig('forum_post_colours'));    //load colour settings
404                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
405                $set_styles = unserialize(config::getConfig('forum_post_styles'));              //load style settings
406                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
407                $set_isk = config::getConfig('forum_post_isk',$_POST['isk']);                   // load isk setting
408               
409                //print_r($set_styles);
410        foreach ($entry as $k => $v)
411        {
412               
413                $class =  $k.$kclass;
414                $kills = $v['kills'];
415                        if($set_isk == "yes")
416                        {
417                        $kills_isk = "(".round($v['kills_isk']/1000000, 2)."M)"; 
418                        $loss_isk = "(".round($v['losses_isk']/1000000, 2)."M)";
419                        }
420                $loss = $v['losses'];
421                $close = "\r\n";
422                $spacer = " / "; 
423                if(array_key_exists(str_replace(" ","",$class),$set_colours))
424                {
425                $colour_open = "[".$set_colours[str_replace(" ","",$class)]."]";
426                $colour_close = "[/".$set_colours[str_replace(" ","",$class)]."]";
427                }
428                else
429                {
430                $colour_open = "";
431                $colour_close = "";
432                }
433                if(array_key_exists(str_replace(" ","",$class),$set_styles))
434                {
435                $style_open = "[".$set_styles[str_replace(" ","",$class)]."]";
436                $style_close = "[/".$set_styles[str_replace(" ","",$class)]."]";
437                }
438                else
439                {
440                $style_open = "";
441                $style_close = "";
442                }               
443                $order = config::getConfig('forum_post_order');
444               
445                if($order == "first"){
446                $kills_list .= $colour_open . $style_open . $class . $spacer . $kills . $kills_isk . $spacer . $loss . $loss_isk . $style_close . $colour_close. $close;
447                }
448                else
449                {
450                $kills_list .= $colour_open . $style_open . $kills . $kills_isk . $spacer . $loss . $loss_isk . $spacer . $class  . $style_close . $colour_close. $close;
451                }
452            $counter++;
453            $this->tkcount_ += $kcount;
454            $this->tlcount_ += $lcount;
455            $this->tkisk_ += $kisk;
456            $this->tlisk_ += $lisk;
457            $this->tkpoints_ += $kpoints;
458            $this->tlpoints_ += $lpoints;
459        }
460                $html.= "Class / Kills";
461                        if($set_isk == "yes")
462                        { 
463                        $html .= "(kills isk)";
464                        }
465                $html .="/ losses ";
466                        if($set_isk == "yes")
467                        { 
468                        $html .= "(losses isk)";
469                        }
470                $html .="\r\n";
471                $html .= $kills_list;
472                $html .= "Total / ".$this->tkcount_;
473                $html .= " (".round($this->tkisk_/1000000, 2)."M)";
474                $html .= " / ".$this->tlcount_;
475                $html .= " (".round($this->tlisk_/1000000, 2)."M)";
476        return $html;
477    }
478}
479?>
Note: See TracBrowser for help on using the browser.