Translate extension for MediaWiki
 
Loading...
Searching...
No Matches
MoveTranslatableBundleJob.php
1<?php
2declare( strict_types = 1 );
3
4namespace MediaWiki\Extension\Translate\MessageGroupProcessing;
5
6use Job;
7use MediaWiki\Context\RequestContext;
10use MediaWiki\MediaWikiServices;
11use MediaWiki\Title\Title;
12use MediaWiki\User\User;
13use Wikimedia\ScopedCallback;
14
22class MoveTranslatableBundleJob extends Job {
23 private TranslatableBundleMover $bundleMover;
24
34 public static function newJob(
35 Title $source,
36 Title $target,
37 array $moves,
38 array $redirects,
39 string $reason,
40 User $performer,
41 array $session
42 ): self {
43 $params = [
44 'source' => $source->getPrefixedText(),
45 'target' => $target->getPrefixedText(),
46 'moves' => $moves,
47 'redirects' => $redirects,
48 'summary' => $reason,
49 'performer' => $performer->getName(),
50 'session' => $session
51 ];
52
53 return new self( $target, $params );
54 }
55
56 public function __construct( Title $title, array $params = [] ) {
57 parent::__construct( 'MoveTranslatableBundleJob', $title, $params );
58 $this->bundleMover = Services::getInstance()->getTranslatableBundleMover();
59 }
60
62 public function run() {
63 $sourceTitle = Title::newFromText( $this->params['source'] );
64 $targetTitle = Title::newFromText( $this->params['target'] );
65
66 $userFactory = MediaWikiServices::getInstance()->getUserFactory();
67 $performer = $userFactory->newFromName( $this->params['performer'] );
68
69 // Restore the session information if present
70 if ( isset( $this->params[ 'session' ] ) ) {
71 $scope = RequestContext::importScopedSession( $this->params['session'] );
72 $this->addTeardownCallback( static function () use ( &$scope ) {
73 ScopedCallback::consume( $scope );
74 } );
75 }
76
77 $this->bundleMover->moveSynchronously(
78 $sourceTitle,
79 $targetTitle,
80 $this->params['moves'],
81 $this->params['redirects'] ?? [],
82 $performer,
83 $this->params['summary']
84 );
85
86 return true;
87 }
88}
static newJob(Title $source, Title $target, array $moves, array $redirects, string $reason, User $performer, array $session)
Contains the core logic to validate and move translatable bundles.
Minimal service container.
Definition Services.php:60