function run() { // Initialization $title = $this->title; list(, $code) = TranslateUtils::figureMessage($title->getPrefixedText()); // Return the actual translation page... $page = TranslatablePage::isTranslationPage($title); if (!$page) { var_dump($this->params); var_dump($title); throw new MWException("Oops, this should not happen!"); } $group = $page->getMessageGroup(); $collection = $group->initCollection($code); $text = $page->getParse()->getTranslationPageText($collection); // Other stuff $user = $this->getUser(); $summary = $this->getSummary(); $flags = $this->getFlags(); $page = WikiPage::factory($title); // @todo FuzzyBot hack PageTranslationHooks::$allowTargetEdit = true; $content = ContentHandler::makeContent($text, $page->getTitle()); $page->doEditContent($content, $summary, $flags, false, $user); PageTranslationHooks::$allowTargetEdit = false; return true; }
function run() { global $wgUser; // Initialization $title = $this->title; // Other stuff $user = $this->getUser(); $summary = $this->getSummary(); $target = $this->getTarget(); $base = $this->params['base-source']; PageTranslationHooks::$allowTargetEdit = true; $oldUser = $wgUser; $wgUser = $user; self::forceRedirects( false ); // Don't check perms, don't leave a redirect $ok = $title->moveTo( $target, false, $summary, false ); if ( !$ok ) { $logger = new LogPage( 'pagetranslation' ); $params = array( 'user' => $this->getPerformer(), 'target' => $target->getPrefixedText(), 'error' => base64_encode( serialize( $ok ) ), // This is getting ridiculous ); $doer = User::newFromName( $this->getPerformer() ); $logger->addEntry( 'movenok', $title, null, array( serialize( $params ) ), $doer ); } self::forceRedirects( true ); PageTranslationHooks::$allowTargetEdit = false; $this->unlock(); $cache = wfGetCache( CACHE_ANYTHING ); $key = wfMemcKey( 'translate-pt-move', $base ); $count = $cache->decr( $key ); $last = strval( $count ) === "0"; if ( $last ) { $cache->delete( $key ); $logger = new LogPage( 'pagetranslation' ); $params = array( 'user' => $this->getPerformer(), 'target' => $this->params['base-target'], ); $doer = User::newFromName( $this->getPerformer() ); $logger->addEntry( 'moveok', Title::newFromText( $base ), null, array( serialize( $params ) ), $doer ); } $wgUser = $oldUser; return true; }
function run() { global $wgUser; // Initialization $title = $this->title; // Other stuff $user = $this->getUser(); $summary = $this->getSummary(); $base = $this->getBase(); PageTranslationHooks::$allowTargetEdit = true; $oldUser = $wgUser; $wgUser = $user; $error = ''; $article = new Article( $title, 0 ); $ok = $article->doDeleteArticle( $summary, false, 0, true, $error ); if ( !$ok ) { $logger = new LogPage( 'pagetranslation' ); $params = array( 'user' => $this->getPerformer(), 'target' => $base, 'error' => base64_encode( serialize( $ok ) ), // This is getting ridiculous ); $doer = User::newFromName( $this->getPerformer() ); $msg = $this->getFull() ? 'deletefnok' : 'deletelnok'; $logger->addEntry( $msg, $title, null, array( serialize( $params ) ), $doer ); } PageTranslationHooks::$allowTargetEdit = false; $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::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; return true; }
function run() { // Initialization $title = $this->title; // Other stuff $user = $this->getUser(); $summary = $this->getSummary(); $base = $this->getBase(); $doer = User::newFromName($this->getPerformer()); PageTranslationHooks::$allowTargetEdit = true; $error = ''; $wikipage = new WikiPage($title); $ok = $wikipage->doDeleteArticle($summary, false, 0, true, $error, $user); if (!$ok) { $params = array('target' => $base, 'error' => $ok); $type = $this->getFull() ? 'deletefnok' : 'deletelnok'; $entry = new ManualLogEntry('pagetranslation', $type); $entry->setPerformer($doer); $entry->setTarget($title); $entry->setParameters($params); $logid = $entry->insert(); $entry->publish($logid); } PageTranslationHooks::$allowTargetEdit = false; $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)); $type = $this->getFull() ? 'deletefok' : 'deletelok'; $entry = new ManualLogEntry('pagetranslation', $type); $entry->setPerformer($doer); $entry->setTarget(Title::newFromText($base)); $logid = $entry->insert(); $entry->publish($logid); $tpage = TranslatablePage::newFromTitle($title); $tpage->getTranslationPercentages(true); foreach ($tpage->getTranslationPages() as $page) { $page->invalidateCache(); } $title->invalidateCache(); } return true; }
function run() { // Initialization $title = $this->title; list( , $code ) = TranslateUtils::figureMessage( $title->getPrefixedText() ); // Return the actual translation page... $page = TranslatablePage::isTranslationPage( $title ); if ( !$page ) { var_dump( $this->params ); var_dump( $title ); throw new MWException( "Oops, this should not happen!" ); } $group = $page->getMessageGroup(); $collection = $group->initCollection( $code ); $collection->loadTranslations( DB_MASTER ); $text = $page->getParse()->getTranslationPageText( $collection ); // Other stuff $user = $this->getUser(); $summary = $this->getSummary(); $flags = $this->getFlags(); $article = new Article( $title, 0 ); // @todo FuzzyBot hack PageTranslationHooks::$allowTargetEdit = true; // Do the edit $status = $article->doEdit( $text, $summary, $flags, false, $user ); SpecialPageTranslation::superDebug( __METHOD__, 'edit', $user, $title, $flags, $status ); PageTranslationHooks::$allowTargetEdit = false; // purge cache $page->getTranslationPercentages( true ); return true; }
function run() { // Unfortunately the global is needed until bug is fixed: // https://phabricator.wikimedia.org/T51086 // Once MW >= 1.24 is supported, can use MovePage class. global $wgUser; // Initialization $title = $this->title; // Other stuff $user = $this->getUser(); $summary = $this->getSummary(); $target = $this->getTarget(); $base = $this->params['base-source']; $doer = User::newFromName($this->getPerformer()); PageTranslationHooks::$allowTargetEdit = true; PageTranslationHooks::$jobQueueRunning = true; $oldUser = $wgUser; $wgUser = $user; self::forceRedirects(false); // Don't check perms, don't leave a redirect $ok = $title->moveTo($target, false, $summary, false); if (!$ok) { $params = array('target' => $target->getPrefixedText(), 'error' => $ok); $entry = new ManualLogEntry('pagetranslation', 'movenok'); $entry->setPerformer($doer); $entry->setTarget($title); $entry->setParameters($params); $logid = $entry->insert(); $entry->publish($logid); } self::forceRedirects(true); PageTranslationHooks::$allowTargetEdit = false; $this->unlock(); $cache = wfGetCache(CACHE_ANYTHING); $key = wfMemcKey('translate-pt-move', $base); $count = $cache->decr($key); $last = strval($count) === '0'; if ($last) { $cache->delete($key); $params = array('target' => $this->params['base-target']); $entry = new ManualLogEntry('pagetranslation', 'moveok'); $entry->setPerformer($doer); $entry->setParameters($params); $entry->setTarget(Title::newFromText($base)); $logid = $entry->insert(); $entry->publish($logid); PageTranslationHooks::$jobQueueRunning = false; } $wgUser = $oldUser; return true; }