Code Duplication    Length = 89-91 lines in 2 locations

includes/content/CssContent.php 1 location

@@ 33-121 (lines=89) @@
30
 *
31
 * @ingroup Content
32
 */
33
class CssContent extends TextContent {
34
35
	/**
36
	 * @var bool|Title|null
37
	 */
38
	private $redirectTarget = false;
39
40
	/**
41
	 * @param string $text CSS code.
42
	 * @param string $modelId the content content model
43
	 */
44
	public function __construct( $text, $modelId = CONTENT_MODEL_CSS ) {
45
		parent::__construct( $text, $modelId );
46
	}
47
48
	/**
49
	 * Returns a Content object with pre-save transformations applied using
50
	 * Parser::preSaveTransform().
51
	 *
52
	 * @param Title $title
53
	 * @param User $user
54
	 * @param ParserOptions $popts
55
	 *
56
	 * @return CssContent
57
	 *
58
	 * @see TextContent::preSaveTransform
59
	 */
60
	public function preSaveTransform( Title $title, User $user, ParserOptions $popts ) {
61
		global $wgParser;
62
		// @todo Make pre-save transformation optional for script pages
63
64
		$text = $this->getNativeData();
65
		$pst = $wgParser->preSaveTransform( $text, $title, $user, $popts );
66
67
		return new static( $pst );
68
	}
69
70
	/**
71
	 * @return string CSS wrapped in a <pre> tag.
72
	 */
73
	protected function getHtml() {
74
		$html = "";
75
		$html .= "<pre class=\"mw-code mw-css\" dir=\"ltr\">\n";
76
		$html .= htmlspecialchars( $this->getNativeData() );
77
		$html .= "\n</pre>\n";
78
79
		return $html;
80
	}
81
82
	/**
83
	 * @param Title $target
84
	 * @return CssContent
85
	 */
86
	public function updateRedirect( Title $target ) {
87
		if ( !$this->isRedirect() ) {
88
			return $this;
89
		}
90
91
		return $this->getContentHandler()->makeRedirectContent( $target );
92
	}
93
94
	/**
95
	 * @return Title|null
96
	 */
97
	public function getRedirectTarget() {
98
		if ( $this->redirectTarget !== false ) {
99
			return $this->redirectTarget;
100
		}
101
		$this->redirectTarget = null;
102
		$text = $this->getNativeData();
103
		if ( strpos( $text, '/* #REDIRECT */' ) === 0 ) {
104
			// Extract the title from the url
105
			preg_match( '/title=(.*?)&action=raw/', $text, $matches );
106
			if ( isset( $matches[1] ) ) {
107
				$title = Title::newFromText( $matches[1] );
108
				if ( $title ) {
109
					// Have a title, check that the current content equals what
110
					// the redirect content should be
111
					if ( $this->equals( $this->getContentHandler()->makeRedirectContent( $title ) ) ) {
112
						$this->redirectTarget = $title;
113
					}
114
				}
115
			}
116
		}
117
118
		return $this->redirectTarget;
119
	}
120
121
}
122

includes/content/JavaScriptContent.php 1 location

@@ 33-123 (lines=91) @@
30
 *
31
 * @ingroup Content
32
 */
33
class JavaScriptContent extends TextContent {
34
35
	/**
36
	 * @var bool|Title|null
37
	 */
38
	private $redirectTarget = false;
39
40
	/**
41
	 * @param string $text JavaScript code.
42
	 * @param string $modelId the content model name
43
	 */
44
	public function __construct( $text, $modelId = CONTENT_MODEL_JAVASCRIPT ) {
45
		parent::__construct( $text, $modelId );
46
	}
47
48
	/**
49
	 * Returns a Content object with pre-save transformations applied using
50
	 * Parser::preSaveTransform().
51
	 *
52
	 * @param Title $title
53
	 * @param User $user
54
	 * @param ParserOptions $popts
55
	 *
56
	 * @return JavaScriptContent
57
	 */
58
	public function preSaveTransform( Title $title, User $user, ParserOptions $popts ) {
59
		global $wgParser;
60
		// @todo Make pre-save transformation optional for script pages
61
		// See bug #32858
62
63
		$text = $this->getNativeData();
64
		$pst = $wgParser->preSaveTransform( $text, $title, $user, $popts );
65
66
		return new static( $pst );
67
	}
68
69
	/**
70
	 * @return string JavaScript wrapped in a <pre> tag.
71
	 */
72
	protected function getHtml() {
73
		$html = "";
74
		$html .= "<pre class=\"mw-code mw-js\" dir=\"ltr\">\n";
75
		$html .= htmlspecialchars( $this->getNativeData() );
76
		$html .= "\n</pre>\n";
77
78
		return $html;
79
	}
80
81
	/**
82
	 * If this page is a redirect, return the content
83
	 * if it should redirect to $target instead
84
	 *
85
	 * @param Title $target
86
	 * @return JavaScriptContent
87
	 */
88
	public function updateRedirect( Title $target ) {
89
		if ( !$this->isRedirect() ) {
90
			return $this;
91
		}
92
93
		return $this->getContentHandler()->makeRedirectContent( $target );
94
	}
95
96
	/**
97
	 * @return Title|null
98
	 */
99
	public function getRedirectTarget() {
100
		if ( $this->redirectTarget !== false ) {
101
			return $this->redirectTarget;
102
		}
103
		$this->redirectTarget = null;
104
		$text = $this->getNativeData();
105
		if ( strpos( $text, '/* #REDIRECT */' ) === 0 ) {
106
			// Extract the title from the url
107
			preg_match( '/title=(.*?)\\\\u0026action=raw/', $text, $matches );
108
			if ( isset( $matches[1] ) ) {
109
				$title = Title::newFromText( $matches[1] );
110
				if ( $title ) {
111
					// Have a title, check that the current content equals what
112
					// the redirect content should be
113
					if ( $this->equals( $this->getContentHandler()->makeRedirectContent( $title ) ) ) {
114
						$this->redirectTarget = $title;
115
					}
116
				}
117
			}
118
		}
119
120
		return $this->redirectTarget;
121
	}
122
123
}
124