root/dev/common/class.killlist.php @ 10

Revision 10, 13.7 KB (checked in by exi, 14 years ago)

Changed portrait generation to cache the pictures from img.eve.is
Changed about-page-spacing
Changed MapView? to use PNG instead of GIF
Added BugCompat? to MapView? for the GD<>imagefilledellipse()-Issue
Added Code for NPC-Corphandling (Corps have to be added manually)
Changed Raw-Killmail Window slightly
Added Killmail-Delete option within the killmail itself
Fixed privilege bug between admin and superadmin
Removed the need to enter the postpassword if you're logged in as admin
Changed coding style to Allman/BSD in all touched files
Various small changes i cant remember

Line 
1<?php
2require_once("class.kill.php");
3require_once("class.profiler.php");
4require_once("class.pagesplitter.php");
5
6class KillList
7{
8    function KillList()
9    {
10        $this->qry_ = new DBQuery();
11        $this->killpointer_ = 0;
12        $this->kills_ = 0;
13        $this->losses_ = 0;
14        $this->killisk_ = 0;
15        $this->lossisk_ = 0;
16        $this->exclude_scl_ = array();
17        $this->vic_scl_id_ = array();
18        $this->regions_ = array();
19        $this->groupby_ = array();
20        $this->offset_ = 0;
21        $this->killcounter_ = 0;
22        $this->realkillcounter_ = 0;
23        $this->ordered_ = false;
24    }
25
26    function execQuery()
27    {
28        if (!$this->qry_->executed_)
29        {
30            if (!count($this->groupby_))
31                $this->sql_ = "select kll.kll_id, kll.kll_timestamp, plt.plt_name,
32                                crp.crp_name, ali.all_name, kll.kll_ship_id,
33                                kll.kll_system_id, kll.kll_ship_id,
34                                kll.kll_victim_id, plt.plt_externalid,
35                                kll.kll_crp_id, kll.kll_points,
36                                shp.shp_class, shp.shp_name,
37                                shp.shp_externalid,
38                                scl.scl_id, scl.scl_class, scl.scl_value,
39                                sys.sys_name, sys.sys_sec,
40                                fbplt.plt_name as fbplt_name,
41                                fbcrp.crp_name as fbcrp_name";
42
43            if (count($this->groupby_))
44            {
45                $this->sql_ .= "select count(*) as cnt, " . implode(",", $this->groupby_);
46            }
47
48            $this->sql_ .= "    from kb3_kills kll
49                           inner join kb3_ships shp
50                              on ( shp.shp_id = kll.kll_ship_id )
51                           inner join kb3_ship_classes scl
52                              on ( scl.scl_id = shp.shp_class )
53                           inner join kb3_pilots plt
54                              on ( plt.plt_id = kll.kll_victim_id )
55                           inner join kb3_corps crp
56                              on ( crp.crp_id = kll.kll_crp_id )
57                           inner join kb3_alliances ali
58                              on ( ali.all_id = kll.kll_all_id )
59                           inner join kb3_pilots fbplt
60                              on ( fbplt.plt_id = kll.kll_fb_plt_id )
61                           inner join kb3_corps fbcrp
62                              on ( fbcrp.crp_id = kll.kll_fb_crp_id )
63                           inner join kb3_systems sys
64                              on ( sys.sys_id = kll.kll_system_id )";
65            // involved filter
66            if (! $this->mixedinvolved_)
67            {
68                if ($this->inv_plt_)
69                    $this->sql_ .= " inner join kb3_inv_plt inp
70                               on ( inp.inp_plt_id in ( " . substr($this->inv_plt_, 0, strlen($this->inv_plt_) - 2) . " ) and kll.kll_id = inp.inp_kll_id ) ";
71                if ($this->inv_crp_)
72                    $this->sql_ .= " inner join kb3_inv_crp inc
73                              on ( inc.inc_crp_id in ( " . substr($this->inv_crp_, 0, strlen($this->inv_crp_) - 2) . " ) and kll.kll_id = inc.inc_kll_id ) ";
74                if ($this->inv_all_)
75                    $this->sql_ .= " inner join kb3_inv_all ina
76                              on ( ina.ina_all_id in ( " . substr($this->inv_all_, 0, strlen($this->inv_all_) - 2) . " ) and kll.kll_id = ina.ina_kll_id ) ";
77            }
78            else
79            {
80                $this->sql_ .= " <ph> ";
81            }
82            // echo $this->sql_;
83            // regions
84            if (count($this->regions_))
85            {
86                $this->sql_ .= " inner join kb3_constellations con
87                              on ( con.con_id = sys.sys_con_id )
88                           inner join kb3_regions reg
89                              on ( reg.reg_id = con.con_reg_id
90                                   and reg.reg_id in ( " . implode($this->regions_, ",") . " ) )";
91            }
92            // victim filter
93            if ($this->mixedvictims_)
94            {
95                $this->sql_ .= " and ( 1 = 0 ";
96                $op = "or";
97            }
98            else $op = "and";
99
100            if ($this->vic_plt_)
101                $this->sql_ .= " " . $op . " kll.kll_victim_id in ( " . substr($this->vic_plt_, 0, strlen($this->vic_plt_) - 2) . " )";
102            if ($this->vic_crp_)
103                $this->sql_ .= " " . $op . " kll.kll_crp_id in ( " . substr($this->vic_crp_, 0, strlen($this->vic_crp_) - 2) . " )";
104            if ($this->vic_all_)
105                $this->sql_ .= " " . $op . " kll.kll_all_id in ( " . substr($this->vic_all_, 0, strlen($this->vic_all_) - 2) . " )";
106
107            if ($this->mixedvictims_)
108                $this->sql_ .= " ) ";
109            // echo $this->sql_;
110            // ship filter
111            if (count($this->exclude_scl_))
112            {
113                $this->sql_ .= " and scl.scl_id not in ( " . implode(",", $this->exclude_scl_) . " )";
114            }
115            if (count($this->vic_scl_id_))
116            {
117                $this->sql_ .= " and scl.scl_id in ( " . implode(",", $this->vic_scl_id_) . " )";
118            }
119            // related
120            if ($this->related_)
121            {
122                $rqry = new DBQuery();
123                $rsql = "select kll_timestamp, kll_system_id
124                     from kb3_kills
125                    where kll_id = " . $this->related_;
126
127                $rqry->execute($rsql) or die($rqry->getErrorMsg());
128                $rrow = $rqry->getRow();
129
130                $this->sql_ .= " and kll.kll_system_id = " . $rrow['kll_system_id'] . "
131                           and kll.kll_timestamp <=
132                               date_add( '" . $rrow['kll_timestamp'] . "', INTERVAL '15:0' MINUTE_SECOND )
133                           and kll.kll_timestamp >=
134                               date_sub( '" . $rrow['kll_timestamp'] . "', INTERVAL '15:0' MINUTE_SECOND )";
135            }
136            // timeframe
137            if ($this->timeframe_)
138                $this->sql_ .= $this->timeframe_;
139
140            if (!strpos($this->sql_, " join ") && !$this->mixedinvolved_)
141                $this->sqlhead_ .= " where 1 = 1";
142
143            if ($this->mixedinvolved_)
144            {
145                if ($this->inv_plt_)
146                {
147                    $replace = " inner join kb3_inv_plt inp
148                            on ( inp.inp_plt_id in ( " . substr($this->inv_plt_, 0, strlen($this->inv_plt_) - 2) . " ) and kll.kll_id = inp.inp_kll_id ) ";
149                    $psql = str_replace("<ph>", $replace, $this->sql_);
150                }
151                if ($this->inv_crp_)
152                {
153                    $replace = " inner join kb3_inv_crp inc
154                            on ( inc.inc_crp_id in ( " . substr($this->inv_crp_, 0, strlen($this->inv_crp_) - 2) . " ) and kll.kll_id = inc.inc_kll_id ) ";
155                    $csql = str_replace("<ph>", $replace, $this->sql_);
156                }
157                if ($this->inv_all_)
158                {
159                    $replace = " inner join kb3_inv_all ina
160                            on ( ina.ina_all_id in ( " . substr($this->inv_all_, 0, strlen($this->inv_all_) - 2) . " ) and kll.kll_id = ina.ina_kll_id ) ";
161                    $asql = str_replace("<ph>", $replace, $this->sql_);
162                }
163
164                if ($psql)
165                    $nsql = $psql . " union ";
166                if ($csql)
167                    $nsql .= $csql . " union ";
168                if ($asql)
169                    $nsql .= $asql;
170
171                $this->sql_ = $nsql;
172            }
173            // group by
174            if ($this->groupby_) $this->sql_ .= " group by " . implode(",", $this->groupby_);
175            // order/limit
176            if ($this->ordered_)
177            {
178                if (!$this->orderby_) $this->sql_ .= " order by kll_timestamp desc";
179                else $this->sql_ .= " order by " . $this->orderby_;
180            }
181            if ($this->limit_) $this->sql_ .= " limit " . $this->offset_ . ", " . $this->limit_;
182            // echo $this->sql_."<p>";
183            $this->qry_->execute($this->sql_);
184        }
185    }
186
187    function getRow()
188    {
189        $this->execQuery();
190        if ($this->plimit_ && $this->killcounter_ >= $this->plimit_)
191        {
192            // echo $this->plimit_." ".$this->killcounter_;
193            return null;
194        }
195
196        $skip = $this->poffset_ - $this->killpointer_;
197        if ($skip > 0)
198        {
199            for ($i = 0; $i < $skip; $i++)
200            {
201                $this->killpointer_++;
202                $row = $this->qry_->getRow();
203            }
204        }
205
206        $row = $this->qry_->getRow();
207
208        return $row;
209    }
210
211    function getKill()
212    {
213        $this->execQuery();
214        if ($this->plimit_ && $this->killcounter_ >= $this->plimit_)
215        {
216            // echo $this->plimit_." ".$this->killcounter_;
217            return null;
218        }
219
220        $skip = $this->poffset_ - $this->killpointer_;
221        if ($skip > 0)
222        {
223            for ($i = 0; $i < $skip; $i++)
224            {
225                $this->killpointer_++;
226                $row = $this->qry_->getRow();
227            }
228        }
229
230        $row = $this->qry_->getRow();
231        if ($row)
232        {
233            $this->killcounter_++;
234            if ($row['scl_class'] != 2 && $row['scl_class'] != 3 && $row['scl_class'] != 11)
235                $this->realkillcounter_++;
236
237            $this->killisk_ += $row['scl_value'] / 1000000;
238            $this->killpoints_ += $row['kll_points'];
239
240            $kill = new Kill($row['kll_id']);
241            $kill->setTimeStamp($row['kll_timestamp']);
242            $kill->setSolarSystemName($row['sys_name']);
243            $kill->setSolarSystemSecurity($row['sys_sec']);
244            $kill->setVictimName($row['plt_name']);
245            $kill->setVictimCorpName($row['crp_name']);
246            $kill->setVictimAllianceName($row['ali_name']);
247            $kill->setVictimShipName($row['shp_name']);
248            $kill->setVictimShipExternalID($row['shp_externalid']);
249            $kill->setVictimShipClassName($row['scl_class']);
250            $kill->setVictimShipValue(round($row['scl_value'] / 1000000, 2));
251            $kill->setFBPilotName($row['fbplt_name']);
252            $kill->setFBCorpName($row['fbcrp_name']);
253            $kill->setKillPoints($row['kll_points']);
254            return $kill;
255        }
256        else return null;
257    }
258
259    function getAllKills()
260    {
261        while ($this->getKill())
262        {
263        }
264        $this->rewind();
265    }
266
267    function addInvolvedPilot($pilot)
268    {
269        $this->inv_plt_ .= $pilot->getID() . ", ";
270        if ($this->inv_crp_ || $this->inv_all_)
271            $this->mixedinvolved_ = true;
272    }
273
274    function addInvolvedCorp($corp)
275    {
276        $this->inv_crp_ .= $corp->getID() . ", ";
277        if ($this->inv_plt_ || $this->inv_all_)
278            $this->mixedinvolved_ = true;
279    }
280
281    function addInvolvedAlliance($alliance)
282    {
283        $this->inv_all_ .= $alliance->getID() . ", ";
284        if ($this->inv_plt_ || $this->inv_crp_)
285            $this->mixedinvolved_ = true;
286    }
287
288    function addVictimPilot($pilot)
289    {
290        $this->vic_plt_ .= $pilot->getID() . ", ";
291        if ($this->vic_crp_ || $this->vic_all_)
292            $this->mixedvictims_ = true;
293    }
294
295    function addVictimCorp($corp)
296    {
297        $this->vic_crp_ .= $corp->getID() . ", ";
298        if ($this->vic_plt_ || $this->vic_all_)
299            $this->mixedvictims_ = true;
300    }
301
302    function addVictimAlliance($alliance)
303    {
304        $this->vic_all_ .= $alliance->getID() . ", ";
305        if ($this->vic_plt_ || $this->vic_crp_)
306            $this->mixedvictims_ = true;
307    }
308
309    function addVictimShipClass($shipclass)
310    {
311        array_push($this->vic_scl_id_, $shipclass->getID());
312    }
313
314    function addVictimShip($ship)
315    {
316    }
317
318    function addItemDestroyed($item)
319    {
320    }
321
322    function addRegion($region)
323    {
324        array_push($this->regions_, $region->getID());
325    }
326
327    function addGroupBy($groupby)
328    {
329        array_push($this->groupby_, $groupby);
330    }
331
332    function setPageSplitter($pagesplitter)
333    {
334        if (isset($_GET['page'])) $page = $_GET['page'];
335        else $page = 1;
336        $this->plimit_ = $pagesplitter->getSplit();
337        $this->poffset_ = ($page * $this->plimit_) - $this->plimit_;
338        // echo $this->offset_;
339        // echo $this->limit_;
340    }
341
342    function setWeek($weekno)
343    {
344        $this->timeframe_ .= " and date_format( kll.kll_timestamp, \"%u\" ) = ";
345        $this->timeframe_ .= $weekno;
346    }
347
348    function setYear($yearno)
349    {
350        $this->timeframe_ .= " and date_format( kll.kll_timestamp, \"%Y\" ) = ";
351        $this->timeframe_ .= $yearno;
352    }
353
354    function setStartWeek($weekno)
355    {
356        $this->timeframe_ .= " and date_format( kll.kll_timestamp, \"%u\" ) >= ";
357        $this->timeframe_ .= $weekno;
358    }
359
360    function setStartDate($timestamp)
361    {
362        $this->timeframe_ .= " and kll.kll_timestamp >= '" . $timestamp . "'";
363    }
364
365    function setEndDate($timestamp)
366    {
367        $this->timeframe_ .= " and kll.kll_timestamp <= '" . $timestamp . "'";
368    }
369
370    function setRelated($killid)
371    {
372        $this->related_ = $killid;
373    }
374
375    function setLimit($limit)
376    {
377        $this->limit_ = $limit;
378    }
379
380    function setOrderBy($orderby)
381    {
382        $this->orderby_ = $orderby;
383    }
384
385    function getCount()
386    {
387        $this->execQuery();
388        return $this->qry_->recordCount();
389    }
390
391    function getRealCount()
392    {
393        $this->execQuery();
394        return $this->qry_->recordCount();
395    }
396
397    function getISK()
398    {
399        $this->execQuery();
400        return $this->killisk_;
401    }
402
403    function getPoints()
404    {
405        return $this->killpoints_;
406    }
407
408    function rewind()
409    {
410        $this->qry_->rewind();
411        $this->killcounter_ = 0;
412    }
413
414    function setPodsNoobShips($flag)
415    {
416        if (!$flag)
417        {
418            array_push($this->exclude_scl_, 2);
419            array_push($this->exclude_scl_, 3);
420            array_push($this->exclude_scl_, 11);
421        }
422    }
423
424    function setOrdered($flag)
425    {
426        $this->ordered_ = $flag;
427    }
428}
429?>
Note: See TracBrowser for help on using the browser.