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

Revision 188, 15.4 KB (checked in by exi, 14 years ago)

Changed default td width for options to 160px.
Added the appropiate timeframe to the fast contractlisttable.
Events now can also return a reference to a variable containing additional information.
Killlists now return a non formatted isk-value for losses/kills, please report any errors on other pages.
Added a custom user menu, able to be shownon every page.
Added some code for user logins, please ignore it for now.
Added a small battle statistics frame to the battle overview.
To login as admin now just leave user blank and use the admin password.

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