コード例 #1
0
 /**
  * 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;
             }
         }
     }
 }
コード例 #2
0
 /**
  * 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));
     }
 }
コード例 #3
0
 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;
     }
 }