blob: 1b6ff517c2523dfdd95d8e260e3ff67d5e8024ec (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
|
<?php
/**
* Job for updating translation pages.
*
* @file
* @author Niklas Laxström
* @license GPL-2.0-or-later
*/
/**
* Job for updating translation pages when translation or template changes.
*
* @ingroup PageTranslation JobQueue
*/
class TranslateRenderJob extends Job {
/**
* @param Title $target
* @return self
*/
public static function newJob( Title $target ) {
$job = new self( $target );
$job->setUser( FuzzyBot::getUser() );
$job->setFlags( EDIT_FORCE_BOT );
$job->setSummary( wfMessage( 'tpt-render-summary' )->inContentLanguage()->text() );
return $job;
}
/**
* @param Title $title
* @param array $params
*/
public function __construct( $title, $params = [] ) {
parent::__construct( __CLASS__, $title, $params );
$this->removeDuplicates = true;
}
public function run() {
global $wgTranslateKeepOutdatedTranslations;
// Initialization
$title = $this->title;
list( , $code ) = TranslateUtils::figureMessage( $title->getPrefixedText() );
// Return the actual translation page...
$page = TranslatablePage::isTranslationPage( $title );
if ( !$page ) {
throw new MWException( "Cannot render translation page for {$title->getPrefixedText()}!" );
}
$group = $page->getMessageGroup();
$collection = $group->initCollection( $code );
$text = $page->getParse()->getTranslationPageText(
$collection,
$wgTranslateKeepOutdatedTranslations
);
// 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;
}
public function setFlags( $flags ) {
$this->params['flags'] = $flags;
}
public function getFlags() {
return $this->params['flags'];
}
public function setSummary( $summary ) {
$this->params['summary'] = $summary;
}
public function getSummary() {
return $this->params['summary'];
}
/**
* @param User|string $user
*/
public function setUser( $user ) {
if ( $user instanceof User ) {
$this->params['user'] = $user->getName();
} else {
$this->params['user'] = $user;
}
}
/**
* Get a user object for doing edits.
*
* @return User
*/
public function getUser() {
return User::newFromName( $this->params['user'], false );
}
}
|