http://www.mediawiki.org/wiki/Special:Code/MediaWiki/100243

Revision: 100243
Author:   nikerabbit
Date:     2011-10-19 17:35:43 +0000 (Wed, 19 Oct 2011)
Log Message:
-----------
Api module for marking translations as reviewed.
Internationalization/#128

Modified Paths:
--------------
    trunk/extensions/Translate/Translate.php
    trunk/extensions/Translate/_autoload.php

Added Paths:
-----------
    trunk/extensions/Translate/api/ApiTranslationReview.php

Modified: trunk/extensions/Translate/Translate.php
===================================================================
--- trunk/extensions/Translate/Translate.php    2011-10-19 17:30:55 UTC (rev 
100242)
+++ trunk/extensions/Translate/Translate.php    2011-10-19 17:35:43 UTC (rev 
100243)
@@ -85,6 +85,8 @@
 $wgAPIListModules['messagecollection'] = 'ApiQueryMessageCollection';
 $wgAPIMetaModules['messagegroups'] = 'ApiQueryMessageGroups';
 $wgAPIMetaModules['messagetranslations'] = 'ApiQueryMessageTranslations';
+$wgAPIModules['translationreview'] = 'ApiTranslationReview';
+$wgHooks['APIQueryInfoTokens'][] = 'ApiTranslationReview::injectTokenFunction';
 
 // Register hooks.
 $wgHooks['EditPage::showEditForm:initial'][] = 'TranslateEditAddons::addTools';

Modified: trunk/extensions/Translate/_autoload.php
===================================================================
--- trunk/extensions/Translate/_autoload.php    2011-10-19 17:30:55 UTC (rev 
100242)
+++ trunk/extensions/Translate/_autoload.php    2011-10-19 17:35:43 UTC (rev 
100243)
@@ -193,4 +193,5 @@
 $wgAutoloadClasses['ApiQueryMessageCollection'] = $dir . 
'api/ApiQueryMessageCollection.php';
 $wgAutoloadClasses['ApiQueryMessageGroups'] = $dir . 
'api/ApiQueryMessageGroups.php';
 $wgAutoloadClasses['ApiQueryMessageTranslations'] = $dir . 
'api/ApiQueryMessageTranslations.php';
+$wgAutoloadClasses['ApiTranslationReview'] = $dir . 
'api/ApiTranslationReview.php';
 /**@}*/

Added: trunk/extensions/Translate/api/ApiTranslationReview.php
===================================================================
--- trunk/extensions/Translate/api/ApiTranslationReview.php                     
        (rev 0)
+++ trunk/extensions/Translate/api/ApiTranslationReview.php     2011-10-19 
17:35:43 UTC (rev 100243)
@@ -0,0 +1,132 @@
+<?php
+/**
+ * API module for marking translations as reviewed
+ * @file
+ * @author Niklas Laxström
+ * @copyright Copyright © 2011, Niklas Laxström
+ * @license http://www.gnu.org/copyleft/gpl.html GNU General Public License 
2.0 or later
+ */
+
+/**
+ * API module for marking translations as reviewed
+ *
+ * @ingroup API TranslateAPI
+ */
+class ApiTranslationReview extends ApiBase {
+
+       public function execute() {
+               global $wgUser;
+               if ( !$wgUser->isallowed( 'translate-messagereview' ) ) {
+                       $this->dieUsageMsg( 'permissiondenied' );
+               }
+
+               $params = $this->extractRequestParams();
+
+               $revision = Revision::newFromId( $params['revision'] );
+               if ( !$revision ) {
+                       $this->dieUsage( 'You made me sad :(', 
'invalidrevision' );
+               }
+
+               $title = $revision->getTitle();
+               $handle = new MessageHandle( $title );
+               if ( !$handle->isValid() ) {
+                       $this->dieUsage( 'You made me confused :X', 
'unknownmessage' );
+               }
+
+               $dbw = wfGetDB( DB_MASTER );
+               $table = 'translate_reviews';
+               $row = array(
+                       'trr_user' => $wgUser->getId(),
+                       'trr_page' => $revision->getPage(),
+                       'trr_revision' => $revision->getId(),
+               );
+               $options = array( 'IGNORE' );
+               $res = $dbw->insert( $table, $row, __METHOD__, $options );
+               if ( !$dbw->affectedRows() ) {
+                       $this->setWarning( 'Already marked as reviewed by you' 
);
+               }
+
+               $output = array( 'review' => array(
+                       'title' => $title->getPrefixedText(),
+                       'pageid' => $revision->getPage(),
+                       'revision' => $revision->getId()
+               ) );
+
+               $this->getResult()->addValue( null, $this->getModuleName(), 
$output );
+       }
+
+       public function isWriteMode() {
+               return true;
+       }
+
+       public function needsToken() {
+               return true;
+       }
+
+       public function getTokenSalt() {
+               return 'translate-messagereview';
+       }
+
+       public function getAllowedParams() {
+               return array(
+                       'revision' => array(
+                               ApiBase::PARAM_TYPE => 'integer',
+                               ApiBase::PARAM_REQUIRED => true,
+                       ),
+                       'token' => array(
+                               ApiBase::PARAM_TYPE => 'string',
+                               ApiBase::PARAM_REQUIRED => true,
+                       ),
+               );
+       }
+
+       public function getParamDescription() {
+               return array(
+                       'revision' => 'The revision number to review',
+                       'token' => 'A token previously acquired with 
prop=token&intoken=translationreview',
+               );
+       }
+
+       public function getDescription() {
+               return 'Mark translations reviewed';
+       }
+
+       public function getPossibleErrors() {
+               return array_merge( parent::getPossibleErrors(), array(
+                       array( 'code' => 'permissiondenied', 'info' => 'You 
must have translate-messagereview right' ),
+                       array( 'code' => 'unknownmessage', 'info' => 'Title $1 
does not belong to a message group' ),
+                       array( 'code' => 'invalidrevision', 'info' => 'Revision 
$1 is invalid' ),
+               ) );
+       }
+
+       public function getExamples() {
+               return array(
+                       'api.php?action=translationreview&revision=1&token=foo',
+               );
+       }
+
+       public function getVersion() {
+               return __CLASS__ . ': $Id$';
+       }
+
+       public static function getToken( $pageid, $title ) {
+               global $wgUser;
+               if ( !$wgUser->isAllowed( 'translate-messagereview' ) ) {
+                       return false;
+               }
+
+               static $cachedToken = null;
+               if ( !is_null( $cachedToken ) ) {
+                       return $cachedToken;
+               }
+
+               $cachedToken = $wgUser->editToken( 'translate-messagereview' );
+               return $cachedToken;
+       }
+
+       public static function injectTokenFunction( &$list ) {
+               $list['translationreview'] = array( __CLASS__, 'getToken' );
+               return true; // Hooks must return bool
+       }
+
+}


Property changes on: trunk/extensions/Translate/api/ApiTranslationReview.php
___________________________________________________________________
Added: svn:keywords
   + Id
Added: svn:eol-style
   + native


_______________________________________________
MediaWiki-CVS mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs

Reply via email to