/** * @param BatchJob $dbBatchJob * @param kExtractMediaJobData $data * @param BatchJob $twinJob * @return BatchJob */ public static function handleExtractMediaClosed(BatchJob $dbBatchJob, kExtractMediaJobData $data, BatchJob $twinJob = null) { KalturaLog::debug("Extract media closed"); if ($dbBatchJob->getAbort()) { return $dbBatchJob; } $rootBatchJob = $dbBatchJob->getRootJob(); if (!$rootBatchJob) { return $dbBatchJob; } if ($twinJob) { // copy media info $twinData = $twinJob->getData(); if ($twinData->getMediaInfoId()) { $twinMediaInfo = mediaInfoPeer::retrieveByPK($twinData->getMediaInfoId()); if ($twinMediaInfo) { $mediaInfo = $twinMediaInfo->copy(); $mediaInfo->setFlavorAssetId($data->getFlavorAssetId()); $mediaInfo = kBatchManager::addMediaInfo($mediaInfo); $data->setMediaInfoId($mediaInfo->getId()); $dbBatchJob->setData($data); $dbBatchJob->save(); } } } if ($dbBatchJob->getStatus() == BatchJob::BATCHJOB_STATUS_FINISHED) { $entry = $dbBatchJob->getEntry(); if ($entry->getStatus() < entryStatus::READY) { kBatchManager::updateEntry($dbBatchJob, entryStatus::PRECONVERT); } } switch ($dbBatchJob->getJobSubType()) { case mediaInfo::ASSET_TYPE_ENTRY_INPUT: if ($rootBatchJob->getJobType() == BatchJobType::CONVERT_PROFILE) { $conversionsCreated = kBusinessPreConvertDL::decideProfileConvert($dbBatchJob, $rootBatchJob, $data->getMediaInfoId()); if ($conversionsCreated) { // handle the source flavor as if it was converted, makes the entry ready according to ready behavior rules $currentFlavorAsset = flavorAssetPeer::retrieveById($data->getFlavorAssetId()); if ($currentFlavorAsset) { $dbBatchJob = kBusinessPostConvertDL::handleConvertFinished($dbBatchJob, $currentFlavorAsset); } } } break; case mediaInfo::ASSET_TYPE_FLAVOR_INPUT: if ($rootBatchJob->getJobType() == BatchJobType::REMOTE_CONVERT) { $remoteConvertData = $rootBatchJob->getData(); $errDescription = null; $syncKey = null; // TODO - how to get or create the sync key? $newConvertJob = kBusinessPreConvertDL::decideFlavorConvert($syncKey, $remoteConvertData->getFlavorParamsOutputId(), $errDescription, $remoteConvertData->getMediaInfoId(), $dbBatchJob); if (!$newConvertJob) { kJobsManager::failBatchJob($rootBatchJob); } } break; default: // currently do nothing break; } return $dbBatchJob; }
/** * batch addMediaInfoAction action saves a media info object * * @action addMediaInfo * @param KalturaMediaInfo $mediaInfo * @return KalturaMediaInfo */ function addMediaInfoAction(KalturaMediaInfo $mediaInfo) { $mediaInfoDb = null; $flavorAsset = null; if ($mediaInfo->flavorAssetId) { $flavorAsset = flavorAssetPeer::retrieveById($mediaInfo->flavorAssetId); $mediaInfoDb = mediaInfoPeer::retrieveByFlavorAssetId($mediaInfo->flavorAssetId); if ($mediaInfoDb && $mediaInfoDb->getFlavorAssetVersion() == $flavorAsset->getVersion()) { $mediaInfoDb = $mediaInfo->toUpdatableObject($mediaInfoDb); } else { $mediaInfoDb = null; } } if (!$mediaInfoDb) { $mediaInfoDb = $mediaInfo->toInsertableObject(); } if ($flavorAsset) { $mediaInfoDb->setFlavorAssetVersion($flavorAsset->getVersion()); } $mediaInfoDb = kBatchManager::addMediaInfo($mediaInfoDb); $mediaInfo->fromObject($mediaInfoDb); return $mediaInfo; }
/** * batch addMediaInfoAction action saves a media info object * * @action addMediaInfo * @param KalturaMediaInfo $mediaInfo * @return KalturaMediaInfo * @throws KalturaErrors::FLAVOR_ASSET_ID_NOT_FOUND */ function addMediaInfoAction(KalturaMediaInfo $mediaInfo) { $mediaInfoDb = null; $flavorAsset = null; if ($mediaInfo->flavorAssetId) { $flavorAsset = assetPeer::retrieveByIdNoFilter($mediaInfo->flavorAssetId); if (!$flavorAsset) { throw new KalturaAPIException(KalturaErrors::FLAVOR_ASSET_ID_NOT_FOUND, $mediaInfo->flavorAssetId); } $mediaInfoDb = mediaInfoPeer::retrieveByFlavorAssetId($mediaInfo->flavorAssetId); if ($mediaInfoDb && $mediaInfoDb->getFlavorAssetVersion() == $flavorAsset->getVersion()) { $mediaInfoDb = $mediaInfo->toUpdatableObject($mediaInfoDb); } else { $mediaInfoDb = null; } } if (!$mediaInfoDb) { $mediaInfoDb = $mediaInfo->toInsertableObject(); } if ($flavorAsset) { $mediaInfoDb->setFlavorAssetVersion($flavorAsset->getVersion()); } $mediaInfoDb = kBatchManager::addMediaInfo($mediaInfoDb); $mediaInfo->fromObject($mediaInfoDb); return $mediaInfo; }
/** * @param BatchJob $dbBatchJob * @param kExtractMediaJobData $data * @param BatchJob $twinJob * @return BatchJob */ public static function handleExtractMediaClosed(BatchJob $dbBatchJob, kExtractMediaJobData $data, BatchJob $twinJob = null) { KalturaLog::debug("Extract media closed"); if ($dbBatchJob->getAbort()) { return $dbBatchJob; } $rootBatchJob = $dbBatchJob->getRootJob(); if (!$rootBatchJob) { return $dbBatchJob; } if ($twinJob) { // copy media info $twinData = $twinJob->getData(); if ($twinData->getMediaInfoId()) { $twinMediaInfo = mediaInfoPeer::retrieveByPK($twinData->getMediaInfoId()); if ($twinMediaInfo) { $mediaInfo = $twinMediaInfo->copy(); $mediaInfo->setFlavorAssetId($data->getFlavorAssetId()); $mediaInfo = kBatchManager::addMediaInfo($mediaInfo); $data->setMediaInfoId($mediaInfo->getId()); $dbBatchJob->setData($data); $dbBatchJob->save(); } } } if ($dbBatchJob->getStatus() == BatchJob::BATCHJOB_STATUS_FINISHED) { $entry = entryPeer::retrieveByPKNoFilter($dbBatchJob->getEntryId()); if ($entry->getStatus() != entryStatus::READY && $entry->getStatus() != entryStatus::DELETED) { kBatchManager::updateEntry($dbBatchJob->getEntryId(), entryStatus::PRECONVERT); } } if ($rootBatchJob->getJobType() == BatchJobType::CONVERT_PROFILE) { kBusinessPreConvertDL::decideProfileConvert($dbBatchJob, $rootBatchJob, $data->getMediaInfoId()); // handle the source flavor as if it was converted, makes the entry ready according to ready behavior rules $currentFlavorAsset = assetPeer::retrieveById($data->getFlavorAssetId()); if ($currentFlavorAsset && $currentFlavorAsset->getStatus() == asset::FLAVOR_ASSET_STATUS_READY) { $dbBatchJob = kBusinessPostConvertDL::handleConvertFinished($dbBatchJob, $currentFlavorAsset); } } return $dbBatchJob; }