X-Git-Url: https://git.cyclocoop.org/%27.WWW_URL.%27admin/?a=blobdiff_plain;f=includes%2Fapi%2FApiWatch.php;h=4b448d6de2fbf9ffb213710d504365e6023e3ec2;hb=6115b93df8e03951cbbcd894ec865b6742786142;hp=cf045c876d98342cd83ae55f329217c7708fc347;hpb=7ced9bc569ec740fe57ceaccbb39aa1d7d81d85d;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/api/ApiWatch.php b/includes/api/ApiWatch.php index cf045c876d..4b448d6de2 100644 --- a/includes/api/ApiWatch.php +++ b/includes/api/ApiWatch.php @@ -1,9 +1,8 @@ @gmail.com, * @@ -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 * @@ -40,42 +36,59 @@ class ApiWatch extends ApiBase { } public function execute() { - global $wgUser; - if ( !$wgUser->isLoggedIn() ) { + $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 ) { + if ( !$title || $title->getNamespace() < 0 ) { $this->dieUsageMsg( array( 'invalidtitle', $params['title'] ) ); } - $article = new Article( $title ); $res = array( 'title' => $title->getPrefixedText() ); if ( $params['unwatch'] ) { $res['unwatched'] = ''; - $success = $article->doUnwatch(); + $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( array( 'hookaborted' ) ); + $this->dieUsageMsg( 'hookaborted' ); } $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, + 'title' => array( + ApiBase::PARAM_TYPE => 'string', + ApiBase::PARAM_REQUIRED => true + ), 'unwatch' => false, + 'token' => null, ); } @@ -83,13 +96,12 @@ class ApiWatch extends ApiBase { 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'; } public function getPossibleErrors() { @@ -100,13 +112,17 @@ class ApiWatch extends ApiBase { ) ); } - protected function getExamples() { + 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$'; }