* @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
$output->addModuleStyles( 'mediawiki.action.view.redirectPage' );
}
}
+
+ // Pass along user-signature flag
+ if ( $this->hadSignature ) {
+ $output->setFlag( 'user-signature' );
+ }
}
/**