public function execute() { $groups = MessageGroups::singleton()->getGroups(); /** @var MessageGroup $group */ foreach ($groups as $group) { if (!$group instanceof WikiPageMessageGroup) { continue; } // Get all translation subpages and refresh each one of them $page = TranslatablePage::newFromTitle($group->getTitle()); $translationPages = $page->getTranslationPages(); foreach ($translationPages as $subpage) { $job = TranslateRenderJob::newJob($subpage); $job->run(); } } }
public function testTranslationPageRestrictions() { $superUser = new MockSuperUser(); $title = Title::newFromText('Translatable page'); $page = WikiPage::factory($title); $content = ContentHandler::makeContent('<translate>Hello</translate>', $title); $status = $page->doEditContent($content, 'New page', 0, false, $superUser); $revision = $status->value['revision']->getId(); $translatablePage = TranslatablePage::newFromRevision($title, $revision); $translatablePage->addMarkedTag($revision); MessageGroups::singleton()->recache(); $translationPage = Title::newFromText('Translatable page/fi'); TranslateRenderJob::newJob($translationPage)->run(); $this->assertTrue($translationPage->userCan('read', $superUser), 'Users can read existing translation pages'); $this->assertFalse($translationPage->userCan('edit', $superUser), 'Users can not edit existing translation pages'); $translationPage = Title::newFromText('Translatable page/ab'); $this->assertTrue($translationPage->userCan('read', $superUser), 'Users can read non-existing translation pages'); $this->assertFalse($translationPage->userCan('edit', $superUser), 'Users can not edit non-existing translation pages'); }
public static function updateTranslationPage(TranslatablePage $page, $code, $user, $flags, $summary) { $source = $page->getTitle(); $target = Title::makeTitle($source->getNamespace(), $source->getDBkey() . "/{$code}"); // We don't know and don't care $flags &= ~EDIT_NEW & ~EDIT_UPDATE; // Update the target page $job = TranslateRenderJob::newJob($target); $job->setUser($user); $job->setSummary($summary); $job->setFlags($flags); $job->run(); // Regenerate translation caches $page->getTranslationPercentages('force'); // Invalidate caches $pages = $page->getTranslationPages(); foreach ($pages as $title) { $wikiPage = WikiPage::factory($title); $wikiPage->doPurge(); } // And the source page itself too $wikiPage = WikiPage::factory($page->getTitle()); $wikiPage->doPurge(); }
/** * Creates jobs needed to create or update all translation pages. * @param TranslatablePage $page * @return Job[] * @since 2013-01-28 */ public static function getRenderJobs(TranslatablePage $page) { $jobs = array(); $titles = $page->getTranslationPages(); foreach ($titles as $t) { $jobs[] = TranslateRenderJob::newJob($t); } return $jobs; }