This causes Title to no longer look up fields in the database individually, but use LinkCache instead to load an entire row from the page table at once. This patch also causes Title to use in-process caching for some getters that did not use caching before, such as isNewPage() and getTouched(). These methods do not appear to be used on critical code paths that involve database updates. Note that getTouched() used to take an options $db parametr. This appears to be unused, and has been deprecated in favor of a $flags parameter, for consistency with other getters on the class. DEPLOY: Risky! This re-implements the internal caching logic of Title and slightly modifies caching semantics in some cases. This may have unforeseen consequences. Bug: T285389 Depends-On: I103b9e1d2bf594bfc1b0ea12b980dd20bb911c3a Change-Id: I2df81df7186025e001520f24fd498623c7184772
121 lines
3.5 KiB
PHP
121 lines
3.5 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.
|
|
* If $page is a PageIdentity, implementations may call methods like exists() and getId() on it.
|
|
*
|
|
* 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;
|
|
|
|
}
|