]> scripts.mit.edu Git - autoinstallsdev/mediawiki.git/blob - includes/api/ApiWatch.php
MediaWiki 1.14.0-scripts
[autoinstallsdev/mediawiki.git] / includes / api / ApiWatch.php
1 <?php
2
3 /*
4  * Created on Jan 4, 2008
5  *
6  * API for MediaWiki 1.8+
7  *
8  * Copyright (C) 2008 Yuri Astrakhan <Firstname><Lastname>@gmail.com,
9  *
10  * This program is free software; you can redistribute it and/or modify
11  * it under the terms of the GNU General Public License as published by
12  * the Free Software Foundation; either version 2 of the License, or
13  * (at your option) any later version.
14  *
15  * This program is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18  * GNU General Public License for more details.
19  *
20  * You should have received a copy of the GNU General Public License along
21  * with this program; if not, write to the Free Software Foundation, Inc.,
22  * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
23  * http://www.gnu.org/copyleft/gpl.html
24  */
25
26 if (!defined('MEDIAWIKI')) {
27         // Eclipse helper - will be ignored in production
28         require_once ('ApiBase.php');
29 }
30
31 /**
32  * API module to allow users to log out of the wiki. API equivalent of
33  * Special:Userlogout.
34  *
35  * @ingroup API
36  */
37 class ApiWatch extends ApiBase {
38
39         public function __construct($main, $action) {
40                 parent :: __construct($main, $action);
41         }
42
43         public function execute() {
44                 global $wgUser;
45                 $this->getMain()->requestWriteMode();
46                 if(!$wgUser->isLoggedIn())
47                         $this->dieUsage('You must be logged-in to have a watchlist', 'notloggedin');
48                 $params = $this->extractRequestParams();
49                 $title = Title::newFromText($params['title']);
50                 if(!$title)
51                         $this->dieUsageMsg(array('invalidtitle', $params['title']));
52                 $article = new Article($title);
53                 $res = array('title' => $title->getPrefixedText());
54                 if($params['unwatch'])
55                 {
56                         $res['unwatched'] = '';
57                         $success = $article->doUnwatch();
58                 }
59                 else
60                 {
61                         $res['watched'] = '';
62                         $success = $article->doWatch();
63                 }
64                 if(!$success)
65                         $this->dieUsageMsg(array('hookaborted'));
66                 $this->getResult()->addValue(null, $this->getModuleName(), $res);
67         }
68
69         public function getAllowedParams() {
70                 return array (
71                         'title' => null,
72                         'unwatch' => false,
73                 );
74         }
75
76         public function getParamDescription() {
77                 return array (
78                         'title' => 'The page to (un)watch',
79                         'unwatch' => 'If set the page will be unwatched rather than watched',
80                 );
81         }
82
83         public function getDescription() {
84                 return array (
85                         'Add or remove a page from/to the current user\'s watchlist'
86                 );
87         }
88
89         protected function getExamples() {
90                 return array(
91                         'api.php?action=watch&title=Main_Page',
92                         'api.php?action=watch&title=Main_Page&unwatch',
93                 );
94         }
95
96         public function getVersion() {
97                 return __CLASS__ . ': $Id: ApiWatch.php 40460 2008-09-04 22:20:32Z ialex $';
98         }
99 }