Return a typed object from WikiPage::prepareContentForEdit
authorKunal Mehta <legoktm@member.fsf.org>
Mon, 17 Jul 2017 21:44:53 +0000 (14:44 -0700)
committerTim Starling <tstarling@wikimedia.org>
Wed, 19 Jul 2017 06:24:39 +0000 (06:24 +0000)
This makes it easier to figure out what values are available and
includes documentation about each field.

This will also allow us to add deprecation warnings for deprecated
properties via __get() in the future.

Change-Id: I4ecc900372546013253256749563aaa203ff8963

autoload.php
includes/edit/PreparedEdit.php [new file with mode: 0644]
includes/page/WikiPage.php

index ce69ecd..a6128a4 100644 (file)
@@ -875,6 +875,7 @@ $wgAutoloadLocalClasses = [
        'MediaWiki\\Auth\\UsernameAuthenticationRequest' => __DIR__ . '/includes/auth/UsernameAuthenticationRequest.php',
        'MediaWiki\\Diff\\ComplexityException' => __DIR__ . '/includes/diff/ComplexityException.php',
        'MediaWiki\\Diff\\WordAccumulator' => __DIR__ . '/includes/diff/WordAccumulator.php',
+       'MediaWiki\\Edit\\PreparedEdit' => __DIR__ . '/includes/edit/PreparedEdit.php',
        'MediaWiki\\HeaderCallback' => __DIR__ . '/includes/HeaderCallback.php',
        'MediaWiki\\Interwiki\\ClassicInterwikiLookup' => __DIR__ . '/includes/interwiki/ClassicInterwikiLookup.php',
        'MediaWiki\\Interwiki\\InterwikiLookup' => __DIR__ . '/includes/interwiki/InterwikiLookup.php',
diff --git a/includes/edit/PreparedEdit.php b/includes/edit/PreparedEdit.php
new file mode 100644 (file)
index 0000000..62624f4
--- /dev/null
@@ -0,0 +1,113 @@
+<?php
+/**
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ */
+
+namespace MediaWiki\Edit;
+
+use Content;
+use ParserOptions;
+use ParserOutput;
+
+/**
+ * Represents information returned by WikiPage::prepareContentForEdit()
+ *
+ * @since 1.30
+ */
+class PreparedEdit {
+
+       /**
+        * Time this prepared edit was made
+        *
+        * @var string
+        */
+       public $timestamp;
+
+       /**
+        * Revision ID
+        *
+        * @var int|null
+        */
+       public $revid;
+
+       /**
+        * Content after going through pre-save transform
+        *
+        * @var Content|null
+        */
+       public $pstContent;
+
+       /**
+        * Content format
+        *
+        * @var string
+        */
+       public $format;
+
+       /**
+        * Parser options used to get parser output
+        *
+        * @var ParserOptions
+        */
+       public $popts;
+
+       /**
+        * Parser output
+        *
+        * @var ParserOutput|null
+        */
+       public $output;
+
+       /**
+        * Content that is being saved (before PST)
+        *
+        * @var Content
+        */
+       public $newContent;
+
+       /**
+        * Current content of the page, if any
+        *
+        * @var Content|null
+        */
+       public $oldContent;
+
+       /**
+        * $newContent in text form
+        *
+        * @var string
+        * @deprecated since 1.21
+        */
+       public $newText;
+
+       /**
+        * $oldContent in text from
+        *
+        * @var string
+        * @deprecated since 1.21
+        */
+       public $oldText;
+
+       /**
+        * $pstContent in text form
+        *
+        * @var string
+        * @deprecated since 1.21
+        */
+       public $pst;
+}
index 3ba2d2e..20fb9be 100644 (file)
@@ -20,6 +20,7 @@
  * @file
  */
 
+use MediaWiki\Edit\PreparedEdit;
 use \MediaWiki\Logger\LoggerFactory;
 use \MediaWiki\MediaWikiServices;
 use Wikimedia\Rdbms\FakeResultWrapper;
@@ -1969,7 +1970,7 @@ class WikiPage implements Page, IDBAccessObject {
         * @param string|null $serialFormat
         * @param bool $useCache Check shared prepared edit cache
         *
-        * @return object
+        * @return PreparedEdit
         *
         * @since 1.21
         */
@@ -2019,7 +2020,7 @@ class WikiPage implements Page, IDBAccessObject {
                $popts = ParserOptions::newFromUserAndLang( $user, $wgContLang );
                Hooks::run( 'ArticlePrepareTextForEdit', [ $this, $popts ] );
 
-               $edit = (object)[];
+               $edit = new PreparedEdit();
                if ( $cachedEdit ) {
                        $edit->timestamp = $cachedEdit->timestamp;
                } else {