From 8d1534410d8599dec47cac475b07f7c804f4568a Mon Sep 17 00:00:00 2001
From: webchick <webchick@24967.no-reply.drupal.org>
Date: Sat, 10 Mar 2012 13:08:26 -0800
Subject: [PATCH] Issue #1089040 by Remon, mlncn: Added Cache
 rdf_get_namespaces() using drupal_static().

---
 core/modules/rdf/rdf.module | 37 ++++++++++++++++++++-----------------
 1 file changed, 20 insertions(+), 17 deletions(-)

diff --git a/core/modules/rdf/rdf.module b/core/modules/rdf/rdf.module
index 1e1485e40da1..be8f24a0655d 100644
--- a/core/modules/rdf/rdf.module
+++ b/core/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]);
+        }
       }
     }
   }
-- 
GitLab