Skip to content
Snippets Groups Projects
Commit 8d153441 authored by Angie Byron's avatar Angie Byron
Browse files

Issue #1089040 by Remon, mlncn: Added Cache rdf_get_namespaces() using drupal_static().

parent 27d3f295
No related branches found
No related tags found
No related merge requests found
...@@ -95,23 +95,26 @@ function rdf_rdf_namespaces() { ...@@ -95,23 +95,26 @@ function rdf_rdf_namespaces() {
* hook_rdf_namespaces(). * hook_rdf_namespaces().
*/ */
function rdf_get_namespaces() { function rdf_get_namespaces() {
$rdf_namespaces = module_invoke_all('rdf_namespaces'); $rdf_namespaces = &drupal_static(__FUNCTION__);
// module_invoke_all() uses array_merge_recursive() which might return nested if (!isset($rdf_namespaces)) {
// arrays if several modules redefine the same prefix multiple times. We need $rdf_namespaces = module_invoke_all('rdf_namespaces');
// to ensure the array of namespaces is flat and only contains strings as // module_invoke_all() uses array_merge_recursive() which might return
// URIs. // nested arrays if several modules redefine the same prefix multiple
foreach ($rdf_namespaces as $prefix => $uri) { // times. We need to ensure the array of namespaces is flat and only
if (is_array($uri)) { // contains strings as URIs.
if (count(array_unique($uri)) == 1) { foreach ($rdf_namespaces as $prefix => $uri) {
// All namespaces declared for this prefix are the same, merge them all if (is_array($uri)) {
// into a single namespace. if (count(array_unique($uri)) == 1) {
$rdf_namespaces[$prefix] = $uri[0]; // All namespaces declared for this prefix are the same, merge them
} // all into a single namespace.
else { $rdf_namespaces[$prefix] = $uri[0];
// There are conflicting namespaces for this prefix, do not include }
// duplicates in order to avoid asserting any inaccurate RDF else {
// statements. // There are conflicting namespaces for this prefix, do not include
unset($rdf_namespaces[$prefix]); // duplicates in order to avoid asserting any inaccurate RDF
// statements.
unset($rdf_namespaces[$prefix]);
}
} }
} }
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment