Example #1
0
 /**
  * @param string $baseClass
  * @param string $enumValue
  * @param array $constructorArgs
  * @return object
  */
 public static function loadObject($baseClass, $enumValue, array $constructorArgs = null)
 {
     if ($baseClass == 'ISyncableFile' && isset($constructorArgs['objectId'])) {
         $objectId = $constructorArgs['objectId'];
         switch ($enumValue) {
             case FileSyncObjectType::METADATA:
                 MetadataPeer::setUseCriteriaFilter(false);
                 $object = MetadataPeer::retrieveByPK($objectId);
                 MetadataPeer::setUseCriteriaFilter(true);
                 return $object;
             case FileSyncObjectType::METADATA_PROFILE:
                 MetadataProfilePeer::setUseCriteriaFilter(false);
                 $object = MetadataProfilePeer::retrieveByPK($objectId);
                 MetadataProfilePeer::setUseCriteriaFilter(true);
                 return $object;
         }
     }
     if ($baseClass == 'kJobData') {
         switch ($enumValue) {
             case KalturaBatchJobType::METADATA_IMPORT:
                 return new kImportJobData();
             case KalturaBatchJobType::METADATA_TRANSFORM:
                 return new kTransformMetadataJobData();
         }
     }
     if ($baseClass == 'KalturaJobData') {
         switch ($enumValue) {
             case KalturaBatchJobType::METADATA_IMPORT:
                 return new KalturaImportJobData();
             case KalturaBatchJobType::METADATA_TRANSFORM:
                 return new KalturaTransformMetadataJobData();
         }
     }
     return null;
 }
Example #2
0
 public function updateFromXSLImpl($id, $xslData)
 {
     $dbMetadataObject = MetadataPeer::retrieveByPK($id);
     if (!$dbMetadataObject) {
         throw new KalturaAPIException(MetadataErrors::METADATA_NOT_FOUND);
     }
     $dbMetadataObjectFileSyncKey = $dbMetadataObject->getSyncKey(Metadata::FILE_SYNC_METADATA_DATA);
     $xsltErrors = array();
     $transformMetadataObjectData = kXml::transformXmlUsingXslt(kFileSyncUtils::file_get_contents($dbMetadataObjectFileSyncKey), $xslData, array(), $xsltErrors);
     if (count($xsltErrors)) {
         throw new KalturaAPIException(MetadataErrors::XSLT_VALIDATION_ERROR, implode(',', $xsltErrors));
     }
     return $this->updateImpl($id, $transformMetadataObjectData);
 }
 public static function parseXml($objectType, SimpleXMLElement $scene, $partnerId, CuePoint $cuePoint)
 {
     $metadataElements = $scene->xpath('scene-customData');
     if (!count($metadataElements)) {
         return $cuePoint;
     }
     foreach ($metadataElements as $metadataElement) {
         $metadata = null;
         $metadataProfile = null;
         if (isset($metadataElement['metadataId'])) {
             $metadata = MetadataPeer::retrieveByPK($metadataElement['metadataId']);
         }
         if ($metadata) {
             $metadataProfile = $metadata->getMetadataProfile();
         } else {
             if (isset($metadataElement['metadataProfileId'])) {
                 $metadataProfile = MetadataProfilePeer::retrieveByPK($metadataElement['metadataProfileId']);
             } elseif (isset($metadataElement['metadataProfile'])) {
                 $metadataProfile = MetadataProfilePeer::retrieveBySystemName($metadataElement['metadataProfile']);
             }
             if ($metadataProfile) {
                 $metadata = MetadataPeer::retrieveByObject($metadataProfile->getId(), $objectType, $cuePoint->getId());
             }
         }
         if (!$metadataProfile) {
             continue;
         }
         if (!$metadata) {
             $metadata = new Metadata();
             $metadata->setPartnerId($partnerId);
             $metadata->setMetadataProfileId($metadataProfile->getId());
             $metadata->setMetadataProfileVersion($metadataProfile->getVersion());
             $metadata->setObjectType($objectType);
             $metadata->setObjectId($cuePoint->getId());
             $metadata->setStatus(KalturaMetadataStatus::VALID);
             foreach ($metadataElement->children() as $metadataContent) {
                 $xmlData = $metadataContent->asXML();
                 $errorMessage = '';
                 if (kMetadataManager::validateMetadata($metadataProfile->getId(), $xmlData, $errorMessage)) {
                     $metadata->save();
                     $key = $metadata->getSyncKey(Metadata::FILE_SYNC_METADATA_DATA);
                     kFileSyncUtils::file_put_contents($key, $xmlData);
                     kEventsManager::raiseEvent(new kObjectDataChangedEvent($metadata));
                 }
                 break;
             }
         }
     }
     return $cuePoint;
 }
 /**
  * Serves metadata XML file
  *  
  * @action serve
  * @param int $id
  * @return file
  *  
  * @throws KalturaErrors::INVALID_OBJECT_ID
  * @throws KalturaErrors::FILE_DOESNT_EXIST
  */
 public function serveAction($id)
 {
     $dbMetadata = MetadataPeer::retrieveByPK($id);
     if (!$dbMetadata) {
         throw new KalturaAPIException(KalturaErrors::INVALID_OBJECT_ID, $id);
     }
     $fileName = $dbMetadata->getObjectId() . '.xml';
     $fileSubType = Metadata::FILE_SYNC_METADATA_DATA;
     return $this->serveFile($dbMetadata, $fileSubType, $fileName);
 }
Example #5
0
 /**
  * @param BaseObject $object
  */
 protected function setRelatedObject(AuditTrail $auditTrail, BaseObject $object)
 {
     if (class_exists('Metadata') && $object instanceof Metadata) {
         $auditTrail->setRelatedObjectType(AuditTrailObjectType::METADATA_PROFILE);
         $auditTrail->setRelatedObjectId($object->getMetadataProfileId());
     }
     if ($auditTrail->getAction() == AuditTrail::AUDIT_TRAIL_ACTION_FILE_SYNC_CREATED) {
         $peer = $object->getPeer();
         $objectType = $peer->getOMClass(false, null);
         $auditTrail->setRelatedObjectType($objectType);
         $auditTrail->setRelatedObjectId($object->getId());
     }
     if ($object instanceof FileSync) {
         switch ($object->getObjectType()) {
             case FileSyncObjectType::ENTRY:
                 $auditTrail->setRelatedObjectType(AuditTrailObjectType::ENTRY);
                 $auditTrail->setRelatedObjectId($object->getObjectId());
                 $auditTrail->setEntryId($object->getObjectId());
                 break;
             case FileSyncObjectType::UICONF:
                 $auditTrail->setRelatedObjectType(AuditTrailObjectType::UI_CONF);
                 $auditTrail->setRelatedObjectId($object->getObjectId());
                 break;
             case FileSyncObjectType::BATCHJOB:
                 $auditTrail->setRelatedObjectType(AuditTrailObjectType::BATCH_JOB);
                 $auditTrail->setRelatedObjectId($object->getObjectId());
                 $batchJob = BatchJobPeer::retrieveByPK($object->getObjectId());
                 if ($batchJob) {
                     $auditTrail->setEntryId($batchJob->getEntryId());
                 }
                 break;
             case FileSyncObjectType::FLAVOR_ASSET:
                 $auditTrail->setRelatedObjectType(AuditTrailObjectType::FLAVOR_ASSET);
                 $auditTrail->setRelatedObjectId($object->getObjectId());
                 $flavorAsset = assetPeer::retrieveById($object->getObjectId());
                 if ($flavorAsset) {
                     $auditTrail->setEntryId($flavorAsset->getEntryId());
                 }
                 break;
             case FileSyncObjectType::METADATA:
                 $auditTrail->setRelatedObjectType(AuditTrailObjectType::METADATA);
                 $auditTrail->setRelatedObjectId($object->getObjectId());
                 if (class_exists('Metadata')) {
                     $metadata = MetadataPeer::retrieveByPK($object->getObjectId());
                     if ($metadata && $metadata->getObjectType() == MetadataObjectType::ENTRY) {
                         $auditTrail->setEntryId($metadata->getObjectId());
                     }
                 }
                 break;
             case FileSyncObjectType::METADATA_PROFILE:
                 $auditTrail->setRelatedObjectType(AuditTrailObjectType::METADATA_PROFILE);
                 $auditTrail->setRelatedObjectId($object->getObjectId());
                 break;
         }
     }
 }
Example #6
0
 public static function loadObject($baseClass, $enumValue, array $constructorArgs = null)
 {
     if ($baseClass == 'ISyncableFile' && isset($constructorArgs['objectId'])) {
         $objectId = $constructorArgs['objectId'];
         switch ($enumValue) {
             case FileSyncObjectType::METADATA:
                 MetadataPeer::setUseCriteriaFilter(false);
                 $object = MetadataPeer::retrieveByPK($objectId);
                 MetadataPeer::setUseCriteriaFilter(true);
                 return $object;
             case FileSyncObjectType::METADATA_PROFILE:
                 MetadataProfilePeer::setUseCriteriaFilter(false);
                 $object = MetadataProfilePeer::retrieveByPK($objectId);
                 MetadataProfilePeer::setUseCriteriaFilter(true);
                 return $object;
         }
     }
     if ($baseClass == 'kJobData') {
         switch ($enumValue) {
             case KalturaBatchJobType::METADATA_IMPORT:
                 return new kImportJobData();
             case KalturaBatchJobType::METADATA_TRANSFORM:
                 return new kTransformMetadataJobData();
         }
     }
     if ($baseClass == 'KalturaJobData') {
         switch ($enumValue) {
             case KalturaBatchJobType::METADATA_IMPORT:
                 return new KalturaImportJobData();
             case KalturaBatchJobType::METADATA_TRANSFORM:
                 return new KalturaTransformMetadataJobData();
         }
     }
     if ($baseClass == 'KalturaCondition') {
         if ($enumValue == MetadataPlugin::getConditionTypeCoreValue(MetadataConditionType::METADATA_FIELD_COMPARE)) {
             return new KalturaCompareMetadataCondition();
         }
         if ($enumValue == MetadataPlugin::getConditionTypeCoreValue(MetadataConditionType::METADATA_FIELD_MATCH)) {
             return new KalturaMatchMetadataCondition();
         }
         if ($enumValue == MetadataPlugin::getConditionTypeCoreValue(MetadataConditionType::METADATA_FIELD_CHANGED)) {
             return new KalturaMetadataFieldChangedCondition();
         }
     }
     if ($baseClass == 'KalturaFilter') {
         if ($enumValue == 'MetadataFilter') {
             return new KalturaMetadataFilter();
         }
     }
     if ($baseClass == 'KIndexingEngine') {
         if ($enumValue == KalturaIndexObjectType::METADATA) {
             return new KIndexingMetadataEngine();
         }
     }
     if ($baseClass == 'KalturaResponseProfileMapping') {
         if ($enumValue == 'kMetadataResponseProfileMapping') {
             return new KalturaMetadataResponseProfileMapping();
         }
     }
     return null;
 }
 /**
  * Function sweeps the given fields of the emailNotificationTemplate, and parses expressions of the type
  * {metadata:[metadataProfileSystemName]:[metadataProfileFieldSystemName]}
  */
 public static function editTemplateFields($sweepFieldValues, $scope, $objectType)
 {
     KalturaLog::debug('Field values to sweep: ' . print_r($sweepFieldValues, true));
     if (!$scope instanceof kEventScope) {
         return array();
     }
     if (!method_exists($scope->getObject(), 'getPartnerId')) {
         return array();
     }
     $partnerId = $scope->getObject()->getPartnerId();
     /* @var $scope kEventScope */
     $metadataContentParameters = array();
     foreach ($sweepFieldValues as $sweepFieldValue) {
         //Obtain matches for the set structure {metadata:[profileSystemName][profileFieldSystemName]}
         preg_match_all(self::METADATA_EMAIL_NOTIFICATION_REGEX, $sweepFieldValue, $matches);
         foreach ($matches[0] as $match) {
             $match = str_replace(array('{', '}'), array('', ''), $match);
             list($metadata, $profileSystemName, $fieldSystemName, $format) = explode(':', $match, 4);
             $profile = MetadataProfilePeer::retrieveBySystemName($profileSystemName, $partnerId);
             if (!$profile) {
                 KalturaLog::info("Metadata profile with system name {$profileSystemName} not found for this partner. Token will be replaced with empty string.");
                 $metadataContentParameters[$match] = '';
                 continue;
             }
             $objectId = null;
             $metadataObjectId = null;
             //If the metadataProfileobjectType matches the one on the emailNotification, we can proceed
             //If the objectType of the email template is 'asset' we can use the entryId
             //If the objectType of the email template is a metadata object we can use its id
             if (kMetadataManager::getObjectTypeName($profile->getObjectType()) == KalturaPluginManager::getObjectClass('EventNotificationEventObjectType', $objectType)) {
                 $objectId = $scope->getObject()->getId();
             } elseif (kMetadataManager::getObjectTypeName($profile->getObjectType()) == 'entry' && $scope->getObject() instanceof asset) {
                 $objectId = $scope->getObject()->getEntryId();
             } elseif ($scope->getObject() instanceof categoryEntry) {
                 $profileObject = kMetadataManager::getObjectTypeName($profile->getObjectType());
                 $getter = "get{$profileObject}Id";
                 KalturaLog::info("Using {$getter} in order to retrieve the metadata object ID");
                 $categoryEntry = $scope->getObject();
                 $objectId = $categoryEntry->{$getter}();
             } elseif (KalturaPluginManager::getObjectClass('EventNotificationEventObjectType', $objectType) == MetadataPeer::OM_CLASS) {
                 $metadataObjectId = $scope->getObject()->getId();
             }
             if ($objectId) {
                 $result = MetadataPeer::retrieveByObject($profile->getId(), $profile->getObjectType(), $objectId);
             } elseif ($metadataObjectId) {
                 $result = MetadataPeer::retrieveByPK($metadataObjectId);
             } else {
                 //There is not enough specification regarding the required metadataObject, abort.
                 KalturaLog::info("The template does not contain an object Id for which custom metadata can be retrieved. Token will be replaced with empty string.");
                 $metadataContentParameters[$match] = '';
                 continue;
             }
             if (!$result) {
                 KalturaLog::info("Metadata object could not be retrieved. Token will be replaced with empty string.");
                 $metadataContentParameters[$match] = '';
                 continue;
             }
             $strvals = kMetadataManager::getMetadataValueForField($result, $fieldSystemName);
             foreach ($strvals as &$strval) {
                 if ($format && is_numeric($strval)) {
                     $strval = date($format, $strval);
                 }
             }
             $metadataContentParameters[$match] = implode(',', $strvals);
         }
     }
     return $metadataContentParameters;
 }
Example #8
0
 /**
  * Update an existing metadata object with new XML file
  * 
  * @action updateFromFile
  * @param int $id 
  * @param file $xmlFile XML metadata
  * @return KalturaMetadata
  * @throws KalturaErrors::INVALID_OBJECT_ID
  * @throws MetadataErrors::METADATA_FILE_NOT_FOUND
  * @throws MetadataErrors::INVALID_METADATA_DATA
  */
 function updateFromFileAction($id, $xmlFile = null)
 {
     $dbMetadata = MetadataPeer::retrieveByPK($id);
     if (!$dbMetadata) {
         throw new KalturaAPIException(KalturaErrors::INVALID_OBJECT_ID, $id);
     }
     $filePath = null;
     if ($xmlFile) {
         $filePath = $xmlFile['tmp_name'];
         if (!file_exists($filePath)) {
             throw new KalturaAPIException(MetadataErrors::METADATA_FILE_NOT_FOUND, $xmlFile['name']);
         }
     }
     $previousVersion = null;
     if ($dbMetadata->getStatus() == Metadata::STATUS_VALID) {
         $previousVersion = $dbMetadata->getVersion();
     }
     if ($filePath) {
         $dbMetadata->incrementVersion();
     }
     $dbMetadata->save();
     if ($filePath) {
         $key = $dbMetadata->getSyncKey(Metadata::FILE_SYNC_METADATA_DATA);
         kFileSyncUtils::moveFromFile($filePath, $key);
         $errorMessage = '';
         $status = kMetadataManager::validateMetadata($dbMetadata, $errorMessage);
         kEventsManager::raiseEvent(new kObjectDataChangedEvent($dbMetadata, $previousVersion));
         if ($status != KalturaMetadataStatus::VALID) {
             throw new KalturaAPIException(MetadataErrors::INVALID_METADATA_DATA, $errorMessage);
         }
     }
     $metadata = new KalturaMetadata();
     $metadata->fromObject($dbMetadata);
     return $metadata;
 }