Chris@0: wrappedSessionHandler = $wrapped_session_handler; Chris@0: $this->sessionWritable = $session_writable; Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function close() { Chris@0: return $this->wrappedSessionHandler->close(); Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function destroy($session_id) { Chris@0: return $this->wrappedSessionHandler->destroy($session_id); Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function gc($max_lifetime) { Chris@0: return $this->wrappedSessionHandler->gc($max_lifetime); Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function open($save_path, $session_id) { Chris@0: return $this->wrappedSessionHandler->open($save_path, $session_id); Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function read($session_id) { Chris@18: $value = $this->wrappedSessionHandler->read($session_id); Chris@18: $this->readSessions[$session_id] = $value; Chris@18: return $value; Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function write($session_id, $session_data) { Chris@18: // Only write the session when it has been modified. Chris@18: if (isset($this->readSessions[$session_id]) && $this->readSessions[$session_id] === $session_data) { Chris@18: return TRUE; Chris@18: } Chris@0: if ($this->isSessionWritable()) { Chris@0: return $this->wrappedSessionHandler->write($session_id, $session_data); Chris@0: } Chris@18: return TRUE; Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function setSessionWritable($flag) { Chris@0: $this->sessionWritable = (bool) $flag; Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function isSessionWritable() { Chris@0: return $this->sessionWritable; Chris@0: } Chris@0: Chris@0: }