public function generateFileName($sub_type, $version = null) { self::validateFileSyncSubType($sub_type); if (!$version) { $version = $this->getVersion(); } return kMetadataManager::getObjectTypeName($this->getObjectType()) . "_" . $this->getObjectId() . "_" . $this->getId() . "_{$version}.xml"; }
public function getFieldValue(kScope $scope) { $profileId = $this->profileId; if (!$profileId) { if (!$this->profileSystemName) { KalturaLog::err("No metadata profile id and system-name supplied"); return null; } $profile = MetadataProfilePeer::retrieveBySystemName($this->profileSystemName, kCurrentContext::getCurrentPartnerId()); if (!$profile) { KalturaLog::notice("Metadata profile with system-name [{$this->profileSystemName}] not found"); return null; } $profileId = $profile->getId(); } $metadata = null; if ($scope instanceof accessControlScope || $scope instanceof kStorageProfileScope) { $metadata = MetadataPeer::retrieveByObject($profileId, MetadataObjectType::ENTRY, $scope->getEntryId()); } elseif ($scope instanceof kEventScope) { $object = $scope->getEvent()->getObject(); if (kMetadataManager::isMetadataObject($object)) { $objectType = kMetadataManager::getTypeNameFromObject($object); $metadata = MetadataPeer::retrieveByObject($profileId, $objectType, $object->getId()); } else { if ($object instanceof Metadata) { $metadata = $object; } elseif ($scope->getEvent()->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->getEvent()->getObject(); $objectId = $categoryEntry->{$getter}(); $metadata = MetadataPeer::retrieveByObject($profileId, $profile->getObjectType(), $objectId); } elseif ($object instanceof asset) { $metadata = MetadataPeer::retrieveByObject($profileId, MetadataObjectType::ENTRY, $object->getEntryId()); } } } if ($metadata) { return kMetadataManager::parseMetadataValues($metadata, $this->xPath); } KalturaLog::notice("Metadata object not found for scope [" . get_class($scope) . "]"); return null; }
public function generateFileName($sub_type, $version = null) { $version = $this->getFileSyncSubTypeVersion($sub_type, $version); return kMetadataManager::getObjectTypeName($this->getObjectType()) . "_" . $this->getId() . "_{$sub_type}_{$version}.xml"; }
/** * 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; }