diff options
Diffstat (limited to 'www/wiki/extensions/SemanticMediaWiki/tests/phpunit/Utils/PageReader.php')
-rw-r--r-- | www/wiki/extensions/SemanticMediaWiki/tests/phpunit/Utils/PageReader.php | 105 |
1 files changed, 105 insertions, 0 deletions
diff --git a/www/wiki/extensions/SemanticMediaWiki/tests/phpunit/Utils/PageReader.php b/www/wiki/extensions/SemanticMediaWiki/tests/phpunit/Utils/PageReader.php new file mode 100644 index 00000000..638cc4c3 --- /dev/null +++ b/www/wiki/extensions/SemanticMediaWiki/tests/phpunit/Utils/PageReader.php @@ -0,0 +1,105 @@ +<?php + +namespace SMW\Tests\Utils; + +use Revision; +use TextContent; +use Title; +use UnexpectedValueException; + +/** + * @license GNU GPL v2+ + * @since 2.1 + * + * @author mwjames + */ +class PageReader { + + /** + * @var WikiPage + */ + private $page = null; + + /** + * @since 2.1 + * + * @return WikiPage + * @throws UnexpectedValueException + */ + public function getPage() { + + if ( $this->page instanceof \WikiPage ) { + return $this->page; + } + + throw new UnexpectedValueException( 'Expected a WikiPage instance, use createPage first' ); + } + + /** + * @since 2.1 + * + * @param Title $title + * + * @return text + */ + public function getContentAsText( Title $title ) { + + $this->page = new \WikiPage( $title ); + + if ( method_exists( $this->page, 'getContent' ) ) { + $content = $this->page->getContent(); + + if ( $content instanceof TextContent ) { + return $content->getNativeData(); + } else { + return ''; + } + } + + return $this->page->getText(); + } + + /** + * @since 2.2 + */ + public function getEditInfo( Title $title ) { + + $this->page = new \WikiPage( $title ); + + if ( class_exists( 'WikitextContent' ) ) { + + $content = $this->page->getRevision()->getContent(); + $format = $content->getContentHandler()->getDefaultFormat(); + + return $this->page->prepareContentForEdit( + $content, + null, + null, + $format + ); + } + + if ( method_exists( $this->getPage()->getRevision(), 'getContent' ) ) { + $text = $this->getPage()->getRevision()->getContent( Revision::RAW ); + } else { + $text = $this->getPage()->getRevision()->getRawText(); + } + return $this->page->prepareTextForEdit( + $text, + null, + null + ); + } + + /** + * @since 3.0 + * + * @param Title $title + * + * @return ParserOutput|null + */ + public function getParserOutputFromEdit( Title $title ) { + return $this->getEditInfo( $title )->output; + } + +} |