} else {
return $rt->getFullURL();
}
- } elseif( $rt->exists() ) {
- // Internal redirects can be handled relatively gracefully.
- // We may have to change to another Article subclass, though.
- return $rt;
- }
+ }
+ return $rt;
}
}
* @access private
*/
function loadPageData( $data ) {
+ $this->mTitle->mArticleID = $data->page_id;
$this->mTitle->loadRestrictions( $data->page_restrictions );
$this->mTitle->mRestrictionsLoaded = true;
$t = $this->mTitle->getPrefixedText();
if( $oldid ) {
$t .= ',oldid='.$oldid;
+ $text = wfMsg( 'missingarticle', $t );
+ } else {
+ $text = wfMsg( 'noarticletext', $t );
}
- $text = wfMsg( 'missingarticle', $t );
}
# Another whitelist check in case oldid is altering the title
$this->view();
}
+ /**
+ * Handle action=purge
+ */
function purge() {
- global $wgUser, $wgRequest, $wgOut, $wgUseSquid;
-
- if ( $wgUser->isLoggedIn() || $wgRequest->wasPosted() || ! wfRunHooks( 'ArticlePurge', array( &$this ) ) ) {
- // Invalidate the cache
- $this->mTitle->invalidateCache();
+ global $wgUser, $wgRequest, $wgOut;
- if ( $wgUseSquid ) {
- // Commit the transaction before the purge is sent
- $dbw = wfGetDB( DB_MASTER );
- $dbw->immediateCommit();
-
- // Send purge
- $update = SquidUpdate::newSimplePurge( $this->mTitle );
- $update->doUpdate();
+ if ( $wgUser->isLoggedIn() || $wgRequest->wasPosted() ) {
+ if( wfRunHooks( 'ArticlePurge', array( &$this ) ) ) {
+ $this->doPurge();
}
- $this->view();
} else {
$msg = $wgOut->parse( wfMsg( 'confirm_purge' ) );
$action = $this->mTitle->escapeLocalURL( 'action=purge' );
$wgOut->addHTML( $msg );
}
}
+
+ /**
+ * Perform the actions of a page purging
+ */
+ function doPurge() {
+ global $wgUseSquid;
+ // Invalidate the cache
+ $this->mTitle->invalidateCache();
+
+ if ( $wgUseSquid ) {
+ // Commit the transaction before the purge is sent
+ $dbw = wfGetDB( DB_MASTER );
+ $dbw->immediateCommit();
+
+ // Send purge
+ $update = SquidUpdate::newSimplePurge( $this->mTitle );
+ $update->doUpdate();
+ }
+ $this->view();
+ }
/**
* Insert a new empty page record for this article.
}
/**
- * Theoretically we could defer these whole insert and update
- * functions for after display, but that's taking a big leap
- * of faith, and we want to be able to report database
- * errors at some point.
+ * Insert a new article into the database
* @access private
*/
function insertNewArticle( $text, $summary, $isminor, $watchthis, $suppressRC=false, $comment=false ) {
$dbw->delete( 'pagelinks', array( 'pl_from' => $id ) );
$dbw->delete( 'imagelinks', array( 'il_from' => $id ) );
$dbw->delete( 'categorylinks', array( 'cl_from' => $id ) );
+ $dbw->delete( 'templatelinks', array( 'tl_from' => $id ) );
+ $dbw->delete( 'externallinks', array( 'el_from' => $id ) );
# Log the deletion
$log = new LogPage( 'delete' );
# Parse the text
$options = new ParserOptions;
+ $options->setTidy(true);
$poutput = $wgParser->parse( $text, $this->mTitle, $options, true, true, $newid );
# Save it to the parser cache
# If this is another user's talk page, update newtalk
if ($this->mTitle->getNamespace() == NS_USER_TALK && $shortTitle != $wgUser->getName()) {
- $other = User::newFromName( $shortTitle );
- if( is_null( $other ) && User::isIP( $shortTitle ) ) {
- // An anonymous user
- $other = new User();
- $other->setName( $shortTitle );
- }
- if( $other ) {
- $other->setNewtalk( true );
+ if (wfRunHooks('ArticleEditUpdateNewTalk', array(&$this)) ) {
+ $other = User::newFromName( $shortTitle );
+ if( is_null( $other ) && User::isIP( $shortTitle ) ) {
+ // An anonymous user
+ $other = new User();
+ $other->setName( $shortTitle );
+ }
+ if( $other ) {
+ $other->setNewtalk( true );
+ }
}
}
}
/**
- * @todo document this function
+ * Generate the navigation links when browsing through an article revisions
+ * It shows the information as:
+ * Revision as of <date>; view current revision
+ * <- Previous version | Next Version ->
+ *
* @access private
* @param string $oldid Revision ID of this article revision
*/
$lnk = $current
? wfMsg( 'currentrevisionlink' )
: $lnk = $sk->makeKnownLinkObj( $this->mTitle, wfMsg( 'currentrevisionlink' ) );
- $prevlink = $sk->makeKnownLinkObj( $this->mTitle, wfMsg( 'previousrevision' ), 'direction=prev&oldid='.$oldid );
+ $prev = $this->mTitle->getPreviousRevisionID( $oldid ) ;
+ $prevlink = $prev
+ ? $sk->makeKnownLinkObj( $this->mTitle, wfMsg( 'previousrevision' ), 'direction=prev&oldid='.$oldid )
+ : wfMsg( 'previousrevision' );
$nextlink = $current
? wfMsg( 'nextrevision' )
: $sk->makeKnownLinkObj( $this->mTitle, wfMsg( 'nextrevision' ), 'direction=next&oldid='.$oldid );