*/
$wgCountCategorizedImagesAsUsed = false;
+/**
+ * External stores allow including content
+ * from non database sources following URL links
+ *
+ * Short names of ExternalStore classes may be specified in an array here:
+ * $wgExternalStores = array("http","file","custom")...
+ *
+ * CAUTION: Access to database might lead to code execution
+ */
+$wgExternalStores = false;
+
+
} else {
die();
}
--- /dev/null
+<?php
+/**
+ *
+ * @package MediaWiki
+ *
+ * Constructor class for data kept in external repositories
+ *
+ * External repositories might be populated by maintenance/async
+ * scripts, thus partial moving of data may be possible, as well
+ * as possibility to have any storage format (i.e. for archives)
+ *
+ */
+
+class ExternalStore {
+ /* Fetch data from given URL */
+ function fetchFromURL($url) {
+ global $wgExternalStores;
+
+ if (!$wgExternalStores)
+ return false;
+
+ @list($proto,$path)=explode('://',$url,2);
+ /* Bad URL */
+ if ($path=="")
+ return false;
+ /* Protocol not enabled */
+ if (!in_array( $proto, $wgExternalStores ))
+ return false;
+
+ $class='ExternalStore'.ucfirst($proto);
+ /* Preloaded modules might exist, especially ones serving multiple protocols */
+ if (!class_exists($class)) {
+ if (!include_once($class.'.php'))
+ return false;
+ }
+ $store=new $class();
+ return $store->fetchFromURL($url);
+ }
+
+ /* XXX: may require other methods, for store, delete,
+ * whatever, for initial ext storage
+ */
+}
+?>
--- /dev/null
+<?php
+/**
+ *
+ * @package MediaWiki
+ *
+ * Example class for HTTP accessable external objects
+ *
+ */
+
+class ExternalStoreHttp {
+ /* Fetch data from given URL */
+ function fetchFromURL($url) {
+ ini_set( "allow_url_fopen", true );
+ $ret = file_get_contents( $url );
+ ini_set( "allow_url_fopen", false );
+ return $ret;
+ }
+
+ /* XXX: may require other methods, for store, delete,
+ * whatever, for initial ext storage
+ */
+}
+?>
return false;
}
+ # Use external methods for external objects, text in table is URL-only then
+ if ( in_array( 'external', $flags ) ) {
+ $url=$text;
+ @list($proto,$path)=explode('://',$url,2);
+ if ($path=="") {
+ wfProfileOut( $fname );
+ return false;
+ }
+ require_once('ExternalStore.php');
+ $text=ExternalStore::fetchFromURL($url);
+ }
+
if( in_array( 'gzip', $flags ) ) {
# Deal with optional compression of archived pages.
# This can be done periodically via maintenance/compressOld.php, and
}
}
-?>
\ No newline at end of file
+?>