]> git.mxchange.org Git - quix0rs-gnu-social.git/blob - plugins/LdapCommon/MemcacheSchemaCache.php
Merge branch '0.9.x'
[quix0rs-gnu-social.git] / plugins / LdapCommon / 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 Free Software Foundation, Inc http://www.fsf.org
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 }