summaryrefslogtreecommitdiff
path: root/modules/rdf
diff options
context:
space:
mode:
authorwebchick <webchick@24967.no-reply.drupal.org>2012-03-10 13:09:00 -0800
committerwebchick <webchick@24967.no-reply.drupal.org>2012-03-10 13:09:00 -0800
commitde30adeb093789e232cadbb23be000790402ee8d (patch)
treece6b2ed7d775da5bf91c954e4d7db0e2f5a70382 /modules/rdf
parent410ddeb83bd17a5d4de5ec86cae888ae32a7fc9e (diff)
downloadbrdo-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.module37
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]);
+ }
}
}
}