* @author Daniel Kinzler
*/
+use MediaWiki\MediaWikiServices;
+
/**
* Content object for wiki text pages.
*
class WikitextContent extends TextContent {
private $redirectTargetAndText = null;
+ /**
+ * @var bool Tracks if the parser set the user-signature flag when creating this content, which
+ * would make it expire faster in ApiStashEdit.
+ */
+ private $hadSignature = false;
+
public function __construct( $text ) {
parent::__construct( $text, CONTENT_MODEL_WIKITEXT );
}
$text = $this->getNativeData();
$pst = $wgParser->preSaveTransform( $text, $title, $user, $popts );
- return ( $text === $pst ) ? $this : new static( $pst );
+ if ( $text === $pst ) {
+ return $this;
+ }
+
+ $ret = new static( $pst );
+
+ if ( $wgParser->getOutput()->getFlag( 'user-signature' ) ) {
+ $ret->hadSignature = true;
+ }
+
+ return $ret;
}
/**
return $this->redirectTargetAndText;
}
- $redir = MagicWord::get( 'redirect' );
+ $redir = MediaWikiServices::getInstance()->getMagicWordFactory()->get( 'redirect' );
$text = ltrim( $this->getNativeData() );
if ( $redir->matchStartAndRemove( $text ) ) {
// Extract the first link and see if it's usable
return false;
}
- switch ( $wgArticleCountMethod ) {
- case 'any':
- return true;
- case 'comma':
- $text = $this->getNativeData();
- return strpos( $text, ',' ) !== false;
- case 'link':
- if ( $hasLinks === null ) { # not known, find out
- if ( !$title ) {
- $context = RequestContext::getMain();
- $title = $context->getTitle();
- }
-
- $po = $this->getParserOutput( $title, null, null, false );
- $links = $po->getLinks();
- $hasLinks = !empty( $links );
+ if ( $wgArticleCountMethod === 'link' ) {
+ if ( $hasLinks === null ) { # not known, find out
+ if ( !$title ) {
+ $context = RequestContext::getMain();
+ $title = $context->getTitle();
}
- return $hasLinks;
+ $po = $this->getParserOutput( $title, null, null, false );
+ $links = $po->getLinks();
+ $hasLinks = !empty( $links );
+ }
+
+ return $hasLinks;
}
- return false;
+ return true;
}
/**
$output->addModuleStyles( 'mediawiki.action.view.redirectPage' );
}
}
+
+ // Pass along user-signature flag
+ if ( $this->hadSignature ) {
+ $output->setFlag( 'user-signature' );
+ }
}
/**