@ -158,7 +158,7 @@ class Fedora_Item {
// Fedora has some problems getting files from HTTPS connections sometimes, so if we are getting a file
// Fedora has some problems getting files from HTTPS connections sometimes, so if we are getting a file
// from the local drupal, we try to pass a HTTP url instead of a HTTPS one.
// from the local drupal, we try to pass a HTTP url instead of a HTTPS one.
if(stripos($datastream_url, 'https://') !== FALSE & & stripos($datastream_url, $base_url) !== FALSE) {
if (stripos($datastream_url, 'https://') !== FALSE & & stripos($datastream_url, $base_url) !== FALSE) {
$datastream_url = str_ireplace('https://', 'http://', $datastream_url);
$datastream_url = str_ireplace('https://', 'http://', $datastream_url);
}
}
@ -397,10 +397,10 @@ RDF;
$rels = $relsextxml->getElementsByTagNameNS($namespaceURI, $relationship);
$rels = $relsextxml->getElementsByTagNameNS($namespaceURI, $relationship);
if (!empty($rels)) {
if (!empty($rels)) {
// iterate backwards so if we delete something our pointer doesn't get out of sync
// iterate backwards so if we delete something our pointer doesn't get out of sync
for ($i = $rels->length; $i>0; $i--) {
for ($i = $rels->length; $i > 0; $i--) {
$rel = $rels->item($i-1);
$rel = $rels->item($i - 1);
// foreach ($rels as $rel) { // moving forward like this caused iteration errors when something was deleted
// foreach ($rels as $rel) { // moving forward like this caused iteration errors when something was deleted
if ( //If either no object is specified, or the object matches (in either the literal or URI case), remove this node from it's parent, and mark as changed.
if (//If either no object is specified, or the object matches (in either the literal or URI case), remove this node from it's parent, and mark as changed.
empty($object) ||
empty($object) ||
(($literal_value == RELS_TYPE_URI) & & $rel->getAttributeNS('http://www.w3.org/1999/02/22-rdf-syntax-ns#', 'resource') == $object) ||
(($literal_value == RELS_TYPE_URI) & & $rel->getAttributeNS('http://www.w3.org/1999/02/22-rdf-syntax-ns#', 'resource') == $object) ||
(($literal_value == RELS_TYPE_PLAIN_LITERAL) & & $rel->textContent == $object) ||
(($literal_value == RELS_TYPE_PLAIN_LITERAL) & & $rel->textContent == $object) ||
@ -857,8 +857,26 @@ RDF;
return $relationships;
return $relationships;
}
}
function get_rdf_relationships() {
/**
* Retrieves RELS-EXT values from item
*
* @param array $namespaces
* @return array
*/
function get_rdf_relationships($namespaces = null) {
if ($namespaces == NULL) {
$namespaces = array(
RELS_EXT_URI,
FEDORA_MODEL_URI,
ISLANDORA_PAGE_URI,
ISLANDORA_RELS_EXT_URI,
ISLANDORA_RELS_INT_URI,
);
}
if (!is_array($namespaces)) {
$namespaces = array($namespaces);
}
$relationships = array();
$relationships = array();
try {
try {
$relsext = $this->get_datastream_dissemination('RELS-EXT');
$relsext = $this->get_datastream_dissemination('RELS-EXT');
@ -872,13 +890,16 @@ RDF;
$relsextxml->loadXML($relsext);
$relsextxml->loadXML($relsext);
$relsextxml->normalizeDocument();
$relsextxml->normalizeDocument();
$allTags = array();
$allTags = array();
$allTags[] = $relsextxml->getElementsByTagNameNS(RELS_EXT_URI, '*');
foreach ($namespaces as $namespace) {
$allTags[] = $relsextxml->getElementsByTagNameNS(FEDORA_MODEL_URI, '*');
$allTags[] = $relsextxml->getElementsByTagNameNS($namespace, '*');
$allTags[] = $relsextxml->getElementsByTagNameNS(ISLANDORA_PAGE_URI, '*');
}
foreach ($allTags as $tags) {
foreach ($allTags as $tags) {
foreach ($tags as $child) {
foreach ($tags as $child) {
$value = preg_replace('/info:fedora\//','',$child->getAttributeNS('http://www.w3.org/1999/02/22-rdf-syntax-ns#', 'resource'));
$value = preg_replace('/info:fedora\//', '', $child->getAttributeNS('http://www.w3.org/1999/02/22-rdf-syntax-ns#', 'resource'));
if (!$value) {
$value = $child->textContent;
}
$relationships[$child->tagName][] = $value;
$relationships[$child->tagName][] = $value;
}
}
}
}
@ -1085,8 +1106,8 @@ RDF;
$params = array(
$params = array(
'pid' => $this->pid,
'pid' => $this->pid,
'ownerId' => (($ownerId !== NULL)? //Default to the current owner if none is provided.
'ownerId' => (($ownerId !== NULL) ? //Default to the current owner if none is provided.
$ownerId:
$ownerId :
$this->objectProfile->objOwnerId),
$this->objectProfile->objOwnerId),
'state' => $state,
'state' => $state,
'label' => $label,
'label' => $label,
@ -1139,7 +1160,7 @@ RDF;
);
);
$result = drupal_http_request($fixed_url);
$result = drupal_http_request($fixed_url);
if ((int)($result->code / 100) === 2) {
if ((int) ($result->code / 100) === 2) {
$content = $result->data;
$content = $result->data;
}
}
else {
else {
@ -1253,7 +1274,7 @@ RDF;
// Fedora has some problems getting files from HTTPS connections sometimes, so if we are getting a file
// Fedora has some problems getting files from HTTPS connections sometimes, so if we are getting a file
// from the local drupal, we try to pass a HTTP url instead of a HTTPS one.
// from the local drupal, we try to pass a HTTP url instead of a HTTPS one.
if(stripos($external_url, 'https://') !== FALSE & & stripos($external_url, $base_url) !== FALSE) {
if (stripos($external_url, 'https://') !== FALSE & & stripos($external_url, $base_url) !== FALSE) {
$external_url = str_ireplace('https://', 'http://', $external_url);
$external_url = str_ireplace('https://', 'http://', $external_url);
}
}
@ -1333,7 +1354,7 @@ RDF;
self::$connection_helper = new ConnectionHelper();
self::$connection_helper = new ConnectionHelper();
}
}
$url = (
$url = (
in_array($function, self::$SoapManagedFunctions)?
in_array($function, self::$SoapManagedFunctions) ?
variable_get('fedora_soap_manage_url', 'http://localhost:8080/fedora/wsdl?api=API-M') :
variable_get('fedora_soap_manage_url', 'http://localhost:8080/fedora/wsdl?api=API-M') :
variable_get('fedora_soap_url', 'http://localhost:8080/fedora/services/access?wsdl')
variable_get('fedora_soap_url', 'http://localhost:8080/fedora/services/access?wsdl')
);
);