root/dev/common/includes/class.config.php @ 197

Revision 197, 3.9 KB (checked in by exi, 14 years ago)

Some improvements for the battle summary, it went down from over 1500 db queries to 270 for a battle of ~55 kills.
I also improved handling of pods when people made it on a killmail with them.
The config class now writes directly into its cache during initialization, this should bring a few milliseconds.

Line 
1<?php
2
3class Config
4{
5    function Config($site)
6    {
7        config::init();
8    }
9
10    function getPostPassword()
11    {
12        return config::get('post_password');
13    }
14
15    function getPostMailto()
16    {
17        return config::get('post_mailto');
18    }
19
20    function getKillPoints()
21    {
22        return config::get('kill_points');
23    }
24
25    function getLeastActive()
26    {
27        return config::get('least_active');
28    }
29
30    function getConfig($key)
31    {
32        return config::get($key);
33    }
34
35    function setConfig($key, $value)
36    {
37        config::set($key, $value);
38    }
39
40    function delConfig($key)
41    {
42        config::del($key, $value);
43    }
44
45    function checkCheckbox($name)
46    {
47        if ($_POST[$name] == 'on')
48        {
49            $this->setConfig($name, '1');
50            return true;
51        }
52        $this->setConfig($name, '0');
53        return false;
54    }
55
56    function setStyleName($name)
57    {
58        $this->setConfig("style_name", $name);
59    }
60
61    function setStyleBanner($banner)
62    {
63        $this->setConfig("style_banner", $banner);
64    }
65
66    function setPostPassword($password)
67    {
68        $this->setConfig("post_password", $password);
69    }
70
71    function setPostMailto($mailto)
72    {
73        $this->setConfig("post_mailto", $mailto);
74    }
75
76    function setKillPoints($flag)
77    {
78        $this->setConfig("kill_points", $flag);
79    }
80
81    function setLeastActive($flag)
82    {
83        $this->setConfig("least_active", $flag);
84    }
85
86    function init()
87    {
88        global $config_init;
89
90        if ($config_init)
91        {
92            return;
93        }
94
95        $db = new DBQuery();
96        $db->execute('select * from kb3_config where cfg_site=\''.KB_SITE."'");
97        $config = &config::_getCache();
98        while ($row = $db->getRow())
99        {
100            $config[$row['cfg_key']] = $row['cfg_value'];
101        }
102        $config_init = true;
103
104        if (config::get('post_password') === null)
105        {
106            // no config supplied, generate standard one
107            config::set('style_name', 'default');
108            config::set('style_banner', 'default');
109            config::set('kill_points', 1);
110            config::set('least_active', 0);
111            config::set('post_password', 'CHANGEME');
112        }
113    }
114
115    function &_getCache()
116    {
117        static $cache;
118
119        if (!isset($cache))
120        {
121            $cache = array();
122        }
123        return $cache;
124    }
125
126    function put($key, $data)
127    {
128        $cache = &config::_getCache();
129        $cache[$key] = $data;
130    }
131
132    function del($key)
133    {
134        $cache = &config::_getCache();
135        if (isset($cache[$key]))
136        {
137            unset($cache[$key]);
138        }
139
140        $qry = new DBQuery();
141        $qry->execute("delete from kb3_config where cfg_key = '".$key."'
142                               and cfg_site = '".KB_SITE."'");
143    }
144
145    function set($key, $value)
146    {
147        $cache = &config::_getCache();
148
149        // only update the database when the old value differs
150        if (isset($cache[$key]))
151        {
152            if ($cache[$key] == $value)
153            {
154                return;
155            }
156        }
157        $cache[$key] = $value;
158
159        $qry = new DBQuery();
160        $qry->execute("select cfg_value from kb3_config
161                       where cfg_key = '".$key."' and cfg_site = '".KB_SITE."'");
162        if ($qry->recordCount())
163        {
164            $sql = "update kb3_config set cfg_value = '".$value."'
165                    where cfg_site = '".KB_SITE."' and cfg_key = '".$key."'";
166        }
167        else
168        {
169            $sql = "insert into kb3_config values ('".KB_SITE."','".$key."','".$value."')";
170        }
171        $qry->execute($sql);
172    }
173
174    function get($key)
175    {
176        $cache = &config::_getCache();
177
178        if (!isset($cache[$key]))
179        {
180            return null;
181        }
182        return $cache[$key];
183    }
184}
185?>
Note: See TracBrowser for help on using the browser.