Changeset 71

Show
Ignore:
Timestamp:
11/10/06 20:50:51 (14 years ago)
Author:
exi
Message:

Rearranged some code in the parser.
Added autoupgrade code to adress the -10.0 security issue.
Changed KillSummaryTable? to support an additional mode for lightning fast speed (3.3s -> 0.12s page generation for me), now using that mode in corp+alliance_detail.php.

Location:
dev/common
Files:
7 modified

Legend:

Unmodified
Added
Removed
  • dev/common/admin.php

    r59 r71  
    99$page = new Page("Administration - Generic"); 
    1010$page->setAdmin(); 
     11require_once('autoupgrade.php'); 
     12check_invdetail(); 
    1113 
    1214if ($_POST['submit']) 
     
    2224    if ($config->checkCheckbox('comments')) 
    2325    { 
    24         require_once('autoupgrade.php'); 
    2526        check_commenttable(); 
    2627    } 
  • dev/common/alliance_detail.php

    r44 r71  
    1111 
    1212$alliance = new Alliance(intval($_GET['all_id'])); 
    13 $klist = new KillList(); 
    14 $klist->setOrdered(false); 
    15 // $tklist = new KillList(); 
    16 // $tklist->setOrdered( false ); 
    17 $llist = new KillList(); 
    18 $llist->setOrdered(false); 
    19 $klist->addInvolvedAlliance($alliance); 
    20 // $tklist->addInvolvedAlliance( $alliance ); 
    21 // $tklist->setPodsNoobShips( false ); 
    22 $llist->addVictimAlliance($alliance); 
    23 $klist->getAllKills(); 
    24 $llist->getAllKills(); 
    25  
    2613$page = new Page("Alliance details - " . $alliance->getName()); 
    2714 
     
    3623    $html .= "<img src=\"".IMG_URL."/alliances/default.gif\" border=\"0\"></td>"; 
    3724} 
    38  
    39 $html .= "<td class=kb-table-cell width=180><b>Kills:</b></td><td class=kl-kill>" . $klist->getCount() . "</td></tr>"; 
    40 // $html .= "<tr class=kb-table-row-even><td class=kb-table-cell><b>Real kills:</b></td><td class=kl-kill>".$tklist->getCount()."</td></tr>"; 
    41 $html .= "<tr class=kb-table-row-even><td class=kb-table-cell><b>Losses:</b></td><td class=kl-loss>" . $llist->getCount() . "</td></tr>"; 
    42 $html .= "<tr class=kb-table-row-even><td class=kb-table-cell><b>Damage done (ISK):</b></td><td class=kl-kill>" . $klist->getISK() . "M</td></tr>"; 
    43 $html .= "<tr class=kb-table-row-even><td class=kb-table-cell><b>Damage received (ISK):</b></td><td class=kl-loss>" . $llist->getISK() . "M</td></tr>"; 
    44 if ($klist->getISK()) 
    45     $efficiency = round($klist->getISK() / ($klist->getISK() + $llist->getISK()) * 100, 2); 
     25$kill_summary = new KillSummaryTable(); 
     26$kill_summary->addInvolvedAlliance($alliance); 
     27$kill_summary->setBreak(6); 
     28$summary_html = $kill_summary->generate(); 
     29 
     30$html .= "<td class=kb-table-cell width=180><b>Kills:</b></td><td class=kl-kill>".$kill_summary->getTotalKills()."</td></tr>"; 
     31$html .= "<tr class=kb-table-row-even><td class=kb-table-cell><b>Losses:</b></td><td class=kl-loss>".$kill_summary->getTotalLosses()."</td></tr>"; 
     32$html .= "<tr class=kb-table-row-even><td class=kb-table-cell><b>Damage done (ISK):</b></td><td class=kl-kill>".round($kill_summary->getTotalKillISK()/1000000, 2)."M</td></tr>"; 
     33$html .= "<tr class=kb-table-row-even><td class=kb-table-cell><b>Damage received (ISK):</b></td><td class=kl-loss>".round($kill_summary->getTotalLossISK()/1000000, 2)."M</td></tr>"; 
     34if ($kill_summary->getTotalKillISK()) 
     35{ 
     36    $efficiency = round($kill_summary->getTotalKillISK() / ($kill_summary->getTotalKillISK() + $kill_summary->getTotalLossISK()) * 100, 2); 
     37} 
    4638else 
     39{ 
    4740    $efficiency = 0; 
     41} 
    4842 
    4943$html .= "<tr class=kb-table-row-even><td class=kb-table-cell><b>Efficiency:</b></td><td class=kb-table-cell><b>" . $efficiency . "%</b></td></tr>"; 
     
    5448if ($_GET['view'] == "" || $_GET['view'] == "kills" || $_GET['view'] == "losses") 
    5549{ 
    56     $summarytable = new KillSummaryTable($klist, $llist); 
    57     $summarytable->setBreak(6); 
    58  
    59     $html .= $summarytable->generate(); 
     50    $html .= $summary_html; 
    6051} 
    6152 
  • dev/common/autoupgrade.php

    r51 r71  
    6161} 
    6262 
     63function check_invdetail() 
     64{ 
     65    $qry = new DBQuery(); 
     66    $query = 'select ind_sec_status from kb3_inv_detail limit 1'; 
     67    $qry->execute($query); 
     68    $len = mysql_field_len($qry->resid_,0); 
     69    if ($len == 4) 
     70    { 
     71        $query = 'ALTER TABLE `kb3_inv_detail` CHANGE `ind_sec_status` `ind_sec_status` VARCHAR( 5 )'; 
     72        $qry->execute($query); 
     73    } 
     74} 
    6375?> 
  • dev/common/class.killsummarytable.php

    r44 r71  
    33require_once("class.page.php"); 
    44require_once("class.ship.php"); 
    5 require_once("class.profiler.php"); 
    65 
    76class KillSummaryTable 
    87{ 
    9     function KillSummaryTable($klist, $llist) 
     8    function KillSummaryTable($klist = null, $llist = null) 
    109    { 
    1110        $this->klist_ = $klist; 
     
    1413        $this->verbose_ = false; 
    1514        $this->filter_ = true; 
     15        $this->inv_crp_ = array(); 
     16        $this->inv_all_ = array(); 
    1617    } 
    1718 
     
    6667    } 
    6768 
     69    function addInvolvedCorp($corp) 
     70    { 
     71        $this->inv_crp_[] = $corp->getID(); 
     72        if ($this->inv_plt_ || $this->inv_all_) 
     73        { 
     74            $this->mixedinvolved_ = true; 
     75        } 
     76    } 
     77 
     78    function addInvolvedAlliance($alliance) 
     79    { 
     80        $this->inv_all_[] = $alliance->getID(); 
     81        if ($this->inv_plt_ || $this->inv_crp_) 
     82        { 
     83            $this->mixedinvolved_ = true; 
     84        } 
     85    } 
     86 
     87 
     88    // do it faster, baby! 
     89    function getkills() 
     90    { 
     91        global $config; 
     92        if ($this->mixedinvolved_) 
     93        { 
     94            echo 'mode not supported<br>'; 
     95            exit; 
     96        } 
     97 
     98        // as there is no way to do this elegant in sql 
     99        // i'll keep it in php 
     100        $sql = "select scl_id, scl_class from kb3_ship_classes 
     101               where scl_class not in ('Drone','Unknown') order by scl_class"; 
     102 
     103        $qry = new DBQuery(); 
     104        $qry->execute($sql); 
     105        while ($row = $qry->getRow()) 
     106        { 
     107            $this->entry_[$row['scl_class']] = array('id' => $row['scl_id'], 
     108                                                     'kills' => 0, 'kills_isk' => 0, 
     109                                                     'losses' => 0, 'losses_isk' => 0); 
     110        } 
     111 
     112        $sql = 'SELECT count(*) AS knb, scl_id, scl_class,'; 
     113        if ($config->getConfig('ship_values')) 
     114        { 
     115            $sql .= ' sum(ifnull(ksv.shp_value,scl.scl_value)) AS kisk FROM kb3_kills kll 
     116                    INNER JOIN kb3_ships shp ON ( shp.shp_id = kll.kll_ship_id ) 
     117                    left join kb3_ships_values ksv on (shp.shp_id = ksv.shp_id)'; 
     118        } 
     119        else 
     120        { 
     121            $sql .= ' sum(scl.scl_value) AS kisk FROM kb3_kills kll 
     122                    INNER JOIN kb3_ships shp ON ( shp.shp_id = kll.kll_ship_id )'; 
     123        } 
     124        $sql .= ' INNER JOIN kb3_ship_classes scl ON ( scl.scl_id = shp.shp_class )'; 
     125 
     126        if ($this->inv_crp_) 
     127        { 
     128            $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 ) '; 
     129        } 
     130        elseif ($this->inv_all_) 
     131        { 
     132            $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 ) '; 
     133        } 
     134        $sql .= 'GROUP BY scl_class order by scl_class'; 
     135 
     136        $qry = new DBQuery(); 
     137        $qry->execute($sql); 
     138        while ($row = $qry->getRow()) 
     139        { 
     140            $this->entry_[$row['scl_class']]['kills'] = $row['knb']; 
     141            $this->entry_[$row['scl_class']]['kills_isk'] = $row['kisk']; 
     142            $this->tkcount_ += $row['knb']; 
     143            $this->tkisk_ += $row['kisk']; 
     144        } 
     145 
     146        $sql = 'SELECT count(*) AS lnb, scl_id, scl_class,'; 
     147        if ($config->getConfig('ship_values')) 
     148        { 
     149            $sql .= ' sum(ifnull(ksv.shp_value,scl.scl_value)) AS lisk FROM kb3_kills kll 
     150                    INNER JOIN kb3_ships shp ON ( shp.shp_id = kll.kll_ship_id ) 
     151                    left join kb3_ships_values ksv on (shp.shp_id = ksv.shp_id)'; 
     152        } 
     153        else 
     154        { 
     155            $sql .= ' sum(scl.scl_value) AS lisk FROM kb3_kills kll 
     156                    INNER JOIN kb3_ships shp ON ( shp.shp_id = kll.kll_ship_id )'; 
     157        } 
     158        $sql .= ' INNER JOIN kb3_ship_classes scl ON ( scl.scl_id = shp.shp_class )'; 
     159 
     160        if ($this->inv_crp_) 
     161        { 
     162            $sql .= ' where kll.kll_crp_id in ( '.join(',', $this->inv_crp_).' ) '; 
     163        } 
     164        elseif ($this->inv_all_) 
     165        { 
     166            $sql .= ' where kll.kll_all_id in ( '.join(',', $this->inv_all_).' ) '; 
     167        } 
     168        $sql .= 'GROUP BY scl_class order by scl_class'; 
     169 
     170        $qry = new DBQuery(); 
     171        $qry->execute($sql); 
     172        while ($row = $qry->getRow()) 
     173        { 
     174            $this->entry_[$row['scl_class']]['losses'] = $row['lnb']; 
     175            $this->entry_[$row['scl_class']]['losses_isk'] =  $row['lisk']; 
     176 
     177            $this->tlcount_ += $row['lnb']; 
     178            $this->tlisk_ += $row['lisk']; 
     179        } 
     180    } 
     181 
    68182    function generate() 
    69183    { 
    70         // build array 
    71         $sql = "select scl_id, scl_class 
    72                 from kb3_ship_classes 
    73                where scl_class not in ( 'Drone', 'Unknown' ) 
    74               order by scl_class"; 
    75  
    76         $qry = new DBQuery(); 
    77         $qry->execute($sql) or die($qry->getErrorMsg()); 
    78         while ($row = $qry->getRow()) 
    79         { 
    80             if (!$row['scl_id']) 
    81                 continue; 
    82  
    83             $shipclass = new ShipClass($row['scl_id']); 
    84             $shipclass->setName($row['scl_class']); 
    85  
    86             $entry[$shipclass->getName()]['id'] = $row['scl_id']; 
    87             $entry[$shipclass->getName()]['kills'] = 0; 
    88             $entry[$shipclass->getName()]['kills_isk'] = 0; 
    89             $entry[$shipclass->getName()]['losses'] = 0; 
    90             $entry[$shipclass->getName()]['losses_isk'] = 0; 
    91         } 
    92         // kills 
    93         while ($kill = $this->klist_->getKill()) 
    94         { 
    95             $classname = $kill->getVictimShipClassName(); 
    96             $entry[$classname]['kills']++; 
    97             $entry[$classname]['kills_isk'] += $kill->getVictimShipValue(); 
    98             $this->tkcount_++; 
    99             $this->tkisk_ += $kill->getVictimShipValue(); 
    100         } 
    101         // losses 
    102         while ($kill = $this->llist_->getKill()) 
    103         { 
    104             $classname = $kill->getVictimShipClassName(); 
    105             $entry[$classname]['losses']++; 
    106             $entry[$classname]['losses_isk'] += $kill->getVictimShipValue(); 
    107             $this->tlcount_++; 
    108             $this->tlisk_ += $kill->getVictimShipValue(); 
     184        if ($this->klist_) 
     185        { 
     186            // build array 
     187            $sql = "select scl_id, scl_class 
     188                    from kb3_ship_classes 
     189                   where scl_class not in ( 'Drone', 'Unknown' ) 
     190                  order by scl_class"; 
     191 
     192            $qry = new DBQuery(); 
     193            $qry->execute($sql) or die($qry->getErrorMsg()); 
     194            while ($row = $qry->getRow()) 
     195            { 
     196                if (!$row['scl_id']) 
     197                    continue; 
     198 
     199                $shipclass = new ShipClass($row['scl_id']); 
     200                $shipclass->setName($row['scl_class']); 
     201 
     202                $entry[$shipclass->getName()]['id'] = $row['scl_id']; 
     203                $entry[$shipclass->getName()]['kills'] = 0; 
     204                $entry[$shipclass->getName()]['kills_isk'] = 0; 
     205                $entry[$shipclass->getName()]['losses'] = 0; 
     206                $entry[$shipclass->getName()]['losses_isk'] = 0; 
     207            } 
     208            // kills 
     209            while ($kill = $this->klist_->getKill()) 
     210            { 
     211                $classname = $kill->getVictimShipClassName(); 
     212                $entry[$classname]['kills']++; 
     213                $entry[$classname]['kills_isk'] += $kill->getVictimShipValue(); 
     214                $this->tkcount_++; 
     215                $this->tkisk_ += $kill->getVictimShipValue(); 
     216            } 
     217            // losses 
     218            while ($kill = $this->llist_->getKill()) 
     219            { 
     220                $classname = $kill->getVictimShipClassName(); 
     221                $entry[$classname]['losses']++; 
     222                $entry[$classname]['losses_isk'] += $kill->getVictimShipValue(); 
     223                $this->tlcount_++; 
     224                $this->tlisk_ += $kill->getVictimShipValue(); 
     225            } 
     226        } 
     227        else 
     228        { 
     229            $this->getkills(); 
     230            $entry = &$this->entry_; 
    109231        } 
    110232 
  • dev/common/class.parser.php

    r63 r71  
    127127 
    128128            if ($secstatus == "") // NPC or POS 
    129                 { 
    130                     $secstatus = "0.0"; 
     129            { 
     130                $secstatus = "0.0"; 
    131131                preg_match("/(.*) \/ (.*)/", $ipname, $pmatches); 
    132132                $icname = $pmatches[2]; 
    133133                $isname = "Unknown"; 
    134134                $iwname = $pmatches[1]; 
     135 
    135136                $tmpcorp = new Corporation(); 
    136137                $tmpcorp->lookup($icname); 
     138 
     139                if (!$tmpcorp->getID()) 
     140                { 
     141                    // not a known corp, add it 
     142                    $ialliance = new Alliance(); 
     143                    $ialliance->add('None'); 
     144                    $icorp = new Corporation(); 
     145                    $icorp->add($icname, $ialliance, $kill->getTimeStamp()); 
     146                    $tmpcorp = $icorp; 
     147                } 
    137148                                $iweapon = new Item(); 
    138149                                $iweapon->lookup($pmatches[1]); 
    139150                                $ipname = '#'.$tmpcorp->getID().'#'.$iweapon->getID(); 
    140151                $tmpall = $tmpcorp->getAlliance(); 
    141                 if ($tmpcorp->getID()) 
    142                     $ianame = $tmpall->getName(); 
    143                 else 
    144                     $ianame = "None"; 
     152                // name will be None if no alliance is set 
     153                $ianame = $tmpall->getName(); 
     154 
     155                $ialliance = &$tmpall; 
     156                $icorp = &$tmpcorp; 
    145157 
    146158                $i++; 
     
    160172                $iwname = $matches[1]; 
    161173                $i += 6; 
    162             } 
    163  
    164             $ialliance = new Alliance(); 
    165             $ialliance->add($ianame); 
    166             $icorp = new Corporation(); 
    167             $icorp->add($icname, $ialliance, $kill->getTimeStamp()); 
     174 
     175                $ialliance = new Alliance(); 
     176                $ialliance->add($ianame); 
     177                $icorp = new Corporation(); 
     178                $icorp->add($icname, $ialliance, $kill->getTimeStamp()); 
     179            } 
    168180 
    169181            if (ALLIANCE_ID != 0 && $ialliance->getID() == ALLIANCE_ID) 
     182            { 
    170183                $authorized = true; 
     184            } 
    171185            elseif (CORP_ID != 0) 
    172186            { 
     
    177191                        $authorized = true; 
    178192                } 
     193            } 
     194            else 
     195            { 
     196                $authorized = true; 
    179197            } 
    180198 
     
    283301 
    284302        if (!$authorized) 
     303        { 
    285304            return -2; 
     305        } 
    286306 
    287307        $id = $kill->add(); 
  • dev/common/corp_detail.php

    r44 r71  
    1313$alliance = $corp->getAlliance(); 
    1414 
    15 $klist = new KillList(); 
    16 $tklist = new KillList(); 
    17 $llist = new KillList(); 
    18 $klist->addInvolvedCorp($corp); 
    19 $tklist->addInvolvedCorp($corp); 
    20 $tklist->setPodsNoobShips(false); 
    21 $llist->addVictimCorp($corp); 
    22 $klist->getAllKills(); 
    23 $llist->getAllKills(); 
     15$kill_summary = new KillSummaryTable(); 
     16$kill_summary->addInvolvedCorp($corp); 
     17$kill_summary->setBreak(6); 
     18$summary_html = $kill_summary->generate(); 
    2419 
    2520$page = new Page("Corporation details - " . $corp->getName()); 
     
    3530} 
    3631 
    37 // $html .= "</tr>"; 
    3832$html .= "<td class=kb-table-cell width=180><b>Alliance:</b></td><td class=kb-table-cell>"; 
    3933if ($alliance->getName() == "Unknown" || $alliance->getName() == "None") 
    40     $html .= "<b>" . $alliance->getName() . "</b>"; 
     34{ 
     35    $html .= "<b>".$alliance->getName()."</b>"; 
     36} 
    4137else 
    42     $html .= "<a href=\"?a=alliance_detail&all_id=" . $alliance->getID() . "\">" . $alliance->getName() . "</a>"; 
     38{ 
     39    $html .= "<a href=\"?a=alliance_detail&all_id=".$alliance->getID()."\">".$alliance->getName()."</a>"; 
     40} 
    4341$html .= "</td></tr>"; 
    44 $html .= "<tr class=kb-table-row-even><td class=kb-table-cell><b>Kills:</b></td><td class=kl-kill>" . $klist->getCount() . "</td></tr>"; 
    45 $html .= "<tr class=kb-table-row-even><td class=kb-table-cell><b>Real kills:</b></td><td class=kl-kill>" . $tklist->getCount() . "</td></tr>"; 
    46 $html .= "<tr class=kb-table-row-even><td class=kb-table-cell><b>Losses:</b></td><td class=kl-loss>" . $llist->getCount() . "</td></tr>"; 
    47 $html .= "<tr class=kb-table-row-even><td class=kb-table-cell><b>Damage done (ISK):</b></td><td class=kl-kill>" . $klist->getISK() . "M</td></tr>"; 
    48 $html .= "<tr class=kb-table-row-even><td class=kb-table-cell><b>Damage received (ISK):</b></td><td class=kl-loss>" . $llist->getISK() . "M</td></tr>"; 
    49 if ($klist->getISK()) 
    50     $efficiency = round($klist->getISK() / ($klist->getISK() + $llist->getISK()) * 100, 2); 
     42$html .= "<tr class=kb-table-row-even><td class=kb-table-cell><b>Kills:</b></td><td class=kl-kill>".$kill_summary->getTotalKills()."</td></tr>"; 
     43$html .= "<tr class=kb-table-row-even><td class=kb-table-cell><b>Losses:</b></td><td class=kl-loss>".$kill_summary->getTotalLosses()."</td></tr>"; 
     44$html .= "<tr class=kb-table-row-even><td class=kb-table-cell><b>Damage done (ISK):</b></td><td class=kl-kill>".round($kill_summary->getTotalKillISK()/1000000, 2)."M</td></tr>"; 
     45$html .= "<tr class=kb-table-row-even><td class=kb-table-cell><b>Damage received (ISK):</b></td><td class=kl-loss>".round($kill_summary->getTotalLossISK()/1000000, 2)."M</td></tr>"; 
     46if ($kill_summary->getTotalKillISK()) 
     47{ 
     48    $efficiency = round($kill_summary->getTotalKillISK() / ($kill_summary->getTotalKillISK() + $kill_summary->getTotalLossISK()) * 100, 2); 
     49} 
    5150else 
     51{ 
    5252    $efficiency = 0; 
     53} 
    5354 
    5455$html .= "<tr class=kb-table-row-even><td class=kb-table-cell><b>Efficiency:</b></td><td class=kb-table-cell><b>" . $efficiency . "%</b></td></tr>"; 
    55  
    5656$html .= "</table>"; 
    57  
    5857$html .= "<br/>"; 
    5958 
    6059if ($_GET['view'] == "" || $_GET['view'] == "kills" || $_GET['view'] == "losses") 
    6160{ 
    62     $summarytable = new KillSummaryTable($klist, $llist); 
    63     $summarytable->setBreak(6); 
    64  
    65     $html .= $summarytable->generate(); 
     61    $html .= $summary_html; 
    6662} 
    6763 
  • dev/common/home.php

    r10 r71  
    109109$page->addContext($tkbox->generate()); 
    110110 
    111 $config = $page->killboard_->getConfig(); 
    112111if ($config->getKillPoints()) 
    113112{