/** * Create a new metadata based on an existing one in another project. * * @see cloneMetadata * * @param Integer $dstGroupId Project where the md is created * @param Docman_Metadata $md Metadata to clone * @param Array $metadataMapping Map between src and dst metadata id */ function _cloneOneMetadata($dstGroupId, $md, &$metadataMapping) { $dstMdFactory = $this->_getMetadataFactory($dstGroupId); $dstMdIter = $dstMdFactory->findByName($md->getName()); if ($dstMdIter->count() == 0) { $newMd = clone $md; $newMdId = $dstMdFactory->create($newMd); $newMd->setId($newMdId); $metadataMapping['md'][$md->getId()] = $newMdId; // If current metadata is a list of values, clone values if ($newMdId > 0 && $md->getType() == PLUGIN_DOCMAN_METADATA_TYPE_LIST) { $srcLoveFactory = $this->_getListOfValuesElementFactory($md->getId()); $values = $srcLoveFactory->cloneValues($md, $newMd); foreach ($values as $srcId => $dstId) { $metadataMapping['love'][$srcId] = $dstId; } } } }
/** * Create a new metadata based on an existing one in another project. * * @see cloneMetadata * * @param Integer $dstGroupId Project where the md is created * @param Docman_Metadata $md Metadata to clone * @param Array $metadataMapping Map between src and dst metadata id */ function _cloneOneMetadata($dstGroupId, $md, &$metadataMapping) { $dstMdFactory = $this->_getMetadataFactory($dstGroupId); $dstMdIter = $dstMdFactory->findByName($md->getName()); if ($dstMdIter->count() == 0) { $newMd = clone $md; $newMdId = $dstMdFactory->create($newMd); $newMd->setId($newMdId); $metadataMapping['md'][$md->getId()] = $newMdId; // If current metadata is a list of values, clone values if ($newMdId > 0 && $md->getType() == PLUGIN_DOCMAN_METADATA_TYPE_LIST) { $srcLoveFactory = $this->_getListOfValuesElementFactory($md->getId()); $values = $srcLoveFactory->cloneValues($md, $newMd); foreach ($values as $srcId => $dstId) { $metadataMapping['love'][$srcId] = $dstId; } } $event_manager = $this->_getEventManager(); $event_manager->processEvent('plugin_docman_after_metadata_clone', array('srcProjectId' => $this->groupId, 'targetProjectId' => $dstGroupId, 'md' => $md)); } }
protected function getNodeForMetadata(Docman_Metadata $metadata) { $metaDataFactory = new Docman_MetadataFactory($metadata->getGroupId()); if ($metaDataFactory->isRealMetadata($metadata->getLabel())) { $node = $this->doc->createElement('property'); $node->setAttribute('title', $metadata->getName()); if ($metadata->getValue() instanceof ArrayIterator) { $this->getNodeForMetadataValues($metadata->getValue(), $node); } else { $value = $metadata->getValue(); if ($value != '' && $metadata->getType() == PLUGIN_DOCMAN_METADATA_TYPE_DATE) { $value = date('c', $value); } $node->appendChild($this->doc->createTextNode($value)); } return $node; } }