/** * helper function to create attachments between entries. * The 2010-07 version of leap2a says that linked *entries* should use related relation, * and directly linked files (attachments) should use enclosures. * However, for BC we should support both. * This function supports both and additionally creates the File artefacts for attachments, then links them. * * @param SimpleXMLElement $entry the entry we want to attach things *to* * @param SimpleXMLElement $link the link to inspect * @param ArtefactType $artefact the artefact that has been created from the entry. * * @return void|int the id of a *newly created* attached artefact */ public function create_attachment(SimpleXMLElement $entry, SimpleXMLElement $link, ArtefactType &$artefact) { if (($this->curie_equals($link['rel'], '', 'enclosure') || $this->curie_equals($link['rel'], '', 'related')) && isset($link['href'])) { $this->trace("Attaching file {$link['href']} to comment {$entry->id}", PluginImportLeap::LOG_LEVEL_VERBOSE); $artefactids = $this->get_artefactids_imported_by_entryid((string) $link['href']); if (isset($artefactids[0])) { $artefact->attach($artefactids[0]); } else { // it may be just an attached file, with no Leap2A element in its own right .... if ($id = $this->create_linked_file($entry, $link)) { $artefact->attach($id); return $id; } } } }