Changeset 201 for dev

Show
Ignore:
Timestamp:
04/05/07 02:52:14 (14 years ago)
Author:
exi
Message:

Attempt to fix various issues with the ContractListTable?-sql summary code.
The raw killmail now shows the time left for classified kills.
Added code to autoupgrade.php to add indexes to kb3_inv_crp and kb3_inv_all.

Location:
dev/common/includes
Files:
6 modified

Legend:

Unmodified
Added
Removed
  • dev/common/includes/autoupgrade.php

    r190 r201  
    109109function check_index() 
    110110{ 
     111    check_index_invcrp(); 
     112    check_index_invall(); 
    111113    $qry = new DBQuery(); 
    112114    $qry->execute('SHOW columns from kb3_item_types like \'itt_id\''); 
     
    117119    } 
    118120    $qry->execute('ALTER TABLE `kb3_item_types` ADD PRIMARY KEY ( `itt_id` ) '); 
     121} 
     122function check_index_invcrp() 
     123{ 
     124    $qry = new DBQuery(); 
     125    $qry->execute('SHOW columns from kb3_inv_crp like \'inc_kll_id\''); 
     126    $arr = $qry->getRow(); 
     127    if ($arr['Key'] == 'MUL') 
     128    { 
     129        return; 
     130    } 
     131    $qry->execute('ALTER TABLE `kb3_inv_crp` ADD INDEX ( `inc_kll_id` ) '); 
     132} 
     133function check_index_invall() 
     134{ 
     135    $qry = new DBQuery(); 
     136    $qry->execute('SHOW columns from kb3_inv_all like \'ina_kll_id\''); 
     137    $arr = $qry->getRow(); 
     138    if ($arr['Key'] == 'MUL') 
     139    { 
     140        return; 
     141    } 
     142    $qry->execute('ALTER TABLE `kb3_inv_all` ADD INDEX ( `ina_kll_id` ) '); 
    119143} 
    120144function check_tblstrct1() 
  • dev/common/includes/class.contract.php

    r190 r201  
    549549            $contract->execQuery(); 
    550550 
    551             // this is the sql for kills 
    552             $sql = 'select count(*) AS kills,'; 
    553             if (config::get('ship_values')) 
    554             { 
    555                 $sql .= ' sum(ifnull(ksv.shp_value,scl.scl_value)) AS killisk FROM kb3_kills kll 
    556                         INNER JOIN kb3_ships shp ON ( shp.shp_id = kll.kll_ship_id ) 
    557                         left join kb3_ships_values ksv on (shp.shp_id = ksv.shp_id)'; 
    558             } 
    559             else 
    560             { 
    561                 $sql .= ' sum(scl.scl_value) AS kisk FROM kb3_kills kll 
    562                         INNER JOIN kb3_ships shp ON ( shp.shp_id = kll.kll_ship_id )'; 
    563             } 
    564             $sql .= ' INNER JOIN kb3_ship_classes scl ON ( scl.scl_id = shp.shp_class ) 
    565                       inner join kb3_systems sys on ( sys.sys_id = kll.kll_system_id )'; 
    566             if ($contract->klist_->inv_crp_) 
    567             { 
    568                 $sql .= ' inner join kb3_inv_crp inc on ( inc.inc_crp_id in ( '.join(',', $contract->klist_->inv_crp_).' ) and kll.kll_id = inc.inc_kll_id ) '; 
    569             } 
    570             if ($contract->klist_->inv_all_) 
    571             { 
    572                 $sql .= ' inner join kb3_inv_all ina on ( ina.ina_all_id in ( '.join(',', $contract->klist_->inv_all_).' ) and kll.kll_id = ina.ina_kll_id ) '; 
    573             } 
    574             if ($contract->klist_->inv_plt_) 
    575             { 
    576                 $sql .= ' inner join kb3_inv_plt inp on ( inp.inp_plt_id in ( '.join(',', $contract->klist_->inv_plt_).' ) and kll.kll_id = inp.inp_kll_id ) '; 
    577             } 
    578             if ($contract->klist_->regions_) 
    579             { 
    580                 $sql .= ' inner join kb3_constellations con 
    581                            on ( con.con_id = sys.sys_con_id ) 
    582                                    inner join kb3_regions reg on ( reg.reg_id = con.con_reg_id 
    583                                    and reg.reg_id in ( '.join(',', $contract->klist_->regions_).' ) )'; 
    584             } 
    585             if ($contract->klist_->systems_) 
    586             { 
    587                 $sql .= ' and kll.kll_system_id in ( '.join(',', $contract->klist_->systems_).')'; 
    588             } 
    589  
    590             $sql .= ' where 1=1 '; 
    591             if ($contract->klist_->vic_plt_) 
    592                 $sql .= " and kll.kll_victim_id in ( ".join(',', $contract->klist_->vic_plt_)." )"; 
    593             if ($contract->klist_->vic_crp_) 
    594                 $sql .= " and kll.kll_crp_id in ( ".join(',', $contract->klist_->vic_crp_)." )"; 
    595             if ($contract->klist_->vic_all_) 
    596                 $sql .= " and kll.kll_all_id in ( ".join(',', $contract->klist_->vic_all_)." )"; 
    597  
    598             if ($contract->klist_->timeframe_) 
    599             { 
    600                 $sql .= $contract->klist_->timeframe_; 
    601             } 
    602  
    603             $result = $qry->execute($sql); 
    604             $kdata = $qry->getRow($result); 
    605  
    606             // and here goes the losses 
    607             $sql = 'select count(*) AS losses,'; 
    608             if (config::get('ship_values')) 
    609             { 
    610                 $sql .= ' sum(ifnull(ksv.shp_value,scl.scl_value)) AS lossisk FROM kb3_kills kll 
    611                         INNER JOIN kb3_ships shp ON ( shp.shp_id = kll.kll_ship_id ) 
    612                         left join kb3_ships_values ksv on (shp.shp_id = ksv.shp_id)'; 
    613             } 
    614             else 
    615             { 
    616                 $sql .= ' sum(scl.scl_value) AS kisk FROM kb3_kills kll 
    617                         INNER JOIN kb3_ships shp ON ( shp.shp_id = kll.kll_ship_id )'; 
    618             } 
    619             $sql .= ' INNER JOIN kb3_ship_classes scl ON ( scl.scl_id = shp.shp_class ) 
    620                       inner join kb3_systems sys on ( sys.sys_id = kll.kll_system_id )'; 
    621             if ($contract->llist_->inv_crp_) 
    622             { 
    623                 $sql .= ' inner join kb3_inv_crp inc on ( inc.inc_crp_id in ( '.join(',', $contract->llist_->inv_crp_).' ) and kll.kll_id = inc.inc_kll_id ) '; 
    624             } 
    625             if ($contract->llist_->inv_all_) 
    626             { 
    627                 $sql .= ' inner join kb3_inv_all ina on ( ina.ina_all_id in ( '.join(',', $contract->llist_->inv_all_).' ) and kll.kll_id = ina.ina_kll_id ) '; 
    628             } 
    629             if ($contract->llist_->inv_plt_) 
    630             { 
    631                 $sql .= ' inner join kb3_inv_plt inp on ( inp.inp_plt_id in ( '.join(',', $contract->llist_->inv_plt_).' ) and kll.kll_id = inp.inp_kll_id ) '; 
    632             } 
    633             if ($contract->llist_->regions_) 
    634             { 
    635                 $sql .= ' inner join kb3_constellations con 
    636                            on ( con.con_id = sys.sys_con_id ) 
    637                                    inner join kb3_regions reg on ( reg.reg_id = con.con_reg_id 
    638                                    and reg.reg_id in ( '.join(',', $contract->llist_->regions_).' ) )'; 
    639             } 
    640             if ($contract->llist_->systems_) 
    641             { 
    642                 $sql .= ' and kll.kll_system_id in ( '.join(',', $contract->llist_->systems_).')'; 
    643             } 
    644  
    645             $sql .= ' where 1=1 '; 
    646             if ($contract->llist_->vic_plt_) 
    647                 $sql .= " and kll.kll_victim_id in ( ".join(',', $contract->llist_->vic_plt_)." )"; 
    648             if ($contract->llist_->vic_crp_) 
    649                 $sql .= " and kll.kll_crp_id in ( ".join(',', $contract->llist_->vic_crp_)." )"; 
    650             if ($contract->llist_->vic_all_) 
    651                 $sql .= " and kll.kll_all_id in ( ".join(',', $contract->llist_->vic_all_)." )"; 
    652  
    653             if ($contract->llist_->timeframe_) 
    654             { 
    655                 $sql .= $contract->llist_->timeframe_; 
    656             } 
    657  
    658             $result = $qry->execute($sql); 
    659             $ldata = $qry->getRow($result); 
    660  
     551 
     552            for ($i = 0; $i < 2; $i++) 
     553            { 
     554                if ($i == 0) 
     555                { 
     556                    $list = &$contract->llist_; 
     557                } 
     558                else 
     559                { 
     560                    $list = &$contract->klist_; 
     561                } 
     562 
     563                // take care of the subquery needed (mysql > 4.1) 
     564                if (KB_MYSQL41) 
     565                { 
     566                    $sql = 'select count(kll_id) AS ships, sum(lossisk) as isk from (select distinct kll_id,'; 
     567                } 
     568                else 
     569                { 
     570                    $sql = 'select distinct kll_id,'; 
     571                } 
     572 
     573 
     574                if (config::get('ship_values')) 
     575                { 
     576                    $sql .= ' ifnull(ksv.shp_value,scl.scl_value) AS lossisk FROM kb3_kills kll 
     577                            INNER JOIN kb3_ships shp ON ( shp.shp_id = kll.kll_ship_id ) 
     578                            left join kb3_ships_values ksv on (shp.shp_id = ksv.shp_id)'; 
     579                } 
     580                else 
     581                { 
     582                    $sql .= ' scl.scl_value AS lossisk FROM kb3_kills kll 
     583                            INNER JOIN kb3_ships shp ON ( shp.shp_id = kll.kll_ship_id )'; 
     584                } 
     585                $sql .= ' INNER JOIN kb3_ship_classes scl ON ( scl.scl_id = shp.shp_class ) 
     586                          inner join kb3_systems sys on ( sys.sys_id = kll.kll_system_id )'; 
     587 
     588                if ($list->regions_) 
     589                { 
     590                    $sql .= ' inner join kb3_constellations con 
     591                           on ( con.con_id = sys.sys_con_id ) 
     592                                   inner join kb3_regions reg on ( reg.reg_id = con.con_reg_id 
     593                                   and reg.reg_id in ( '.join(',', $list->regions_).' ) )'; 
     594                } 
     595                if ($list->systems_) 
     596                { 
     597                    $sql .= ' and kll.kll_system_id in ( '.join(',', $list->systems_).')'; 
     598                } 
     599                if ($list->inv_crp_) 
     600                { 
     601                    $sql .= ' inner join kb3_inv_crp inc on ( kll.kll_id = inc.inc_kll_id ) '; 
     602                } 
     603                if ($list->inv_all_) 
     604                { 
     605                    $sql .= ' inner join kb3_inv_all ina on ( kll.kll_id = ina.ina_kll_id ) '; 
     606                } 
     607                if ($list->inv_plt_) 
     608                { 
     609                    $sql .= ' inner join kb3_inv_plt inp on ( kll.kll_id = inp.inp_kll_id ) '; 
     610                } 
     611 
     612                $sql .= ' where 1=1 '; 
     613 
     614                $tmp = array(); 
     615                if ($list->vic_plt_) 
     616                { 
     617                    $tmp[] = 'kll.kll_victim_id in ( '.join(',', $list->vic_plt_).' )'; 
     618                } 
     619                if ($list->vic_crp_) 
     620                { 
     621                    $tmp[] = 'kll.kll_crp_id in ( '.join(',', $list->vic_crp_).' )'; 
     622                } 
     623                if ($list->vic_all_) 
     624                { 
     625                    $tmp[] = 'kll.kll_all_id in ( '.join(',', $list->vic_all_).' )'; 
     626                } 
     627                if (count($tmp)) 
     628                { 
     629                    $sql .= ' and ('; 
     630                    $sql .= join(' or ', $tmp); 
     631                    $sql .= ')'; 
     632                } 
     633 
     634 
     635                $tmp = array(); 
     636                if ($list->inv_crp_) 
     637                { 
     638                    $tmp[] = 'inc.inc_crp_id in ( '.join(',', $list->inv_crp_).')'; 
     639                } 
     640                if ($list->inv_all_) 
     641                { 
     642                    $tmp[] = 'ina.ina_all_id in ( '.join(',', $list->inv_all_).')'; 
     643                } 
     644                if ($list->inv_plt_) 
     645                { 
     646                    $tmp[] = 'inp.inp_plt_id in ( '.join(',', $list->inv_plt_).')'; 
     647                } 
     648                if (count($tmp)) 
     649                { 
     650                    $sql .= ' and ('; 
     651                    $sql .= join(' or ', $tmp); 
     652                    $sql .= ')'; 
     653                } 
     654 
     655                if ($list->timeframe_) 
     656                { 
     657                    $sql .= $list->timeframe_; 
     658                } 
     659                if (KB_MYSQL41) 
     660                { 
     661                    // this is the last part from the outer query 
     662                    $sql .= ') as kb3_shadow'; 
     663                } 
     664 
     665                $result = $qry->execute($sql); 
     666                if (KB_MYSQL41) 
     667                { 
     668                    $row = $qry->getRow($result); 
     669                } 
     670                else 
     671                { 
     672                    $sum = array(); 
     673                    $sum['isk'] = 0; 
     674                    $sum['ships'] = 0; 
     675                    while ($row = $qry->getRow($result)) 
     676                    { 
     677                        $sum['ships'] += 1; 
     678                        $sum['isk'] += $row['lossisk']; 
     679                    } 
     680                    $row = $sum; 
     681                } 
     682 
     683                if ($i == 0) 
     684                { 
     685                    $ldata = array('losses' => $row['ships'], 'lossisk' => $row['isk']); 
     686                } 
     687                else 
     688                { 
     689                    $kdata = array('kills' => $row['ships'], 'killisk' => $row['isk']); 
     690                } 
     691            } 
    661692            if ($kdata['killisk']) 
    662693            { 
     
    744775 
    745776                $html .= "<td class=".$kclass." align=center>".$contract->getKills()."</td>"; 
    746                 $html .= "<td class=".$kclass." align=center>".$contract->getKillISK()."</td>"; 
     777                $html .= "<td class=".$kclass." align=center>".round($contract->getKillISK()/1000000, 2)."</td>"; 
    747778                $html .= "<td class=".$lclass." align=center>".$contract->getLosses()."</td>"; 
    748                 $html .= "<td class=".$lclass." align=center>".$contract->getLossISK()."</td>"; 
     779                $html .= "<td class=".$lclass." align=center>".round($contract->getLossISK()/1000000, 2)."</td>"; 
    749780                $bar = new BarGraph($contract->getEfficiency(), 100, 75); 
    750781                $html .= "<td class=kb-table-cell align=center width=40><b>".$contract->getEfficiency()."%</b></td>"; 
  • dev/common/includes/class.db_cache.php

    r195 r201  
    144144            $tables[] = $ta[2]; 
    145145        } 
     146        elseif ($ta[0] == 'alter') 
     147        { 
     148            return false; 
     149        } 
    146150        else 
    147151        { 
  • dev/common/includes/class.kill.php

    r190 r201  
    191191        if ($this->isClassified()) 
    192192        { 
    193             return 'Killmail not yet available.'; 
     193            return 'Killmail not yet available, try again in '.round($this->getClassifiedTime()/3600, 2).' hrs.'; 
    194194        } 
    195195 
     
    420420    } 
    421421 
     422    function getClassifiedTime() 
     423    { 
     424        if (config::get('kill_classified')) 
     425        { 
     426            $offset = config::get('kill_classified')*3600; 
     427            if (strtotime($this->timestamp_) > time()-$offset) 
     428            { 
     429                return ($offset-time()+strtotime($this->timestamp_)); 
     430            } 
     431        } 
     432        return 0; 
     433    } 
     434 
    422435    function exists() 
    423436    { 
     
    613626    function add($id = null) 
    614627    { 
    615         global $config; 
    616628        if (!$this->solarsystem_->getID()) 
    617629        { 
     
    627639            $this->realadd(); 
    628640        } 
    629         elseif ($config->getConfig('readd_dupes')) 
     641        elseif (config::get('readd_dupes')) 
    630642        { 
    631643            $this->dupeid_ = $dupe; 
  • dev/common/includes/class.killlist.php

    r190 r201  
    314314    { 
    315315        $this->inv_plt_[] = $pilot->getID(); 
    316         if ($this->inv_crp_ || $this->inv_all_) 
     316        if (count($this->inv_crp_) || count($this->inv_all_)) 
    317317            $this->mixedinvolved_ = true; 
    318318    } 
     
    321321    { 
    322322        $this->inv_crp_[] = $corp->getID(); 
    323         if ($this->inv_plt_ || $this->inv_all_) 
     323        if (count($this->inv_plt_) || count($this->inv_all_)) 
    324324            $this->mixedinvolved_ = true; 
    325325    } 
     
    328328    { 
    329329        $this->inv_all_[] = $alliance->getID(); 
    330         if ($this->inv_plt_ || $this->inv_crp_) 
     330        if (count($this->inv_plt_) || count($this->inv_crp_)) 
    331331            $this->mixedinvolved_ = true; 
    332332    } 
     
    335335    { 
    336336        $this->vic_plt_[] = $pilot->getID(); 
    337         if ($this->vic_crp_ || $this->vic_all_) 
     337        if (count($this->vic_crp_) || count($this->vic_all_)) 
    338338            $this->mixedvictims_ = true; 
    339339    } 
     
    342342    { 
    343343        $this->vic_crp_[] = $corp->getID(); 
    344         if ($this->vic_plt_ || $this->vic_all_) 
     344        if (count($this->vic_plt_) || count($this->vic_all_)) 
    345345            $this->mixedvictims_ = true; 
    346346    } 
     
    349349    { 
    350350        $this->vic_all_[] = $alliance->getID(); 
    351         if ($this->vic_plt_ || $this->vic_crp_) 
     351        if (count($this->vic_plt_) || count($this->vic_crp_)) 
    352352            $this->mixedvictims_ = true; 
    353353    } 
  • dev/common/includes/db.php

    r190 r201  
    1212    require_once('common/includes/class.db.php'); 
    1313} 
     14 
     15// get mysql server info and store it in a define so we know if its 
     16// safe to use subquerys or not 
     17$value = (float)mysql_get_server_info(); 
     18if ($value > 4.1) 
     19{ 
     20    define('KB_MYSQL41', true); 
     21} 
     22else 
     23{ 
     24    define('KB_MYSQL41', false); 
     25} 
    1426?>