/** * Update an existing metadata object definition file * * @action updateDefinitionFromFile * @param int $id * @param file $xsdFile XSD metadata definition * @return KalturaMetadataProfile * @throws MetadataErrors::METADATA_PROFILE_NOT_FOUND * @throws MetadataErrors::METADATA_FILE_NOT_FOUND * @throws MetadataErrors::METADATA_UNABLE_TO_TRANSFORM */ function updateDefinitionFromFileAction($id, $xsdFile) { $dbMetadataProfile = MetadataProfilePeer::retrieveByPK($id); if (!$dbMetadataProfile) { throw new KalturaAPIException(MetadataErrors::METADATA_PROFILE_NOT_FOUND, $id); } $filePath = null; if ($xsdFile) { $filePath = $xsdFile['tmp_name']; if (!file_exists($filePath)) { throw new KalturaAPIException(MetadataErrors::METADATA_FILE_NOT_FOUND, $xsdFile['name']); } } $newXsd = file_get_contents($filePath); if (!$newXsd) { throw new KalturaAPIException(MetadataErrors::METADATA_FILE_NOT_FOUND, $xsdFile['name']); } if (!kMetadataProfileManager::validateXsdData($newXsd, $errorMessage)) { throw new KalturaAPIException(MetadataErrors::INVALID_METADATA_PROFILE_SCHEMA, $errorMessage); } $key = $dbMetadataProfile->getSyncKey(MetadataProfile::FILE_SYNC_METADATA_DEFINITION); $oldXsd = kFileSyncUtils::file_get_contents($key); if (!$oldXsd) { throw new KalturaAPIException(MetadataErrors::METADATA_PROFILE_FILE_NOT_FOUND, $id); } $dbMetadataProfile->setXsdData($newXsd); try { kMetadataManager::diffMetadataProfile($dbMetadataProfile, $oldXsd, $newXsd); } catch (kXsdException $e) { throw new KalturaAPIException(MetadataErrors::METADATA_UNABLE_TO_TRANSFORM, $e->getMessage()); } $dbMetadataProfile->save(); $metadataProfile = new KalturaMetadataProfile(); $metadataProfile->fromObject($dbMetadataProfile, $this->getResponseProfile()); return $metadataProfile; }
/** * Update an existing metadata object definition file * * @action updateDefinitionFromFile * @param int $id * @param file $xsdFile XSD metadata definition * @return KalturaMetadataProfile * @throws KalturaErrors::INVALID_OBJECT_ID * @throws MetadataErrors::METADATA_FILE_NOT_FOUND * @throws MetadataErrors::METADATA_UNABLE_TO_TRANSFORM */ function updateDefinitionFromFileAction($id, $xsdFile) { $dbMetadataProfile = MetadataProfilePeer::retrieveByPK($id); if (!$dbMetadataProfile) { throw new KalturaAPIException(KalturaErrors::INVALID_OBJECT_ID, $id); } $filePath = null; if ($xsdFile) { $filePath = $xsdFile['tmp_name']; if (!file_exists($filePath)) { throw new KalturaAPIException(MetadataErrors::METADATA_FILE_NOT_FOUND, $xsdFile['name']); } } $key = $dbMetadataProfile->getSyncKey(MetadataProfile::FILE_SYNC_METADATA_DEFINITION); $oldXsd = kFileSyncUtils::getLocalFilePathForKey($key); $oldVersion = $dbMetadataProfile->getVersion(); $dbMetadataProfile->incrementVersion(); try { kMetadataManager::diffMetadataProfile($dbMetadataProfile, $oldVersion, $oldXsd, $dbMetadataProfile->getVersion(), $filePath); } catch (kXsdException $e) { throw new KalturaAPIException(MetadataErrors::METADATA_UNABLE_TO_TRANSFORM); } $dbMetadataProfile->save(); $key = $dbMetadataProfile->getSyncKey(MetadataProfile::FILE_SYNC_METADATA_DEFINITION); kFileSyncUtils::moveFromFile($filePath, $key); kMetadataManager::parseProfileSearchFields($dbMetadataProfile); $metadataProfile = new KalturaMetadataProfile(); $metadataProfile->fromObject($dbMetadataProfile); return $metadataProfile; }