# Finally, add the fragment.
$url .= $this->getFragmentForURL();
- wfRunHooks( 'GetFullURL', array( &$this, &$url, $query ) );
+ wfRunHooks( 'GetFullURL', array( &$this, &$url, $query, $variant ) );
return $url;
}
$server = $wgInternalServer !== false ? $wgInternalServer : $wgServer;
}
$url = wfExpandUrl( $server . $this->getLocalURL( $query, $variant ), PROTO_HTTP );
- wfRunHooks( 'GetInternalURL', array( &$this, &$url, $query ) );
+ wfRunHooks( 'GetInternalURL', array( &$this, &$url, $query, $variant ) );
return $url;
}
* @return string The URL
*/
public function getCanonicalURL( $query = '', $variant = false ) {
- global $wgCanonicalServer;
- $url = $wgCanonicalServer . $this->getLocalURL( $query, $variant ) . $this->getFragmentForURL();
- wfRunHooks( 'GetCanonicalURL', array( &$this, &$url, $query ) );
+ $url = wfExpandUrl( $this->getLocalURL( $query, $variant ) . $this->getFragmentForURL(), PROTO_CANONICAL );
+ wfRunHooks( 'GetCanonicalURL', array( &$this, &$url, $query, $variant ) );
return $url;
}
* acidentally creating new bugs where $title->equals( Title::newFromText() )
* ends up reporting something differently than $title->isMainPage();
*
+ * @since 1.18
* @return Bool
*/
public function isMainPage() {
/**
* Is there a version of this page in the deletion archive?
*
- * @param $includeSuppressed Boolean Include suppressed revisions?
* @return Int the number of archived revisions
*/
- public function isDeleted( $includeSuppressed = false ) {
+ public function isDeleted() {
if ( $this->getNamespace() < 0 ) {
$n = 0;
} else {
$dbr = wfGetDB( DB_SLAVE );
- $conditions = array( 'ar_namespace' => $this->getNamespace(), 'ar_title' => $this->getDBkey() );
-
- if( !$includeSuppressed ) {
- $suppressedTextBits = Revision::DELETED_TEXT | Revision::DELETED_RESTRICTED;
- $conditions[] = $dbr->bitAnd('ar_deleted', $suppressedTextBits ) .
- ' != ' . $suppressedTextBits;
- }
$n = $dbr->selectField( 'archive', 'COUNT(*)',
- $conditions,
+ array( 'ar_namespace' => $this->getNamespace(), 'ar_title' => $this->getDBkey() ),
__METHOD__
);
if ( $this->getNamespace() == NS_FILE ) {
- $fconditions = array( 'fa_name' => $this->getDBkey() );
- if( !$includeSuppressed ) {
- $suppressedTextBits = File::DELETED_FILE | File::DELETED_RESTRICTED;
- $fconditions[] = $dbr->bitAnd('fa_deleted', $suppressedTextBits ) .
- ' != ' . $suppressedTextBits;
- }
-
- $n += $dbr->selectField( 'filearchive',
- 'COUNT(*)',
- $fconditions,
+ $n += $dbr->selectField( 'filearchive', 'COUNT(*)',
+ array( 'fa_name' => $this->getDBkey() ),
__METHOD__
);
}
*/
public function resetArticleID( $newid ) {
$linkCache = LinkCache::singleton();
- $linkCache->clearBadLink( $this->getPrefixedDBkey() );
+ $linkCache->clearLink( $this );
if ( $newid === false ) {
$this->mArticleID = -1;
private function moveOverExistingRedirect( &$nt, $reason = '', $createRedirect = true ) {
global $wgUser, $wgContLang, $wgEnableInterwikiTemplatesTracking, $wgGlobalDatabase;
- $moveOverRedirect = $nt->exists();
+ if ( $nt->exists() ) {
+ $moveOverRedirect = true;
+ $logType = 'move_redir';
+ } else {
+ $moveOverRedirect = false;
+ $logType = 'move';
+ }
- $commentMsg = ( $moveOverRedirect ? '1movedto2_redir' : '1movedto2' );
- $comment = wfMsgForContent( $commentMsg, $this->getPrefixedText(), $nt->getPrefixedText() );
+ $redirectSuppressed = !$createRedirect && $wgUser->isAllowed( 'suppressredirect' );
+ $logEntry = new ManualLogEntry( 'move', $logType );
+ $logEntry->setPerformer( $wgUser );
+ $logEntry->setTarget( $this );
+ $logEntry->setComment( $reason );
+ $logEntry->setParameters( array(
+ '4::target' => $nt->getPrefixedText(),
+ '5::noredir' => $redirectSuppressed ? '1': '0',
+ ) );
+
+ $formatter = LogFormatter::newFromEntry( $logEntry );
+ $formatter->setContext( RequestContext::newExtraneousContext( $this ) );
+ $comment = $formatter->getPlainActionText();
if ( $reason ) {
$comment .= wfMsgForContent( 'colon-separator' ) . $reason;
}
'pl_title' => $nt->getDBkey() ),
__METHOD__ );
}
- $redirectSuppressed = false;
} else {
$this->resetArticleID( 0 );
- $redirectSuppressed = true;
}
# Log the move
- $log = new LogPage( 'move' );
- $logType = ( $moveOverRedirect ? 'move_redir' : 'move' );
- $log->addEntry( $logType, $this, $reason, array( 1 => $nt->getPrefixedText(), 2 => $redirectSuppressed ) );
+ $logid = $logEntry->insert();
+ $logEntry->publish( $logid );
# Purge caches for old and new titles
if ( $moveOverRedirect ) {
&& $this->getDBkey() === $title->getDBkey();
}
+ /**
+ * Check if this title is a subpage of another title
+ *
+ * @param $title Title
+ * @return Bool
+ */
+ public function isSubpageOf( Title $title ) {
+ return $this->getInterwiki() === $title->getInterwiki()
+ && $this->getNamespace() == $title->getNamespace()
+ && strpos( $this->getDBkey(), $title->getDBkey() . '/' ) === 0;
+ }
+
/**
* Callback for usort() to do title sorts by (namespace, title)
*