/** * @param EntryDistribution $entryDistribution * @param entry $entry * @param DistributionProfile $distributionProfile * @return boolean */ public static function assignAssets(EntryDistribution $entryDistribution, entry $entry, DistributionProfile $distributionProfile) { $submittingStatuses = array(EntryDistributionStatus::PENDING, EntryDistributionStatus::QUEUED, EntryDistributionStatus::SUBMITTING, EntryDistributionStatus::IMPORT_SUBMITTING, EntryDistributionStatus::ERROR_SUBMITTING); // if not in first submmiting status then it's an update and need to check if update is supported. if (!in_array($entryDistribution->getStatus(), $submittingStatuses)) { $distributionProvider = $distributionProfile->getProvider(); if (!$distributionProvider) { KalturaLog::log("Entry distribution [" . $entryDistribution->getId() . "] provider not found"); return false; } if (!$distributionProvider->isUpdateEnabled() || !$distributionProvider->isMediaUpdateEnabled()) { KalturaLog::log("Entry distribution [" . $entryDistribution->getId() . "] provider [" . $distributionProvider->getName() . "] does not support update"); return false; } } $requiredAssetsConditions = $distributionProfile->getRequiredAssetDistributionRules(); $optionalAssetsConditions = $distributionProfile->getOptionalAssetDistributionRules(); $assetDistributionRules = array_merge($requiredAssetsConditions, $optionalAssetsConditions); if (!is_array($assetDistributionRules)) { return false; } $assetIds = array(); $originalList = $entryDistribution->getAssetIds(); $entryAssets = assetPeer::retrieveReadyByEntryId($entryDistribution->getEntryId()); foreach ($assetDistributionRules as $assetDistributionRule) { /* @var $assetDistributionRule kAssetDistributionRule */ foreach ($entryAssets as $asset) { /* @var $asset asset */ if ($assetDistributionRule->fulfilled($asset)) { $assetIds[] = $asset->getId(); } } } $entryDistribution->setAssetIds($assetIds); return $originalList != $entryDistribution->getAssetIds(); }