MediaWiki REL1_35
ExternalStoreMedium.php
Go to the documentation of this file.
1<?php
24use Psr\Log\LoggerAwareInterface;
25use Psr\Log\LoggerInterface;
26use Psr\Log\NullLogger;
27
38abstract class ExternalStoreMedium implements LoggerAwareInterface {
40 protected $params = [];
42 protected $dbDomain;
45
47 protected $logger;
48
55 public function __construct( array $params ) {
56 $this->params = $params;
57 if ( isset( $params['domain'] ) ) {
58 $this->dbDomain = $params['domain'];
59 $this->isDbDomainExplicit = empty( $params['isDomainImplicit'] );
60 } else {
61 throw new InvalidArgumentException( 'Missing DB "domain" parameter.' );
62 }
63
64 $this->logger = $params['logger'] ?? new NullLogger();
65 }
66
67 public function setLogger( LoggerInterface $logger ) {
68 $this->logger = $logger;
69 }
70
78 abstract public function fetchFromURL( $url );
79
86 public function batchFetchFromURLs( array $urls ) {
87 $retval = [];
88 foreach ( $urls as $url ) {
89 $data = $this->fetchFromURL( $url );
90 // Dont return when false to allow for simpler implementations
91 if ( $data !== false ) {
92 $retval[$url] = $data;
93 }
94 }
95
96 return $retval;
97 }
98
107 abstract public function store( $location, $data );
108
116 public function isReadOnly( $location ) {
117 return false;
118 }
119}
Key/value blob storage for a particular storage medium type (e.g.
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.