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 }