function patterns_tagmodules_get_index in Patterns 7
Same name and namespace in other branches
- 7.2 includes/tagmodules.inc \patterns_tagmodules_get_index()
Builds an associative array of tags and modules (components).
Invokes hook_patterns on all modules, and returns an index of available tags and information associated with them (e.g. from which module they are handled).
The index is cached, but reloading can be forced.
Parameters
array $data (optional) An associative array of data, that the: components can use to build dynamic forms names. Defaults NULL. The array usually corresponds to an action in a pattern file, e.g.
array('tag' => 'node', 'type' => 'article', 'title' => 'Test Article', 'body', => 'lorem ipsum ...', );
bool $reset If TRUE, forces rebuilding the index from all: the components. Defaults FALSE
bool $reload_components (optional) If TRUE, forces reloading: the Patterns components from file system
Return value
array $tagmodules Index of tag and modules
See also
patterns_moduletags_get_index()
7 calls to patterns_tagmodules_get_index()
- PatternsIndexesTestCase::testTagmodules in tests/
indexes/ indexes.test - patterns_export_page1 in patterns_export/
patterns_export.module - patterns_implement_action in includes/
core/ common.inc - Setup and run an action.
- patterns_invoke in ./
patterns.module - Execute hook_patterns with the given operation and return the results.
- patterns_prepare_action in includes/
core/ common.inc - Preparing and validating the action tags as they are written in the pattern file. Concretely, it invokes operations 'prepare', and 'validate' on the pattern component.
File
- includes/
tagmodules.inc, line 40 - Functions related to build and retrieve information from the *tagmodules* and *moduletags* indexes.
Code
function patterns_tagmodules_get_index($data = NULL, $reset = FALSE, $reload_components = FALSE) {
$tagmodules =& drupal_static(__FUNCTION__);
if ($reload_components) {
patterns_io_load_components();
}
// Index not yet built or forced rebuilt
if ($reset || empty($tagmodules)) {
$tagmodules = array();
// Get a list of tags and their modules.
foreach (module_implements('patterns') as $module) {
_patterns_tagmodules_add_module($module, $tagmodules, $data);
}
}
elseif (!empty($data)) {
$module = patterns_tagmodules_find_module($data, $tagmodules);
_patterns_tagmodules_add_module($module, $tagmodules, $data);
}
// All values from all tags
return $tagmodules;
}