diff --git a/inc/parserutils.php b/inc/parserutils.php index 20f992ba29d69d207e330d490b483c8cdf686721..54ccb05f30c77b5d1954b5f2ebb21226ec493f13 100644 --- a/inc/parserutils.php +++ b/inc/parserutils.php @@ -386,9 +386,18 @@ function p_set_metadata($id, $data, $render=false, $persistent=true){ if ($key == 'relation'){ foreach ($value as $subkey => $subvalue){ - $meta['current'][$key][$subkey] = !empty($meta['current'][$key][$subkey]) ? array_merge($meta['current'][$key][$subkey], $subvalue) : $subvalue; - if ($persistent) - $meta['persistent'][$key][$subkey] = !empty($meta['persistent'][$key][$subkey]) ? array_merge($meta['persistent'][$key][$subkey], $subvalue) : $subvalue; + if(isset($meta['current'][$key][$subkey]) && is_array($meta['current'][$key][$subkey])) { + $meta['current'][$key][$subkey] = array_merge($meta['current'][$key][$subkey], (array)$subvalue); + } else { + $meta['current'][$key][$subkey] = $subvalue; + } + if($persistent) { + if(isset($meta['persistent'][$key][$subkey]) && is_array($meta['persistent'][$key][$subkey])) { + $meta['persistent'][$key][$subkey] = array_merge($meta['persistent'][$key][$subkey], (array)$subvalue); + } else { + $meta['persistent'][$key][$subkey] = $subvalue; + } + } } // be careful with some senisitive arrays of $meta @@ -396,10 +405,10 @@ function p_set_metadata($id, $data, $render=false, $persistent=true){ // these keys, must have subkeys - a legitimate value must be an array if (is_array($value)) { - $meta['current'][$key] = !empty($meta['current'][$key]) ? array_merge($meta['current'][$key],$value) : $value; + $meta['current'][$key] = !empty($meta['current'][$key]) ? array_merge((array)$meta['current'][$key],$value) : $value; if ($persistent) { - $meta['persistent'][$key] = !empty($meta['persistent'][$key]) ? array_merge($meta['persistent'][$key],$value) : $value; + $meta['persistent'][$key] = !empty($meta['persistent'][$key]) ? array_merge((array)$meta['persistent'][$key],$value) : $value; } }