wiki.techinc.nl/includes/page/ProperPageIdentity.php
daniel 95ab541612 Doc: link mw:Manual:Modeling_pages
The various classes and interfaces for representing titles, links, and
pages can be a bit confusing. Link to a wiki page that provides an
overview:

https://www.mediawiki.org/wiki/Manual:Modeling_pages

Change-Id: I04fcf53bd15ca50a2bbb8693482a99ab651a4b30
2023-07-10 11:31:00 +00:00

86 lines
2.7 KiB
PHP

<?php
/**
* This program 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 2 of the License, or
* (at your option) any later version.
*
* This program 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 this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
* http://www.gnu.org/copyleft/gpl.html
*
* @file
*/
namespace MediaWiki\Page;
use Wikimedia\Assert\PreconditionException;
/**
* Interface for a page that is (or could be, or used to be) an editable wiki page.
*
* @note In contrast to PageIdentity, a ProperPageIdentity is guaranteed to
* represent an actual editable (or creatable) page. Eventually,
* PageIdentity is intended to adopt the same contract. At that point,
* ProperPageIdentity may become an alias for PageIdentity.
*
* @note For compatibility with the WikiPage class, ProperPageIdentity instances
* may be mutable, and return different values from methods such as getId() or exist()
* at different times. In the future, the contract of this interface is intended
* to be changed to disallow this.
*
* @see https://www.mediawiki.org/wiki/Manual:Modeling_pages
*
* @stable to type
*
* @since 1.36
*/
interface ProperPageIdentity extends PageIdentity {
/**
* Get the ID of the wiki this page belongs to.
*
* @see RevisionRecord::getWikiId()
*
* @return string|false The wiki's logical name, of false to indicate the local wiki.
*/
public function getWikiId();
/**
* Returns the page ID.
* Will return 0 if the page does not currently exist.
*
* @param string|false $wikiId Must be provided when accessing the ID of a non-local
* PageIdentity, to prevent data corruption when using a PageIdentity belonging
* to one wiki in the context of another. Should be omitted if expecting the local wiki.
* @throws PreconditionException if this PageIdentity does not belong to the wiki
* identified by $wikiId.
*
* @return int
*/
public function getId( $wikiId = self::LOCAL ): int;
/**
* Get the page title in DB key form.
*
* This should always return a valid DB key.
*
* @return string
*/
public function getDBkey(): string;
/**
* Always true.
* Implementations must ensure that no "improper" instances can be created.
*
* @return true
*/
public function canExist(): bool;
}