/** * @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; }