mirror of
https://github.com/moodle/moodle.git
synced 2025-01-19 06:18:28 +01:00
29a541724f
This has been generated running the following Sniff, part of the Moodle's CodeSniffer standard: - PSR2.Methods.MethodDeclaration It just ensures all the function declarations have the correct order for: - abstract and final. - visibility (public, protected, private). - static. So, all the lines modified by this commit are function declarations and the only changes are in the positions of those keywords.
118 lines
3.6 KiB
PHP
118 lines
3.6 KiB
PHP
<?php
|
|
// This file is part of Moodle - http://moodle.org/
|
|
//
|
|
// Moodle is free software: you can redistribute it and/or modify
|
|
// it under the terms of the GNU General Public License as published by
|
|
// the Free Software Foundation, either version 3 of the License, or
|
|
// (at your option) any later version.
|
|
//
|
|
// Moodle is distributed in the hope that it will be useful,
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
// GNU General Public License for more details.
|
|
//
|
|
// You should have received a copy of the GNU General Public License
|
|
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
/**
|
|
* Session handler base.
|
|
*
|
|
* @package core
|
|
* @copyright 2013 Petr Skoda {@link http://skodak.org}
|
|
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
|
*/
|
|
|
|
namespace core\session;
|
|
|
|
defined('MOODLE_INTERNAL') || die();
|
|
|
|
/**
|
|
* Session handler base.
|
|
*
|
|
* @package core
|
|
* @copyright 2013 Petr Skoda {@link http://skodak.org}
|
|
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
|
*/
|
|
abstract class handler {
|
|
/** @var boolean $requireswritelock does the session need and/or have a lock? */
|
|
protected $requireswritelock = false;
|
|
|
|
/**
|
|
* Start the session.
|
|
* @return bool success
|
|
*/
|
|
public function start() {
|
|
return session_start();
|
|
}
|
|
|
|
/**
|
|
* Write the session and release lock. If the session was not intentionally opened
|
|
* with a write lock, then we will abort the session instead if able.
|
|
*/
|
|
public function write_close() {
|
|
if ($this->requires_write_lock()) {
|
|
session_write_close();
|
|
$this->requireswritelock = false;
|
|
} else {
|
|
$this->abort();
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Release lock on the session without writing it.
|
|
* May not be possible in older versions of PHP. If so, session may be written anyway
|
|
* so that any locks are released.
|
|
*/
|
|
public function abort() {
|
|
session_abort();
|
|
$this->requireswritelock = false;
|
|
}
|
|
|
|
/**
|
|
* This is called after init() and before start() to indicate whether the session
|
|
* opened should be writable or not. This is intentionally captured even if your
|
|
* handler doesn't support non-locking sessions, so that behavior (upon session close)
|
|
* matches closely between handlers.
|
|
* @param bool $requireswritelock true if needs to be open for writing
|
|
*/
|
|
public function set_requires_write_lock($requireswritelock) {
|
|
$this->requireswritelock = $requireswritelock;
|
|
}
|
|
|
|
/**
|
|
* Has this session been opened with a writelock? Your handler should call this during
|
|
* start() if you support read-only sessions.
|
|
* @return bool true if session is intended to have a write lock.
|
|
*/
|
|
public function requires_write_lock() {
|
|
return $this->requireswritelock;
|
|
}
|
|
|
|
/**
|
|
* Init session handler.
|
|
*/
|
|
abstract public function init();
|
|
|
|
/**
|
|
* Check the backend contains data for this session id.
|
|
*
|
|
* Note: this is intended to be called from manager::session_exists() only.
|
|
*
|
|
* @param string $sid
|
|
* @return bool true if session found.
|
|
*/
|
|
abstract public function session_exists($sid);
|
|
|
|
/**
|
|
* Kill all active sessions, the core sessions table is
|
|
* purged afterwards.
|
|
*/
|
|
abstract public function kill_all_sessions();
|
|
|
|
/**
|
|
* Kill one session, the session record is removed afterwards.
|
|
* @param string $sid
|
|
*/
|
|
abstract public function kill_session($sid);
|
|
}
|