Show
Ignore:
Timestamp:
04/05/07 02:52:14 (16 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.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • 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>";