diff options
author | webchick <webchick@24967.no-reply.drupal.org> | 2012-03-10 13:09:00 -0800 |
---|---|---|
committer | webchick <webchick@24967.no-reply.drupal.org> | 2012-03-10 13:09:00 -0800 |
commit | de30adeb093789e232cadbb23be000790402ee8d (patch) | |
tree | ce6b2ed7d775da5bf91c954e4d7db0e2f5a70382 /modules/rdf | |
parent | 410ddeb83bd17a5d4de5ec86cae888ae32a7fc9e (diff) | |
download | brdo-de30adeb093789e232cadbb23be000790402ee8d.tar.gz brdo-de30adeb093789e232cadbb23be000790402ee8d.tar.bz2 |
Issue #1089040 by Remon, mlncn: Added Cache rdf_get_namespaces() using drupal_static().
Diffstat (limited to 'modules/rdf')
-rw-r--r-- | modules/rdf/rdf.module | 37 |
1 files changed, 20 insertions, 17 deletions
diff --git a/modules/rdf/rdf.module b/modules/rdf/rdf.module index 70b684c68..214b87b4b 100644 --- a/modules/rdf/rdf.module +++ b/modules/rdf/rdf.module @@ -95,23 +95,26 @@ function rdf_rdf_namespaces() { * hook_rdf_namespaces(). */ function rdf_get_namespaces() { - $rdf_namespaces = module_invoke_all('rdf_namespaces'); - // module_invoke_all() uses array_merge_recursive() which might return nested - // arrays if several modules redefine the same prefix multiple times. We need - // to ensure the array of namespaces is flat and only contains strings as - // URIs. - foreach ($rdf_namespaces as $prefix => $uri) { - if (is_array($uri)) { - if (count(array_unique($uri)) == 1) { - // All namespaces declared for this prefix are the same, merge them all - // into a single namespace. - $rdf_namespaces[$prefix] = $uri[0]; - } - else { - // There are conflicting namespaces for this prefix, do not include - // duplicates in order to avoid asserting any inaccurate RDF - // statements. - unset($rdf_namespaces[$prefix]); + $rdf_namespaces = &drupal_static(__FUNCTION__); + if (!isset($rdf_namespaces)) { + $rdf_namespaces = module_invoke_all('rdf_namespaces'); + // module_invoke_all() uses array_merge_recursive() which might return + // nested arrays if several modules redefine the same prefix multiple + // times. We need to ensure the array of namespaces is flat and only + // contains strings as URIs. + foreach ($rdf_namespaces as $prefix => $uri) { + if (is_array($uri)) { + if (count(array_unique($uri)) == 1) { + // All namespaces declared for this prefix are the same, merge them + // all into a single namespace. + $rdf_namespaces[$prefix] = $uri[0]; + } + else { + // There are conflicting namespaces for this prefix, do not include + // duplicates in order to avoid asserting any inaccurate RDF + // statements. + unset($rdf_namespaces[$prefix]); + } } } } |