function toggleNS($uri = '', $ns_array = array()) { // Convert NS to full URL if (isNS($uri)) { $ns = getNS($uri); foreach ($ns_array as $candidate_ns => $candidate_prefix) { if ($ns == $candidate_ns) { return str_replace($candidate_ns . ':', $candidate_prefix, $uri); } } // Convert full URL to NS } elseif (isURL($uri)) { $prefix = getPrefix($uri); foreach ($ns_array as $candidate_ns => $candidate_prefix) { if ($prefix == $candidate_prefix) { return str_replace($candidate_prefix, $candidate_ns . ':', $uri); } } } return $uri; }
/** * Save an array of fields and values for a single node by URN */ public function save_by_urn($urn, $array = array(), $g = 'urn:scalar') { $conf = array('ns' => $this->ns); $resource = ARC2::getResource($conf); $resource->setURI($urn); foreach ($array as $field => $valueArray) { if (!isNS($field) && !isURL($field)) { continue; } $field = toURL($field, $this->ns); if (!is_array($valueArray)) { $valueArray = array($valueArray); } $insert_values = array(); foreach ($valueArray as $value) { if (empty($value)) { continue; } if (is_string($value)) { if (substr($value, -1, 1) == '"') { $value .= ' '; } // ARC bug fix //$value = closeOpenTags($value); } if (is_array($value)) { if (empty($value['value'])) { continue; } $insert_values[] = $value; } else { $insert_values[] = array('value' => $value, 'type' => isURL($value) || isNS($value, $this->ns) ? 'uri' : 'literal'); } } if (!empty($insert_values)) { $resource->setProp($field, $insert_values); } } $this->store->insert($resource->index, $g); if ($errs = $this->store->getErrors()) { print_r($errs); } return true; }