MediaWiki  master
DatabaseBlockStoreFactory.php
Go to the documentation of this file.
1 <?php
21 namespace MediaWiki\Block;
22 
28 use Psr\Log\LoggerInterface;
31 
42 
44  private $options;
45 
47  private $logger;
48 
50  private $actorStoreFactory;
51 
53  private $blockRestrictionStoreFactory;
54 
56  private $commentStore;
57 
59  private $hookContainer;
60 
62  private $loadBalancerFactory;
63 
65  private $readOnlyMode;
66 
68  private $userFactory;
69 
71  private $storeCache = [];
72 
84  public function __construct(
85  ServiceOptions $options,
86  LoggerInterface $logger,
87  ActorStoreFactory $actorStoreFactory,
88  BlockRestrictionStoreFactory $blockRestrictionStoreFactory,
89  CommentStore $commentStore,
90  HookContainer $hookContainer,
91  LBFactory $loadBalancerFactory,
92  ReadOnlyMode $readOnlyMode,
93  UserFactory $userFactory
94  ) {
95  $options->assertRequiredOptions( self::CONSTRUCTOR_OPTIONS );
96 
97  $this->options = $options;
98  $this->logger = $logger;
99  $this->actorStoreFactory = $actorStoreFactory;
100  $this->blockRestrictionStoreFactory = $blockRestrictionStoreFactory;
101  $this->commentStore = $commentStore;
102  $this->hookContainer = $hookContainer;
103  $this->loadBalancerFactory = $loadBalancerFactory;
104  $this->readOnlyMode = $readOnlyMode;
105  $this->userFactory = $userFactory;
106  }
107 
112  public function getDatabaseBlockStore( $wikiId = DatabaseBlock::LOCAL ): DatabaseBlockStore {
113  if ( is_string( $wikiId ) && $this->loadBalancerFactory->getLocalDomainID() === $wikiId ) {
114  $wikiId = DatabaseBlock::LOCAL;
115  }
116 
117  $storeCacheKey = $wikiId === DatabaseBlock::LOCAL ? 'LOCAL' : 'crosswikistore-' . $wikiId;
118  if ( !isset( $this->storeCache[$storeCacheKey] ) ) {
119  $this->storeCache[$storeCacheKey] = new DatabaseBlockStore(
120  $this->options,
121  $this->logger,
122  $this->actorStoreFactory,
123  $this->blockRestrictionStoreFactory->getBlockRestrictionStore( $wikiId ),
124  $this->commentStore,
125  $this->hookContainer,
126  $this->loadBalancerFactory->getMainLB( $wikiId ),
127  $this->readOnlyMode,
128  $this->userFactory,
129  $wikiId
130  );
131  }
132  return $this->storeCache[$storeCacheKey];
133  }
134 }
if(!defined('MW_SETUP_CALLBACK'))
Definition: WebStart.php:88
__construct(ServiceOptions $options, LoggerInterface $logger, ActorStoreFactory $actorStoreFactory, BlockRestrictionStoreFactory $blockRestrictionStoreFactory, CommentStore $commentStore, HookContainer $hookContainer, LBFactory $loadBalancerFactory, ReadOnlyMode $readOnlyMode, UserFactory $userFactory)
getDatabaseBlockStore( $wikiId=DatabaseBlock::LOCAL)
Handle database storage of comments such as edit summaries and log reasons.
A class for passing options to services.
assertRequiredOptions(array $expectedKeys)
Assert that the list of options provided in this instance exactly match $expectedKeys,...
Creates User objects.
Definition: UserFactory.php:41
Determine whether a site is currently in read-only mode.