MediaWiki master
ExternalStoreMedium.php
Go to the documentation of this file.
1<?php
21use Psr\Log\LoggerAwareInterface;
22use Psr\Log\LoggerInterface;
23use Psr\Log\NullLogger;
24
36abstract class ExternalStoreMedium implements LoggerAwareInterface {
38 protected $params = [];
40 protected $dbDomain;
43
45 protected $logger;
46
53 public function __construct( array $params ) {
54 $this->params = $params;
55 if ( isset( $params['domain'] ) ) {
56 $this->dbDomain = $params['domain'];
57 $this->isDbDomainExplicit = empty( $params['isDomainImplicit'] );
58 } else {
59 throw new InvalidArgumentException( 'Missing DB "domain" parameter.' );
60 }
61
62 $this->logger = $params['logger'] ?? new NullLogger();
63 }
64
65 public function setLogger( LoggerInterface $logger ) {
66 $this->logger = $logger;
67 }
68
76 abstract public function fetchFromURL( $url );
77
84 public function batchFetchFromURLs( array $urls ) {
85 $retval = [];
86 foreach ( $urls as $url ) {
87 $data = $this->fetchFromURL( $url );
88 // Dont return when false to allow for simpler implementations
89 if ( $data !== false ) {
90 $retval[$url] = $data;
91 }
92 }
93
94 return $retval;
95 }
96
105 abstract public function store( $location, $data );
106
114 public function isReadOnly( $location ) {
115 return false;
116 }
117}
Base class for external storage.
array $params
Usage context options for this instance.
setLogger(LoggerInterface $logger)
fetchFromURL( $url)
Fetch data from given external store URL.
bool $isDbDomainExplicit
Whether this was factoried with an explicit DB domain.
store( $location, $data)
Insert a data item into a given location.
batchFetchFromURLs(array $urls)
Fetch data from given external store URLs.
isReadOnly( $location)
Check if a given location is read-only.
string $dbDomain
Default database domain to store content under.