61 $class =
'ExternalStore' . ucfirst( $proto );
64 return class_exists( $class ) ?
new $class(
$params ) :
false;
76 $parts = explode(
'://', $url, 2 );
77 if ( count( $parts ) != 2 ) {
81 list( $proto, $path ) = $parts;
87 if ( $store ===
false ) {
91 return $store->fetchFromURL( $url );
103 foreach (
$urls as $url ) {
104 $scheme = parse_url( $url, PHP_URL_SCHEME );
106 $batches[$scheme][] = $url;
110 foreach ( $batches as $proto => $batchedUrls ) {
112 if ( $store ===
false ) {
115 $retval += $store->batchFetchFromURLs( $batchedUrls );
120 foreach ( $missing as $url ) {
140 $parts = explode(
'://', $url, 2 );
141 if ( count( $parts ) != 2 ) {
145 list( $proto, $path ) = $parts;
151 if ( $store ===
false ) {
154 return $store->store( $path, $data );
189 while ( count( $tryStores ) > 0 ) {
190 $index = mt_rand( 0, count( $tryStores ) - 1 );
191 $storeUrl = $tryStores[$index];
192 wfDebug( __METHOD__ .
": trying $storeUrl\n" );
193 list( $proto, $path ) = explode(
'://', $storeUrl, 2 );
195 if ( $store ===
false ) {
196 throw new MWException(
"Invalid external storage protocol - $storeUrl" );
199 $url = $store->store( $path, $data );
200 }
catch ( Exception $error ) {
203 if ( strlen( $url ) ) {
206 unset( $tryStores[$index] );
207 $tryStores = array_values( $tryStores );
209 "Unable to store text to external storage $storeUrl" );
216 throw new MWException(
"Unable to store text to external storage" );
array $wgDefaultExternalStore
The place to put new revisions, false to put them in the local text table.
$wgExternalStores
External stores allow including content from non database sources following URL links.
wfDebug( $text, $dest='all', array $context=[])
Sends a line to the debug log if enabled or, optionally, to a comment in output.
wfDebugLog( $logGroup, $text, $dest='all', array $context=[])
Send a line to a supplementary debug log file, if configured, or main debug log if not.
Constructor class for key/value blob data kept in external repositories.
static insertWithFallback(array $tryStores, $data, array $params=[])
Like insert() above, but does more of the work for us.
static fetchFromURL( $url, array $params=[])
Fetch data from given URL.
static insert( $url, $data, array $params=[])
Store a data item to an external store, identified by a partial URL The protocol part is used to iden...
static batchFetchFromURLs(array $urls)
Fetch data from multiple URLs with a minimum of round trips.
static insertToDefault( $data, array $params=[])
Like insert() above, but does more of the work for us.
static insertToForeignDefault( $data, $wiki)
static getStoreObject( $proto, array $params=[])
Get an external store object of the given type, with the given parameters.
deferred txt A few of the database updates required by various functions here can be deferred until after the result page is displayed to the user For updating the view updating the linked to tables after a etc PHP does not yet have any way to tell the server to actually return and disconnect while still running these but it might have such a feature in the future We handle these by creating a deferred update object and putting those objects on a global list
please add to it if you re going to add events to the MediaWiki code where normally authentication against an external auth plugin would be creating a local account incomplete not yet checked for validity & $retval