/**
  * @param BatchJob $dbBatchJob
  * @param kDistributionUpdateJobData $data
  * @param BatchJob $twinJob
  * @return BatchJob
  */
 public static function onDistributionDisableJobFailed(BatchJob $dbBatchJob, kDistributionUpdateJobData $data, BatchJob $twinJob = null)
 {
     $entryDistribution = EntryDistributionPeer::retrieveByPK($data->getEntryDistributionId());
     if (!$entryDistribution) {
         KalturaLog::err("Entry distribution [" . $data->getEntryDistributionId() . "] not found");
         return $dbBatchJob;
     }
     $entryDistribution->setErrorType($dbBatchJob->getErrType());
     $entryDistribution->setErrorNumber($dbBatchJob->getErrNumber());
     $entryDistribution->setErrorDescription($dbBatchJob->getMessage());
     $entryDistribution->setStatus(EntryDistributionStatus::ERROR_UPDATING);
     $entryDistribution->setDirtyStatus(null);
     $entryDistribution->save();
     return $dbBatchJob;
 }
 /**
  * @param EntryDistribution $entryDistribution
  * @param DistributionProfile $distributionProfile
  * @return BatchJob
  */
 protected static function addSubmitUpdateJob(EntryDistribution $entryDistribution, DistributionProfile $distributionProfile)
 {
     if ($entryDistribution->getStatus() == EntryDistributionStatus::UPDATING) {
         return null;
     }
     $entryDistribution->setStatus(EntryDistributionStatus::UPDATING);
     $entryDistribution->setDirtyStatus(null);
     if (!$entryDistribution->save()) {
         KalturaLog::err("Unable to save entry distribution [" . $entryDistribution->getId() . "] status");
         return null;
     }
     $dc = $distributionProfile->getRecommendedDcForExecute();
     if (is_null($dc)) {
         $dc = kDataCenterMgr::getCurrentDcId();
     }
     $jobType = ContentDistributionPlugin::getBatchJobTypeCoreValue(ContentDistributionBatchJobType::DISTRIBUTION_UPDATE);
     if ($distributionProfile->getProvider()->isLocalFileRequired($jobType)) {
         $readyForSubmit = self::prepareDistributionJob($entryDistribution, $distributionProfile, $dc);
         if (!$readyForSubmit) {
             $entryDistribution->setStatus(EntryDistributionStatus::IMPORT_UPDATING);
             $entryDistribution->save();
             return null;
         }
     }
     $jobData = new kDistributionUpdateJobData();
     $jobData->setDistributionProfileId($entryDistribution->getDistributionProfileId());
     $jobData->setEntryDistributionId($entryDistribution->getId());
     $jobData->setProviderType($distributionProfile->getProviderType());
     $jobData->setRemoteId($entryDistribution->getRemoteId());
     $jobData->setMediaFiles($entryDistribution->getMediaFiles());
     $batchJob = new BatchJob();
     $batchJob->setDc($dc);
     $batchJob->setEntryId($entryDistribution->getEntryId());
     $batchJob->setPartnerId($entryDistribution->getPartnerId());
     $jobSubType = $distributionProfile->getProviderType();
     return kJobsManager::addJob($batchJob, $jobData, $jobType, $jobSubType);
 }
 /**
  * @param EntryDistribution $entryDistribution
  * @param DistributionProfile $distributionProfile
  * @return BatchJob
  */
 protected static function addSubmitUpdateJob(EntryDistribution $entryDistribution, DistributionProfile $distributionProfile)
 {
     $jobData = new kDistributionUpdateJobData();
     $jobData->setDistributionProfileId($entryDistribution->getDistributionProfileId());
     $jobData->setEntryDistributionId($entryDistribution->getId());
     $jobData->setProviderType($distributionProfile->getProviderType());
     $jobData->setRemoteId($entryDistribution->getRemoteId());
     $jobData->setMediaFiles($entryDistribution->getMediaFiles());
     $batchJob = new BatchJob();
     $batchJob->setEntryId($entryDistribution->getEntryId());
     $batchJob->setPartnerId($entryDistribution->getPartnerId());
     $jobType = ContentDistributionPlugin::getBatchJobTypeCoreValue(ContentDistributionBatchJobType::DISTRIBUTION_UPDATE);
     $jobSubType = $distributionProfile->getProviderType();
     return kJobsManager::addJob($batchJob, $jobData, $jobType, $jobSubType);
 }