public static function getSearchData(BaseObject $object) { if (class_exists('ContentDistributionSphinxPlugin')) { if ($object instanceof entry) { return array(ContentDistributionSphinxPlugin::getSphinxFieldName(self::SPHINX_EXPANDER_FIELD_DATA) => kContentDistributionManager::getEntrySearchValues($object)); } } return null; }
/** * creates all required jobs according to entry distribution dirty flags * * @action createRequiredJobs */ function createRequiredJobsAction() { // serach all records that their next report time arrived $criteria = KalturaCriteria::create(EntryDistributionPeer::OM_CLASS); $criteria->add(EntryDistributionPeer::NEXT_REPORT, time(), Criteria::LESS_EQUAL); $entryDistributions = EntryDistributionPeer::doSelect($criteria); foreach ($entryDistributions as $entryDistribution) { $distributionProfile = DistributionProfilePeer::retrieveByPK($entryDistribution->getDistributionProfileId()); if ($distributionProfile) { kContentDistributionManager::submitFetchEntryDistributionReport($entryDistribution, $distributionProfile); } else { KalturaLog::err("Distribution profile [" . $entryDistribution->getDistributionProfileId() . "] not found for entry distribution [" . $entryDistribution->getId() . "]"); } } // serach all records that arrived their sunrise time and requires submittion $criteria = KalturaCriteria::create(EntryDistributionPeer::OM_CLASS); $criteria->add(EntryDistributionPeer::DIRTY_STATUS, EntryDistributionDirtyStatus::SUBMIT_REQUIRED); $criteria->add(EntryDistributionPeer::SUNRISE, time(), Criteria::LESS_EQUAL); $entryDistributions = EntryDistributionPeer::doSelect($criteria); foreach ($entryDistributions as $entryDistribution) { $distributionProfile = DistributionProfilePeer::retrieveByPK($entryDistribution->getDistributionProfileId()); if ($distributionProfile) { kContentDistributionManager::submitAddEntryDistribution($entryDistribution, $distributionProfile); } else { KalturaLog::err("Distribution profile [" . $entryDistribution->getDistributionProfileId() . "] not found for entry distribution [" . $entryDistribution->getId() . "]"); } } // serach all records that arrived their sunrise time and requires enable $criteria = KalturaCriteria::create(EntryDistributionPeer::OM_CLASS); $criteria->add(EntryDistributionPeer::DIRTY_STATUS, EntryDistributionDirtyStatus::ENABLE_REQUIRED); $criteria->add(EntryDistributionPeer::SUNRISE, time(), Criteria::LESS_EQUAL); $entryDistributions = EntryDistributionPeer::doSelect($criteria); foreach ($entryDistributions as $entryDistribution) { $distributionProfile = DistributionProfilePeer::retrieveByPK($entryDistribution->getDistributionProfileId()); if ($distributionProfile) { kContentDistributionManager::submitEnableEntryDistribution($entryDistribution, $distributionProfile); } else { KalturaLog::err("Distribution profile [" . $entryDistribution->getDistributionProfileId() . "] not found for entry distribution [" . $entryDistribution->getId() . "]"); } } // serach all records that arrived their sunset time and requires deletion $criteria = KalturaCriteria::create(EntryDistributionPeer::OM_CLASS); $criteria->add(EntryDistributionPeer::DIRTY_STATUS, EntryDistributionDirtyStatus::DELETE_REQUIRED); $criteria->add(EntryDistributionPeer::SUNSET, time(), Criteria::LESS_EQUAL); $entryDistributions = EntryDistributionPeer::doSelect($criteria); foreach ($entryDistributions as $entryDistribution) { $distributionProfile = DistributionProfilePeer::retrieveByPK($entryDistribution->getDistributionProfileId()); if ($distributionProfile) { kContentDistributionManager::submitDeleteEntryDistribution($entryDistribution, $distributionProfile); } else { KalturaLog::err("Distribution profile [" . $entryDistribution->getDistributionProfileId() . "] not found for entry distribution [" . $entryDistribution->getId() . "]"); } } // serach all records that arrived their sunset time and requires disable $criteria = KalturaCriteria::create(EntryDistributionPeer::OM_CLASS); $criteria->add(EntryDistributionPeer::DIRTY_STATUS, EntryDistributionDirtyStatus::DISABLE_REQUIRED); $criteria->add(EntryDistributionPeer::SUNSET, time(), Criteria::LESS_EQUAL); $entryDistributions = EntryDistributionPeer::doSelect($criteria); foreach ($entryDistributions as $entryDistribution) { $distributionProfile = DistributionProfilePeer::retrieveByPK($entryDistribution->getDistributionProfileId()); if ($distributionProfile) { kContentDistributionManager::submitDisableEntryDistribution($entryDistribution, $distributionProfile); } else { KalturaLog::err("Distribution profile [" . $entryDistribution->getDistributionProfileId() . "] not found for entry distribution [" . $entryDistribution->getId() . "]"); } } }
/** * @param asset $asset */ public static function onAssetReadyOrDeleted(asset $asset) { if (!ContentDistributionPlugin::isAllowedPartner($asset->getPartnerId())) { KalturaLog::log("Partner [" . $asset->getPartnerId() . "] is not allowed"); return true; } $entry = $asset->getentry(); if (!$entry) { KalturaLog::log("Entry [" . $asset->getEntryId() . "] not found"); return true; } $entryDistributions = EntryDistributionPeer::retrieveByEntryId($asset->getEntryId()); foreach ($entryDistributions as $entryDistribution) { $distributionProfileId = $entryDistribution->getDistributionProfileId(); $distributionProfile = DistributionProfilePeer::retrieveByPK($distributionProfileId); if (!$distributionProfile) { KalturaLog::log("Entry distribution [" . $entryDistribution->getId() . "] profile [{$distributionProfileId}] not found"); continue; } if ($entryDistribution->getStatus() == EntryDistributionStatus::QUEUED || $entryDistribution->getStatus() == EntryDistributionStatus::PENDING) { $listChanged = kContentDistributionManager::assignFlavorAssets($entryDistribution, $entry, $distributionProfile); $listChanged = $listChanged | kContentDistributionManager::assignThumbAssets($entryDistribution, $entry, $distributionProfile); $listChanged = $listChanged | kContentDistributionManager::assignAssets($entryDistribution, $entry, $distributionProfile); if (!$listChanged) { KalturaLog::log("Entry distribution [" . $entryDistribution->getId() . "] asset lists didn't change"); continue; } $validationErrors = $distributionProfile->validateForSubmission($entryDistribution, DistributionAction::SUBMIT); $entryDistribution->setValidationErrorsArray($validationErrors); $entryDistribution->save(); if ($entryDistribution->getStatus() == EntryDistributionStatus::QUEUED) { if ($entryDistribution->getDirtyStatus() != EntryDistributionDirtyStatus::SUBMIT_REQUIRED) { self::submitAddEntryDistribution($entryDistribution, $distributionProfile); } } } // submit if ($entryDistribution->getStatus() == EntryDistributionStatus::READY || $entryDistribution->getStatus() == EntryDistributionStatus::ERROR_UPDATING) { $distributionProvider = $distributionProfile->getProvider(); if (!$distributionProvider) { KalturaLog::log("Entry distribution [" . $entryDistribution->getId() . "] provider not found"); continue; } if (!$distributionProvider->isUpdateEnabled() || !$distributionProvider->isMediaUpdateEnabled()) { KalturaLog::log("Entry distribution [" . $entryDistribution->getId() . "] provider [" . $distributionProvider->getName() . "] does not support update"); continue; } $listChanged = kContentDistributionManager::assignFlavorAssets($entryDistribution, $entry, $distributionProfile); $listChanged = $listChanged | kContentDistributionManager::assignThumbAssets($entryDistribution, $entry, $distributionProfile); $listChanged = $listChanged | kContentDistributionManager::assignAssets($entryDistribution, $entry, $distributionProfile); if (!$listChanged) { KalturaLog::log("Entry distribution [" . $entryDistribution->getId() . "] asset lists didn't change"); continue; } $validationErrors = $distributionProfile->validateForSubmission($entryDistribution, DistributionAction::UPDATE); $entryDistribution->setValidationErrorsArray($validationErrors); $entryDistribution->save(); if (!count($validationErrors) && $distributionProfile->getUpdateEnabled() == DistributionProfileActionStatus::AUTOMATIC) { self::submitUpdateEntryDistribution($entryDistribution, $distributionProfile); } else { KalturaLog::log("Entry distribution [" . $entryDistribution->getId() . "] should not be updated automatically"); $entryDistribution->setDirtyStatus(EntryDistributionDirtyStatus::UPDATE_REQUIRED); $entryDistribution->save(); continue; } } // update } return true; }
/** * Return textual search data to be associated with the object * * @param BaseObject $object * @return string */ public static function getSearchData(BaseObject $object) { if ($object instanceof entry) { return kContentDistributionManager::getEntrySearchValues($object); } return null; }
protected static function assignAssetsAndValidateForSubmission(EntryDistribution $entryDistribution, entry $entry, DistributionProfile $distributionProfile, $action) { $listChanged = kContentDistributionManager::assignFlavorAssets($entryDistribution, $entry, $distributionProfile); $listChanged = $listChanged | kContentDistributionManager::assignThumbAssets($entryDistribution, $entry, $distributionProfile); $listChanged = $listChanged | kContentDistributionManager::assignAssets($entryDistribution, $entry, $distributionProfile); if (!$listChanged) { KalturaLog::log("Entry distribution [" . $entryDistribution->getId() . "] asset lists didn't change"); } $validationErrors = $distributionProfile->validateForSubmission($entryDistribution, $action); $entryDistribution->setValidationErrorsArray($validationErrors); $entryDistribution->save(); return $listChanged; }
/** * Retries last submit action * * @action retrySubmit * @param int $id * @return KalturaEntryDistribution * @throws ContentDistributionErrors::ENTRY_DISTRIBUTION_NOT_FOUND * @throws ContentDistributionErrors::DISTRIBUTION_PROFILE_NOT_FOUND * @throws ContentDistributionErrors::DISTRIBUTION_PROFILE_DISABLED */ function retrySubmitAction($id) { $dbEntryDistribution = EntryDistributionPeer::retrieveByPK($id); if (!$dbEntryDistribution) { throw new KalturaAPIException(ContentDistributionErrors::ENTRY_DISTRIBUTION_NOT_FOUND, $id); } $distributionProfileId = $dbEntryDistribution->getDistributionProfileId(); $dbDistributionProfile = DistributionProfilePeer::retrieveByPK($distributionProfileId); if (!$dbDistributionProfile) { throw new KalturaAPIException(ContentDistributionErrors::DISTRIBUTION_PROFILE_NOT_FOUND, $distributionProfileId); } if ($dbDistributionProfile->getStatus() == DistributionProfileStatus::DISABLED) { throw new KalturaAPIException(ContentDistributionErrors::DISTRIBUTION_PROFILE_DISABLED, $entryDistribution->distributionProfileId); } switch ($dbEntryDistribution->getStatus()) { case EntryDistributionStatus::QUEUED: case EntryDistributionStatus::SUBMITTING: case EntryDistributionStatus::ERROR_SUBMITTING: kContentDistributionManager::submitAddEntryDistribution($dbEntryDistribution, $dbDistributionProfile, false); $dbEntryDistribution->reload(); break; case EntryDistributionStatus::UPDATING: case EntryDistributionStatus::ERROR_UPDATING: kContentDistributionManager::submitUpdateEntryDistribution($dbEntryDistribution, $dbDistributionProfile); $dbEntryDistribution->reload(); break; case EntryDistributionStatus::DELETING: case EntryDistributionStatus::ERROR_DELETING: kContentDistributionManager::submitDeleteEntryDistribution($dbEntryDistribution, $dbDistributionProfile); $dbEntryDistribution->reload(); break; case EntryDistributionStatus::PENDING: case EntryDistributionStatus::READY: case EntryDistributionStatus::DELETED: break; } $entryDistribution = new KalturaEntryDistribution(); $entryDistribution->fromObject($dbEntryDistribution, $this->getResponseProfile()); return $entryDistribution; }
public function getCondition() { if ($this->condition) { return $this->condition; } $conditions = array(); if (!is_null($this->noDistributionProfiles)) { if ($this->noDistributionProfiles) { return kContentDistributionManager::getSearchStringNoDistributionProfiles(); } } if (!is_null($this->distributionProfileId)) { $conditions[] = '"' . kContentDistributionManager::getSearchStringDistributionProfile($this->distributionProfileId) . '"'; } else { $conditions[] = '"' . kContentDistributionManager::getSearchStringDistributionProfile() . '"'; } if (!is_null($this->distributionSunStatus)) { $conditions[] = '"' . kContentDistributionManager::getSearchStringDistributionSunStatus($this->distributionSunStatus, $this->distributionProfileId, false) . '"'; } if (!is_null($this->entryDistributionFlag)) { $conditions[] = '"' . kContentDistributionManager::getSearchStringDistributionFlag($this->entryDistributionFlag, $this->distributionProfileId, false) . '"'; } if (!is_null($this->entryDistributionStatus)) { $conditions[] = '"' . kContentDistributionManager::getSearchStringDistributionStatus($this->entryDistributionStatus, $this->distributionProfileId, false) . '"'; } if (!is_null($this->hasEntryDistributionValidationErrors)) { if ($this->hasEntryDistributionValidationErrors) { $conditions[] = '"' . kContentDistributionManager::getSearchStringDistributionHasValidationError($this->distributionProfileId, false) . '"'; } else { $conditions[] = kContentDistributionManager::getSearchStringDistributionHasNoValidationError($this->distributionProfileId); } } if (!is_null($this->entryDistributionValidationErrors)) { foreach ($this->entryDistributionValidationErrors as $validationError) { $conditions[] = '"' . kContentDistributionManager::getSearchStringDistributionValidationError($validationError, $this->distributionProfileId, false) . '"'; } } if (!count($conditions)) { return null; } $this->condition = implode(' ', $conditions); return $this->condition; }