Localisation updates from https://translatewiki.net.
[mediawiki.git] / includes / session / SessionManagerInterface.php
blob568788ac6793280b5e1fcd3446862274ba15368b
1 <?php
2 /**
3 * MediaWiki\Session entry point interface
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
15 * You should have received a copy of the GNU General Public License along
16 * with this program; if not, write to the Free Software Foundation, Inc.,
17 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
18 * http://www.gnu.org/copyleft/gpl.html
20 * @file
21 * @ingroup Session
24 namespace MediaWiki\Session;
26 use MediaWiki\Request\WebRequest;
27 use MediaWiki\User\User;
28 use Psr\Log\LoggerAwareInterface;
30 /**
31 * This exists to make IDEs happy, so they don't see the
32 * internal-but-required-to-be-public methods on SessionManager.
34 * @ingroup Session
35 * @since 1.27
37 interface SessionManagerInterface extends LoggerAwareInterface {
38 /**
39 * Fetch the session for a request (or a new empty session if none is
40 * attached to it)
42 * @note You probably want to use $request->getSession() instead. It's more
43 * efficient and doesn't break FauxRequests or sessions that were changed
44 * by $this->getSessionById() or $this->getEmptySession().
45 * @param WebRequest $request Any existing associated session will be reset
46 * to the session corresponding to the data in the request itself.
47 * @return Session
48 * @throws \OverflowException if there are multiple sessions tied for top
49 * priority in the request. Exception has a property "sessionInfos"
50 * holding the SessionInfo objects for the sessions involved.
52 public function getSessionForRequest( WebRequest $request );
54 /**
55 * Fetch a session by ID
57 * @param string $id
58 * @param bool $create If no session exists for $id, try to create a new one.
59 * May still return null if a session for $id exists but cannot be loaded.
60 * @param WebRequest|null $request Corresponding request. Any existing
61 * session associated with this WebRequest object will be overwritten.
62 * @return Session|null
64 public function getSessionById( $id, $create = false, ?WebRequest $request = null );
66 /**
67 * Create a new, empty session
69 * The first provider configured that is able to provide an empty session
70 * will be used.
72 * @param WebRequest|null $request Corresponding request. Any existing
73 * session associated with this WebRequest object will be overwritten.
74 * @return Session
76 public function getEmptySession( ?WebRequest $request = null );
78 /**
79 * Invalidate sessions for a user
81 * After calling this, existing sessions should be invalid. For mutable
82 * session providers, this generally means the user has to log in again;
83 * for immutable providers, it generally means the loss of session data.
85 * @param User $user
87 public function invalidateSessionsForUser( User $user );
89 /**
90 * Return the HTTP headers that need varying on.
92 * The return value is such that someone could theoretically do this:
93 * @code
94 * foreach ( $provider->getVaryHeaders() as $header => $_ ) {
95 * $outputPage->addVaryHeader( $header );
96 * }
97 * @endcode
99 * @return array<string,null>
101 public function getVaryHeaders();
104 * Return the list of cookies that need varying on.
105 * @return string[]
107 public function getVaryCookies();