/**
* 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();
}
/**
/**
* 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();
}
/**
# 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',
*/
$wgActions = array(
'credits' => true,
- 'revisiondelete' => true,
+ 'deletetrackback' => true,
+ 'markpatrolled' => true,
'purge' => true,
+ 'revisiondelete' => true,
'unwatch' => true,
'watch' => true,
);
case 'protect':
case 'unprotect':
case 'info':
- case 'markpatrolled':
case 'render':
- case 'deletetrackback':
$article->$act();
break;
case 'submit':
--- /dev/null
+<?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();
+ }
+}
--- /dev/null
+<?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 );
+ }
+}