'revision' => (int)$revision,
'model' => $model ? (string)$model : null,
'lang' => $lang ? (string)$lang : null,
+ 'restrictions' => null
] );
}
'length' => intval( $row->page_len ),
'redirect' => intval( $row->page_is_redirect ),
'revision' => intval( $row->page_latest ),
- 'model' => !empty( $row->page_content_model ) ? strval( $row->page_content_model ) : null,
- 'lang' => !empty( $row->page_lang ) ? strval( $row->page_lang ) : null,
+ 'model' => !empty( $row->page_content_model )
+ ? strval( $row->page_content_model )
+ : null,
+ 'lang' => !empty( $row->page_lang )
+ ? strval( $row->page_lang )
+ : null,
+ 'restrictions' => !empty( $row->page_restrictions )
+ ? strval( $row->page_restrictions )
+ : null
] );
}
$this->goodLinks->clear( $dbkey );
}
- /**
- * Add a title to the link cache, return the page_id or zero if non-existent
- *
- * @deprecated since 1.27, unused
- * @param string $title Prefixed DB key
- * @return int Page ID or zero
- */
- public function addLink( $title ) {
- $nt = Title::newFromDBkey( $title );
- if ( !$nt ) {
- return 0;
- }
- return $this->addLinkObj( $nt );
- }
-
/**
* Fields that LinkCache needs to select
*
public static function getSelectFields() {
global $wgContentHandlerUseDB, $wgPageLanguageUseDB;
- $fields = [ 'page_id', 'page_len', 'page_is_redirect', 'page_latest' ];
+ $fields = [
+ 'page_id',
+ 'page_len',
+ 'page_is_redirect',
+ 'page_latest',
+ 'page_restrictions'
+ ];
if ( $wgContentHandlerUseDB ) {
$fields[] = 'page_content_model';
}
}
private function isCacheable( LinkTarget $title ) {
- return ( $title->inNamespace( NS_TEMPLATE ) || $title->inNamespace( NS_FILE ) );
+ $ns = $title->getNamespace();
+ if ( in_array( $ns, [ NS_TEMPLATE, NS_FILE, NS_CATEGORY ] ) ) {
+ return true;
+ }
+ // Focus on transcluded pages more than the main content
+ if ( MWNamespace::isContent( $ns ) ) {
+ return false;
+ }
+ // Non-talk extension namespaces (e.g. NS_MODULE)
+ return ( $ns >= 100 && MWNamespace::isSubject( $ns ) );
}
private function fetchPageRow( IDatabase $db, LinkTarget $nt ) {