X-Git-Url: https://git.cyclocoop.org/%27.WWW_URL.%27admin/?a=blobdiff_plain;f=includes%2Fapi%2FApiWatch.php;h=4b448d6de2fbf9ffb213710d504365e6023e3ec2;hb=6115b93df8e03951cbbcd894ec865b6742786142;hp=56839129ddfb1be6fb7cde3bc62a7b4ae3baf302;hpb=d9b9a30bb3c1ed2b4664501c78d4226c89175f5c;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/api/ApiWatch.php b/includes/api/ApiWatch.php index 56839129dd..4b448d6de2 100644 --- a/includes/api/ApiWatch.php +++ b/includes/api/ApiWatch.php @@ -1,11 +1,10 @@ @gmail.com, + * Copyright © 2008 Yuri Astrakhan @gmail.com, * * 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 @@ -19,15 +18,12 @@ * * 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., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * http://www.gnu.org/copyleft/gpl.html + * + * @file */ -if (!defined('MEDIAWIKI')) { - // Eclipse helper - will be ignored in production - require_once ('ApiBase.php'); -} - /** * API module to allow users to watch a page * @@ -35,63 +31,98 @@ if (!defined('MEDIAWIKI')) { */ class ApiWatch extends ApiBase { - public function __construct($main, $action) { - parent :: __construct($main, $action); + public function __construct( $main, $action ) { + parent::__construct( $main, $action ); } public function execute() { - global $wgUser; - $this->getMain()->requestWriteMode(); - if(!$wgUser->isLoggedIn()) - $this->dieUsage('You must be logged-in to have a watchlist', 'notloggedin'); + $user = $this->getUser(); + if ( !$user->isLoggedIn() ) { + $this->dieUsage( 'You must be logged-in to have a watchlist', 'notloggedin' ); + } + $params = $this->extractRequestParams(); - $title = Title::newFromText($params['title']); - if(!$title) - $this->dieUsageMsg(array('invalidtitle', $params['title'])); - $article = new Article($title); - $res = array('title' => $title->getPrefixedText()); - if($params['unwatch']) - { - $res['unwatched'] = ''; - $success = $article->doUnwatch(); + $title = Title::newFromText( $params['title'] ); + + if ( !$title || $title->getNamespace() < 0 ) { + $this->dieUsageMsg( array( 'invalidtitle', $params['title'] ) ); } - else - { + + $res = array( 'title' => $title->getPrefixedText() ); + + if ( $params['unwatch'] ) { + $res['unwatched'] = ''; + $res['message'] = wfMsgExt( 'removedwatchtext', array( 'parse' ), $title->getPrefixedText() ); + $success = UnwatchAction::doUnwatch( $title, $user ); + } else { $res['watched'] = ''; - $success = $article->doWatch(); + $res['message'] = wfMsgExt( 'addedwatchtext', array( 'parse' ), $title->getPrefixedText() ); + $success = WatchAction::doWatch( $title, $user ); + } + if ( !$success ) { + $this->dieUsageMsg( 'hookaborted' ); } - if(!$success) - $this->dieUsageMsg(array('hookaborted')); - $this->getResult()->addValue(null, $this->getModuleName(), $res); + $this->getResult()->addValue( null, $this->getModuleName(), $res ); + } + + public function mustBePosted() { + return true; + } + + public function isWriteMode() { + return true; + } + + public function needsToken() { + return true; + } + + public function getTokenSalt() { + return 'watch'; } public function getAllowedParams() { - return array ( - 'title' => null, + return array( + 'title' => array( + ApiBase::PARAM_TYPE => 'string', + ApiBase::PARAM_REQUIRED => true + ), 'unwatch' => false, + 'token' => null, ); } public function getParamDescription() { - return array ( + return array( 'title' => 'The page to (un)watch', 'unwatch' => 'If set the page will be unwatched rather than watched', + 'token' => 'A token previously acquired via prop=info', ); } public function getDescription() { - return array ( - 'Add or remove a page from/to the current user\'s watchlist' - ); + return 'Add or remove a page from/to the current user\'s watchlist'; } - protected function getExamples() { + public function getPossibleErrors() { + return array_merge( parent::getPossibleErrors(), array( + array( 'code' => 'notloggedin', 'info' => 'You must be logged-in to have a watchlist' ), + array( 'invalidtitle', 'title' ), + array( 'hookaborted' ), + ) ); + } + + public function getExamples() { return array( - 'api.php?action=watch&title=Main_Page', - 'api.php?action=watch&title=Main_Page&unwatch', + 'api.php?action=watch&title=Main_Page' => 'Watch the page "Main Page"', + 'api.php?action=watch&title=Main_Page&unwatch=' => 'Unwatch the page "Main Page"', ); } + public function getHelpUrls() { + return 'https://www.mediawiki.org/wiki/API:Watch'; + } + public function getVersion() { return __CLASS__ . ': $Id$'; }