function setMetadataValuesFromUserInput(&$item, $itemArray, $metadataArray) { $mdvFactory = new Docman_MetadataValueFactory($this->groupId); $mdFactory = new Docman_MetadataFactory($this->groupId); $mdIter =& $item->getMetadataIterator(); $mdIter->rewind(); while ($mdIter->valid()) { $md =& $mdIter->current(); $value = $this->getValueInArrays($md->getLabel(), $itemArray, $metadataArray); if ($value !== null) { $mdv = $mdvFactory->newMetadataValue($item->getId(), $md->getId(), $md->getType(), $value); $val = $mdv->getValue(); $mdvFactory->validateInput($md, $val); $md->setValue($val); // Take care to update hardcoded values too. if ($mdFactory->isHardCodedMetadata($md->getLabel())) { $item->updateHardCodedMetadata($md); } } $mdIter->next(); } }