wiki.techinc.nl/includes/page/PageLookup.php
daniel fd3a695230 Title: use PageStore instead of LinkCache
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
2021-11-02 23:12:47 +01:00

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;
}