function calculateUrgency(BatchJob $batchJob) { $flavorParamsId = $this->getFlavorParamsOutput()->getFlavorParamsId(); $isBulkupload = $batchJob->getBulkJobId() !== null; $readiness = null; if ($this->priority == 0) { self::calculatePriority($batchJob); } if ($this->priority == self::MIGRATION_FLAVOR_PRIORITY) { return BatchJobUrgencyType::MIGRATION_URGENCY; } // If you have no conversion profile, there is no poinr in this calculation if (is_null($this->conversionProfileId)) { return BatchJobUrgencyType::DEFAULT_URGENCY; } if ($batchJob->getObjectId() && $batchJob->getObjectType()) { $batchJobs = BatchJobPeer::retrieveByJobTypeAndObject($batchJob->getObjectId(), $batchJob->getObjectType(), $batchJob->getJobType(), $batchJob->getJobSubType()); if (count($batchJobs)) { return $batchJobs[0]->getLockInfo()->getUrgency() + 1; } } // a conversion job will be considered as required in one of the following cases: // 1. The flavor is required // 2. There are no required flavors and this is the flavor is optional with the minimal bitrate // 3. all flavors are set as READY_BEHAVIOR_NO_IMPACT. $allFlavorParamsIds = array(); $hasRequired = false; $allNoImpact = true; // Go over all flavors and decide on cases 1-3 $fpcps = flavorParamsConversionProfilePeer::retrieveByConversionProfile($this->conversionProfileId); foreach ($fpcps as $fpcp) { $allFlavorParamsIds[] = $fpcp->getFlavorParamsId(); if ($fpcp->getFlavorParamsId() == $flavorParamsId) { // Case 1 $readiness = $fpcp->getReadyBehavior(); } if ($fpcp->getReadyBehavior() == flavorParamsConversionProfile::READY_BEHAVIOR_REQUIRED) { // Case 2 $hasRequired = true; } if ($fpcp->getReadyBehavior() != flavorParamsConversionProfile::READY_BEHAVIOR_NO_IMPACT) { // Case 3 $allNoImpact = false; } } // Case 2 if (!$hasRequired && $readiness == flavorParamsConversionProfile::READY_BEHAVIOR_OPTIONAL) { $flvParamsMinBitrate = assetParamsPeer::retrieveMinimalBitrate($allFlavorParamsIds); if (!is_null($flvParamsMinBitrate) && $flvParamsMinBitrate->getId() == $flavorParamsId) { $readiness = flavorParamsConversionProfile::READY_BEHAVIOR_REQUIRED; } } // Case 3 if ($allNoImpact) { $readiness = flavorParamsConversionProfile::READY_BEHAVIOR_REQUIRED; } // Decide on the urgency by the readiness and the upload method if ($readiness == flavorParamsConversionProfile::READY_BEHAVIOR_REQUIRED) { return $isBulkupload ? BatchJobUrgencyType::REQUIRED_BULK_UPLOAD : BatchJobUrgencyType::REQUIRED_REGULAR_UPLOAD; } else { if ($readiness == flavorParamsConversionProfile::READY_BEHAVIOR_OPTIONAL) { return $isBulkupload ? BatchJobUrgencyType::OPTIONAL_BULK_UPLOAD : BatchJobUrgencyType::OPTIONAL_REGULAR_UPLOAD; } else { return BatchJobUrgencyType::DEFAULT_URGENCY; } } }