https://www.mediawiki.org/wiki/Special:Code/MediaWiki/112782

Revision: 112782
Author:   nikerabbit
Date:     2012-03-01 08:52:06 +0000 (Thu, 01 Mar 2012)
Log Message:
-----------
* Improve logging
* Normalize parameters
* Remove unset values from database
* Encapsulate code better

Modified Paths:
--------------
    trunk/extensions/Translate/PageTranslation.i18n.php
    trunk/extensions/Translate/tag/PageTranslationHooks.php
    trunk/extensions/Translate/tag/SpecialPageTranslation.php
    trunk/extensions/Translate/utils/TranslateMetadata.php

Modified: trunk/extensions/Translate/PageTranslation.i18n.php
===================================================================
--- trunk/extensions/Translate/PageTranslation.i18n.php 2012-03-01 06:25:16 UTC 
(rev 112781)
+++ trunk/extensions/Translate/PageTranslation.i18n.php 2012-03-01 08:52:06 UTC 
(rev 112782)
@@ -132,6 +132,7 @@
        'pt-log-delete-full-nok' => '{{GENDER:$2|encountered}} a problem while 
deleting translatable page [[:$1]]',
        'pt-log-delete-lang-ok' => '{{GENDER:$2|completed}} deletion of 
translation page $1',
        'pt-log-delete-lang-nok' => '{{GENDER:$2|encountered}} a problem while 
deleting translation page [[:$1]]',
+       'pt-log-priority-langs-unset' => '{{GENDER:$2|removed}} priority 
languages from translatable page [[:$1]]',
        'pt-log-priority-langs' => '{{GENDER:$2|set}} the priority languages 
for translatable page [[:$1]] to $3',
        'pt-log-priority-langs-force' => '{{GENDER:$2|limited}} languages for 
translatable page [[:$1]] to $3',
 

Modified: trunk/extensions/Translate/tag/PageTranslationHooks.php
===================================================================
--- trunk/extensions/Translate/tag/PageTranslationHooks.php     2012-03-01 
06:25:16 UTC (rev 112781)
+++ trunk/extensions/Translate/tag/PageTranslationHooks.php     2012-03-01 
08:52:06 UTC (rev 112782)
@@ -585,7 +585,9 @@
                } elseif ( $action === 'deletelok' ) {
                        return wfMsgExt( 'pt-log-delete-lang-ok', $opts, 
$title->getPrefixedText(), $user );
                } elseif ( $action === 'prioritylanguages' ) {
-                       if ( $_['force'] === 'on' ) {
+                       if ( $_['languages'] === false ) {
+                               return wfMsgExt( 'pt-log-priority-langs-unset', 
$opts, $title->getPrefixedText(), $user );
+                       } elseif ( $_['force'] === 'on' ) {
                                return wfMsgExt( 'pt-log-priority-langs-force', 
$opts, $title->getPrefixedText(), $user, $_['languages'] );
                        } else {
                                return wfMsgExt( 'pt-log-priority-langs', 
$opts, $title->getPrefixedText(), $user , $_['languages'] );

Modified: trunk/extensions/Translate/tag/SpecialPageTranslation.php
===================================================================
--- trunk/extensions/Translate/tag/SpecialPageTranslation.php   2012-03-01 
06:25:16 UTC (rev 112781)
+++ trunk/extensions/Translate/tag/SpecialPageTranslation.php   2012-03-01 
08:52:06 UTC (rev 112782)
@@ -671,24 +671,7 @@
                $logger->addEntry( 'mark', $page->getTitle(), null, array( 
serialize( $params ) ) );
 
 
-               // Save the priority languages if any
-               $priorityLangs = trim( $wgRequest->getVal( 'prioritylangs' ) );
-               $priorityForce = $wgRequest->getCheck( 'forcelimit' );
-               $priorityReason = $wgRequest->getVal( 'priorityreason' );
-               // FIXME: does not log removals
-               if ( $priorityLangs ) {
-                       $groupId = $page->getMessageGroupId();
-                       // FIXME: does not normalise input to a,b,c,d
-                       TranslateMetadata::set( $groupId, 'prioritylangs', 
trim( $priorityLangs, ',' ) );
-                       TranslateMetadata::set( $groupId, 'priorityforce', 
$priorityForce ? 'on' : 'off' );
-                       TranslateMetadata::set( $groupId, 'priorityreason', 
trim( $priorityReason ) );
-                       $params = array(
-                               'user' => $wgUser->getName(),
-                               'languages' => $priorityLangs,
-                               'force' => $priorityForce,
-                       );
-                       $logger->addEntry( 'prioritylanguages', 
$page->getTitle(), null, array( serialize( $params ) ) );
-               }
+               $this->handlePriorityLanguages( $wgRequest, $page, $wgUser );
 
                $page->getTitle()->invalidateCache();
                $this->setupRenderJobs( $page );
@@ -699,6 +682,44 @@
                return false;
        }
 
+       protected function handlePriorityLanguages( WebRequest $request, 
TranslatablePage $page, User $user ) {
+               // new priority languages
+               $npLangs = trim( $request->getVal( 'prioritylangs' ) );
+               $npForce = $request->getCheck( 'forcelimit' ) ? 'on' : 'off';
+               $npReason = trim( $request->getText( 'priorityreason' ) );
+
+               // Normalize
+               $npLangs = array_map( 'trim', explode( ',', $npLangs ) );
+               $npLangs = array_unique( $npLangs );
+               $npLangs = implode( ',', $npLangs );
+               if ( $npLangs === '' ) {
+                       $npLangs = false;
+                       $npForce = false;
+                       $npReason = false;
+               }
+
+               $groupId = $page->getMessageGroupId();
+               // old priority languages
+               $opLangs = TranslateMetadata::get( $groupId, 'prioritylangs' );
+               $opForce = TranslateMetadata::get( $groupId, 'priorityforce' );
+               $opReason = TranslateMetadata::get( $groupId, 'priorityreason' 
);
+
+               TranslateMetadata::set( $groupId, 'prioritylangs', $npLangs );
+               TranslateMetadata::set( $groupId, 'priorityforce', $npForce );
+               TranslateMetadata::set( $groupId, 'priorityreason', $npReason );
+
+               if ( $opLangs !== $npLangs || $opForce !== $npForce || 
$opReason !== $npReason ) {
+                       $params = array(
+                               'user' => $user->getName(),
+                               'languages' => $npLangs,
+                               'force' => $npForce,
+                               'reason' => $npReason,
+                       );
+                       $logger = new LogPage( 'pagetranslation' );
+                       $logger->addEntry( 'prioritylanguages', 
$page->getTitle(), null, array( serialize( $params ) ) );
+               }
+       }
+
        /**
         * @param $page Article
         * @param $changed

Modified: trunk/extensions/Translate/utils/TranslateMetadata.php
===================================================================
--- trunk/extensions/Translate/utils/TranslateMetadata.php      2012-03-01 
06:25:16 UTC (rev 112781)
+++ trunk/extensions/Translate/utils/TranslateMetadata.php      2012-03-01 
08:52:06 UTC (rev 112782)
@@ -33,7 +33,12 @@
        public static function set( $group, $key, $value ) {
                $dbw = wfGetDB( DB_MASTER );
                $data = array( 'tmd_group' => $group, 'tmd_key' => $key, 
'tmd_value' => $value );
-               $dbw->replace( 'translate_metadata', array( array( 'tmd_group', 
'tmd_key' ) ), $data, __METHOD__ );
+               if ( $value === false ) {
+                       unset( $data['tmd_value'] );
+                       $dbw->delete( 'translate_metadata', $data );
+               } else {
+                       $dbw->replace( 'translate_metadata', array( array( 
'tmd_group', 'tmd_key' ) ), $data, __METHOD__ );
+               }
        }
 
 }


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

Reply via email to