diff options
Diffstat (limited to 'www/wiki/extensions/AbuseFilter/includes/api/ApiAbuseFilterCheckSyntax.php')
-rw-r--r-- | www/wiki/extensions/AbuseFilter/includes/api/ApiAbuseFilterCheckSyntax.php | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/www/wiki/extensions/AbuseFilter/includes/api/ApiAbuseFilterCheckSyntax.php b/www/wiki/extensions/AbuseFilter/includes/api/ApiAbuseFilterCheckSyntax.php new file mode 100644 index 00000000..4854024d --- /dev/null +++ b/www/wiki/extensions/AbuseFilter/includes/api/ApiAbuseFilterCheckSyntax.php @@ -0,0 +1,49 @@ +<?php + +class ApiAbuseFilterCheckSyntax extends ApiBase { + + public function execute() { + // "Anti-DoS" + if ( !$this->getUser()->isAllowed( 'abusefilter-modify' ) ) { + $this->dieWithError( 'apierror-abusefilter-cantcheck', 'permissiondenied' ); + } + + $params = $this->extractRequestParams(); + $result = AbuseFilter::checkSyntax( $params[ 'filter' ] ); + + $r = []; + if ( $result === true ) { + // Everything went better than expected :) + $r['status'] = 'ok'; + } else { + $r = [ + 'status' => 'error', + 'message' => $result[0], + 'character' => $result[1], + ]; + } + + $this->getResult()->addValue( null, $this->getModuleName(), $r ); + } + + public function getAllowedParams() { + return [ + 'filter' => [ + ApiBase::PARAM_REQUIRED => true, + ], + ]; + } + + /** + * @see ApiBase::getExamplesMessages() + * @return array + */ + protected function getExamplesMessages() { + return [ + 'action=abusefilterchecksyntax&filter="foo"' + => 'apihelp-abusefilterchecksyntax-example-1', + 'action=abusefilterchecksyntax&filter="bar"%20bad_variable' + => 'apihelp-abusefilterchecksyntax-example-2', + ]; + } +} |