Localisation updates for core and extension messages from translatewiki.net (2010...
[lhc/web/wiklou.git] / includes / api / ApiEmailUser.php
index 7e08353..65da13f 100644 (file)
@@ -1,10 +1,10 @@
 <?php
 
-/*
+/**
  * Created on June 1, 2008
  * API for MediaWiki 1.8+
  *
- * Copyright (C) 2008 Bryan Tong Minh <Bryan.TongMinh@Gmail.com>
+ * Copyright © 2008 Bryan Tong Minh <Bryan.TongMinh@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
  * http://www.gnu.org/copyleft/gpl.html
  */
 
-if (!defined('MEDIAWIKI')) {
+if ( !defined( 'MEDIAWIKI' ) ) {
        // Eclipse helper - will be ignored in production
-       require_once ("ApiBase.php");
+       require_once( "ApiBase.php" );
 }
 
-
 /**
  * @ingroup API
  */
 class ApiEmailUser 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();
+               // Check whether email is enabled
+               if ( !EmailUserForm::userEmailEnabled() ) {
+                       $this->dieUsageMsg( array( 'usermaildisabled' ) );
+               }
+
                $params = $this->extractRequestParams();
-               
                // Check required parameters
-               if ( !isset( $params['target'] ) )
+               if ( !isset( $params['target'] ) ) {
                        $this->dieUsageMsg( array( 'missingparam', 'target' ) );
-               if ( !isset( $params['text'] ) )
+               }
+               if ( !isset( $params['text'] ) ) {
                        $this->dieUsageMsg( array( 'missingparam', 'text' ) );
-               if ( !isset( $params['token'] ) )
-                       $this->dieUsageMsg( array( 'missingparam', 'token' ) ); 
-               
-               // Validate target 
+               }
+
+               // Validate target
                $targetUser = EmailUserForm::validateEmailTarget( $params['target'] );
-               if ( !( $targetUser instanceof User ) )
-                       $this->dieUsageMsg( array( $targetUser[0] ) );
-               
+               if ( !( $targetUser instanceof User ) ) {
+                       $this->dieUsageMsg( array( $targetUser ) );
+               }
+
                // Check permissions
                $error = EmailUserForm::getPermissionsError( $wgUser, $params['token'] );
-               if ( $error )
-                       $this->dieUsageMsg( array( $error[0] ) );
-               
-                       
+               if ( $error ) {
+                       $this->dieUsageMsg( array( $error ) );
+               }
+
                $form = new EmailUserForm( $targetUser, $params['text'], $params['subject'], $params['ccme'] );
                $retval = $form->doSubmit();
-               if ( is_null( $retval ) )
+               if ( is_null( $retval ) ) {
                        $result = array( 'result' => 'Success' );
-               else
-                       $result = array( 'result' => 'Failure',
-                                'message' => $retval->getMessage() );
-               
+               } else {
+                       $result = array(
+                               'result' => 'Failure',
+                               'message' => $retval->getMessage()
+                       );
+               }
+
                $this->getResult()->addValue( null, $this->getModuleName(), $result );
        }
-       
-       public function mustBePosted() { return true; }
+
+       public function mustBePosted() {
+               return true;
+       }
+
+       public function isWriteMode() {
+               return true;
+       }
 
        public function getAllowedParams() {
-               return array (
+               return array(
                        'target' => null,
                        'subject' => null,
                        'text' => null,
@@ -85,11 +97,10 @@ class ApiEmailUser extends ApiBase {
        }
 
        public function getParamDescription() {
-               return array (
+               return array(
                        'target' => 'User to send email to',
                        'subject' => 'Subject header',
                        'text' => 'Mail body',
-                       // FIXME: How to properly get a token?
                        'token' => 'A token previously acquired via prop=info',
                        'ccme' => 'Send a copy of this mail to me',
                );
@@ -97,18 +108,29 @@ class ApiEmailUser extends ApiBase {
 
        public function getDescription() {
                return array(
-                       'Emails a user.'
+                       'Email a user.'
                );
        }
 
+       public function getPossibleErrors() {
+               return array_merge( parent::getPossibleErrors(), array(
+                       array( 'usermaildisabled' ),
+                       array( 'missingparam', 'target' ),
+                       array( 'missingparam', 'text' ),
+               ) );
+       }
+
+       public function getTokenSalt() {
+               return '';
+       }
+
        protected function getExamples() {
-               return array (
+               return array(
                        'api.php?action=emailuser&target=WikiSysop&text=Content'
                );
        }
 
        public function getVersion() {
-               return __CLASS__ . ': $Id$';
+               return __CLASS__ . ': $Id$';
        }
-}      
-       
\ No newline at end of file
+}