root/dev/common/includes/class.apicache.php @ 382

Revision 382, 3.4 KB (checked in by kovell, 13 years ago)

Admin setting clarifications, autoupgrade uses existing kill settings.

Line 
1<?php
2class ApiCache
3{
4    function ApiCache($site)
5    {
6        ApiCache::init();
7    }
8
9    function checkCheckbox($name)
10    {
11        if ($_POST[$name] == 'on')
12        {
13            config::set($name, '1');
14            return true;
15        }
16        config::set($name, '0');
17        return false;
18    }
19
20    function init()
21    {
22        global $ApiCache_init;
23
24        if ($ApiCache_init)
25        {
26            return;
27        }
28
29        $db = new DBQuery(true);
30        $db->execute('select * from kb3_apicache where cfg_site=\''.KB_SITE."'");
31        $ApiCache = &ApiCache::_getCache();
32        while ($row = $db->getRow())
33        {
34            if (substr($row['cfg_value'], 0, 2) == 'a:')
35            {
36                $row['cfg_value'] = unserialize($row['cfg_value']);
37            }
38            $ApiCache[$row['cfg_key']] = $row['cfg_value'];
39        }
40        $ApiCache_init = true;
41    }
42
43    function &_getCache()
44    {
45        static $cache;
46
47        if (!isset($cache))
48        {
49            $cache = array();
50        }
51        return $cache;
52    }
53
54    function put($key, $data)
55    {
56        $cache = &ApiCache::_getCache();
57        $cache[$key] = $data;
58    }
59
60    function del($key)
61    {
62        $cache = &ApiCache::_getCache();
63        if (isset($cache[$key]))
64        {
65            unset($cache[$key]);
66        }
67
68        $qry = new DBQuery();
69        $qry->execute("delete from kb3_apicache where cfg_key = '".$key."'
70                               and cfg_site = '".KB_SITE."'");
71    }
72
73    function set($key, $value)
74    {
75        //$cache = &ApiCache::_getCache();
76
77        // only update the database when the old value differs
78        if (isset($cache[$key]))
79        {
80            if ($cache[$key] === $value)
81            {
82                return;
83            }
84        }
85
86        if (is_array($value))
87        {
88            $cache[$key] = $value;
89            $value = serialize($value);
90        }
91        else
92        {
93            $cache[$key] = stripslashes($value);
94        }
95        $value = addslashes($value);
96
97        $qry = new DBQuery();
98        $qry->execute("select cfg_value from kb3_apicache
99                       where cfg_key = '".$key."' and cfg_site = '".KB_SITE."'");
100        if ($qry->recordCount())
101        {
102            $sql = "update kb3_apicache set cfg_value = '".$value."'
103                    where cfg_site = '".KB_SITE."' and cfg_key = '".$key."'";
104        }
105        else
106        {
107            $sql = "insert into kb3_apicache values ('".KB_SITE."','".$key."','".$value."')";
108        }
109        $qry->execute($sql);
110    }
111
112    function &get($key)
113    {
114        $cache = &ApiCache::_getCache();
115
116        if (!isset($cache[$key]))
117        {
118            return ApiCache::defaultval($key);
119        }
120        return stripslashes($cache[$key]);
121    }
122
123        function &getnumerical($key)
124    {
125        $cache = &ApiCache::_getCache();
126
127        if (!isset($cache[$key]))
128        {
129            return ApiCache::defaultval($key);
130        }
131        return $cache[$key];
132    }
133    function defaultval($key)
134    {
135        // add important upgrade configs here, they will return the default if not set
136        // they will be shown as set but take no space in the database
137        //$defaults = array('summarytable_rowcount' => 8);
138                //$defaults = array('killcount' => 50);
139               
140        if (!isset($defaults[$key]))
141        {
142            return null;
143        }
144        return $defaults[$key];
145    }
146}
147?>
Note: See TracBrowser for help on using the browser.