MediaWiki
REL1_22
|
00001 <?php 00031 class ApiEmailUser extends ApiBase { 00032 00033 public function execute() { 00034 $params = $this->extractRequestParams(); 00035 00036 // Validate target 00037 $targetUser = SpecialEmailUser::getTarget( $params['target'] ); 00038 if ( !( $targetUser instanceof User ) ) { 00039 $this->dieUsageMsg( array( $targetUser ) ); 00040 } 00041 00042 // Check permissions and errors 00043 $error = SpecialEmailUser::getPermissionsError( $this->getUser(), $params['token'] ); 00044 if ( $error ) { 00045 $this->dieUsageMsg( array( $error ) ); 00046 } 00047 00048 $data = array( 00049 'Target' => $targetUser->getName(), 00050 'Text' => $params['text'], 00051 'Subject' => $params['subject'], 00052 'CCMe' => $params['ccme'], 00053 ); 00054 $retval = SpecialEmailUser::submit( $data, $this->getContext() ); 00055 00056 if ( $retval instanceof Status ) { 00057 // SpecialEmailUser sometimes returns a status 00058 // sometimes it doesn't. 00059 if ( $retval->isGood() ) { 00060 $retval = true; 00061 } else { 00062 $retval = $retval->getErrorsArray(); 00063 } 00064 } 00065 00066 if ( $retval === true ) { 00067 $result = array( 'result' => 'Success' ); 00068 } else { 00069 $result = array( 00070 'result' => 'Failure', 00071 'message' => $retval 00072 ); 00073 } 00074 00075 $this->getResult()->addValue( null, $this->getModuleName(), $result ); 00076 } 00077 00078 public function mustBePosted() { 00079 return true; 00080 } 00081 00082 public function isWriteMode() { 00083 return true; 00084 } 00085 00086 public function getAllowedParams() { 00087 return array( 00088 'target' => array( 00089 ApiBase::PARAM_TYPE => 'string', 00090 ApiBase::PARAM_REQUIRED => true 00091 ), 00092 'subject' => null, 00093 'text' => array( 00094 ApiBase::PARAM_TYPE => 'string', 00095 ApiBase::PARAM_REQUIRED => true 00096 ), 00097 'token' => array( 00098 ApiBase::PARAM_TYPE => 'string', 00099 ApiBase::PARAM_REQUIRED => true 00100 ), 00101 'ccme' => false, 00102 ); 00103 } 00104 00105 public function getParamDescription() { 00106 return array( 00107 'target' => 'User to send email to', 00108 'subject' => 'Subject header', 00109 'text' => 'Mail body', 00110 'token' => 'A token previously acquired via prop=info', 00111 'ccme' => 'Send a copy of this mail to me', 00112 ); 00113 } 00114 00115 public function getResultProperties() { 00116 return array( 00117 '' => array( 00118 'result' => array( 00119 ApiBase::PROP_TYPE => array( 00120 'Success', 00121 'Failure' 00122 ), 00123 ), 00124 'message' => array( 00125 ApiBase::PROP_TYPE => 'string', 00126 ApiBase::PROP_NULLABLE => true 00127 ) 00128 ) 00129 ); 00130 } 00131 00132 public function getDescription() { 00133 return 'Email a user.'; 00134 } 00135 00136 public function getPossibleErrors() { 00137 return array_merge( parent::getPossibleErrors(), array( 00138 array( 'usermaildisabled' ), 00139 ) ); 00140 } 00141 00142 public function needsToken() { 00143 return true; 00144 } 00145 00146 public function getTokenSalt() { 00147 return ''; 00148 } 00149 00150 public function getExamples() { 00151 return array( 00152 'api.php?action=emailuser&target=WikiSysop&text=Content' => 'Send an email to the User "WikiSysop" with the text "Content"', 00153 ); 00154 } 00155 00156 public function getHelpUrls() { 00157 return 'https://www.mediawiki.org/wiki/API:Email'; 00158 } 00159 }