MediaWiki REL1_29
|
Dynamic JavaScript and CSS resource loading system. More...
Public Member Functions | |
__construct (Config $config=null, LoggerInterface $logger=null) | |
Register core modules and runs registration hooks. | |
addSource ( $id, $loadUrl=null) | |
Add a foreign source of modules. | |
createLoaderURL ( $source, ResourceLoaderContext $context, $extraQuery=[]) | |
Build a load.php URL. | |
getCombinedVersion (ResourceLoaderContext $context, array $moduleNames) | |
Helper method to get and combine versions of multiple modules. | |
getConfig () | |
getLessCompiler ( $extraVars=[]) | |
Returns LESS compiler set up for use with MediaWiki. | |
getLessVars () | |
Get global LESS variables. | |
getLoadScript ( $source) | |
Get the URL to the load.php endpoint for the given ResourceLoader source. | |
getLogger () | |
getMessageBlobStore () | |
getModule ( $name) | |
Get the ResourceLoaderModule object for a given module name. | |
getModuleNames () | |
Get a list of module names. | |
getModulesByMessage ( $messageKey) | |
Get names of modules that use a certain message. | |
getSources () | |
Get the list of sources. | |
getTestModuleNames ( $framework='all') | |
Get a list of test module names for one (or all) frameworks. | |
isModuleRegistered ( $name) | |
Check whether a ResourceLoader module is registered. | |
makeModuleResponse (ResourceLoaderContext $context, array $modules, array $missing=[]) | |
Generate code for a response. | |
makeVersionQuery (ResourceLoaderContext $context) | |
Get the expected value of the 'version' query parameter. | |
preloadModuleInfo (array $moduleNames, ResourceLoaderContext $context) | |
Load information stored in the database about modules. | |
register ( $name, $info=null) | |
Register a module with the ResourceLoader system. | |
registerTestModules () | |
respond (ResourceLoaderContext $context) | |
Output a response to a load request, including the content-type header. | |
setLogger (LoggerInterface $logger) | |
setMessageBlobStore (MessageBlobStore $blobStore) | |
Static Public Member Functions | |
static | clearCache () |
Reset static members used for caching. | |
static | filter ( $filter, $data, array $options=[]) |
Run JavaScript or CSS data through a filter, caching the filtered result for future calls. | |
static | formatException ( $e) |
Handle exception display. | |
static | inDebugMode () |
Determine whether debug mode was requested Order of priority is 1) request param, 2) cookie, 3) $wg setting. | |
static | isValidModuleName ( $moduleName) |
Check a module name for validity. | |
static | makeCombinedStyles (array $stylePairs) |
Combines an associative array mapping media type to CSS into a single stylesheet with "@media" blocks. | |
static | makeComment ( $text) |
Generate a CSS or JS comment block. | |
static | makeConfigSetScript (array $configuration) |
Returns JS code which will set the MediaWiki configuration array to the given value. | |
static | makeCustomLoaderScript ( $name, $version, $dependencies, $group, $source, $script) |
Returns JS code which calls the script given by $script. | |
static | makeHash ( $value) |
static | makeInlineScript ( $script) |
Construct an inline script tag with given JS code. | |
static | makeLoaderConditionalScript ( $script) |
Returns JS code which runs given JS code if the client-side framework is present. | |
static | makeLoaderQuery ( $modules, $lang, $skin, $user=null, $version=null, $debug=false, $only=null, $printable=false, $handheld=false, $extraQuery=[]) |
Build a query array (array representation of query string) for load.php. | |
static | makeLoaderRegisterScript ( $name, $version=null, $dependencies=null, $group=null, $source=null, $skip=null) |
Returns JS code which calls mw.loader.register with the given parameters. | |
static | makeLoaderSourcesScript ( $id, $loadUrl=null) |
Returns JS code which calls mw.loader.addSource() with the given parameters. | |
static | makeLoaderStateScript ( $name, $state=null) |
Returns a JS call to mw.loader.state, which sets the state of a module or modules to a given value. | |
static | makeMessageSetScript ( $messages) |
Returns JS code which, when called, will register a given list of messages. | |
static | makePackedModulesString ( $modules) |
Convert an array of module names to a packed query string. | |
Protected Member Functions | |
isFileModule ( $name) | |
Return whether the definition of a module corresponds to a simple ResourceLoaderFileModule. | |
outputErrorAndLog (Exception $e, $msg, array $context=[]) | |
Add an error to the 'errors' array and log it. | |
sendResponseHeaders (ResourceLoaderContext $context, $etag, $errors) | |
Send main response headers to the client. | |
tryRespondFromFileCache (ResourceFileCache $fileCache, ResourceLoaderContext $context, $etag) | |
Send out code for a response from file cache if possible. | |
tryRespondNotModified (ResourceLoaderContext $context, $etag) | |
Respond with HTTP 304 Not Modified if appropiate. | |
Static Protected Member Functions | |
static | createLoaderQuery (ResourceLoaderContext $context, $extraQuery=[]) |
Helper for createLoaderURL() | |
static | formatExceptionNoComment ( $e) |
Handle exception display. | |
static | makeLoaderImplementScript ( $name, $scripts, $styles, $messages, $templates) |
Return JS code that calls mw.loader.implement with given module properties. | |
Protected Attributes | |
MessageBlobStore | $blobStore |
$config | |
array | $errors = [] |
Errors accumulated during current respond() call. | |
array | $moduleInfos = [] |
Associative array mapping module name to info associative array. | |
array | $modules = [] |
Module name/ResourceLoaderModule object pairs. | |
array | $sources = [] |
E.g. | |
array | $testModuleNames = [] |
Associative array mapping framework ids to a list of names of test suite modules like [ 'qunit' => [ 'mediawiki.tests.qunit.suites', 'ext.foo.tests', ... ], ... ]. | |
Static Protected Attributes | |
static bool | $debugMode = null |
static int | $filterCacheVersion = 7 |
Static Private Member Functions | |
static | applyFilter ( $filter, $data) |
static | isEmptyObject (stdClass $obj) |
static | trimArray (array &$array) |
Remove empty values from the end of an array. | |
Private Attributes | |
array | $lessVars = null |
LoggerInterface | $logger |
Dynamic JavaScript and CSS resource loading system.
Most of the documentation is on the MediaWiki documentation wiki starting at: https://www.mediawiki.org/wiki/ResourceLoader
Definition at line 38 of file ResourceLoader.php.
ResourceLoader::__construct | ( | Config | $config = null , |
LoggerInterface | $logger = null |
||
) |
Register core modules and runs registration hooks.
Config | $config | [optional] |
LoggerInterface | $logger | [optional] |
Reimplemented in EmptyResourceLoader.
Definition at line 237 of file ResourceLoader.php.
References $config, $IP, $logger, addSource(), global, registerTestModules(), and setMessageBlobStore().
ResourceLoader::addSource | ( | $id, | |
$loadUrl = null |
|||
) |
Add a foreign source of modules.
Source IDs are typically the same as the Wiki ID or database name (e.g. lowercase a-z).
array | string | $id | Source ID (string), or [ id1 => loadUrl, id2 => loadUrl, ... ] |
string | array | $loadUrl | load.php url (string), or array with loadUrl key for backwards-compatibility. |
MWException |
Definition at line 447 of file ResourceLoader.php.
Referenced by __construct(), EmptyResourceLoader\__construct(), and ResourceLoaderTest\testAddSource().
|
staticprivate |
Definition at line 215 of file ResourceLoader.php.
References $e, CSSMin\minify(), and JavaScriptMinifier\minify().
Referenced by filter().
|
static |
Reset static members used for caching.
Global state and $wgRequest are evil, but we're using it right now and sometimes we need to be able to force ResourceLoader to re-evaluate the context because it has changed (e.g. in the test suite).
Definition at line 1517 of file ResourceLoader.php.
Referenced by ResourceLoaderTestCase\setUp(), and ResourceLoaderTest\testMakeLoaderImplementScript().
|
staticprotected |
Helper for createLoaderURL()
ResourceLoaderContext | $context | |
array | $extraQuery |
Definition at line 1548 of file ResourceLoader.php.
ResourceLoader::createLoaderURL | ( | $source, | |
ResourceLoaderContext | $context, | ||
$extraQuery = [] |
|||
) |
Build a load.php URL.
string | $source | Name of the ResourceLoader source |
ResourceLoaderContext | $context | |
array | $extraQuery |
Definition at line 1530 of file ResourceLoader.php.
|
static |
Run JavaScript or CSS data through a filter, caching the filtered result for future calls.
Available filters are:
If $data is empty, only contains whitespace or the filter was unknown, $data is returned unmodified.
string | $filter | Name of filter to run |
string | $data | Text to filter, such as JavaScript or CSS text |
array | $options | Keys:
|
Definition at line 180 of file ResourceLoader.php.
References $cache, $options, applyFilter(), and CACHE_ANYTHING.
Referenced by ResourceLoaderModule\buildContent(), and ResourceLoaderStartUpModule\getModuleRegistrations().
|
static |
Handle exception display.
Exception | $e | Exception to be shown to the user |
Definition at line 974 of file ResourceLoader.php.
References $e.
|
staticprotected |
Handle exception display.
Exception | $e | Exception to be shown to the user |
Definition at line 985 of file ResourceLoader.php.
References $e, $wgShowExceptionDetails, and global.
ResourceLoader::getCombinedVersion | ( | ResourceLoaderContext | $context, |
array | $moduleNames | ||
) |
Helper method to get and combine versions of multiple modules.
ResourceLoaderContext | $context | |
string[] | $modules | List of known module names |
Definition at line 641 of file ResourceLoader.php.
ResourceLoader::getConfig | ( | ) |
ResourceLoader::getLessCompiler | ( | $extraVars = [] | ) |
Returns LESS compiler set up for use with MediaWiki.
array | $extraVars | Associative array of extra (i.e., other than the globally-configured ones) that should be used for compilation. |
MWException |
Definition at line 1634 of file ResourceLoader.php.
ResourceLoader::getLessVars | ( | ) |
Get global LESS variables.
Definition at line 1658 of file ResourceLoader.php.
ResourceLoader::getLoadScript | ( | $source | ) |
Get the URL to the load.php endpoint for the given ResourceLoader source.
string | $source |
MWException | On an invalid $source name |
Definition at line 597 of file ResourceLoader.php.
References $source.
ResourceLoader::getLogger | ( | ) |
Definition at line 290 of file ResourceLoader.php.
References $logger.
Referenced by EmptyResourceLoader\__construct().
ResourceLoader::getMessageBlobStore | ( | ) |
Definition at line 298 of file ResourceLoader.php.
References $blobStore.
Referenced by preloadModuleInfo().
ResourceLoader::getModule | ( | $name | ) |
Get the ResourceLoaderModule object for a given module name.
If an array of module parameters exists but a ResourceLoaderModule object has not yet been instantiated, this method will instantiate and cache that object such that subsequent calls simply return the same object.
string | $name | Module name |
Definition at line 532 of file ResourceLoader.php.
References $name.
Referenced by ResourceLoaderClientHtml\getData(), and preloadModuleInfo().
ResourceLoader::getModuleNames | ( | ) |
Get a list of module names.
Definition at line 483 of file ResourceLoader.php.
ResourceLoader::getModulesByMessage | ( | $messageKey | ) |
Get names of modules that use a certain message.
string | $messageKey |
Definition at line 1136 of file ResourceLoader.php.
ResourceLoader::getSources | ( | ) |
Get the list of sources.
Definition at line 584 of file ResourceLoader.php.
ResourceLoader::getTestModuleNames | ( | $framework = 'all' | ) |
Get a list of test module names for one (or all) frameworks.
If the given framework id is unknkown, or if the in-object variable is not an array, then it will return an empty array.
string | $framework | Get only the test module names for one particular framework (optional) |
Definition at line 497 of file ResourceLoader.php.
|
static |
Determine whether debug mode was requested Order of priority is 1) request param, 2) cookie, 3) $wg setting.
Definition at line 1500 of file ResourceLoader.php.
Referenced by SpecialJavaScriptTest\exportQUnit(), EditPage\getEditToolbar(), ResourceLoaderStartUpModule\getModuleRegistrations(), OutputPage\getRlClientContext(), ResourceLoaderLanguageDataModule\getScript(), ResourceLoaderLanguageNamesModule\getScript(), ResourceLoaderSpecialCharacterDataModule\getScript(), ResourceLoaderStartUpModule\getScript(), ResourceLoaderUserDefaultsModule\getScript(), ResourceLoaderUserOptionsModule\getScript(), ResourceLoaderUserTokensModule\getScript(), makeModuleResponse(), and SpecialJavaScriptTest\plainQUnit().
|
staticprivate |
Definition at line 1292 of file ResourceLoader.php.
|
protected |
Return whether the definition of a module corresponds to a simple ResourceLoaderFileModule.
string | $name | Module name |
Definition at line 568 of file ResourceLoader.php.
References $name.
ResourceLoader::isModuleRegistered | ( | $name | ) |
Check whether a ResourceLoader module is registered.
string | $name |
Definition at line 517 of file ResourceLoader.php.
References $name.
|
static |
Check a module name for validity.
Module names may not contain pipes (|), commas (,) or exclamation marks (!) and can be at most 255 bytes.
string | $moduleName | Module name to check |
Definition at line 1621 of file ResourceLoader.php.
|
static |
Combines an associative array mapping media type to CSS into a single stylesheet with "@media" blocks.
array | $stylePairs | Array keyed by media type containing (arrays of) CSS strings |
Definition at line 1210 of file ResourceLoader.php.
Referenced by WebInstallerOutput\getCSS().
|
static |
Generate a CSS or JS comment block.
Only use this for public data, not error message details.
string | $text |
Definition at line 963 of file ResourceLoader.php.
Referenced by ResourceLoaderWikiModule\getScript(), and ResourceLoaderWikiModule\getStyles().
|
static |
Returns JS code which will set the MediaWiki configuration array to the given value.
array | $configuration | List of configuration values keyed by variable name |
Definition at line 1461 of file ResourceLoader.php.
Referenced by SpecialJavaScriptTest\exportQUnit(), OutputPage\getBottomScripts(), MWDebug\getDebugHTML(), ResourceLoaderClientHtml\getHeadHtml(), ResourceLoaderUploadDialogModule\getScript(), and Skin\makeVariablesScript().
|
static |
Returns JS code which calls the script given by $script.
The script will be called with local variables name, version, dependencies and group, which will have values corresponding to $name, $version, $dependencies and $group as supplied.
string | $name | Module name |
string | $version | Module version hash |
array | $dependencies | List of module names on which this module depends |
string | $group | Group which the module is in. |
string | $source | Source of the module, or 'local' if not foreign. |
string | $script | JavaScript code |
Definition at line 1281 of file ResourceLoader.php.
|
static |
string | $value |
Definition at line 609 of file ResourceLoader.php.
References $value.
Referenced by ResourceLoaderStartUpModule\getModuleRegistrations(), ResourceLoaderModule\getVersionHash(), and ResourceLoaderTest\testGetCombinedVersion().
|
static |
Construct an inline script tag with given JS code.
The code will be wrapped in a closure, and it will be executed by ResourceLoader only if the client has adequate support for MediaWiki JavaScript code.
string | $script | JavaScript code |
Definition at line 1445 of file ResourceLoader.php.
Referenced by SpecialRecentChanges\execute(), OutputPage\getBottomScripts(), MWDebug\getDebugHTML(), EditPage\getEditToolbar(), ResourceLoaderClientHtml\getHeadHtml(), ResourceLoaderClientHtml\makeLoad(), and Skin\makeVariablesScript().
|
static |
Returns JS code which runs given JS code if the client-side framework is present.
string | $script | JavaScript code |
Definition at line 1431 of file ResourceLoader.php.
Referenced by SpecialJavaScriptTest\exportQUnit().
|
staticprotected |
Return JS code that calls mw.loader.implement with given module properties.
string | $name | Module name or implement key (format "`[name]@[version]`") |
XmlJsCode | array | string | $scripts | Code as XmlJsCode (to be wrapped in a closure), list of URLs to JavaScript files, or a string of JavaScript for $.globalEval . |
mixed | $styles | Array of CSS strings keyed by media type, or an array of lists of URLs to CSS files keyed by media type |
mixed | $messages | List of messages associated with this module. May either be an associative array mapping message key to value, or a JSON-encoded message blob containing the same data, wrapped in an XmlJsCode object. |
array | $templates | Keys are name of templates and values are the source of the template. |
MWException |
Definition at line 1165 of file ResourceLoader.php.
|
static |
Build a query array (array representation of query string) for load.php.
Helper function for createLoaderURL().
array | $modules | |
string | $lang | |
string | $skin | |
string | $user | |
string | $version | |
bool | $debug | |
string | $only | |
bool | $printable | |
bool | $handheld | |
array | $extraQuery |
Definition at line 1580 of file ResourceLoader.php.
Referenced by OutputPage\getRlClientContext().
|
static |
Returns JS code which calls mw.loader.register with the given parameters.
Has three calling conventions:
string | $name | Module name |
string | $version | Module version hash |
array | $dependencies | List of module names on which this module depends |
string | $group | Group which the module is in |
string | $source | Source of the module, or 'local' if not foreign |
string | $skip | Script body of the skip function |
Definition at line 1353 of file ResourceLoader.php.
Referenced by ResourceLoaderStartUpModule\getModuleRegistrations(), and ResourceLoaderTest\testMakeLoaderRegisterScript().
|
static |
Returns JS code which calls mw.loader.addSource() with the given parameters.
Has two calling conventions:
string | $id | Source ID |
string | $loadUrl | load.php url |
Definition at line 1407 of file ResourceLoader.php.
Referenced by ResourceLoaderStartUpModule\getModuleRegistrations(), and ResourceLoaderTest\testMakeLoaderSourcesScript().
|
static |
Returns a JS call to mw.loader.state, which sets the state of a module or modules to a given value.
Has two calling conventions:
string | $name | |
string | $state |
Definition at line 1251 of file ResourceLoader.php.
Referenced by ResourceLoaderClientHtml\getHeadHtml(), and ResourceLoaderStartUpModule\getModuleRegistrations().
|
static |
Returns JS code which, when called, will register a given list of messages.
mixed | $messages | Either an associative array mapping message key to value, or a JSON-encoded message blob containing the same data, wrapped in an XmlJsCode object. |
Definition at line 1195 of file ResourceLoader.php.
Referenced by SpecialRecentChanges\execute().
ResourceLoader::makeModuleResponse | ( | ResourceLoaderContext | $context, |
array | $modules, | ||
array | $missing = [] |
||
) |
Generate code for a response.
ResourceLoaderContext | $context | Context in which to generate a response |
ResourceLoaderModule[] | $modules | List of module objects keyed by module name |
string[] | $missing | List of requested module names that are unregistered (optional) |
Definition at line 1005 of file ResourceLoader.php.
References $content, $context, $e, $image, $modules, $name, $out, as, errors, and inDebugMode().
|
static |
Convert an array of module names to a packed query string.
For example, [ 'foo.bar', 'foo.baz', 'bar.baz', 'bar.quux' ] becomes 'foo.bar,baz|bar.baz,quux'
array | $modules | List of module names (strings) |
Definition at line 1477 of file ResourceLoader.php.
Referenced by ResourceLoaderTest\testMakePackedModulesString().
ResourceLoader::makeVersionQuery | ( | ResourceLoaderContext | $context | ) |
Get the expected value of the 'version' query parameter.
This is used by respond() to set a short Cache-Control header for requests with information newer than the current server has. This avoids pollution of edge caches. Typically during deployment. (T117587)
This MUST match return value of mw.loader#getCombinedVersion()
client-side.
ResourceLoaderContext | $context | |
string[] | $modules | List of module names |
Definition at line 678 of file ResourceLoader.php.
|
protected |
ResourceLoader::preloadModuleInfo | ( | array | $moduleNames, |
ResourceLoaderContext | $context | ||
) |
Load information stored in the database about modules.
This method grabs modules dependencies from the database and updates modules objects.
This is not inside the module code because it is much faster to request all of the information at once than it is to have each module requests its own information. This sacrifice of modularity yields a substantial performance improvement.
array | $moduleNames | List of module names to preload information for |
ResourceLoaderContext | $context | Context to load the information within |
Definition at line 109 of file ResourceLoader.php.
References $blob, $context, $dbr, $lang, $modules, $name, $res, $skin, as, DB_REPLICA, ResourceLoaderModule\expandRelativePaths(), ContextSource\getLanguage(), getMessageBlobStore(), getModule(), ContextSource\getSkin(), ResourceLoaderWikiModule\preloadTitleInfo(), and wfGetDB().
ResourceLoader::register | ( | $name, | |
$info = null |
|||
) |
Register a module with the ResourceLoader system.
mixed | $name | Name of module as a string or List of name/object pairs as an array |
array | $info | Module info array. For backwards compatibility with 1.17alpha, this may also be a ResourceLoaderModule object. Optional when using multiple-registration calling style. |
MWException | If a duplicate module registration is attempted |
MWException | If a module name contains illegal characters (pipes or commas) |
MWException | If something other than a ResourceLoaderModule is being registered |
Definition at line 323 of file ResourceLoader.php.
References $name, $path, array(), as, definition, ResourceLoaderFileModule\extractBasePaths(), from, MessageBlobStore\get(), list, and or.
ResourceLoader::registerTestModules | ( | ) |
Definition at line 398 of file ResourceLoader.php.
References $IP, as, and global.
Referenced by __construct().
ResourceLoader::respond | ( | ResourceLoaderContext | $context | ) |
Output a response to a load request, including the content-type header.
ResourceLoaderContext | $context | Context in which a response should be formed |
Definition at line 701 of file ResourceLoader.php.
References $context, $e, $modules, $name, $response, as, errors, ContextSource\getRequest(), ResourceFileCache\newFromContext(), and ResourceFileCache\useFileCache().
|
protected |
Send main response headers to the client.
Deals with Content-Type, CORS (for stylesheets), and caching.
ResourceLoaderContext | $context | |
string | $etag | ETag header value |
bool | $errors | Whether there are errors in the response |
Definition at line 821 of file ResourceLoader.php.
References $context, and wfTimestamp().
ResourceLoader::setLogger | ( | LoggerInterface | $logger | ) |
LoggerInterface | $logger |
Definition at line 282 of file ResourceLoader.php.
References $logger.
Referenced by EmptyResourceLoader\__construct().
ResourceLoader::setMessageBlobStore | ( | MessageBlobStore | $blobStore | ) |
MessageBlobStore | $blobStore |
Definition at line 306 of file ResourceLoader.php.
References $blobStore.
Referenced by __construct(), and EmptyResourceLoader\__construct().
|
staticprivate |
Remove empty values from the end of an array.
Values considered empty:
Array | $array |
Definition at line 1311 of file ResourceLoader.php.
|
protected |
Send out code for a response from file cache if possible.
ResourceFileCache | $fileCache | Cache object for this request URL |
ResourceLoaderContext | $context | Context in which to generate a response |
string | $etag | ETag header value |
Definition at line 910 of file ResourceLoader.php.
References $context, $e, $response, FileCacheBase\cacheTimestamp(), DB_REPLICA, FileCacheBase\fetchText(), FileCacheBase\isCacheGood(), wfGetDB(), and wfTimestamp().
|
protected |
Respond with HTTP 304 Not Modified if appropiate.
If there's an If-None-Match header, respond with a 304 appropriately and clear out the output buffer. If the client cache is too old then do nothing.
ResourceLoaderContext | $context | |
string | $etag | ETag header value |
Definition at line 877 of file ResourceLoader.php.
References $context, ContextSource\getRequest(), HttpStatus\header(), and wfResetOutputBuffers().
|
protected |
Definition at line 85 of file ResourceLoader.php.
Referenced by getMessageBlobStore(), and setMessageBlobStore().
|
protected |
Definition at line 61 of file ResourceLoader.php.
Referenced by __construct(), EmptyResourceLoader\__construct(), and getConfig().
|
staticprotected |
Definition at line 43 of file ResourceLoader.php.
|
protected |
Errors accumulated during current respond() call.
Definition at line 80 of file ResourceLoader.php.
Referenced by EmptyResourceLoader\getErrors().
|
staticprotected |
Definition at line 40 of file ResourceLoader.php.
|
private |
Definition at line 46 of file ResourceLoader.php.
|
private |
Definition at line 90 of file ResourceLoader.php.
Referenced by __construct(), EmptyResourceLoader\__construct(), getLogger(), and setLogger().
|
protected |
Associative array mapping module name to info associative array.
Definition at line 58 of file ResourceLoader.php.
|
protected |
Module name/ResourceLoaderModule object pairs.
Definition at line 52 of file ResourceLoader.php.
Referenced by preloadModuleInfo().
|
protected |
|
protected |
Associative array mapping framework ids to a list of names of test suite modules like [ 'qunit' => [ 'mediawiki.tests.qunit.suites', 'ext.foo.tests', ... ], ... ].
Definition at line 68 of file ResourceLoader.php.