In order to prevent bad titles from entering the database, PageIdentityValue should not allow instances that have obviously broken dbeys, just like it does not allow construction for a special page. Note however that for now, we allow PageReferenceValue to represent thigns that are not actual pages, such as titles like "User:#1234" which are used in the block log to represent autoblock targets. Similarly, a PageReferenceValue can represent a special page. This patch introduces a convenience method for constructing PageIdentityValues in a context where it is uncertain whetehr the title is valid, providing an opportunity to the caller to report in which context the bad values were found. In addition, this patch adds some documentation and testing, to clarify the semantics of methods in PageStore with respect to invalid and non- proper titles. Bug: T282070 Change-Id: I8a44d9e73dda8fe38d009847332946809767d0fa
120 lines
3.4 KiB
PHP
120 lines
3.4 KiB
PHP
<?php
|
|
|
|
namespace MediaWiki\Page;
|
|
|
|
use IDBAccessObject;
|
|
use InvalidArgumentException;
|
|
use MediaWiki\Linker\LinkTarget;
|
|
|
|
/**
|
|
* Service interface for looking up infermation about wiki pages
|
|
*
|
|
* @since 1.36
|
|
*/
|
|
interface PageLookup extends IDBAccessObject {
|
|
|
|
/**
|
|
* Returns the PageIdentity for the given LinkTarget. The page does not have to exist.
|
|
* Fragments are ignored.
|
|
*
|
|
* The LinkTarget must refer to a proper page - that is, it must not be a relative section link,
|
|
* an interwiki link, or refer to a special page.
|
|
*
|
|
* @param LinkTarget $link
|
|
* @param int $queryFlags
|
|
*
|
|
* @throws InvalidArgumentException if $link does not refer to a proper page.
|
|
* @return ProperPageIdentity
|
|
*/
|
|
public function getPageForLink(
|
|
LinkTarget $link,
|
|
int $queryFlags = self::READ_NORMAL
|
|
): ProperPageIdentity;
|
|
|
|
/**
|
|
* Returns the PageRecord of the given page.
|
|
*
|
|
* @param int $pageId
|
|
* @param int $queryFlags
|
|
*
|
|
* @throws InvalidArgumentException if $pageId is 0 or negative.
|
|
* @return ExistingPageRecord|null The page's PageRecord, or null if the page was not found.
|
|
*/
|
|
public function getPageById(
|
|
int $pageId,
|
|
int $queryFlags = self::READ_NORMAL
|
|
): ?ExistingPageRecord;
|
|
|
|
/**
|
|
* Returns the PageRecord for the given name and namespace.
|
|
*
|
|
* @param int $namespace
|
|
* @param string $dbKey
|
|
* @param int $queryFlags
|
|
*
|
|
* @return ExistingPageRecord|null The page's PageRecord, or null if the page was not found.
|
|
* @throws InvalidArgumentException if $namespace is negative or $dbKey is empty.
|
|
*/
|
|
public function getPageByName(
|
|
int $namespace,
|
|
string $dbKey,
|
|
int $queryFlags = self::READ_NORMAL
|
|
): ?ExistingPageRecord;
|
|
|
|
/**
|
|
* Returns a PageIdentity for a given user provided page name text.
|
|
* Returns null if the title is not a valid name of a proper page,
|
|
* e.g if it is a special page, an interwiki link, a relative section line, or simply invalid.
|
|
*
|
|
* @since 1.37
|
|
*
|
|
* @param string $text
|
|
* @param int $defaultNamespace Namespace to assume per default (usually NS_MAIN)
|
|
* @param int $queryFlags
|
|
*
|
|
* @return ProperPageIdentity|null
|
|
*/
|
|
public function getPageByText(
|
|
string $text,
|
|
int $defaultNamespace = NS_MAIN,
|
|
int $queryFlags = self::READ_NORMAL
|
|
): ?ProperPageIdentity;
|
|
|
|
/**
|
|
* Returns an ExistingPageRecord for a given user provided page name text.
|
|
*
|
|
* Returns null if the page does not exist or if title is not a valid name of a proper page,
|
|
* e.g if it is a special page, an interwiki link, a relative section line, or simply invalid.
|
|
*
|
|
* @since 1.37
|
|
*
|
|
* @param string $text
|
|
* @param int $defaultNamespace Namespace to assume per default (usually NS_MAIN)
|
|
* @param int $queryFlags
|
|
*
|
|
* @return ExistingPageRecord|null
|
|
*/
|
|
public function getExistingPageByText(
|
|
string $text,
|
|
int $defaultNamespace = NS_MAIN,
|
|
int $queryFlags = self::READ_NORMAL
|
|
): ?ExistingPageRecord;
|
|
|
|
/**
|
|
* Returns the PageRecord of the given page.
|
|
* May return $page if that already is a PageRecord.
|
|
*
|
|
* The PageReference must refer to a proper page - that is, it must not refer to a special page.
|
|
*
|
|
* @param PageReference $page
|
|
* @param int $queryFlags
|
|
*
|
|
* @return ExistingPageRecord|null The page's PageRecord, or null if the page was not found.
|
|
* @throws InvalidArgumentException if $page does not refer to a proper page.
|
|
*/
|
|
public function getPageByReference(
|
|
PageReference $page,
|
|
int $queryFlags = self::READ_NORMAL
|
|
): ?ExistingPageRecord;
|
|
|
|
}
|