http://www.mediawiki.org/wiki/Special:Code/MediaWiki/89495
Revision: 89495
Author: nikerabbit
Date: 2011-06-05 11:17:55 +0000 (Sun, 05 Jun 2011)
Log Message:
-----------
Various fixes to transla* page deletion
Modified Paths:
--------------
trunk/extensions/Translate/PageTranslation.i18n.php
trunk/extensions/Translate/Translate.php
trunk/extensions/Translate/tag/DeleteJob.php
trunk/extensions/Translate/tag/PageTranslationHooks.php
trunk/extensions/Translate/tag/SpecialPageTranslationDeletePage.php
Modified: trunk/extensions/Translate/PageTranslation.i18n.php
===================================================================
--- trunk/extensions/Translate/PageTranslation.i18n.php 2011-06-05 10:59:44 UTC
(rev 89494)
+++ trunk/extensions/Translate/PageTranslation.i18n.php 2011-06-05 11:17:55 UTC
(rev 89495)
@@ -105,7 +105,7 @@
'pt-log-movenok' => '{{GENDER:$2|encountered}} a problem while moving
[[:$1]] to [[:$3]]',
'pt-log-delete-full-ok' => '{{GENDER:$2|completed}} deletion of
translatable page $1',
'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 $e',
+ '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]]',
Modified: trunk/extensions/Translate/Translate.php
===================================================================
--- trunk/extensions/Translate/Translate.php 2011-06-05 10:59:44 UTC (rev
89494)
+++ trunk/extensions/Translate/Translate.php 2011-06-05 11:17:55 UTC (rev
89495)
@@ -553,10 +553,16 @@
$wgLogActionsHandlers['pagetranslation/unmark'] =
'PageTranslationHooks::formatLogEntry';
$wgLogActionsHandlers['pagetranslation/moveok'] =
'PageTranslationHooks::formatLogEntry';
$wgLogActionsHandlers['pagetranslation/movenok'] =
'PageTranslationHooks::formatLogEntry';
+ $wgLogActionsHandlers['pagetranslation/deletelok'] =
'PageTranslationHooks::formatLogEntry';
+ $wgLogActionsHandlers['pagetranslation/deletefok'] =
'PageTranslationHooks::formatLogEntry';
+ $wgLogActionsHandlers['pagetranslation/deletelnok'] =
'PageTranslationHooks::formatLogEntry';
+ $wgLogActionsHandlers['pagetranslation/deletefnok'] =
'PageTranslationHooks::formatLogEntry';
+
global $wgJobClasses;
$wgJobClasses['RenderJob'] = 'RenderJob';
$wgJobClasses['MoveJob'] = 'MoveJob';
+ $wgJobClasses['DeleteJob'] = 'DeleteJob';
// Namespaces
global $wgPageTranslationNamespace, $wgExtraNamespaces;
Modified: trunk/extensions/Translate/tag/DeleteJob.php
===================================================================
--- trunk/extensions/Translate/tag/DeleteJob.php 2011-06-05 10:59:44 UTC
(rev 89494)
+++ trunk/extensions/Translate/tag/DeleteJob.php 2011-06-05 11:17:55 UTC
(rev 89495)
@@ -15,16 +15,16 @@
* @todo Get rid of direct reference to $wgMemc.
*/
class DeleteJob extends Job {
- public static function newJob( Title $target, $full, /*User*/
$performer ) {
+ public static function newJob( Title $target, $base, $full, /*User*/
$performer ) {
global $wgTranslateFuzzyBotName;
$job = new self( $target );
$job->setUser( $wgTranslateFuzzyBotName );
$job->setFull( $full );
+ $job->setBase( $base );
$msg = $job->getFull() ? 'pt-deletepage-full-logreason' :
'pt-deletepage-lang-logreason';
- $job->setSummary( wfMsgForContent( 'pt-deletepage-logreason',
$target->getPrefixedText() ) );
+ $job->setSummary( wfMsgForContent( $msg,
$target->getPrefixedText() ) );
$job->setPerformer( $performer );
- $job->lock();
return $job;
}
@@ -40,7 +40,7 @@
// Other stuff
$user = $this->getUser();
$summary = $this->getSummary();
- $target = $this->getTarget();
+ $base = $this->getBase();
PageTranslationHooks::$allowTargetEdit = true;
$oldUser = $wgUser;
@@ -53,7 +53,7 @@
$logger = new LogPage( 'pagetranslation' );
$params = array(
'user' => $this->getPerformer(),
- 'target' => $target->getPrefixedText(),
+ 'target' => $title->getPrefixedText(),
'error' => base64_encode( serialize( $ok ) ),
// This is getting ridiculous
);
$doer = User::newFromName( $this->getPerformer() );
@@ -63,24 +63,23 @@
PageTranslationHooks::$allowTargetEdit = false;
- global $wgMemc;
- $pages = (array) $wgMemc->get( wfMemcKey( 'pt-base',
$title->getPrefixedText() ) );
- $last = true;
-
- foreach ( $pages as $page ) {
- if ( $wgMemc->get( wfMemcKey( 'pt-lock', $page ) ) ===
true ) {
- $last = false;
- break;
- }
- }
-
- if ( $last ) {
- $wgMemc->delete( wfMemcKey( 'pt-base',
$title->getPrefixedText() ) );
+ $cache = wfGetCache( CACHE_DB );
+ $pages = (array) $cache->get( wfMemcKey( 'pt-base', $base ) );
+ $lastitem = array_pop( $pages );
+ if ( $title->getPrefixedText() === $lastitem ) {
+ $cache->delete( wfMemcKey( 'pt-base', $base ) );
$logger = new LogPage( 'pagetranslation' );
$params = array( 'user' => $this->getPerformer() );
$doer = User::newFromName( $this->getPerformer() );
$msg = $this->getFull() ? 'deletefok' : 'deletelok';
- $logger->addEntry( $msg, $title, null, array(
serialize( $params ) ), $doer );
+ $logger->addEntry( $msg, Title::newFromText( $base ),
null, array( serialize( $params ) ), $doer );
+
+ $tpage = TranslatablePage::newFromTitle( $title );
+ $tpage->getTranslationPercentages( true );
+ foreach ( $tpage->getTranslationPages() as $page ) {
+ $page->invalidateCache();
+ }
+ $title->invalidateCache();
}
$wgUser = $oldUser;
@@ -124,6 +123,14 @@
}
}
+ public function setBase( $base ) {
+ $this->params['base'] = $base;
+ }
+
+ public function getBase() {
+ return $this->params['base'];
+ }
+
/**
* Get a user object for doing edits.
*/
Modified: trunk/extensions/Translate/tag/PageTranslationHooks.php
===================================================================
--- trunk/extensions/Translate/tag/PageTranslationHooks.php 2011-06-05
10:59:44 UTC (rev 89494)
+++ trunk/extensions/Translate/tag/PageTranslationHooks.php 2011-06-05
11:17:55 UTC (rev 89495)
@@ -556,9 +556,9 @@
return wfMsgExt( 'pt-log-delete-full-nok', $opts,
$title->getPrefixedText(), $user, $_['target'] );
} elseif ( $action === 'deletelnok' ) {
return wfMsgExt( 'pt-log-delete-lang-nok', $opts,
$title->getPrefixedText(), $user, $_['target'] );
+ } elseif ( $action === 'deletefok' ) {
+ return wfMsgExt( 'pt-log-delete-full-ok', $opts,
$title->getPrefixedText(), $user );
} elseif ( $action === 'deletelok' ) {
- return wfMsgExt( 'pt-log-delete-full-ok', $opts,
$title->getPrefixedText(), $user );
- } elseif ( $action === 'deletefok' ) {
return wfMsgExt( 'pt-log-delete-lang-ok', $opts,
$title->getPrefixedText(), $user );
}
}
Modified: trunk/extensions/Translate/tag/SpecialPageTranslationDeletePage.php
===================================================================
--- trunk/extensions/Translate/tag/SpecialPageTranslationDeletePage.php
2011-06-05 10:59:44 UTC (rev 89494)
+++ trunk/extensions/Translate/tag/SpecialPageTranslationDeletePage.php
2011-06-05 11:17:55 UTC (rev 89495)
@@ -260,16 +260,16 @@
protected function performAction() {
$jobs = array();
$target = $this->title;
+ $base = $this->title->getPrefixedText();
$translationPages = $this->getTranslationPages();
foreach ( $translationPages as $old ) {
- $jobs[$old->getPrefixedText()] = DeleteJob::newJob(
$old, !$this->singleLanguage(), $this->user );
+ $jobs[$old->getPrefixedText()] = DeleteJob::newJob(
$old, $base, !$this->singleLanguage(), $this->user );
}
$sectionPages = $this->getSectionPages();
foreach ( $sectionPages as $old ) {
- $to = $this->newPageTitle( $base, $old, $target );
- $jobs[$old->getPrefixedText()] = DeleteJob::newJob(
$old, !$this->singleLanguage(), $this->user );
+ $jobs[$old->getPrefixedText()] = DeleteJob::newJob(
$old, $base, !$this->singleLanguage(), $this->user );
}
if ( !$this->doSubpages ) {
@@ -279,15 +279,14 @@
continue;
}
- $to = $this->newPageTitle( $base, $old, $target
);
- $jobs[$old->getPrefixedText()] =
DeleteJob::newJob( $old, !$this->singleLanguage(), $this->user );
+ $jobs[$old->getPrefixedText()] =
DeleteJob::newJob( $old, $base, !$this->singleLanguage(), $this->user );
}
}
Job::batchInsert( $jobs );
- global $wgMemc;
- $wgMemc->set( wfMemcKey( 'pt-base', $base ), array_keys( $jobs
), 60 * 60 * 6 );
+ $cache = wfGetCache( CACHE_DB );
+ $cache->set( wfMemcKey( 'pt-base', $target->getPrefixedText()
), array_keys( $jobs ), 60 * 60 * 6 );
if ( !$this->singleLanguage() ) {
@@ -296,7 +295,7 @@
MessageGroups::clearCache();
// TODO: defer or make faster
- MessageIndexRebuilder::execute();
+ //MessageIndexRebuilder::execute();
global $wgOut;
$wgOut->addWikiMsg( 'pt-deletepage-started' );
_______________________________________________
MediaWiki-CVS mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs