Exemple #1
0
 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;
 }
Exemple #3
0
 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;
 }