/** * @param EntryDistribution $entryDistribution * @param entry $entry * @param DistributionProfile $distributionProfile * @return boolean true if the list of thumbnails modified */ public static function assignThumbAssets(EntryDistribution $entryDistribution, entry $entry, DistributionProfile $distributionProfile) { $thumbAssetsIds = array(); $thumbDimensions = $distributionProfile->getThumbDimensionsObjects(); $thumbDimensionsWithKeys = array(); foreach ($thumbDimensions as $thumbDimension) { $thumbDimensionsWithKeys[$thumbDimension->getKey()] = $thumbDimension; } $originalList = $entryDistribution->getThumbAssetIds(); // remove deleted thumb assets $assignedThumbAssetIds = $originalList; if ($assignedThumbAssetIds) { $thumbAssetsIds = explode(',', $assignedThumbAssetIds); $assignedThumbAssets = thumbAssetPeer::retrieveByIds($thumbAssetsIds); foreach ($assignedThumbAssets as $assignedThumbAsset) { $key = $assignedThumbAsset->getWidth() . 'x' . $assignedThumbAsset->getHeight(); if (isset($thumbDimensionsWithKeys[$key])) { unset($thumbDimensionsWithKeys[$key]); } } } // add new thumb assets $requiredThumbParamsIds = $distributionProfile->getAutoCreateThumbArray(); $thumbAssets = thumbAssetPeer::retreiveReadyByEntryId($entry->getId()); foreach ($thumbAssets as $thumbAsset) { if (in_array($thumbAsset->getFlavorParamsId(), $requiredThumbParamsIds)) { $thumbAssetsIds[] = $thumbAsset->getId(); KalturaLog::log("Assign thumb asset [" . $thumbAsset->getId() . "] from required thumbnail params ids"); continue; } $key = $thumbAsset->getWidth() . 'x' . $thumbAsset->getHeight(); if (isset($thumbDimensionsWithKeys[$key])) { unset($thumbDimensionsWithKeys[$key]); KalturaLog::log("Assign thumb asset [" . $thumbAsset->getId() . "] from dimension [{$key}]"); $thumbAssetsIds[] = $thumbAsset->getId(); } } $entryDistribution->setThumbAssetIds($thumbAssetsIds); return $originalList != $entryDistribution->getThumbAssetIds(); }
/** * @param EntryDistribution $entryDistribution * @param int $action enum from DistributionAction * @return array<kDistributionValidationError> */ public function validateForSubmission(EntryDistribution $entryDistribution, $action) { $validationErrors = array(); $requiredFlavorParamsIds = $this->getRequiredFlavorParamsIdsArray(); KalturaLog::log("Required Flavor Params Ids [" . print_r($requiredFlavorParamsIds, true) . "]"); $entryFlavorAssets = flavorAssetPeer::retreiveReadyByEntryId($entryDistribution->getEntryId()); $requiredFlavorParamsIdsKeys = array_flip($requiredFlavorParamsIds); foreach ($entryFlavorAssets as $entryFlavorAsset) { $flavorParamsId = $entryFlavorAsset->getFlavorParamsId(); if (isset($requiredFlavorParamsIdsKeys[$flavorParamsId])) { unset($requiredFlavorParamsIds[$requiredFlavorParamsIdsKeys[$flavorParamsId]]); } } foreach ($requiredFlavorParamsIds as $requiredFlavorParamsId) { $validationErrors[] = $this->createValidationError($action, DistributionErrorType::MISSING_FLAVOR, $requiredFlavorParamsId); } $requiredThumbDimensions = $this->getRequiredThumbDimensionsObjects(); KalturaLog::log("Required Thumb Dimensions [" . print_r($requiredThumbDimensions, true) . "]"); $entryThumbAssets = thumbAssetPeer::retreiveReadyByEntryId($entryDistribution->getEntryId()); $requiredThumbDimensionsWithKeys = array(); foreach ($requiredThumbDimensions as $requiredThumbDimension) { $key = $requiredThumbDimension->getKey(); $requiredThumbDimensionsWithKeys[$key] = $requiredThumbDimension; } foreach ($entryThumbAssets as $entryThumbAsset) { $key = $entryThumbAsset->getWidth() . 'x' . $entryThumbAsset->getHeight(); if (isset($requiredThumbDimensionsWithKeys[$key])) { unset($requiredThumbDimensionsWithKeys[$key]); } } foreach ($requiredThumbDimensionsWithKeys as $key => $requiredThumbDimension) { $validationErrors[] = $this->createValidationError($action, DistributionErrorType::MISSING_THUMBNAIL, $key); } return $validationErrors; }
/** * @param entry $entry * @param SimpleXMLElement $mrss * @param string $link * @param string $filterFlavors * @return SimpleXMLElement */ public static function getEntryMrssXml(entry $entry, SimpleXMLElement $mrss = null, $link = null, $fitlerByFlovorParams = null) { if (!$mrss) { $mrss = new SimpleXMLElement('<item/>'); } $mrss->addChild('entryId', $entry->getId()); $mrss->addChild('createdAt', $entry->getCreatedAt(null)); $mrss->addChild('title', self::stringToSafeXml($entry->getName())); $mrss->addChild('link', $link . $entry->getId()); $mrss->addChild('type', $entry->getType()); $mrss->addChild('licenseType', $entry->getLicenseType()); $mrss->addChild('userId', $entry->getPuserId(true)); $mrss->addChild('name', self::stringToSafeXml($entry->getName())); $mrss->addChild('description', self::stringToSafeXml($entry->getDescription())); $thumbnailUrl = $mrss->addChild('thumbnailUrl'); $thumbnailUrl->addAttribute('url', $entry->getThumbnailUrl()); $tags = $mrss->addChild('tags'); foreach (explode(',', $entry->getTags()) as $tag) { $tags->addChild('tag', self::stringToSafeXml($tag)); } $mrss->addChild('partnerData', self::stringToSafeXml($entry->getPartnerData())); $mrss->addChild('accessControlId', $entry->getAccessControlId()); $categories = explode(',', $entry->getCategories()); foreach ($categories as $category) { if ($category) { $mrss->addChild('category', self::stringToSafeXml($category)); } } if ($entry->getStartDate(null)) { $mrss->addChild('startDate', $entry->getStartDate(null)); } if ($entry->getEndDate(null)) { $mrss->addChild('endDate', $entry->getEndDate(null)); } switch ($entry->getType()) { case entryType::MEDIA_CLIP: self::appendMediaEntryMrss($entry, $mrss); break; case entryType::MIX: self::appendMixEntryMrss($entry, $mrss); break; case entryType::PLAYLIST: self::appendPlaylistEntryMrss($entry, $mrss); break; case entryType::DATA: self::appendDataEntryMrss($entry, $mrss); break; case entryType::LIVE_STREAM: self::appendLiveStreamEntryMrss($entry, $mrss); break; default: break; } $flavorAssets = flavorAssetPeer::retreiveReadyByEntryId($entry->getId()); foreach ($flavorAssets as $flavorAsset) { if (!is_null($fitlerByFlovorParams) && $flavorAsset->getFlavorParamsId() != $fitlerByFlovorParams) { continue; } $content = $mrss->addChild('content'); $content->addAttribute('url', self::getAssetUrl($flavorAsset)); $content->addAttribute('flavorAssetId', $flavorAsset->getId()); $content->addAttribute('isSource', $flavorAsset->getIsOriginal() ? 'true' : 'false'); $content->addAttribute('containerFormat', $flavorAsset->getContainerFormat()); $content->addAttribute('extension', $flavorAsset->getFileExt()); if (!is_null($flavorAsset->getFlavorParamsId())) { $content->addAttribute('flavorParamsId', $flavorAsset->getFlavorParamsId()); $flavorParams = flavorParamsPeer::retrieveByPK($flavorAsset->getFlavorParamsId()); if ($flavorParams) { $content->addAttribute('flavorParamsName', $flavorParams->getName()); $content->addAttribute('format', $flavorParams->getFormat()); $content->addAttribute('videoBitrate', $flavorParams->getVideoBitrate()); $content->addAttribute('videoCodec', $flavorParams->getVideoCodec()); $content->addAttribute('audioBitrate', $flavorParams->getAudioBitrate()); $content->addAttribute('audioCodec', $flavorParams->getAudioCodec()); $content->addAttribute('frameRate', $flavorParams->getFrameRate()); $content->addAttribute('height', $flavorParams->getHeight()); $content->addAttribute('width', $flavorParams->getWidth()); } } $tags = $content->addChild('tags'); foreach (explode(',', $flavorAsset->getTags()) as $tag) { $tags->addChild('tag', self::stringToSafeXml($tag)); } } $thumbAssets = thumbAssetPeer::retreiveReadyByEntryId($entry->getId()); foreach ($thumbAssets as $thumbAsset) { $thumbnail = $mrss->addChild('thumbnail'); $thumbnail->addAttribute('url', self::getAssetUrl($thumbAsset)); $thumbnail->addAttribute('thumbAssetId', $thumbAsset->getId()); $thumbnail->addAttribute('isDefault', $thumbAsset->hasTag(thumbParams::TAG_DEFAULT_THUMB) ? 'true' : 'false'); $thumbnail->addAttribute('format', $thumbAsset->getContainerFormat()); if ($thumbAsset->getFlavorParamsId()) { $thumbnail->addAttribute('thumbParamsId', $thumbAsset->getFlavorParamsId()); } $tags = $thumbnail->addChild('tags'); foreach (explode(',', $thumbAsset->getTags()) as $tag) { $tags->addChild('tag', self::stringToSafeXml($tag)); } } $mrssContributors = self::getMrssContributors(); if (count($mrssContributors)) { foreach ($mrssContributors as $mrssContributor) { $mrssContributor->contribute($entry, $mrss); } } return $mrss; }