Commit 8d153441 authored by webchick's avatar webchick

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

parent 27d3f295
......@@ -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]);
}
}
}
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment