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

Reply via email to