예제 #1
0
 function saveMetadata(&$oDocument, $aMetadata, $aOptions = null)
 {
     $table = 'document_fields_link';
     $bNoValidate = KTUtil::arrayGet($aOptions, 'novalidate', false);
     if ($bNoValidate !== true) {
         $res = KTDocumentUtil::validateMetadata($oDocument, $aMetadata);
         if (PEAR::isError($res)) {
             return $res;
         }
         $aMetadata = empty($res) ? array() : $res;
     }
     $iMetadataVersionId = $oDocument->getMetadataVersionId();
     $res = DBUtil::runQuery(array("DELETE FROM {$table} WHERE metadata_version_id = ?", array($iMetadataVersionId)));
     if (PEAR::isError($res)) {
         return $res;
     }
     // XXX: Metadata refactor
     foreach ($aMetadata as $aInfo) {
         list($oMetadata, $sValue) = $aInfo;
         if (is_null($oMetadata)) {
             continue;
         }
         $res = DBUtil::autoInsert($table, array('metadata_version_id' => $iMetadataVersionId, 'document_field_id' => $oMetadata->getID(), 'value' => $sValue));
         if (PEAR::isError($res)) {
             return $res;
         }
     }
     KTDocumentUtil::setComplete($oDocument, 'metadata');
     DocumentFieldLink::clearAllCaches();
     return true;
 }