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