Changeset 181

Show
Ignore:
Timestamp:
01/28/07 16:04:10 (13 years ago)
Author:
exi
Message:

Changed admin/options to show the actual page as page title.
admin_menu.php now also loads settings from mods.
Added event manager and the first 2 events (comment/killmail added).
Changed config to be in a separate file and modified it to be called static with config::get().
http_request now stores the socket status in $this->status.
Changed MapView? to store pictures based on KB_SITE so it doesnt show a map with wrong colors for the current killboard on a multi-site installation.
Changed options to handle element options (like 'edit:size:40').
Changed options to use the static calls to config.
Changed Page to use the static calls to config.
Changed Session to use session_name() to determine if it should start a session.
index.php now loads module-init-scripts.
Changed post.php to use config and it should now also use the mailserver configuration directive to send emails.
Added a mail_forward-mod to show how easy it can be to develop mods once there are enough events listed.
Fixed 2 typos in battle_overview.tpl.

Location:
dev
Files:
6 added
1 removed
16 modified

Legend:

Unmodified
Added
Removed
  • dev/common/admin.php

    r177 r181  
    33require_once('class.killboard.php'); 
    44require_once('class.page.php'); 
    5 require_once('class.tabbedform.php'); 
    65 
    76// admin menu now loads all admin pages with options 
     
    109 
    1110$killboard = new Killboard(KB_SITE); 
    12 $page = new Page('Administration - Generic (Current version: '.KB_VERSION.' Build '.SVN_REV.')'); 
     11$page = new Page(); 
    1312$page->setAdmin(); 
    1413 
     
    4140    $page->setContent(options::genOptionsPage()); 
    4241    $page->addContext(options::genAdminMenu()); 
     42    if ($_REQUEST['sub'] == 'Generic' && $_REQUEST['field'] == 'Appearance') 
     43    { 
     44        $page->setTitle('Administration - Generic (Current version: '.KB_VERSION.' Build '.SVN_REV.')'); 
     45    } 
    4346    $page->generate(); 
    4447} 
  • dev/common/admin/admin_generic.php

    r177 r181  
    120120        { 
    121121                $t = mktime(0, 0, 0, $i, 1, 1980); 
    122                 $month = date("M", $t); 
     122                $month = gmdate("M", $t); 
    123123                if($date['mon'] == $i) 
    124124            { 
     
    135135 
    136136        $html .= "<select name=\"option[filter_year]\" id=\"option[filter_year]\">"; 
    137         for ($i = date("Y")-7; $i <= date("Y"); $i++) 
     137        for ($i = gmdate("Y")-7; $i <= gmdate("Y"); $i++) 
    138138        { 
    139139                if ($date['year'] == $i) 
  • dev/common/admin_menu.php

    r177 r181  
    2020} 
    2121 
     22$mods_active = explode(',', config::get('mods_active')); 
     23$modOverrides = false; 
     24foreach ($mods_active as $mod) 
     25{ 
     26    if (file_exists('mods/'.$mod.'/auto_settings.php')) 
     27    { 
     28        include('mods/'.$mod.'/auto_settings.php'); 
     29    } 
     30} 
     31 
    2232// overload the box object to force every admin page to use the new options menu 
    2333class Box2 extends Box 
     
    3848options::oldMenu('Advanced', "Synchronization", "?a=admin_sync"); 
    3949options::oldMenu('Advanced', "Post Permissions", "?a=admin_postperm"); 
    40 options::oldMenu('Modules'," Mods", "?a=admin_mods"); 
     50options::oldMenu('Modules', "Mods", "?a=admin_mods"); 
    4151options::oldMenu('Maintenance', "Auditing", "?a=admin_audit"); 
    4252options::oldMenu('Maintenance', "Kill Import - files", "?a=kill_import"); 
  • dev/common/class.comments.php

    r149 r181  
    3636        $id = $qry->getInsertID(); 
    3737        $this->comments_[] = array('time' => date('Y-m-d H:i:s'), 'name' => $name, 'comment' => stripslashes($comment), 'id' => $id); 
     38 
     39        // create comment_added event 
     40        event::call('comment_added', &$this); 
    3841    } 
    3942 
  • dev/common/class.http.php

    r162 r181  
    151151            } 
    152152        } 
     153        $this->status = socket_get_status($fp); 
    153154        fclose($fp); 
    154155        $this->header = $http_header; 
  • dev/common/class.kill.php

    r174 r181  
    698698            $qry->execute($sql); 
    699699        } 
     700 
     701        // call the event that we added this mail 
     702        event::call('killmail_added', &$this); 
    700703        return $this->id_; 
    701704    } 
  • dev/common/class.killboard.php

    r159 r181  
    11<?php 
    22require_once("db.php"); 
     3require_once('class.config.php'); 
    34 
    45class Killboard 
     
    5253    } 
    5354} 
    54  
    55 class Config 
    56 { 
    57     function Config($site) 
    58     { 
    59         $this->qry_ = new DBQuery(); 
    60         $this->sql_ = "select * from kb3_config where cfg_site = '".$site."'"; 
    61  
    62         $this->site_ = $site; 
    63     } 
    64  
    65     function getStyleName() 
    66     { 
    67         $this->execQuery(); 
    68         return $this->config['style_name']; 
    69     } 
    70  
    71     function getStyleBanner() 
    72     { 
    73         $this->execQuery(); 
    74         return $this->config['style_banner']; 
    75     } 
    76  
    77     function getPostPassword() 
    78     { 
    79         $this->execQuery(); 
    80         return $this->config['post_password']; 
    81     } 
    82  
    83     function getPostMailto() 
    84     { 
    85         $this->execQuery(); 
    86         return $this->config['post_mailto']; 
    87     } 
    88  
    89     function getKillPoints() 
    90     { 
    91         $this->execQuery(); 
    92         return $this->config['kill_points']; 
    93     } 
    94  
    95     function getLeastActive() 
    96     { 
    97         $this->execQuery(); 
    98         return $this->config['least_active']; 
    99     } 
    100  
    101     function getConfig($key) 
    102     { 
    103         $this->execQuery(); 
    104         if (isset($this->config[$key])) 
    105         { 
    106             return $this->config[$key]; 
    107         } 
    108         return false; 
    109     } 
    110  
    111     function setConfig($key, $value) 
    112     { 
    113         $qry = new DBQuery(); 
    114         $qry->execute("select cfg_value from kb3_config 
    115                        where cfg_key = '".$key."' 
    116                                and cfg_site = '".$this->site_."'"); 
    117         if ($qry->recordCount()) 
    118         { 
    119             $sql = "update kb3_config 
    120                     set cfg_value = '".$value."' 
    121                     where cfg_site = '".$this->site_."' 
    122                         and cfg_key = '".$key."'"; 
    123         } 
    124         else 
    125         { 
    126             $sql = "insert into kb3_config values ( '".$this->site_."', 
    127                                                 '".$key."', 
    128                                                 '".$value."' )"; 
    129         } 
    130         $qry->execute($sql) or die($qry->getErrorMsg()); 
    131         $this->config[$key] = $value; 
    132     } 
    133  
    134     function delConfig($key) 
    135     { 
    136         $qry = new DBQuery(); 
    137         $qry->execute("delete from kb3_config where cfg_key = '".$key."' 
    138                                and cfg_site = '".$this->site_."'"); 
    139         if (isset($this->config[$key])) 
    140         { 
    141             unset($this->config[$key]); 
    142         } 
    143     } 
    144  
    145     function checkCheckbox($name) 
    146     { 
    147         if ($_POST[$name] == 'on') 
    148         { 
    149             $this->setConfig($name, '1'); 
    150             return true; 
    151         } 
    152         $this->setConfig($name, '0'); 
    153         return false; 
    154     } 
    155  
    156     function setStyleName($name) 
    157     { 
    158         $this->setConfig("style_name", $name); 
    159     } 
    160  
    161     function setStyleBanner($banner) 
    162     { 
    163         $this->setConfig("style_banner", $banner); 
    164     } 
    165  
    166     function setPostPassword($password) 
    167     { 
    168         $this->setConfig("post_password", $password); 
    169     } 
    170  
    171     function setPostMailto($mailto) 
    172     { 
    173         $this->setConfig("post_mailto", $mailto); 
    174     } 
    175  
    176     function setKillPoints($flag) 
    177     { 
    178         $this->setConfig("kill_points", $flag); 
    179     } 
    180  
    181     function setLeastActive($flag) 
    182     { 
    183         $this->setConfig("least_active", $flag); 
    184     } 
    185  
    186     function execQuery() 
    187     { 
    188         if (!$this->qry_->executed_) 
    189         { 
    190             $this->qry_->execute($this->sql_); 
    191  
    192             $this->config = array(); 
    193             while ($row = $this->qry_->getRow()) 
    194             { 
    195                 $this->config[$row['cfg_key']] = $row['cfg_value']; 
    196             } 
    197             if (count($this->config) == 0) 
    198             { 
    199                 // no config supplied, generate standard one 
    200  
    201                 $this->setConfig('style_name', 'default'); 
    202                 $this->setConfig('style_banner', 'default'); 
    203                 $this->setConfig('kill_points', 1); 
    204                 $this->setConfig('least_active', 0); 
    205                 $this->setConfig('post_password', 'CHANGEME'); 
    206             } 
    207         } 
    208     } 
    209 } 
    21055?> 
  • dev/common/class.map.php

    r155 r181  
    142142                   and sjp.sjp_from = sys.sys_eve_id'; 
    143143 
    144         $regioncache = "cache/map/" . $this->regionid_ . "_" . $this->imgwidth_ . ".png"; 
     144        $regioncache = 'cache/map/'.KB_SITE.'_'.$this->regionid_.'_'.$this->imgwidth_.'.png'; 
    145145        $cached = false; 
    146146 
     
    158158        if ($this->mode_ == "region") 
    159159        { 
    160             $sql .= " and reg.reg_id = " . $this->regionid_; 
     160            $sql .= " and reg.reg_id = ".$this->regionid_; 
    161161            $caption = $this->conname_; 
    162162        } 
     
    164164        if ($this->mode_ == "cons") 
    165165        { 
    166             $sql .= " and con.con_id = " . $this->conid_; 
    167             $caption = $this->sysname_ . " (" . roundsec($this->syssec_) . ")"; 
     166            $sql .= " and con.con_id = ".$this->conid_; 
     167            $caption = $this->sysname_." (".roundsec($this->syssec_).")"; 
    168168        } 
    169169 
     
    352352        if (strlen($this->title_) > 0) 
    353353        { 
    354             $title = $this->title_ . " " . $caption; 
     354            $title = $this->title_." ".$caption; 
    355355        } 
    356356        else 
  • dev/common/class.options.php

    r177 r181  
    44* This is the class which should make it easier to add new options to the admin menu 
    55* It may only be invoked statically like: options::add(...); 
    6 * Do NOT try to call $options = new options()!!!!!! 
     6* more functions will be added as needed, if you want one, add it or contact exi 
    77*/ 
    88 
     
    4242    } 
    4343 
     44    // this will emulate the old options menu 
    4445    function oldMenu($field, $subfield, $link) 
    4546    { 
     
    4950    } 
    5051 
     52    // this handles the submit from the optionspage 
    5153    function handlePost() 
    5254    { 
    53         global $config; 
    5455        $data = &options::_getData(); 
    5556 
     
    5960            foreach ($elements as $element) 
    6061            { 
     62                // for callbacks we check their callback function on postdata to deal with it 
    6163                if ($element['callback']) 
    6264                { 
     
    6971                    continue; 
    7072                } 
     73 
     74                // for checkboxes we need to set the value to zero if the option is not there 
    7175                if ($element['type'] == 'checkbox') 
    7276                { 
    7377                    if ($_POST['option'][$element['name']] == 'on') 
    7478                    { 
    75                         $config->setConfig($element['name'], '1'); 
     79                        config::set($element['name'], '1'); 
    7680                    } 
    7781                    else 
    7882                    { 
    79                         $config->setConfig($element['name'], '0'); 
     83                        config::set($element['name'], '0'); 
    8084                    } 
    8185                } 
    8286                else 
    8387                { 
    84                      $config->setConfig($element['name'], $_POST['option'][$element['name']]); 
     88                    // edits and options will be set directly 
     89                    config::set($element['name'], $_POST['option'][$element['name']]); 
    8590                } 
    8691            } 
     
    95100        $sub = $_REQUEST['sub']; 
    96101 
    97         global $smarty; 
    98  
     102        global $smarty, $page; 
     103 
     104        if (is_object($page)) 
     105        { 
     106            $page->setTitle('Administration - '.$sub); 
     107        } 
     108 
     109        // create the option field 
    99110        $smarty->assign('field', $field); 
    100111        $smarty->assign('sub', $sub); 
    101112        $html = $smarty->fetch(get_tpl('admin_options_field_head')); 
     113 
     114        // create all option sets 
    102115        foreach ($data[$field][$sub] as $set => $options) 
    103116        { 
    104117            $smarty->assign('set', $set); 
    105118            $html .= $smarty->fetch(get_tpl('admin_options_set_head')); 
     119 
     120            // create all options in the set 
    106121            foreach ($options as $option) 
    107122            { 
     
    118133        global $smarty; 
    119134 
     135        // this will extract all options into an array 
     136        $options = array(); 
     137        if (strpos($element['type'], ':')) 
     138        { 
     139            $array = explode(':', $element['type']); 
     140            $element['type'] = array_shift($array); 
     141 
     142            $max = count($array); 
     143            for ($i=0; $i<=$max; $i+=2) 
     144            { 
     145                // make sure we assign a value 
     146                if (isset($array[$i+1])) 
     147                { 
     148                    $options[$array[$i]] = $array[$i+1]; 
     149                } 
     150            } 
     151        } 
     152 
    120153        if ($element['type'] == 'select') 
    121154        { 
     
    141174        { 
    142175            $smarty->assign_by_ref('opt', $element); 
     176 
     177            if (!$options['size']) 
     178            { 
     179                $options['size'] = 20; 
     180            } 
     181            if (!$options['maxlength']) 
     182            { 
     183                $options['maxlength'] = 80; 
     184            } 
     185            $smarty->assign_by_ref('options', $options); 
    143186            return $smarty->fetch(get_tpl('admin_options_edit')); 
    144187        } 
    145188 
     189        // for a custom element we call the callback to get the html we want 
    146190        if ($element['type'] == 'custom') 
    147191        { 
     
    165209        $data = &options::_getData(); 
    166210 
     211        // sort the menu alphabetically 
    167212        ksort($data); 
     213 
     214        // create a standardbox to print all links into 
    168215        $menubox = new Box('Options'); 
    169216        $menubox->setIcon('menu-item.gif'); 
     
    174221            foreach ($subfields as $subfield => $array) 
    175222            { 
     223                // if this subfield has no options then it is a category 
    176224                if (!is_array($array)) 
    177225                { 
     
    179227                    continue; 
    180228                } 
     229 
     230                // we're not a category, make it klickable 
    181231                $menubox->addOption('link', $subfield, '?a=admin&amp;field='.$field.'&amp;sub='.$subfield); 
    182232            } 
     
    186236    } 
    187237 
     238    // private data storage to store all options 
    188239    function &_getData() 
    189240    { 
  • dev/common/class.page.php

    r169 r181  
    4646        $smarty->assign('kb_title', KB_TITLE.' Killboard - '.$this->title_); 
    4747 
    48         $style = $config->getStyleName(); 
     48        $style = config::get('style_name'); 
    4949        $smarty->assign('style', $style); 
    5050 
     
    5858        if (!$this->igb_) 
    5959        { 
    60             if (strpos($config->getConfig('mods_active'), 'rss_feed') !== false) 
     60            if (strpos(config::get('mods_active'), 'rss_feed') !== false) 
    6161            { 
    6262                $smarty->assign('rss_feed', 1); 
     
    6666                $smarty->assign('banner_link', MAIN_SITE); 
    6767            } 
    68             $banner = $config->getStyleBanner(); 
     68            $banner = config::get('style_banner'); 
    6969            if ($banner == 'custom') 
    7070            { 
     
    9595                $w--; 
    9696            } 
    97             if ($config->getConfig('show_standing')) 
     97            if (config::get('show_standing')) 
    9898            { 
    9999                $w--; 
  • dev/common/class.session.php

    r95 r181  
    66    function Session() 
    77    { 
    8         if (isset($_REQUEST['PHPSESSID'])) 
     8        if (isset($_REQUEST[session_name()])) 
    99        { 
    1010            session_start(); 
  • dev/common/index.php

    r158 r181  
    33require_once('class.killboard.php'); 
    44require_once('smarty/Smarty.class.php'); 
     5require_once('class.event.php'); 
     6require_once('class.roles.php'); 
     7// smarty doesnt like it (i either) 
     8@set_magic_quotes_runtime(0); 
    59 
    610$page = str_replace('.', '', $_GET['a']); 
     
    1014    $page = 'home'; 
    1115} 
     16 
     17// check for the igb 
    1218if (substr($_SERVER['HTTP_USER_AGENT'], 0, 15) == 'EVE-minibrowser') 
    1319{ 
     
    2531$killboard = new Killboard(KB_SITE); 
    2632$config = $killboard->getConfig(); 
     33 
     34// setting up smarty 
    2735$smarty = new Smarty(); 
    2836$smarty->template_dir = './templates'; 
     
    3240$smarty->assign('img_url', IMG_URL); 
    3341$smarty->assign_by_ref('config', $config); 
     42 
     43// this is to make sure that smarty is able to create output 
    3444if (!is_dir('./cache/templates_c')) 
    3545{ 
     
    4353    } 
    4454} 
    45 // if ($killboard->isSuspended()) 
    46 // $page = 'suspended'; 
    4755 
    4856if (substr($page, 0, 9) == 'settings_') 
     
    5866foreach ($mods_active as $mod) 
    5967{ 
     68    // load all modules which need initialization 
     69    if (file_exists('mods/'.$mod.'/init.php')) 
     70    { 
     71        include('mods/'.$mod.'/init.php'); 
     72    } 
    6073    if (file_exists('mods/'.$mod.'/'.$page.'.php')) 
    6174    { 
  • dev/common/post.php

    r157 r181  
    1111if (isset($_POST['killmail'])) 
    1212{ 
    13     if ($_POST['password'] == $config->getPostPassword() || $page->isAdmin()) 
     13    if ($_POST['password'] == config::get('post_password') || $page->isAdmin()) 
    1414    { 
    1515        $parser = new Parser($_POST['killmail']); 
    1616 
    1717        // Filtering 
    18         if ($config->getConfig("filter_apply")) 
     18        if (config::get("filter_apply")) 
    1919        { 
    20             $filterdate = $config->getConfig("filter_date"); 
     20            $filterdate = config::get("filter_date"); 
    2121            $year = substr($_POST['killmail'], 0, 4); 
    2222            $month = substr($_POST['killmail'], 5, 2); 
     
    6565            elseif ($killid == -3) 
    6666            { 
    67                 $filterdate = date("j F Y", $config->getConfig("filter_date")); 
     67                $filterdate = date("j F Y", config::get("filter_date")); 
    6868                $html = "You are not allowed to post killmails older than $filterdate."; 
    6969            } 
     
    7676                $kill = new Kill($killid); 
    7777 
    78                 $mailer->From = "mailer@".$config->getConfig('mail_host'); 
    79                 $mailer->FromName = $config->getConfig('mail_host'); 
     78                if (!$server = config::get('post_mailserver')) 
     79                { 
     80                    $server = 'localhost'; 
     81                } 
     82                $mailer->From = "mailer@".config::get('post_mailhost'); 
     83                $mailer->FromName = config::get('post_mailhost'); 
    8084                $mailer->Subject = "Killmail #" . $killid; 
    81                 $mailer->Host = "localhost"; 
     85                $mailer->Host = $server; 
    8286                $mailer->Port = 25; 
    83                 $mailer->Helo = "localhost"; 
     87                $mailer->Helo = $server; 
    8488                $mailer->Mailer = "smtp"; 
    85                 $mailer->AddReplyTo("no_reply@".$config->getConfig('mail_host'), "No-Reply"); 
    86                 $mailer->Sender = "mailer@".$config->getConfig('mail_host'); 
     89                $mailer->AddReplyTo("no_reply@".config::get('post_mailhost'), "No-Reply"); 
     90                $mailer->Sender = "mailer@".config::get('post_mailhost'); 
    8791                $mailer->Body = $kill->getRawMail(); 
    88                 $mailer->AddAddress($config->getPostMailto()); 
     92                $mailer->AddAddress(config::get('post_mailhost')); 
    8993                $mailer->Send(); 
    9094            } 
    9195 
    9296            $qry = new DBQuery(); 
    93             $qry->execute("insert into kb3_log 
    94                                values(".$killid.",'".KB_SITE."','".$_SERVER['REMOTE_ADDR']."', now())"); 
     97            $qry->execute("insert into kb3_log values(".$killid.",'".KB_SITE."','".$_SERVER['REMOTE_ADDR']."', now())"); 
    9598 
    9699            header("Location: ?a=kill_detail&kll_id=".$killid); 
     
    103106    } 
    104107} 
    105 elseif (!$config->getConfig('post_forbid')) 
     108elseif (!config::get('post_forbid')) 
    106109{ 
    107110    $html .= "Paste the killmail from your EVEMail inbox into the box below. Make sure you post the <b>ENTIRE</b> mail.<br>Posting fake or otherwise edited mails is not allowed. All posts are logged."; 
  • dev/index.php

    r93 r181  
    11<?php 
    2 error_reporting(E_ALL ^ E_NOTICE); 
     2@error_reporting(E_ALL ^ E_NOTICE); 
    33include('common/index.php'); 
    44?> 
  • dev/templates/admin_options_edit.tpl

    r177 r181  
    22<tr><td width="120"><b>{$opt.descr}:</b></td><td> 
    33<input type="edit" id="option[{$opt.name}]" name="option[{$opt.name}]" 
    4 value="{$config->getConfig($opt.name)}" size="20" maxlength="80"> 
     4value="{$config->getConfig($opt.name)}" size="{$options.size}" maxlength="{$options.maxlength}"> 
    55{if $opt.hint} 
    66&nbsp;({$opt.hint}) 
  • dev/templates/battle_overview.tpl

    r164 r181  
    3333      <td class="kb-table-cell"><b><a href="?a=pilot_detail&amp;plt_id={$pilot}">{$i.name}</a></b><br/>{$i.ship}</td> 
    3434{/if} 
    35       <td class="kb-table-cell"><b><a href="?a=corp_detail&amp;crp_id={$i.cid}">{$i.corp}</a></b><br/><a href="?a=alliance_detail&amp;kll_id={$i.aid}" style="font-weight: normal;">{$i.alliance}</a></td> 
     35      <td class="kb-table-cell"><b><a href="?a=corp_detail&amp;crp_id={$i.cid}">{$i.corp}</a></b><br/><a href="?a=alliance_detail&amp;all_id={$i.aid}" style="font-weight: normal;">{$i.alliance}</a></td> 
    3636    </tr> 
    3737{/foreach} 
     
    6868      <td class="kb-table-cell"><b><a href="?a=pilot_detail&amp;plt_id={$pilot}">{$i.name}</a></b><br/>{$i.ship}</td> 
    6969{/if} 
    70       <td class="kb-table-cell"><b><a href="?a=corp_detail&amp;crp_id={$i.cid}">{$i.corp}</a></b><br/><a href="?a=alliance_detail&amp;kll_id={$i.aid}" style="font-weight: normal;">{$i.alliance}</a></td> 
     70      <td class="kb-table-cell"><b><a href="?a=corp_detail&amp;crp_id={$i.cid}">{$i.corp}</a></b><br/><a href="?a=alliance_detail&amp;all_id={$i.aid}" style="font-weight: normal;">{$i.alliance}</a></td> 
    7171    </tr> 
    7272{/foreach}