/**
  * @param EntryDistribution $entryDistribution
  * @param $action
  * @param array $validationErrors
  * since entry distribution and entry are validated in the parent of validateForSubmission we will not add an error for them
  */
 private function validateReferenceId(EntryDistribution $entryDistribution, $action, array &$validationErrors)
 {
     if ($entryDistribution && $entryDistribution->getEntryId()) {
         $entry = entryPeer::retrieveByPK($entryDistribution->getEntryId());
         if ($entry && !$entry->getReferenceID()) {
             $validationError = $this->createValidationError($action, DistributionErrorType::MISSING_METADATA, "Reference ID", "is a mandatory field");
             $validationError->setValidationErrorType(DistributionValidationErrorType::STRING_EMPTY);
             $validationError->setValidationErrorParam("Reference ID is a mandatory field");
             $validationErrors[] = $validationError;
         }
     }
 }
 public function validateMetadataForSubmission(EntryDistribution $entryDistribution, $action, array $validationErrors)
 {
     if (!class_exists('MetadataProfile')) {
         return $validationErrors;
     }
     $metadataProfileId = $this->getMetadataProfileId();
     if (!$metadataProfileId) {
         $validationErrors[] = $this->createValidationError($action, DistributionErrorType::MISSING_METADATA, self::METADATA_FIELD_MEDIAKEY, '');
         return $validationErrors;
     }
     $metadata = MetadataPeer::retrieveByObject($metadataProfileId, MetadataObjectType::ENTRY, $entryDistribution->getEntryId());
     if (!$metadata) {
         $validationErrors[] = $this->createValidationError($action, DistributionErrorType::MISSING_METADATA, self::METADATA_FIELD_MEDIAKEY);
         return $validationErrors;
     }
     $values = $this->findMetadataValue(array($metadata), self::METADATA_FIELD_MEDIAKEY);
     if (!count($values)) {
         $validationErrors[] = $this->createValidationError($action, DistributionErrorType::MISSING_METADATA, self::METADATA_FIELD_MEDIAKEY, '');
     }
     return $validationErrors;
 }
 /**
  * @param EntryDistribution $entryDistribution
  * @param SimpleXMLElement $xmlElement
  * @return SimpleXMLElement
  */
 public function contributeDistribution(EntryDistribution $entryDistribution, SimpleXMLElement $mrss)
 {
     $distributionsProvider = null;
     $distributionsProfile = DistributionProfilePeer::retrieveByPK($entryDistribution->getDistributionProfileId());
     if ($distributionsProfile) {
         $distributionsProvider = $distributionsProfile->getProvider();
     }
     $distribution = $mrss->addChild('distribution');
     $distribution->addAttribute('entryDistributionId', $entryDistribution->getId());
     $distribution->addAttribute('distributionProfileId', $entryDistribution->getDistributionProfileId());
     $distribution->addAttribute('lastReport', $entryDistribution->getLastReport(null));
     if ($distributionsProvider) {
         $distribution->addAttribute('provider', $distributionsProvider->getName());
         if ($distributionsProvider->getType() == DistributionProviderType::GENERIC) {
             $distribution->addAttribute('distributionProviderId', $distributionsProvider->getId());
         } elseif ($distributionsProvider->getType() == DistributionProviderType::SYNDICATION) {
             if ($distributionsProfile instanceof SyndicationDistributionProfile) {
                 $distribution->addAttribute('feedId', $distributionsProfile->getFeedId());
             }
         } else {
             $pluginInstances = KalturaPluginManager::getPluginInstances('IKalturaContentDistributionProvider');
             foreach ($pluginInstances as $pluginInstance) {
                 if ($pluginInstance->getProvider() === $distributionsProvider) {
                     $pluginInstance->contributeMRSS($entryDistribution, $distribution);
                 }
             }
         }
     }
     if ($entryDistribution->getRemoteId()) {
         $distribution->addChild('remoteId', $entryDistribution->getRemoteId());
     }
     if ($entryDistribution->getSunrise(null)) {
         $distribution->addChild('sunrise', $entryDistribution->getSunrise(null));
     }
     if ($entryDistribution->getSunset(null)) {
         $distribution->addChild('sunset', $entryDistribution->getSunset(null));
     }
     $flavorAssetIds = explode(',', $entryDistribution->getFlavorAssetIds());
     $flavorAssetIdsNode = $distribution->addChild('flavorAssetIds');
     foreach ($flavorAssetIds as $flavorAssetId) {
         $flavorAssetIdsNode->addChild('flavorAssetId', $flavorAssetId);
     }
     $thumbAssetIds = explode(',', $entryDistribution->getThumbAssetIds());
     $thumbAssetIdsNode = $distribution->addChild('thumbAssetIds');
     foreach ($thumbAssetIds as $thumbAssetId) {
         $thumbAssetIdsNode->addChild('thumbAssetId', $thumbAssetId);
     }
 }
 /**
  * Append provider specific nodes and attributes to the MRSS
  * 
  * @param EntryDistribution $entryDistribution
  * @param SimpleXMLElement $mrss
  */
 public static function contributeMRSS(EntryDistribution $entryDistribution, SimpleXMLElement $mrss)
 {
     $distributionProfile = DistributionProfilePeer::retrieveByPK($entryDistribution->getDistributionProfileId());
     /* @var $distributionProfile VerizonVcastDistributionProfile */
     $mrss->addChild('ProviderName', $distributionProfile->getProviderName());
     $mrss->addChild('ProviderId', $distributionProfile->getProviderId());
     $mrss->addChild('Entitlement', $distributionProfile->getEntitlement());
     $mrss->addChild('Priority', $distributionProfile->getPriority());
     $mrss->addChild('AllowStreaming', $distributionProfile->getAllowStreaming());
     $mrss->addChild('StreamingPriceCode', $distributionProfile->getStreamingPriceCode());
     $mrss->addChild('AllowDownload', $distributionProfile->getAllowDownload());
     $mrss->addChild('DownloadPriceCode', $distributionProfile->getDownloadPriceCode());
 }
 /**
  * Append provider specific nodes and attributes to the MRSS
  * 
  * @param EntryDistribution $entryDistribution
  * @param SimpleXMLElement $mrss
  */
 public static function contributeMRSS(EntryDistribution $entryDistribution, SimpleXMLElement $mrss)
 {
     // append AttUverse specific report statistics
     $distributionProfile = DistributionProfilePeer::retrieveByPK($entryDistribution->getDistributionProfileId());
     $mrss->addChild('channel_title', $distributionProfile->getChannelTitle());
 }
 /**
  * Adds an object to the instance pool.
  *
  * Propel keeps cached copies of objects in an instance pool when they are retrieved
  * from the database.  In some cases -- especially when you override doSelect*()
  * methods in your stub classes -- you may need to explicitly add objects
  * to the cache in order to ensure that the same objects are always returned by doSelect*()
  * and retrieveByPK*() calls.
  *
  * @param      EntryDistribution $value A EntryDistribution object.
  * @param      string $key (optional) key to use for instance map (for performance boost if key was already calculated externally).
  */
 public static function addInstanceToPool(EntryDistribution $obj, $key = null)
 {
     if (Propel::isInstancePoolingEnabled()) {
         if ($key === null) {
             $key = (string) $obj->getId();
         }
         if (isset(self::$instances[$key]) || count(self::$instances) < kConf::get('max_num_instances_in_pool')) {
             self::$instances[$key] = $obj;
             kMemoryManager::registerPeer('EntryDistributionPeer');
         }
     }
 }
 /**
  * @param entry $entry
  * @param DistributionProfile $distributionProfile
  * @return EntryDistribution
  */
 public static function createEntryDistribution(entry $entry, DistributionProfile $distributionProfile)
 {
     $entryDistribution = new EntryDistribution();
     $entryDistribution->setEntryId($entry->getId());
     $entryDistribution->setPartnerId($entry->getPartnerId());
     $entryDistribution->setDistributionProfileId($distributionProfile->getId());
     $entryDistribution->setStatus(EntryDistributionStatus::PENDING);
     self::assignFlavorAssets($entryDistribution, $entry, $distributionProfile);
     self::assignThumbAssets($entryDistribution, $entry, $distributionProfile);
     self::assignAssets($entryDistribution, $entry, $distributionProfile);
     $entryDistribution->save();
     // need to save before checking validations
     $validationErrors = $distributionProfile->validateForSubmission($entryDistribution, DistributionAction::SUBMIT);
     $entryDistribution->setValidationErrorsArray($validationErrors);
     return $entryDistribution;
 }
 /**
  * Append provider specific nodes and attributes to the MRSS
  * 
  * @param EntryDistribution $entryDistribution
  * @param SimpleXMLElement $mrss
  */
 public static function contributeMRSS(EntryDistribution $entryDistribution, SimpleXMLElement $mrss)
 {
     // append UverseClickToOrder specific report statistics
     $distributionProfile = DistributionProfilePeer::retrieveByPK($entryDistribution->getDistributionProfileId());
     $mrss->addChild('background_image_wide', $distributionProfile->getBackgroundImageWide());
     $mrss->addChild('background_image_standard', $distributionProfile->getBackgroundImageStandard());
 }
 /**
  * Append provider specific nodes and attributes to the MRSS
  * 
  * @param EntryDistribution $entryDistribution
  * @param SimpleXMLElement $mrss
  */
 public static function contributeMRSS(EntryDistribution $entryDistribution, SimpleXMLElement $mrss)
 {
     // append Yahoo specific report statistics
     $distributionProfile = DistributionProfilePeer::retrieveByPK($entryDistribution->getDistributionProfileId());
     $mrss->addChild('contact_telephone', $distributionProfile->getContactTelephone());
     $mrss->addChild('contact_email', $distributionProfile->getContactEmail());
 }
Esempio n. 10
0
 /**
  * Append provider specific nodes and attributes to the MRSS
  * 
  * @param EntryDistribution $entryDistribution
  * @param SimpleXMLElement $mrss
  */
 public static function contributeMRSS(EntryDistribution $entryDistribution, SimpleXMLElement $mrss)
 {
     // append comcast mrss specific configuration
     $distributionProfile = DistributionProfilePeer::retrieveByPK($entryDistribution->getDistributionProfileId());
     /* @var $distributionProfile TVComDistributionProfile */
     $mrss->addChild('feed_copyright', $distributionProfile->getFeedCopyright());
 }
 private function getRelatedEntrySortValue($profile, $relatedEntryId)
 {
     $relatedEntrydistribution = new EntryDistribution();
     $relatedEntrydistribution->setEntryId($relatedEntryId);
     $relatedEntrydistribution->setPartnerId($profile->getPartnerId());
     $relatedEntrydistribution->setDistributionProfileId($profile->getId());
     return $profile->getFieldValue($relatedEntrydistribution, UverseClickToOrderDistributionField::SORT_ITEMS_BY_FIELD);
 }
 /**
  * @param entry $entry
  * @param DistributionProfile $distributionProfile
  * @return EntryDistribution or null if failed to create.
  */
 public static function createEntryDistribution(entry $entry, DistributionProfile $distributionProfile)
 {
     $illegalEntryDistributionStatus = array(EntryDistributionStatus::SUBMITTING, EntryDistributionStatus::UPDATING, EntryDistributionStatus::DELETING, EntryDistributionStatus::IMPORT_SUBMITTING, EntryDistributionStatus::IMPORT_UPDATING);
     $entryDistribution = EntryDistributionPeer::retrieveByEntryAndProfileId($entry->getId(), $distributionProfile->getId());
     if (!$entryDistribution || $entryDistribution->getStatus() == EntryDistributionStatus::DELETED) {
         $entryDistribution = new EntryDistribution();
     } else {
         if (in_array($entryDistribution->getStatus(), $illegalEntryDistributionStatus)) {
             KalturaLog::err("Entry distribution already exist. entry [" . $entry->getId() . "] distribution profile [" . $distributionProfile->getId() . "] status [" . $entryDistribution->getStatus() . "]");
             return null;
         }
     }
     $entryDistribution->setEntryId($entry->getId());
     $entryDistribution->setPartnerId($entry->getPartnerId());
     $entryDistribution->setDistributionProfileId($distributionProfile->getId());
     $entryDistribution->setStatus(EntryDistributionStatus::PENDING);
     self::assignFlavorAssets($entryDistribution, $entry, $distributionProfile);
     self::assignThumbAssets($entryDistribution, $entry, $distributionProfile);
     self::assignAssets($entryDistribution, $entry, $distributionProfile);
     $entryDistribution->save();
     // need to save before checking validations
     $validationErrors = $distributionProfile->validateForSubmission($entryDistribution, DistributionAction::SUBMIT);
     $entryDistribution->setValidationErrorsArray($validationErrors);
     return $entryDistribution;
 }
 /**
  * Append provider specific nodes and attributes to the MRSS
  * 
  * @param EntryDistribution $entryDistribution
  * @param SimpleXMLElement $mrss
  */
 public static function contributeMRSS(EntryDistribution $entryDistribution, SimpleXMLElement $mrss)
 {
     $distributionProfile = DistributionProfilePeer::retrieveByPK($entryDistribution->getDistributionProfileId());
     /* @var $distributionProfile DoubleClickDistributionProfile */
     $mrss->addChild('ChannelTitle', htmlentities($distributionProfile->getChannelTitle()));
     $mrss->addChild('ChannelDescription', htmlentities($distributionProfile->getChannelDescription()));
     $mrss->addChild('ChannelLink', htmlentities($distributionProfile->getChannelLink()));
 }
 /**
  * Append provider specific nodes and attributes to the MRSS
  * 
  * @param EntryDistribution $entryDistribution
  * @param SimpleXMLElement $mrss
  */
 public static function contributeMRSS(EntryDistribution $entryDistribution, SimpleXMLElement $mrss)
 {
     // append YouTube specific report statistics
     $distributionProfile = DistributionProfilePeer::retrieveByPK($entryDistribution->getDistributionProfileId());
     $mrss->addChild('feed_title', $distributionProfile->getFeedTitle());
     $mrss->addChild('feed_subtitle', $distributionProfile->getFeedSubtitle());
     $mrss->addChild('feed_link', $distributionProfile->getFeedLink());
     $mrss->addChild('feed_author_name', $distributionProfile->getFeedAuthorName());
 }
 /**
  * Append provider specific nodes and attributes to the MRSS
  * 
  * @param EntryDistribution $entryDistribution
  * @param SimpleXMLElement $mrss
  */
 public static function contributeMRSS(EntryDistribution $entryDistribution, SimpleXMLElement $mrss)
 {
     $distributionProfile = DistributionProfilePeer::retrieveByPK($entryDistribution->getDistributionProfileId());
     if ($distributionProfile && $distributionProfile instanceof KalturaFacebookDistributionProfile) {
         $mrss->addChild(FacebookDistributionField::CALL_TO_ACTION_TYPE, $distributionProfile->getCallToActionType());
         $mrss->addChild(FacebookDistributionField::CALL_TO_ACTION_LINK, $distributionProfile->getCallToActionLink());
         $mrss->addChild(FacebookDistributionField::CALL_TO_ACTION_LINK_CAPTION, $distributionProfile->getCallToActionLinkCaption());
         $mrss->addChild(FacebookDistributionField::PLACE, $distributionProfile->getPlace());
         $mrss->addChild(FacebookDistributionField::TAGS, $distributionProfile->getTags());
         $mrss->addChild(FacebookDistributionField::TARGETING, $distributionProfile->getTargeting());
         $mrss->addChild(FacebookDistributionField::FEED_TARGETING, $distributionProfile->getFeedTargeting());
     }
 }
 /**
  * @param EntryDistribution $entryDistribution
  * @param SimpleXMLElement $mrss
  * @return SimpleXMLElement
  */
 public function contributeDistribution(EntryDistribution $entryDistribution, SimpleXMLElement $mrss)
 {
     $distributionsProvider = null;
     $distributionsProfile = DistributionProfilePeer::retrieveByPK($entryDistribution->getDistributionProfileId());
     if ($distributionsProfile) {
         $distributionsProvider = $distributionsProfile->getProvider();
     }
     $distribution = $mrss->addChild('distribution');
     $distribution->addAttribute('entryDistributionId', $entryDistribution->getId());
     $distribution->addAttribute('distributionProfileId', $entryDistribution->getDistributionProfileId());
     if ($distributionsProfile) {
         $distribution->addAttribute('distributionProfileName', $distributionsProfile->getName());
     }
     if ($distributionsProvider) {
         $distribution->addAttribute('provider', $distributionsProvider->getName());
         if ($distributionsProvider->getType() == DistributionProviderType::GENERIC) {
             $distribution->addAttribute('distributionProviderId', $distributionsProvider->getId());
         } elseif ($distributionsProvider->getType() == DistributionProviderType::SYNDICATION) {
             if ($distributionsProfile instanceof SyndicationDistributionProfile) {
                 $distribution->addAttribute('feedId', $distributionsProfile->getFeedId());
             }
         } else {
             $pluginInstances = KalturaPluginManager::getPluginInstances('IKalturaContentDistributionProvider');
             foreach ($pluginInstances as $pluginInstance) {
                 if ($pluginInstance->getProvider() === $distributionsProvider) {
                     $pluginInstance->contributeMRSS($entryDistribution, $distribution);
                 }
             }
         }
     }
     if ($entryDistribution->getRemoteId()) {
         $distribution->addChild('remoteId', $entryDistribution->getRemoteId());
     }
     if ($entryDistribution->getSunrise(null)) {
         $distribution->addChild('sunrise', $entryDistribution->getSunrise(null));
     }
     if ($entryDistribution->getSunset(null)) {
         $distribution->addChild('sunset', $entryDistribution->getSunset(null));
     }
     $flavorAssetIds = explode(',', $entryDistribution->getFlavorAssetIds());
     $flavorAssetIdsNode = $distribution->addChild('flavorAssetIds');
     foreach ($flavorAssetIds as $flavorAssetId) {
         $flavorAssetIdsNode->addChild('flavorAssetId', $flavorAssetId);
     }
     $thumbAssetIds = explode(',', $entryDistribution->getThumbAssetIds());
     $thumbAssetIdsNode = $distribution->addChild('thumbAssetIds');
     foreach ($thumbAssetIds as $thumbAssetId) {
         $thumbAssetIdsNode->addChild('thumbAssetId', $thumbAssetId);
     }
     $assetIds = explode(',', $entryDistribution->getAssetIds());
     $assetIdsNode = $distribution->addChild('assetIds');
     foreach ($assetIds as $assetId) {
         $assetIdsNode->addChild('assetId', $assetId);
     }
     if ($entryDistribution->getErrorDescription()) {
         $distribution->addChild('errorDescription', kMrssManager::stringToSafeXml($entryDistribution->getErrorDescription()));
     }
     $distribution->addChild('createdAt', $entryDistribution->getCreatedAt(kMrssManager::FORMAT_DATETIME));
     $distribution->addChild('updatedAt', $entryDistribution->getUpdatedAt(kMrssManager::FORMAT_DATETIME));
     if ($entryDistribution->getSubmittedAt(null)) {
         $distribution->addChild('submittedAt', $entryDistribution->getSubmittedAt(kMrssManager::FORMAT_DATETIME));
     }
     if ($entryDistribution->getLastReport(null)) {
         $distribution->addChild('lastReport', $entryDistribution->getLastReport(kMrssManager::FORMAT_DATETIME));
     }
     if ($entryDistribution->getDirtyStatus()) {
         $distribution->addChild('dirtyStatus', $entryDistribution->getDirtyStatus());
     }
     $distribution->addChild('status', $entryDistribution->getStatus());
     $distribution->addChild('sunStatus', $entryDistribution->getSunStatus());
     if ($entryDistribution->getPlays()) {
         $distribution->addChild('plays', $entryDistribution->getPlays());
     }
     if ($entryDistribution->getViews()) {
         $distribution->addChild('views', $entryDistribution->getViews());
     }
     if ($entryDistribution->getErrorNumber()) {
         $distribution->addChild('errorNumber', $entryDistribution->getErrorNumber());
     }
     if ($entryDistribution->getErrorType()) {
         $distribution->addChild('errorType', $entryDistribution->getErrorType());
     }
 }
 /**
  * Adds an object to the instance pool.
  *
  * Propel keeps cached copies of objects in an instance pool when they are retrieved
  * from the database.  In some cases -- especially when you override doSelect*()
  * methods in your stub classes -- you may need to explicitly add objects
  * to the cache in order to ensure that the same objects are always returned by doSelect*()
  * and retrieveByPK*() calls.
  *
  * @param      EntryDistribution $value A EntryDistribution object.
  * @param      string $key (optional) key to use for instance map (for performance boost if key was already calculated externally).
  */
 public static function addInstanceToPool(EntryDistribution $obj, $key = null)
 {
     if (Propel::isInstancePoolingEnabled()) {
         if ($key === null) {
             $key = (string) $obj->getId();
         }
         // if key === null
         self::$instances[$key] = $obj;
     }
 }
Esempio n. 18
0
 /**
  * Append provider specific nodes and attributes to the MRSS
  * 
  * @param EntryDistribution $entryDistribution
  * @param SimpleXMLElement $mrss
  */
 public static function contributeMRSS(EntryDistribution $entryDistribution, SimpleXMLElement $mrss)
 {
     $distributionProfile = DistributionProfilePeer::retrieveByPK($entryDistribution->getDistributionProfileId());
     $mrss->addChild('channel_title', $distributionProfile->getChannelTitle());
     $mrss->addChild('channel_link', $distributionProfile->getChannelLink());
     $mrss->addChild('channel_description', $distributionProfile->getChannelDescription());
     $mrss->addChild('channel_language', $distributionProfile->getChannelLanguage());
     $mrss->addChild('channel_copyright', $distributionProfile->getChannelCopyright());
     $mrss->addChild('channel_image_title', $distributionProfile->getChannelImageTitle());
     $mrss->addChild('channel_image_url', $distributionProfile->getChannelImageUrl());
     $mrss->addChild('channel_image_link', $distributionProfile->getChannelImageLink());
     $mrss->addChild('item_media_rating', $distributionProfile->getItemMediaRating());
 }
 /**
  * @param EntryDistribution $entryDistribution
  * @param int $action enum from DistributionAction
  * @param array $validationErrors
  * @param bool $validateDescription
  * @param bool $validateTags
  * @return array
  */
 public function validateMetadataForSubmission(EntryDistribution $entryDistribution, $action, array $validationErrors, &$validateDescription, &$validateTags)
 {
     $validateDescription = true;
     $validateTags = true;
     if (!class_exists('MetadataProfile')) {
         return $validationErrors;
     }
     $metadataProfileId = $this->getMetadataProfileId();
     if (!$metadataProfileId) {
         return $validationErrors;
     }
     $metadata = MetadataPeer::retrieveByObject($metadataProfileId, Metadata::TYPE_ENTRY, $entryDistribution->getEntryId());
     if (!$metadata) {
         return $validationErrors;
     }
     $metadataProfileCategoryField = MetadataProfileFieldPeer::retrieveByMetadataProfileAndKey($metadataProfileId, self::METADATA_FIELD_DESCRIPTION);
     if ($metadataProfileCategoryField) {
         $values = $this->findMetadataValue(array($metadata), self::METADATA_FIELD_DESCRIPTION);
         if (count($values)) {
             foreach ($values as $value) {
                 if (!strlen($value)) {
                     continue;
                 }
                 $validateDescription = false;
                 // validate entry description minumum length of 1 character
                 if (strlen($value) < self::ENTRY_DESCRIPTION_MINIMUM_LENGTH) {
                     $validationError = $this->createValidationError($action, DistributionErrorType::INVALID_DATA, self::METADATA_FIELD_DESCRIPTION, 'YouTube description is too short');
                     $validationError->setValidationErrorType(DistributionValidationErrorType::STRING_TOO_SHORT);
                     $validationError->setValidationErrorParam(self::ENTRY_DESCRIPTION_MINIMUM_LENGTH);
                     $validationErrors[] = $validationError;
                 }
                 // validate entry description maximum length of 60 characters
                 if (strlen($value) > self::ENTRY_DESCRIPTION_MAXIMUM_LENGTH) {
                     $validationError = $this->createValidationError($action, DistributionErrorType::INVALID_DATA, self::METADATA_FIELD_DESCRIPTION, 'YouTube description is too long');
                     $validationError->setValidationErrorType(DistributionValidationErrorType::STRING_TOO_LONG);
                     $validationError->setValidationErrorParam(self::ENTRY_DESCRIPTION_MAXIMUM_LENGTH);
                     $validationErrors[] = $validationError;
                 }
             }
         }
     }
     $metadataProfileCategoryField = MetadataProfileFieldPeer::retrieveByMetadataProfileAndKey($metadataProfileId, self::METADATA_FIELD_TAGS);
     if ($metadataProfileCategoryField) {
         $values = $this->findMetadataValue(array($metadata), self::METADATA_FIELD_TAGS);
         if (count($values)) {
             foreach ($values as $value) {
                 if (!strlen($value)) {
                     continue;
                 }
                 $validateTags = false;
                 // validate entry tags minumum length of 1 character
                 if (strlen($value) < self::ENTRY_TAGS_MINIMUM_LENGTH) {
                     $validationError = $this->createValidationError($action, DistributionErrorType::INVALID_DATA, self::METADATA_FIELD_TAGS, 'YouTube tags is too short');
                     $validationError->setValidationErrorType(DistributionValidationErrorType::STRING_TOO_SHORT);
                     $validationError->setValidationErrorParam(self::ENTRY_TAGS_MINIMUM_LENGTH);
                     $validationErrors[] = $validationError;
                 }
                 // validate entry tags maximum length of 60 characters
                 if (strlen($value) > self::ENTRY_TAGS_MAXIMUM_LENGTH) {
                     $validationError = $this->createValidationError($action, DistributionErrorType::INVALID_DATA, self::METADATA_FIELD_TAGS, 'YouTube tags is too long');
                     $validationError->setValidationErrorType(DistributionValidationErrorType::STRING_TOO_LONG);
                     $validationError->setValidationErrorParam(self::ENTRY_TAGS_MAXIMUM_LENGTH);
                     $validationErrors[] = $validationError;
                 }
             }
         }
     }
     return $validationErrors;
 }
 public function getAllFieldValues(EntryDistribution $entryDistribution)
 {
     if (is_null($this->fieldValuesByEntryDistributionId) || !is_array($this->fieldValuesByEntryDistributionId) || !isset($this->fieldValuesByEntryDistributionId[$entryDistribution->getId()])) {
         $valuesXmlObj = $this->getFieldValuesXml($entryDistribution);
         if (!$valuesXmlObj) {
             KalturaLog::err('Error transforming XML for distribution profile [' . $this->getId() . '] and entry distribution id [' . $entryDistribution->getId() . ']');
             return null;
         }
         $valuesXmlStr = $valuesXmlObj->saveXML();
         KalturaLog::debug('All field values result XML: ' . $valuesXmlStr);
         $fieldValues = array();
         $fieldConfigArray = $this->getFieldConfigArray();
         foreach ($fieldConfigArray as $fieldConfig) {
             $fieldName = $fieldConfig->getFieldName();
             $fieldValues[$fieldName] = $this->getFieldValueFromXml($fieldName, $valuesXmlObj);
         }
         $this->fieldValuesByEntryDistributionId[$entryDistribution->getId()] = $fieldValues;
     }
     return $this->fieldValuesByEntryDistributionId[$entryDistribution->getId()];
 }
Esempio n. 21
0
 /**
  * Append provider specific nodes and attributes to the MRSS
  * 
  * @param EntryDistribution $entryDistribution
  * @param SimpleXMLElement $mrss
  */
 public static function contributeMRSS(EntryDistribution $entryDistribution, SimpleXMLElement $mrss)
 {
     $distributionProfile = DistributionProfilePeer::retrieveByPK($entryDistribution->getDistributionProfileId());
     /* @var $distributionProfile HuluDistributionProfile */
     $mrss->addChild('SeriesChannel', $distributionProfile->getSeriesChannel());
     $mrss->addChild('SeriesPrimaryCategory', $distributionProfile->getSeriesPrimaryCategory());
     foreach ($distributionProfile->getSeriesAdditionalCategories() as $category) {
         $mrss->addChild('AdditionalCategories', $category);
     }
     $mrss->addChild('SeasonNumber', $distributionProfile->getSeasonNumber());
     $mrss->addChild('SeasonSynopsis', $distributionProfile->getSeasonSynopsis());
     $mrss->addChild('SeasonTuneInInformation', $distributionProfile->getSeasonTuneInInformation());
     $mrss->addChild('MediaType', $distributionProfile->getVideoMediaType());
 }
 /**
  * @param EntryDistribution $entryDistribution
  */
 public static function onEntryDistributionUpdateRequired(EntryDistribution $entryDistribution)
 {
     $distributionProfileId = $entryDistribution->getDistributionProfileId();
     $distributionProfile = DistributionProfilePeer::retrieveByPK($distributionProfileId);
     if (!$distributionProfile) {
         return true;
     }
     $distributionProvider = $distributionProfile->getProvider();
     if (!$distributionProvider) {
         KalturaLog::log("Entry distribution [" . $entryDistribution->getId() . "] provider not found");
         return true;
     }
     if (!$distributionProvider->isUpdateEnabled()) {
         KalturaLog::log("Entry distribution [" . $entryDistribution->getId() . "] provider [" . $distributionProvider->getName() . "] does not support update");
         return true;
     }
     $ignoreStatuses = array(EntryDistributionStatus::PENDING, EntryDistributionStatus::DELETED, EntryDistributionStatus::DELETING, EntryDistributionStatus::QUEUED, EntryDistributionStatus::REMOVED);
     if (in_array($entryDistribution->getStatus(), $ignoreStatuses)) {
         KalturaLog::log("Entry distribution [" . $entryDistribution->getId() . "] status [" . $entryDistribution->getStatus() . "] does not require update");
         return true;
     }
     if ($entryDistribution->getDirtyStatus() == EntryDistributionDirtyStatus::UPDATE_REQUIRED) {
         KalturaLog::log("Entry distribution [" . $entryDistribution->getId() . "] already requires update");
         return true;
     }
     $distributionProfileId = $entryDistribution->getDistributionProfileId();
     $distributionProfile = DistributionProfilePeer::retrieveByPK($distributionProfileId);
     if (!$distributionProfile) {
         KalturaLog::err("Entry distribution [" . $entryDistribution->getId() . "] profile [{$distributionProfileId}] not found");
         return true;
     }
     $distributionProvider = $distributionProfile->getProvider();
     if (!$distributionProvider->isUpdateEnabled()) {
         KalturaLog::log("Entry distribution [" . $entryDistribution->getId() . "] provider [" . $distributionProvider->getName() . "] does not support update");
         return true;
     }
     if ($distributionProfile->getUpdateEnabled() != DistributionProfileActionStatus::AUTOMATIC) {
         KalturaLog::log("Entry distribution [" . $entryDistribution->getId() . "] should not be updated automatically");
         $entryDistribution->setDirtyStatus(EntryDistributionDirtyStatus::UPDATE_REQUIRED);
         $entryDistribution->save();
         return true;
     }
     self::submitUpdateEntryDistribution($entryDistribution, $distributionProfile);
     return true;
 }
Esempio n. 23
0
 /**
  * @param EntryDistribution $entryDistribution
  * @param int $action enum from DistributionAction
  * @return array<kDistributionValidationError>
  */
 public function validateForSubmission(EntryDistribution $entryDistribution, $action)
 {
     $validationErrors = array();
     $requiredFlavorParamsIds = $this->getRequiredFlavorParamsIdsArray();
     KalturaLog::log("Required Flavor Params Ids [" . print_r($requiredFlavorParamsIds, true) . "]");
     $entryFlavorAssets = flavorAssetPeer::retreiveReadyByEntryId($entryDistribution->getEntryId());
     $requiredFlavorParamsIdsKeys = array_flip($requiredFlavorParamsIds);
     foreach ($entryFlavorAssets as $entryFlavorAsset) {
         $flavorParamsId = $entryFlavorAsset->getFlavorParamsId();
         if (isset($requiredFlavorParamsIdsKeys[$flavorParamsId])) {
             unset($requiredFlavorParamsIds[$requiredFlavorParamsIdsKeys[$flavorParamsId]]);
         }
     }
     foreach ($requiredFlavorParamsIds as $requiredFlavorParamsId) {
         $validationErrors[] = $this->createValidationError($action, DistributionErrorType::MISSING_FLAVOR, $requiredFlavorParamsId);
     }
     $requiredThumbDimensions = $this->getRequiredThumbDimensionsObjects();
     KalturaLog::log("Required Thumb Dimensions [" . print_r($requiredThumbDimensions, true) . "]");
     $entryThumbAssets = thumbAssetPeer::retreiveReadyByEntryId($entryDistribution->getEntryId());
     $requiredThumbDimensionsWithKeys = array();
     foreach ($requiredThumbDimensions as $requiredThumbDimension) {
         $key = $requiredThumbDimension->getKey();
         $requiredThumbDimensionsWithKeys[$key] = $requiredThumbDimension;
     }
     foreach ($entryThumbAssets as $entryThumbAsset) {
         $key = $entryThumbAsset->getWidth() . 'x' . $entryThumbAsset->getHeight();
         if (isset($requiredThumbDimensionsWithKeys[$key])) {
             unset($requiredThumbDimensionsWithKeys[$key]);
         }
     }
     foreach ($requiredThumbDimensionsWithKeys as $key => $requiredThumbDimension) {
         $validationErrors[] = $this->createValidationError($action, DistributionErrorType::MISSING_THUMBNAIL, $key);
     }
     return $validationErrors;
 }
 /**
  * @param EntryDistribution $entryDistribution
  * @param int $action enum from DistributionAction
  * @param array $validationErrors
  * @param bool $validateDescription
  * @param bool $validateTags
  * @return array
  */
 public function validateMetadataForSubmission(EntryDistribution $entryDistribution, $action, array $validationErrors, &$validateDescription, &$validateTags)
 {
     $validateDescription = true;
     $validateTags = true;
     if (!class_exists('MetadataProfile')) {
         return $validationErrors;
     }
     $metadataProfileId = $this->getMetadataProfileId();
     if (!$metadataProfileId) {
         $validationErrors[] = $this->createValidationError($action, DistributionErrorType::MISSING_METADATA, self::METADATA_FIELD_CATEGORY, '');
         return $validationErrors;
     }
     $metadataProfileCategoryField = MetadataProfileFieldPeer::retrieveByMetadataProfileAndKey($metadataProfileId, self::METADATA_FIELD_CATEGORY);
     if (!$metadataProfileCategoryField) {
         $validationErrors[] = $this->createValidationError($action, DistributionErrorType::MISSING_METADATA, self::METADATA_FIELD_CATEGORY, '');
         return $validationErrors;
     }
     $metadata = MetadataPeer::retrieveByObject($metadataProfileId, Metadata::TYPE_ENTRY, $entryDistribution->getEntryId());
     if (!$metadata) {
         $validationErrors[] = $this->createValidationError($action, DistributionErrorType::MISSING_METADATA, self::METADATA_FIELD_CATEGORY);
         return $validationErrors;
     }
     $values = $this->findMetadataValue(array($metadata), self::METADATA_FIELD_CATEGORY);
     if (!count($values)) {
         $validationErrors[] = $this->createValidationError($action, DistributionErrorType::MISSING_METADATA, self::METADATA_FIELD_CATEGORY, '');
     }
     foreach ($values as $value) {
         if (!strlen($value)) {
             $validationErrors[] = $this->createValidationError($action, DistributionErrorType::INVALID_DATA, self::METADATA_FIELD_CATEGORY, '');
             return $validationErrors;
         }
     }
     $metadataProfileCategoryField = MetadataProfileFieldPeer::retrieveByMetadataProfileAndKey($metadataProfileId, self::METADATA_FIELD_DESCRIPTION);
     if ($metadataProfileCategoryField) {
         $values = $this->findMetadataValue(array($metadata), self::METADATA_FIELD_DESCRIPTION);
         if (count($values)) {
             foreach ($values as $value) {
                 if (!strlen($value)) {
                     continue;
                 }
                 $validateDescription = false;
                 // validate entry description minumum length of 1 character
                 if (strlen($value) < self::ENTRY_DESCRIPTION_MINIMUM_LENGTH) {
                     $validationError = $this->createValidationError($action, DistributionErrorType::INVALID_DATA, self::METADATA_FIELD_DESCRIPTION, 'Dailymotion description is too short');
                     $validationError->setValidationErrorType(DistributionValidationErrorType::STRING_TOO_SHORT);
                     $validationError->setValidationErrorParam(self::ENTRY_DESCRIPTION_MINIMUM_LENGTH);
                     $validationErrors[] = $validationError;
                 }
                 // validate entry description minumum length of 1 character
                 if (strlen($value) > self::ENTRY_DESCRIPTION_MAXIMUM_LENGTH) {
                     $validationError = $this->createValidationError($action, DistributionErrorType::INVALID_DATA, self::METADATA_FIELD_DESCRIPTION, 'Dailymotion description is too long');
                     $validationError->setValidationErrorType(DistributionValidationErrorType::STRING_TOO_LONG);
                     $validationError->setValidationErrorParam(self::ENTRY_DESCRIPTION_MAXIMUM_LENGTH);
                     $validationErrors[] = $validationError;
                 }
             }
         }
     }
     $metadataProfileCategoryField = MetadataProfileFieldPeer::retrieveByMetadataProfileAndKey($metadataProfileId, self::METADATA_FIELD_TAGS);
     if ($metadataProfileCategoryField) {
         $values = $this->findMetadataValue(array($metadata), self::METADATA_FIELD_TAGS);
         if (count($values) && strlen(implode('', $values))) {
             $tags = implode(',', $values);
             $tags = explode(',', $tags);
             $tagsStr = implode(' , ', $tags);
             $validateTags = false;
             if (strlen($tagsStr) > self::ENTRY_TAGS_MAXIMUM_LENGTH) {
                 $validationError = $this->createValidationError($action, DistributionErrorType::INVALID_DATA, self::METADATA_FIELD_TAGS, 'Dailymotion tags is too long');
                 $validationError->setValidationErrorType(DistributionValidationErrorType::STRING_TOO_LONG);
                 $validationError->setValidationErrorParam(self::ENTRY_TAGS_MAXIMUM_LENGTH);
                 $validationErrors[] = $validationError;
             }
             if (count($tags) < self::ENTRY_TAGS_MINIMUM_COUNT) {
                 $validationError = $this->createValidationError($action, DistributionErrorType::INVALID_DATA, self::METADATA_FIELD_TAGS, 'Dailymotion tags must contain at least ' . self::ENTRY_TAGS_MINIMUM_COUNT . ' tags');
                 $validationError->setValidationErrorType(DistributionValidationErrorType::CUSTOM_ERROR);
                 $validationError->setValidationErrorParam('Dailymotion tags must contain at least ' . self::ENTRY_TAGS_MINIMUM_COUNT . ' tags');
                 $validationErrors[] = $validationError;
             }
             foreach ($tags as $tag) {
                 if (strlen($tag) < self::ENTRY_TAG_MINIMUM_LENGTH) {
                     $validationError = $this->createValidationError($action, DistributionErrorType::INVALID_DATA, self::METADATA_FIELD_TAGS, 'Dailymotion tag [$tag] must contain at least ' . self::ENTRY_TAG_MINIMUM_LENGTH . ' characters');
                     $validationError->setValidationErrorType(DistributionValidationErrorType::CUSTOM_ERROR);
                     $validationError->setValidationErrorParam('Dailymotion tag [$tag] must contain at least ' . self::ENTRY_TAG_MINIMUM_LENGTH . ' characters');
                     $validationErrors[] = $validationError;
                 }
             }
         }
     }
     return $validationErrors;
 }
 public function getEntryMrssDoc(EntryDistribution $entryDistribution)
 {
     $entry = entryPeer::retrieveByPK($entryDistribution->getEntryId());
     // set the default criteria to use the current entry distribution partner id (it is restored later)
     // this is needed for related entries under kMetadataMrssManager which is using retrieveByPK without the correct partner id filter
     $oldEntryCriteria = entryPeer::getCriteriaFilter()->getFilter();
     entryPeer::setDefaultCriteriaFilter();
     entryPeer::addPartnerToCriteria($this->getPartnerId(), true);
     try {
         $mrss = null;
         $mrssParams = new kMrssParameters();
         if ($this->getItemXpathsToExtend()) {
             $mrssParams->setItemXpathsToExtend($this->getItemXpathsToExtend());
         }
         $mrss = kMrssManager::getEntryMrssXml($entry, $mrss, $mrssParams);
         $mrssStr = $mrss->asXML();
     } catch (Exception $e) {
         // restore the original criteria so it will not get stuck due to the exception
         entryPeer::getCriteriaFilter()->setFilter($oldEntryCriteria);
         throw $e;
     }
     // restore the original criteria
     entryPeer::getCriteriaFilter()->setFilter($oldEntryCriteria);
     $mrssObj = new DOMDocument();
     if (!$mrssObj->loadXML($mrssStr)) {
         throw new Exception('Entry mrss xml is not valid');
     }
     return $mrssObj;
 }
 /**
  * Append provider specific nodes and attributes to the MRSS
  * 
  * @param EntryDistribution $entryDistribution
  * @param SimpleXMLElement $mrss
  */
 public static function contributeMRSS(EntryDistribution $entryDistribution, SimpleXMLElement $mrss)
 {
     // append comcast mrss specific configuration
     $distributionProfile = DistributionProfilePeer::retrieveByPK($entryDistribution->getDistributionProfileId());
     /* @var $distributionProfile ComcastMrssDistributionProfile */
     $mrss->addChild('feed_link', $distributionProfile->getFeedLink());
     $mrss->addChild('item_link', $distributionProfile->getItemLink());
 }
 /**
  * Append provider specific nodes and attributes to the MRSS
  * 
  * @param EntryDistribution $entryDistribution
  * @param SimpleXMLElement $mrss
  */
 public static function contributeMRSS(EntryDistribution $entryDistribution, SimpleXMLElement $mrss)
 {
     // append PODCAST specific report statistics
     $status = $mrss->addChild('status');
     $status->addChild('emailed', $entryDistribution->getFromCustomData('emailed'));
     $status->addChild('rated', $entryDistribution->getFromCustomData('rated'));
     $status->addChild('blogged', $entryDistribution->getFromCustomData('blogged'));
     $status->addChild('reviewed', $entryDistribution->getFromCustomData('reviewed'));
     $status->addChild('bookmarked', $entryDistribution->getFromCustomData('bookmarked'));
     $status->addChild('playbackFailed', $entryDistribution->getFromCustomData('playbackFailed'));
     $status->addChild('timeSpent', $entryDistribution->getFromCustomData('timeSpent'));
     $status->addChild('recommended', $entryDistribution->getFromCustomData('recommended'));
 }
Esempio n. 28
0
 /**
  * @param EntryDistribution $entryDistribution
  * @param int $action enum from DistributionAction
  * @return array<kDistributionValidationError>
  */
 public function validateForSubmission(EntryDistribution $entryDistribution, $action)
 {
     $validationErrors = array();
     $distributionProvider = $this->getProvider();
     if (!$distributionProvider) {
         KalturaLog::err("Entry distribution [" . $entryDistribution->getId() . "] provider [" . $this->getProviderType() . "] not found");
         return $validationErrors;
     }
     if ($action == DistributionAction::UPDATE || $entryDistribution->getStatus() == EntryDistributionStatus::READY || $entryDistribution->getStatus() == EntryDistributionStatus::ERROR_UPDATING) {
         if (!$distributionProvider->isUpdateEnabled() || !$distributionProvider->isMediaUpdateEnabled()) {
             KalturaLog::log("Entry distribution [" . $entryDistribution->getId() . "] provider [" . $distributionProvider->getName() . "] does not support update");
             return $validationErrors;
         }
     }
     $requiredFlavorParamsIds = $this->getRequiredFlavorParamsIdsArray();
     KalturaLog::log("Required Flavor Params Ids [" . print_r($requiredFlavorParamsIds, true) . "]");
     $entryFlavorAssets = assetPeer::retrieveReadyFlavorsByEntryId($entryDistribution->getEntryId());
     $requiredFlavorParamsIdsKeys = array_flip($requiredFlavorParamsIds);
     foreach ($entryFlavorAssets as $entryFlavorAsset) {
         $flavorParamsId = $entryFlavorAsset->getFlavorParamsId();
         if (isset($requiredFlavorParamsIdsKeys[$flavorParamsId])) {
             unset($requiredFlavorParamsIds[$requiredFlavorParamsIdsKeys[$flavorParamsId]]);
         }
     }
     foreach ($requiredFlavorParamsIds as $requiredFlavorParamsId) {
         $validationErrors[] = $this->createValidationError($action, DistributionErrorType::MISSING_FLAVOR, $requiredFlavorParamsId);
     }
     $requiredThumbDimensions = $this->getRequiredThumbDimensionsObjects();
     KalturaLog::log("Required Thumb Dimensions [" . print_r($requiredThumbDimensions, true) . "]");
     $entryThumbAssets = assetPeer::retrieveReadyThumbnailsByEntryId($entryDistribution->getEntryId());
     $requiredThumbDimensionsWithKeys = array();
     foreach ($requiredThumbDimensions as $requiredThumbDimension) {
         $key = $requiredThumbDimension->getKey();
         $requiredThumbDimensionsWithKeys[$key] = $requiredThumbDimension;
     }
     foreach ($entryThumbAssets as $entryThumbAsset) {
         $key = $entryThumbAsset->getWidth() . 'x' . $entryThumbAsset->getHeight();
         if (isset($requiredThumbDimensionsWithKeys[$key])) {
             unset($requiredThumbDimensionsWithKeys[$key]);
         }
     }
     foreach ($requiredThumbDimensionsWithKeys as $key => $requiredThumbDimension) {
         $validationErrors[] = $this->createValidationError($action, DistributionErrorType::MISSING_THUMBNAIL, $key);
     }
     $entryAssets = assetPeer::retrieveReadyByEntryId($entryDistribution->getEntryId());
     $requiredAssetDistributionRules = $this->getRequiredAssetDistributionRules();
     foreach ($requiredAssetDistributionRules as $entryAssetDistributionRule) {
         $foundMatchingAsset = false;
         /* @var $entryAssetDistributionRule kAssetDistributionRule */
         foreach ($entryAssets as $entryAsset) {
             /* @var $entryAsset asset */
             if ($entryAssetDistributionRule->fulfilled($entryAsset)) {
                 $foundMatchingAsset = true;
                 break;
             }
         }
         if (!$foundMatchingAsset) {
             $validationErrors[] = $this->createValidationError($action, DistributionErrorType::MISSING_ASSET, $entryAssetDistributionRule->getValidationError());
         }
     }
     return $validationErrors;
 }
 /**
  * Append provider specific nodes and attributes to the MRSS
  * 
  * @param EntryDistribution $entryDistribution
  * @param SimpleXMLElement $mrss
  */
 public static function contributeMRSS(EntryDistribution $entryDistribution, SimpleXMLElement $mrss)
 {
     // append YouTube specific report statistics
     $distributionProfile = DistributionProfilePeer::retrieveByPK($entryDistribution->getDistributionProfileId());
     $mrss->addChild('allow_comments', $distributionProfile->getAllowComments());
     $mrss->addChild('allow_responses', $distributionProfile->getAllowResponses());
     $mrss->addChild('allow_ratings', $distributionProfile->getAllowRatings());
     $mrss->addChild('allow_embedding', $distributionProfile->getAllowEmbedding());
     $mrss->addChild('commerical_policy', $distributionProfile->getCommercialPolicy());
     $mrss->addChild('ugc_policy', $distributionProfile->getUgcPolicy());
     $mrss->addChild('default_category', $distributionProfile->getDefaultCategory());
     $mrss->addChild('target', $distributionProfile->getTarget());
     $mrss->addChild('notification_email', $distributionProfile->getNotificationEmail());
     $mrss->addChild('account_username', $distributionProfile->getUsername());
     $mrss->addChild('ad_server_partner_id', $distributionProfile->getAdServerPartnerId());
     $mrss->addChild('allow_pre_roll_ads', $distributionProfile->getAllowPreRollAds());
     $mrss->addChild('allow_post_roll_ads', $distributionProfile->getAllowPostRollAds());
     $mrss->addChild('claim_type', $distributionProfile->getClaimType());
     $mrss->addChild('instream_standard', $distributionProfile->getInstreamStandard());
 }
 /**
  * Append provider specific nodes and attributes to the MRSS
  * 
  * @param EntryDistribution $entryDistribution
  * @param SimpleXMLElement $mrss
  */
 public static function contributeMRSS(EntryDistribution $entryDistribution, SimpleXMLElement $mrss)
 {
     // append YouTube specific report statistics
     $distributionProfile = DistributionProfilePeer::retrieveByPK($entryDistribution->getDistributionProfileId());
     $mrss->addChild('account_username', $distributionProfile->getUsername());
     $mrss->addChild('default_category', $distributionProfile->getDefaultCategory());
     $mrss->addChild('allow_comments', $distributionProfile->getAllowComments());
     $mrss->addChild('allow_responses', $distributionProfile->getAllowResponses());
     $mrss->addChild('allow_ratings', $distributionProfile->getAllowRatings());
     $mrss->addChild('allow_embedding', $distributionProfile->getAllowEmbedding());
 }