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

Reply via email to