/** * Get download URL for the asset * * @action getUrl * @param string $id * @param int $storageId * @param KalturaThumbParams $thumbParams * @return string * @throws KalturaErrors::THUMB_ASSET_ID_NOT_FOUND * @throws KalturaErrors::THUMB_ASSET_IS_NOT_READY */ public function getUrlAction($id, $storageId = null, KalturaThumbParams $thumbParams = null) { $assetDb = assetPeer::retrieveById($id); if (!$assetDb || !$assetDb instanceof thumbAsset) { throw new KalturaAPIException(KalturaErrors::THUMB_ASSET_ID_NOT_FOUND, $id); } $entry = entryPeer::retrieveByPK($assetDb->getEntryId()); if (!$entry) { //we will throw thumb asset not found, as the user is not entitled, and should not know that the entry exists or entry does not exist. throw new KalturaAPIException(KalturaErrors::THUMB_ASSET_ID_NOT_FOUND, $id); } if ($assetDb->getStatus() != asset::ASSET_STATUS_READY) { throw new KalturaAPIException(KalturaErrors::THUMB_ASSET_IS_NOT_READY); } $securyEntryHelper = new KSecureEntryHelper($entry, kCurrentContext::$ks, null, ContextType::THUMBNAIL); $securyEntryHelper->validateAccessControl(); return $assetDb->getThumbnailUrl($securyEntryHelper, $storageId, $thumbParams); }
/** * Serves thumbnail by its id * * @action serve * @param string $thumbAssetId * @param int $version * @return file * * @throws KalturaErrors::THUMB_ASSET_IS_NOT_READY * @throws KalturaErrors::THUMB_ASSET_ID_NOT_FOUND */ public function serveAction($thumbAssetId, $version = null) { if (!kCurrentContext::$ks) { $thumbAsset = kCurrentContext::initPartnerByAssetId($thumbAssetId); if (!$thumbAsset || $thumbAsset->getStatus() == asset::ASSET_STATUS_DELETED) { throw new KalturaAPIException(KalturaErrors::THUMB_ASSET_ID_NOT_FOUND, $thumbAssetId); } // enforce entitlement kEntitlementUtils::initEntitlementEnforcement(); } else { $thumbAsset = assetPeer::retrieveById($thumbAssetId); } if (!$thumbAsset || !$thumbAsset instanceof thumbAsset) { throw new KalturaAPIException(KalturaErrors::THUMB_ASSET_ID_NOT_FOUND, $thumbAssetId); } $entry = entryPeer::retrieveByPK($thumbAsset->getEntryId()); if (!$entry) { //we will throw thumb asset not found, as the user is not entitled, and should not know that the entry exists. throw new KalturaAPIException(KalturaErrors::THUMB_ASSET_ID_NOT_FOUND, $thumbAssetId); } $securyEntryHelper = new KSecureEntryHelper($entry, kCurrentContext::$ks, null, accessControlContextType::THUMBNAIL); $securyEntryHelper->validateAccessControl(); $ext = $thumbAsset->getFileExt(); if (is_null($ext)) { $ext = 'jpg'; } $fileName = $thumbAsset->getEntryId() . "_" . $thumbAsset->getId() . ".{$ext}"; return $this->serveAsset($thumbAsset, $fileName, $version); }
/** * Serves thumbnail by its id * * @action serve * @param string $thumbAssetId * @param int $version * @param KalturaThumbParams $thumbParams * @param KalturaThumbnailServeOptions $options * @return file * * @throws KalturaErrors::THUMB_ASSET_IS_NOT_READY * @throws KalturaErrors::THUMB_ASSET_ID_NOT_FOUND */ public function serveAction($thumbAssetId, $version = null, KalturaThumbParams $thumbParams = null, KalturaThumbnailServeOptions $options = null) { if (!kCurrentContext::$ks) { $thumbAsset = kCurrentContext::initPartnerByAssetId($thumbAssetId); if (!$thumbAsset || $thumbAsset->getStatus() == asset::ASSET_STATUS_DELETED) { throw new KalturaAPIException(KalturaErrors::THUMB_ASSET_ID_NOT_FOUND, $thumbAssetId); } // enforce entitlement $this->setPartnerFilters(kCurrentContext::getCurrentPartnerId()); kEntitlementUtils::initEntitlementEnforcement(); } else { $thumbAsset = assetPeer::retrieveById($thumbAssetId); } if (!$thumbAsset || !$thumbAsset instanceof thumbAsset) { throw new KalturaAPIException(KalturaErrors::THUMB_ASSET_ID_NOT_FOUND, $thumbAssetId); } $entry = entryPeer::retrieveByPK($thumbAsset->getEntryId()); if (!$entry) { //we will throw thumb asset not found, as the user is not entitled, and should not know that the entry exists. throw new KalturaAPIException(KalturaErrors::THUMB_ASSET_ID_NOT_FOUND, $thumbAssetId); } $securyEntryHelper = new KSecureEntryHelper($entry, kCurrentContext::$ks, null, ContextType::THUMBNAIL); $securyEntryHelper->validateAccessControl(); $ext = $thumbAsset->getFileExt(); if (is_null($ext)) { $ext = 'jpg'; } $fileName = $thumbAsset->getEntryId() . "_" . $thumbAsset->getId() . ".{$ext}"; if (!$thumbParams) { if ($options && $options->download) { header("Content-Disposition: attachment; filename=\"{$fileName}\""); } return $this->serveAsset($thumbAsset, $fileName, $version); } $thumbParams->validate(); $syncKey = $thumbAsset->getSyncKey(asset::FILE_SYNC_ASSET_SUB_TYPE_ASSET, $version); if (!kFileSyncUtils::fileSync_exists($syncKey)) { throw new KalturaAPIException(KalturaErrors::FILE_DOESNT_EXIST); } list($fileSync, $local) = kFileSyncUtils::getReadyFileSyncForKey($syncKey, true, false); /* @var $fileSync FileSync */ if (!$local) { if (!in_array($fileSync->getDc(), kDataCenterMgr::getDcIds())) { throw new KalturaAPIException(KalturaErrors::FILE_DOESNT_EXIST); } $remoteUrl = kDataCenterMgr::getRedirectExternalUrl($fileSync); KalturaLog::info("Redirecting to [{$remoteUrl}]"); header("Location: {$remoteUrl}"); die; } $filePath = $fileSync->getFullPath(); $thumbVersion = $thumbAsset->getId() . '_' . $version; $tempThumbPath = myEntryUtils::resizeEntryImage($entry, $thumbVersion, $thumbParams->width, $thumbParams->height, $thumbParams->cropType, $thumbParams->backgroundColor, null, $thumbParams->quality, $thumbParams->cropX, $thumbParams->cropY, $thumbParams->cropWidth, $thumbParams->cropHeight, -1, 0, -1, $filePath, $thumbParams->density, $thumbParams->stripProfiles, null); if ($options && $options->download) { header("Content-Disposition: attachment; filename=\"{$fileName}\""); } $mimeType = kFile::mimeType($tempThumbPath); return $this->dumpFile($tempThumbPath, $mimeType); }