| 7 common.inc | drupal_get_library($module, $name = NULL) |
| 8 common.inc | drupal_get_library($module, $name = NULL) |
Retrieves information for a JavaScript/CSS library.
Library information is statically cached. Libraries are keyed by module for several reasons:
- Libraries are not unique. Multiple modules might ship with the same library in a different version or variant. This registry cannot (and does not attempt to) prevent library conflicts.
- Modules implementing and thereby depending on a library that is registered by another module can only rely on that module's library.
- Two (or more) modules can still register the same library and use it without conflicts in case the libraries are loaded on certain pages only.
@todo The purpose of drupal_get_*() is completely different to other page requisite API functions; find and use a different name.
Parameters
$module: The name of a module that registered a library.
$name: (optional) The name of a registered library to retrieve. By default, all libraries registered by $module are returned.
Return value
The definition of the requested library, if $name was passed and it exists, or FALSE if it does not exist. If no $name was passed, an associative array of libraries registered by $module is returned (which may be empty).
See also
5 calls to drupal_get_library()
1 string reference to 'drupal_get_library'
File
- includes/
common.inc, line 4634 - Common functions that many Drupal modules will need to reference.
Code
function drupal_get_library($module, $name = NULL) {
$libraries = &drupal_static(__FUNCTION__, array());
if (!isset($libraries[$module])) {
// Retrieve all libraries associated with the module.
$module_libraries = module_invoke($module, 'library');
if (empty($module_libraries)) {
$module_libraries = array();
}
// Allow modules to alter the module's registered libraries.
drupal_alter('library', $module_libraries, $module);
foreach ($module_libraries as $key => $data) {
if (is_array($data)) {
// Add default elements to allow for easier processing.
$module_libraries[$key] += array(
'dependencies' => array(),
'js' => array(),
'css' => array(),
);
foreach ($module_libraries[$key]['js'] as $file => $options) {
$module_libraries[$key]['js'][$file]['version'] = $module_libraries[$key]['version'];
}
}
}
$libraries[$module] = $module_libraries;
}
if (isset($name)) {
if (!isset($libraries[$module][$name])) {
$libraries[$module][$name] = FALSE;
}
return $libraries[$module][$name];
}
return $libraries[$module];
}
Login or register to post comments
Comments
Name of the module.
hi,
Is it possible to make the name of the module as optional so that it will display all the available libraries acrooss my drupal installation? E.g. I am using the jquery plugin module and also has my own custom module to do this thing. Right now I have to remember all the modules name and pass it to dsm to know which libraries are available to me.
Thanks,
Perry.
Perry, that’s simple enough
Perry, that’s simple enough to do.
<?php
/**
* Returns libraries grouped by the modules they are registered under.
*
* @see drupal_get_library()
*/
function PREFIX_get_all_libraries() {
$libraries = array();
foreach (module_list() as $module) {
foreach (drupal_get_library($module) as $library_key => $library_data) {
$libraries[$module][$library_key] = $library_data;
}
}
return $libraries;
}
?>