Santhosh has uploaded a new change for review. https://gerrit.wikimedia.org/r/267212
Change subject: Validate sections against AbuseFilter on save ...................................................................... Validate sections against AbuseFilter on save The cxsave API returns validation results now. Change-Id: I3eb8ab4f3ab5ba7b2f2f302419facc1f42e33fdc --- M api/ApiContentTranslationSave.php 1 file changed, 30 insertions(+), 1 deletion(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/ContentTranslation refs/changes/12/267212/1 diff --git a/api/ApiContentTranslationSave.php b/api/ApiContentTranslationSave.php index bcb09bc..bfc873f 100644 --- a/api/ApiContentTranslationSave.php +++ b/api/ApiContentTranslationSave.php @@ -6,8 +6,10 @@ * @license GPL-2.0+ */ +use ContentTranslation\AbuseFilterCheck; use ContentTranslation\Translation; use ContentTranslation\Database; +use ContentTranslation\RestbaseClient; use ContentTranslation\Translator; use ContentTranslation\TranslationUnit; use ContentTranslation\TranslationStorageManager; @@ -47,6 +49,9 @@ // Translation does not exist or belong to another translator $this->dieUsage( 'Invalid translation ID: ' . $params['translationid'] ); } + + $validationResults = array(); + foreach ( $translationUnits as $tuData ) { $tuData['translationId'] = $translationId; if ( !isset( $tuData['sectionId'] ) || !isset( $tuData['origin'] ) ) { @@ -54,14 +59,38 @@ } $translationUnit = new TranslationUnit( $tuData ); TranslationStorageManager::save( $translationUnit ); + + $validationResults[$translationUnit->getSectionId()] = + $this->validateTranslationUnit( + \Title::newFromText( $translation['translation_target_title'] ), + $translationUnit + ); } $result = array( - 'result' => 'success' + 'result' => 'success', + 'validations' => $validationResults ); $this->getResult()->addValue( null, $this->getModuleName(), $result ); } + /** + * Validate the section content using AbuseFilterCheck + * @param \Title $title Target title + * @param TranslationUnit $translationUnit + * @return array List of any rule violations + */ + protected function validateTranslationUnit( \Title $title, TranslationUnit $translationUnit ) { + $checker = new AbuseFilterCheck(); + $restbaseClient = new RestbaseClient(); + $sectionHTML = $translationUnit->getContent(); + + // The section content is HTML. AbuseFilter need wikitext. + $text = $restbaseClient->convertHtmlToWikitext( $title, $sectionHTML ); + + return $checker->checkSection( $this->getUser(), $title, $text ); + } + public function getAllowedParams() { return array( 'translationid' => array( -- To view, visit https://gerrit.wikimedia.org/r/267212 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I3eb8ab4f3ab5ba7b2f2f302419facc1f42e33fdc Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/extensions/ContentTranslation Gerrit-Branch: master Gerrit-Owner: Santhosh <santhosh.thottin...@gmail.com> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits