zend-framework1 /Service/DeveloperGarden/SecurityTokenServer/Cache.php

Language PHP Lines 208
MD5 Hash 60ad4a07022150f582e45926cbe018cb Estimated Cost $1,980 (why?)
Repository https://bitbucket.org/goldie/zend-framework1.git View Raw File View Project SPDX
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage DeveloperGarden
 * @copyright  Copyright (c) 2005-2011 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Cache.php 23775 2011-03-01 17:25:24Z ralph $
 */

/**
 * @category   Zend
 * @package    Zend_Service
 * @subpackage DeveloperGarden
 * @copyright  Copyright (c) 2005-2011 Zend Technologies USA Inc. (http://www.zend.com)
 * @author     Marco Kaiser
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Service_DeveloperGarden_SecurityTokenServer_Cache
{
    /**
     * array with stored tokens
     *
     * @var array
     */
    protected static $_storedToken = array(
        'securityToken' => null,
        'getTokens' => null
    );

    /**
     * Internal cache for token values
     *
     * @var Zend_Cache_Core
     * @access private
     */
    private static $_cache = null;

    /**
     * PHP SOAP wsdl cache constant
     *
     * @var integer
     */
    private static $_wsdlCache = null;

// @codeCoverageIgnoreStart
    /**
     * Constructor overriding - make sure that a developer cannot instantiate
     */
    protected function __construct()
    {
    }
// @codeCoverageIgnoreEnd

    /**
     * returns stored token from cache or null
     *
     * @param string $tokenId
     * @throws Zend_Service_DeveloperGarden_Exception
     * @return Zend_Service_DeveloperGarden_Response_SecurityTokenServer_Interface|null
     */
    public static function getTokenFromCache($tokenId)
    {
        if (!array_key_exists($tokenId, self::$_storedToken)) {
            require_once 'Zend/Service/DeveloperGarden/Exception.php';
            throw new Zend_Service_DeveloperGarden_Exception(
                'tokenID ' . $tokenId . ' unknown.'
            );
        }

        if (self::hasCache() && self::$_storedToken[$tokenId] === null) {
            $cache = self::getCache();
            $token = $cache->load(md5($tokenId));
            if ($token !== false) {
                self::$_storedToken[$tokenId] = $token;
            }
        }

        return self::$_storedToken[$tokenId];
    }

    /**
     * set new value for the given tokenId
     *
     * @param string $tokenId
     * @throws Zend_Service_DeveloperGarden_Exception
     * @param Zend_Service_DeveloperGarden_Response_SecurityTokenServer_Interface $tokenValue
     * @return void
     */
    public static function setTokenToCache($tokenId,
        Zend_Service_DeveloperGarden_Response_SecurityTokenServer_Interface $tokenValue
    ) {
        if (!array_key_exists($tokenId, self::$_storedToken)) {
            require_once 'Zend/Service/DeveloperGarden/Exception.php';
            throw new Zend_Service_DeveloperGarden_Exception(
                'tokenID ' . $tokenId . ' unknown.'
            );
        }

        if (self::hasCache()) {
            $cache = self::getCache();
            $cache->save($tokenValue, md5($tokenId));
        }

        self::$_storedToken[$tokenId] = $tokenValue;
    }

    /**
     * reset the internal cache structure
     *
     * @return void
     */
    public static function resetTokenCache()
    {
        foreach (self::$_storedToken as $key => $value) {
            $value = null;
            self::$_storedToken[$key] = $value;
        }
    }

    /**
     * Returns the cache
     *
     * @return Zend_Cache_Core
     */
    public static function getCache()
    {
        return self::$_cache;
    }

    /**
     * Set a cache for token
     *
     * @param Zend_Cache_Core $cache A cache frontend
     */
    public static function setCache(Zend_Cache_Core $cache)
    {
        self::$_cache = $cache;
    }

    /**
     * Returns true when a cache is set
     *
     * @return boolean
     */
    public static function hasCache()
    {
        return (self::$_cache !== null);
    }

    /**
     * Removes any cache
     *
     * @return void
     */
    public static function removeCache()
    {
        self::$_cache = null;
    }

    /**
     * Clears all cache data
     *
     * @return void
     */
    public static function clearCache()
    {
        $cache = self::getCache();
        if (method_exists($cache, 'clean')) {
            $cache->clean();
        }
        self::$_wsdlCache = null;
    }

    /**
     * Returns the wsdl cache
     *
     * @return integer
     */
    public static function getWsdlCache()
    {
        return self::$_wsdlCache;
    }

    /**
     * Set a cache for wsdl file
     *
     * @param integer $cache
     * @return void
     */
    public static function setWsdlCache($cache = null)
    {
        self::$_wsdlCache = $cache;
    }
}
Back to Top