]> git.mxchange.org Git - quix0rs-gnu-social.git/blob - plugins/LdapAuthentication/MemcacheSchemaCache.php
Added plugin AutoSandbox for spam-management: new users sandboxed by default
[quix0rs-gnu-social.git] / plugins / LdapAuthentication / MemcacheSchemaCache.php
1 <?php
2 /** 
3  * StatusNet, the distributed open-source microblogging tool
4  *
5  * Cache the LDAP schema in memcache to improve performance
6  *
7  * PHP version 5
8  *
9  * LICENCE: This program is free software: you can redistribute it and/or modify
10  * it under the terms of the GNU Affero General Public License as published by
11  * the Free Software Foundation, either version 3 of the License, or
12  * (at your option) any later version.
13  *
14  * This program is distributed in the hope that it will be useful,
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17  * GNU Affero General Public License for more details.
18  *
19  * You should have received a copy of the GNU Affero General Public License
20  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
21  *
22  * @category  Plugin
23  * @package   StatusNet
24  * @author    Craig Andrews <candrews@integralblue.com>
25  * @copyright 2009 Craig Andrews http://candrews.integralblue.com
26  * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
27  * @link      http://status.net/
28  */
29 class MemcacheSchemaCache implements Net_LDAP2_SchemaCache
30 {
31     protected $c;
32     protected $cacheKey;
33
34     /**
35     * Initialize the simple cache
36     *
37     * Config is as following:
38     *  memcache     memcache instance
39     *  cachekey  the key in the cache to look at
40     *
41     * @param array $cfg Config array
42     */
43     public function MemcacheSchemaCache($cfg)
44     {
45         $this->c = $cfg['c'];
46         $this->cacheKey = $cfg['cacheKey'];
47     }
48
49     /**
50     * Return the schema object from the cache
51     *
52     * @return Net_LDAP2_Schema|Net_LDAP2_Error|false
53     */
54     public function loadSchema()
55     {
56          return $this->c->get($this->cacheKey);
57     }
58
59     /**
60     * Store a schema object in the cache
61     *
62     * This method will be called, if Net_LDAP2 has fetched a fresh
63     * schema object from LDAP and wants to init or refresh the cache.
64     *
65     * To invalidate the cache and cause Net_LDAP2 to refresh the cache,
66     * you can call this method with null or false as value.
67     * The next call to $ldap->schema() will then refresh the caches object.
68     *
69     * @param mixed $schema The object that should be cached
70     * @return true|Net_LDAP2_Error|false
71     */
72     public function storeSchema($schema) {
73         return $this->c->set($this->cacheKey, $schema);
74     }
75 }