Merge "Remove Revision::getRevisionText from migrateArchiveText"
[lhc/web/wiklou.git] / includes / page / MovePageFactory.php
1 <?php
2
3 /**
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 2 of the License, or
7 * (at your option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License along
15 * with this program; if not, write to the Free Software Foundation, Inc.,
16 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17 * http://www.gnu.org/copyleft/gpl.html
18 *
19 * @file
20 */
21
22 namespace MediaWiki\Page;
23
24 use MediaWiki\Config\ServiceOptions;
25 use MediaWiki\Permissions\PermissionManager;
26 use MovePage;
27 use NamespaceInfo;
28 use RepoGroup;
29 use Title;
30 use WatchedItemStoreInterface;
31 use Wikimedia\Rdbms\ILoadBalancer;
32
33 /**
34 * @since 1.34
35 */
36 class MovePageFactory {
37 /** @var ServiceOptions */
38 private $options;
39
40 /** @var ILoadBalancer */
41 private $loadBalancer;
42
43 /** @var NamespaceInfo */
44 private $nsInfo;
45
46 /** @var WatchedItemStoreInterface */
47 private $watchedItems;
48
49 /** @var PermissionManager */
50 private $permMgr;
51
52 /** @var RepoGroup */
53 private $repoGroup;
54
55 /**
56 * @todo Make this a const when we drop HHVM support (T192166)
57 * @var array
58 */
59 public static $constructorOptions = [
60 'CategoryCollation',
61 'ContentHandlerUseDB',
62 ];
63
64 public function __construct(
65 ServiceOptions $options,
66 ILoadBalancer $loadBalancer,
67 NamespaceInfo $nsInfo,
68 WatchedItemStoreInterface $watchedItems,
69 PermissionManager $permMgr,
70 RepoGroup $repoGroup
71 ) {
72 $options->assertRequiredOptions( self::$constructorOptions );
73
74 $this->options = $options;
75 $this->loadBalancer = $loadBalancer;
76 $this->nsInfo = $nsInfo;
77 $this->watchedItems = $watchedItems;
78 $this->permMgr = $permMgr;
79 $this->repoGroup = $repoGroup;
80 }
81
82 /**
83 * @param Title $from
84 * @param Title $to
85 * @return MovePage
86 */
87 public function newMovePage( Title $from, Title $to ) : MovePage {
88 return new MovePage( $from, $to, $this->options, $this->loadBalancer, $this->nsInfo,
89 $this->watchedItems, $this->permMgr, $this->repoGroup );
90 }
91 }