Moved action=deletetrackback and action=markpatrolled to Action class.
authorAlexandre Emsenhuber <ialex@users.mediawiki.org>
Sun, 12 Jun 2011 18:46:07 +0000 (18:46 +0000)
committerAlexandre Emsenhuber <ialex@users.mediawiki.org>
Sun, 12 Jun 2011 18:46:07 +0000 (18:46 +0000)
Also fixed order in DefaultSettings.php

includes/Article.php
includes/AutoLoader.php
includes/DefaultSettings.php
includes/Wiki.php
includes/actions/DeletetrackbackAction.php [new file with mode: 0644]
includes/actions/MarkpatrolledAction.php [new file with mode: 0644]

index c4c6f6a..2f6031b 100644 (file)
@@ -1706,29 +1706,10 @@ class Article {
 
        /**
         * Removes trackback record for current article from trackbacks table
+        * @deprecated since 1.19
         */
        public function deletetrackback() {
-               global $wgRequest, $wgOut;
-
-               if ( !$wgOut->getUser()->matchEditToken( $wgRequest->getVal( 'token' ) ) ) {
-                       $wgOut->addWikiMsg( 'sessionfailure' );
-
-                       return;
-               }
-
-               $permission_errors = $this->mTitle->getUserPermissionsErrors( 'delete', $wgOut->getUser() );
-
-               if ( count( $permission_errors ) ) {
-                       $wgOut->showPermissionsErrorPage( $permission_errors );
-
-                       return;
-               }
-
-               $db = wfGetDB( DB_MASTER );
-               $db->delete( 'trackbacks', array( 'tb_id' => $wgRequest->getInt( 'tbid' ) ) );
-
-               $wgOut->addWikiMsg( 'trackbackdeleteok' );
-               $this->mTitle->invalidateCache();
+               return Action::factory( 'deletetrackback', $this )->show();
        }
 
        /**
@@ -1786,62 +1767,10 @@ class Article {
 
        /**
         * Mark this particular edit/page as patrolled
+        * @deprecated since 1.19
         */
        public function markpatrolled() {
-               global $wgOut, $wgRequest;
-
-               $wgOut->setRobotPolicy( 'noindex,nofollow' );
-
-               # If we haven't been given an rc_id value, we can't do anything
-               $rcid = (int) $wgRequest->getVal( 'rcid' );
-
-               if ( !$wgOut->getUser()->matchEditToken( $wgRequest->getVal( 'token' ), $rcid ) ) {
-                       $wgOut->showErrorPage( 'sessionfailure-title', 'sessionfailure' );
-                       return;
-               }
-
-               $rc = RecentChange::newFromId( $rcid );
-
-               if ( is_null( $rc ) ) {
-                       $wgOut->showErrorPage( 'markedaspatrollederror', 'markedaspatrollederrortext' );
-                       return;
-               }
-
-               # It would be nice to see where the user had actually come from, but for now just guess
-               $returnto = $rc->getAttribute( 'rc_type' ) == RC_NEW ? 'Newpages' : 'Recentchanges';
-               $return = SpecialPage::getTitleFor( $returnto );
-
-               $errors = $rc->doMarkPatrolled();
-
-               if ( in_array( array( 'rcpatroldisabled' ), $errors ) ) {
-                       $wgOut->showErrorPage( 'rcpatroldisabled', 'rcpatroldisabledtext' );
-
-                       return;
-               }
-
-               if ( in_array( array( 'hookaborted' ), $errors ) ) {
-                       // The hook itself has handled any output
-                       return;
-               }
-
-               if ( in_array( array( 'markedaspatrollederror-noautopatrol' ), $errors ) ) {
-                       $wgOut->setPageTitle( wfMsg( 'markedaspatrollederror' ) );
-                       $wgOut->addWikiMsg( 'markedaspatrollederror-noautopatrol' );
-                       $wgOut->returnToMain( null, $return );
-
-                       return;
-               }
-
-               if ( !empty( $errors ) ) {
-                       $wgOut->showPermissionsErrorPage( $errors );
-
-                       return;
-               }
-
-               # Inform the user
-               $wgOut->setPageTitle( wfMsg( 'markedaspatrolled' ) );
-               $wgOut->addWikiMsg( 'markedaspatrolledtext', $rc->getTitle()->getPrefixedText() );
-               $wgOut->returnToMain( null, $return );
+               Action::factory( 'markpatrolled', $this )->show();
        }
 
        /**
index 34c34e0..cc75366 100644 (file)
@@ -249,6 +249,8 @@ $wgAutoloadLocalClasses = array(
 
        # includes/actions
        'CreditsAction' => 'includes/actions/CreditsAction.php',
+       'DeletetrackbackAction' => 'includes/actions/DeletetrackbackAction.php',
+       'MarkpatrolledAction' => 'includes/actions/MarkpatrolledAction.php',
        'PurgeAction' => 'includes/actions/PurgeAction.php',
        'RevisiondeleteAction' => 'includes/actions/RevisiondeleteAction.php',
        'UnwatchAction' => 'includes/actions/WatchAction.php',
index 2c5c248..5dd6d63 100644 (file)
@@ -5026,8 +5026,10 @@ $wgMaxRedirectLinksRetrieved = 500;
  */
 $wgActions = array(
        'credits' => true,
-       'revisiondelete' => true,
+       'deletetrackback' => true,
+       'markpatrolled' => true,
        'purge' => true,
+       'revisiondelete' => true,
        'unwatch' => true,
        'watch' => true,
 );
index 38a27ae..6ce2d48 100644 (file)
@@ -430,9 +430,7 @@ class MediaWiki {
                        case 'protect':
                        case 'unprotect':
                        case 'info':
-                       case 'markpatrolled':
                        case 'render':
-                       case 'deletetrackback':
                                $article->$act();
                                break;
                        case 'submit':
diff --git a/includes/actions/DeletetrackbackAction.php b/includes/actions/DeletetrackbackAction.php
new file mode 100644 (file)
index 0000000..0efebdf
--- /dev/null
@@ -0,0 +1,54 @@
+<?php
+/**
+ * Delete a trackback on a page
+ *
+ * Copyright © 2011 Alexandre Emsenhuber
+ *
+ * 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
+ *
+ * @file
+ * @ingroup Actions
+ */
+
+class DeletetrackbackAction extends FormlessAction {
+
+       public function getName() {
+               return 'deletetrackback';
+       }
+
+       public function getRestriction() {
+               return 'delete';
+       }
+
+       protected function getDescription() {
+               return '';
+       }
+
+       protected function checkCanExecute( User $user ) {
+               if ( !$user->matchEditToken( $this->getRequest()->getVal( 'token' ) ) ) {
+                       throw new ErrorPageError( 'sessionfailure-title', 'sessionfailure' );
+               }
+
+               return parent::checkCanExecute( $user );
+       }
+
+       public function onView() {
+               $db = wfGetDB( DB_MASTER );
+               $db->delete( 'trackbacks', array( 'tb_id' => $this->getRequest()->getInt( 'tbid' ) ) );
+
+               $this->getOutput()->addWikiMsg( 'trackbackdeleteok' );
+               $this->getTitle()->invalidateCache();
+       }
+}
diff --git a/includes/actions/MarkpatrolledAction.php b/includes/actions/MarkpatrolledAction.php
new file mode 100644 (file)
index 0000000..5ea986e
--- /dev/null
@@ -0,0 +1,86 @@
+<?php
+/**
+ * Mark a revision as patrolled on a page
+ *
+ * Copyright © 2011 Alexandre Emsenhuber
+ *
+ * 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
+ *
+ * @file
+ * @ingroup Actions
+ */
+
+class MarkpatrolledAction extends FormlessAction {
+
+       public function getName() {
+               return 'markpatrolled';
+       }
+
+       public function getRestriction() {
+               return 'read';
+       }
+
+       protected function getDescription() {
+               return '';
+       }
+
+       protected function checkCanExecute( User $user ) {
+               if ( !$user->matchEditToken( $this->getRequest()->getVal( 'token' ), $this->getRequest()->getInt( 'rcid' ) ) ) {
+                       throw new ErrorPageError( 'sessionfailure-title', 'sessionfailure' );
+               }
+
+               return parent::checkCanExecute( $user );
+       }
+
+       public function onView() {
+               $rc = RecentChange::newFromId( $this->getRequest()->getInt( 'rcid' ) );
+
+               if ( is_null( $rc ) ) {
+                       throw new ErrorPageError( 'markedaspatrollederror', 'markedaspatrollederrortext' );
+               }
+
+               # It would be nice to see where the user had actually come from, but for now just guess
+               $returnto = $rc->getAttribute( 'rc_type' ) == RC_NEW ? 'Newpages' : 'Recentchanges';
+               $return = SpecialPage::getTitleFor( $returnto );
+
+               $errors = $rc->doMarkPatrolled();
+
+               if ( in_array( array( 'rcpatroldisabled' ), $errors ) ) {
+                       throw new ErrorPageError( 'rcpatroldisabled', 'rcpatroldisabledtext' );
+               }
+
+               if ( in_array( array( 'hookaborted' ), $errors ) ) {
+                       // The hook itself has handled any output
+                       return;
+               }
+
+               if ( in_array( array( 'markedaspatrollederror-noautopatrol' ), $errors ) ) {
+                       $this->getOutput()->setPageTitle( wfMsg( 'markedaspatrollederror' ) );
+                       $this->getOutput()->addWikiMsg( 'markedaspatrollederror-noautopatrol' );
+                       $this->getOutput()->returnToMain( null, $return );
+                       return;
+               }
+
+               if ( !empty( $errors ) ) {
+                       $this->getOutput()->showPermissionsErrorPage( $errors );
+                       return;
+               }
+
+               # Inform the user
+               $this->getOutput()->setPageTitle( wfMsg( 'markedaspatrolled' ) );
+               $this->getOutput()->addWikiMsg( 'markedaspatrolledtext', $rc->getTitle()->getPrefixedText() );
+               $this->getOutput()->returnToMain( null, $return );
+       }
+}