File indexing completed on 2024-12-22 05:36:24

0001 <?php
0002 /**
0003  *  ocs-webserver
0004  *
0005  *  Copyright 2016 by pling GmbH.
0006  *
0007  *    This file is part of ocs-webserver.
0008  *
0009  *    This program is free software: you can redistribute it and/or modify
0010  *    it under the terms of the GNU Affero General Public License as
0011  *    published by the Free Software Foundation, either version 3 of the
0012  *    License, or (at your option) any later version.
0013  *
0014  *    This program is distributed in the hope that it will be useful,
0015  *    but WITHOUT ANY WARRANTY; without even the implied warranty of
0016  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
0017  *    GNU Affero General Public License for more details.
0018  *
0019  *    You should have received a copy of the GNU Affero General Public License
0020  *    along with this program.  If not, see <http://www.gnu.org/licenses/>.
0021  **/
0022 
0023 class Local_Session_Handler_Memcache implements Zend_Session_SaveHandler_Interface
0024 {
0025 
0026     /** @var Zend_Cache_Backend_Interface $cache */
0027     public $cache = null;
0028     private $maxlifetime = 3600;
0029 
0030     public function __construct($cacheHandler)
0031     {
0032         if ($cacheHandler instanceof Zend_Cache_Backend_Interface) {
0033             $this->cache = $cacheHandler;
0034 
0035             return $this;
0036         }
0037 
0038         $cacheClass = 'Zend_Cache_Backend_' . $cacheHandler['cache']['type'];
0039         $_cache = new $cacheClass($cacheHandler);
0040         $this->cache = $_cache;
0041 
0042         if (isset($cacheHandler['cache']['maxlifetime'])) {
0043             $this->maxlifetime = (int)$cacheHandler['cache']['maxlifetime'];
0044         }
0045 
0046         return $this;
0047     }
0048 
0049     public function open($save_path, $name)
0050     {
0051         return true;
0052     }
0053 
0054     public function close()
0055     {
0056         return true;
0057     }
0058 
0059     public function read($id)
0060     {
0061         if (false === ($data = $this->cache->load($id))) {
0062             return '';
0063         } else {
0064             return $data;
0065         }
0066     }
0067 
0068     public function write($id, $sessionData)
0069     {
0070         $this->cache->save($sessionData, $id, array(), $this->maxlifetime);
0071         return true;
0072     }
0073 
0074     public function destroy($id)
0075     {
0076         $this->cache->remove($id);
0077         return true;
0078     }
0079 
0080     public function gc($notusedformemcache)
0081     {
0082         return true;
0083     }
0084 
0085 }