/** * Create and set-up a MetadataValue object. */ function &newMetadataValue($itemId, $fieldId, $type, $value) { $mdv =& $this->createFromType($type); $mdv->setFieldId($fieldId); $mdv->setItemId($itemId); $mdv->setType($type); if ($type == PLUGIN_DOCMAN_METADATA_TYPE_LIST) { $ea = array(); if (is_array($value)) { foreach ($value as $val) { $e = new Docman_MetadataListOfValuesElement(); $e->setId($val); $ea[] = $e; } } else { $e = new Docman_MetadataListOfValuesElement(); $e->setId($value); $ea[] = $e; } $mdv->setValue($ea); } else { $mdv->setValue($value); } return $mdv; }
/** * Return static list of status (hardcoded metadata with hardcoded values) */ function &getStatusList($status = null) { $ea = array(); $e = new Docman_MetadataListOfValuesElement(); $e->setId(PLUGIN_DOCMAN_ITEM_STATUS_NONE); $e->setName($GLOBALS['Language']->getText('plugin_docman', 'md_love_status_none_name')); //$e->setDescription($GLOBALS['Language']->getText('plugin_docman','md_love_status_none_desc')); $e->setRank(PLUGIN_DOCMAN_ITEM_STATUS_NONE); $e->setStatus('P'); $ea[PLUGIN_DOCMAN_ITEM_STATUS_NONE] =& $e; unset($e); $e = new Docman_MetadataListOfValuesElement(); $e->setId(PLUGIN_DOCMAN_ITEM_STATUS_DRAFT); $e->setName($GLOBALS['Language']->getText('plugin_docman', 'md_love_status_draft_name')); //$e->setDescription('md_love_status_draft_desc'); $e->setRank(PLUGIN_DOCMAN_ITEM_STATUS_DRAFT); $e->setStatus('P'); $ea[PLUGIN_DOCMAN_ITEM_STATUS_DRAFT] =& $e; unset($e); $e = new Docman_MetadataListOfValuesElement(); $e->setId(PLUGIN_DOCMAN_ITEM_STATUS_APPROVED); $e->setName($GLOBALS['Language']->getText('plugin_docman', 'md_love_status_approved_name')); //$e->setDescription('md_love_status_approved_desc'); $e->setRank(PLUGIN_DOCMAN_ITEM_STATUS_APPROVED); $e->setStatus('P'); $ea[PLUGIN_DOCMAN_ITEM_STATUS_APPROVED] =& $e; unset($e); $e = new Docman_MetadataListOfValuesElement(); $e->setId(PLUGIN_DOCMAN_ITEM_STATUS_REJECTED); $e->setName($GLOBALS['Language']->getText('plugin_docman', 'md_love_status_rejected_name')); //$e->setDescription('md_love_status_rejected_desc'); $e->setRank(PLUGIN_DOCMAN_ITEM_STATUS_REJECTED); $e->setStatus('P'); $ea[PLUGIN_DOCMAN_ITEM_STATUS_REJECTED] =& $e; unset($e); if ($status === null) { return $ea; } else { return $ea[$status]; } }
function admin_delete_love() { $request =& HTTPRequest::instance(); $_loveId = (int) $request->get('loveid'); $_mdLabel = $request->get('md'); $_gid = (int) $request->get('group_id'); $mdFactory = new Docman_MetadataFactory($_gid); $md =& $mdFactory->getFromLabel($_mdLabel); if ($md !== null && $md->getType() == PLUGIN_DOCMAN_METADATA_TYPE_LIST && $md->getLabel() != 'status') { $love = new Docman_MetadataListOfValuesElement($md->getId()); $love->setId($_loveId); // Delete value $loveFactory = new Docman_MetadataListOfValuesElementFactory($md->getId()); $deleted = $loveFactory->delete($love); if ($deleted) { $this->_controler->feedback->log('info', $GLOBALS['Language']->getText('plugin_docman', 'admin_metadata_delete_element')); $this->_controler->feedback->log('info', $GLOBALS['Language']->getText('plugin_docman', 'admin_metadata_reset_delete_element')); } else { $this->_controler->feedback->log('error', $GLOBALS['Language']->getText('plugin_docman', 'admin_metadata_error_delete_element')); } } else { // Sth really strange is happening... user try to delete a value // that do not belong to a metadata with a List type !? // If this happen, shutdown the server, format the hard drive and // leave computer science to keep goat on the Larzac. } }
function _cloneMetadataValues($item, $newItemId, $metadataMapping) { // List for current item all its metadata and // * change the itemId // * change the fieldId (use mapping between template metadata and // project metadata) // * for list of values change the values (use mapping as behind). $newMdvFactory =& $this->_getMetadataValueFactory($this->dstGroupId); $oldMdFactory =& $this->_getMetadataFactory($item->getGroupId()); $oldMdFactory->appendItemMetadataList($item); $oldMdIter =& $item->getMetadataIterator(); $oldMdIter->rewind(); while ($oldMdIter->valid()) { $oldMd = $oldMdIter->current(); if ($oldMdFactory->isRealMetadata($oldMd->getLabel())) { $oldValue = $oldMdFactory->getMetadataValue($item, $oldMd); if (isset($metadataMapping['md'][$oldMd->getId()])) { $newMdv = $newMdvFactory->createFromType($oldMd->getType()); $newMdv->setItemId($newItemId); $newMdv->setFieldId($metadataMapping['md'][$oldMd->getId()]); if ($oldMd->getType() == PLUGIN_DOCMAN_METADATA_TYPE_LIST) { $ea = array(); $oldValue->rewind(); while ($oldValue->valid()) { $e = $oldValue->current(); // no maping for value `100` (shared by all lists). if ($e->getId() != 100 && isset($metadataMapping['love'][$e->getId()])) { $newE = clone $e; $newE->setId($metadataMapping['love'][$e->getId()]); $ea[] = $newE; } $oldValue->next(); } // No match found: set None value. if (count($ea) == 0) { $e = new Docman_MetadataListOfValuesElement(); $e->setId(PLUGIN_DOCMAN_ITEM_STATUS_NONE); $ea[] = $e; } $newMdv->setValue($ea); } else { $newMdv->setValue($oldValue); } $newMdvFactory->create($newMdv); } } $oldMdIter->next(); } }