本文整理汇总了PHP中entry::getMediaType方法的典型用法代码示例。如果您正苦于以下问题:PHP entry::getMediaType方法的具体用法?PHP entry::getMediaType怎么用?PHP entry::getMediaType使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类entry
的用法示例。
在下文中一共展示了entry::getMediaType方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: entryCreated
/**
* @param entry $object
* @return bool true if should continue to the next consumer
*/
public function entryCreated(entry $object)
{
$mediaType = null;
if ($object->getType() == entryType::AUTOMATIC) {
KalturaLog::debug("entry id [" . $object->getId() . "] type [" . $object->getType() . "] source link [" . $object->getSourceLink() . "]");
$mediaType = $object->getMediaType();
if (isset(self::$fileExtensions[$mediaType])) {
$object->setType(entryType::DOCUMENT);
} elseif (is_null($mediaType) || $mediaType == entry::ENTRY_MEDIA_TYPE_ANY || $mediaType == entry::ENTRY_MEDIA_TYPE_AUTOMATIC) {
$this->setDocumentType($object);
}
}
if ($object->getType() != entryType::DOCUMENT) {
KalturaLog::debug("entry id [" . $object->getId() . "] type [" . $object->getType() . "]");
return true;
}
if (is_null($mediaType) || $mediaType == entry::ENTRY_MEDIA_TYPE_ANY || $mediaType == entry::ENTRY_MEDIA_TYPE_AUTOMATIC) {
$this->setDocumentType($object);
}
if ($object instanceof DocumentEntry) {
KalturaLog::debug("entry id [" . $object->getId() . "] already handled");
return true;
}
KalturaLog::debug("Handling object [" . get_class($object) . "] type [" . $object->getType() . "] id [" . $object->getId() . "] status [" . $object->getStatus() . "]");
if ($object->getConversionProfileId()) {
$object->setStatus(entryStatus::PRECONVERT);
$object->save();
}
return true;
}
示例2: serveHttp
/**
* @return kManifestRenderer
*/
private function serveHttp()
{
if ($this->entry->getType() != entryType::MEDIA_CLIP) {
KExternalErrors::dieError(KExternalErrors::INVALID_ENTRY_TYPE);
}
switch ($this->entry->getType()) {
case entryType::MEDIA_CLIP:
switch ($this->entry->getMediaType()) {
case entry::ENTRY_MEDIA_TYPE_IMAGE:
// TODO - create sequence manifest
break;
case entry::ENTRY_MEDIA_TYPE_VIDEO:
case entry::ENTRY_MEDIA_TYPE_AUDIO:
$flavors = $this->buildHttpFlavorsArray($duration, true);
$renderer = new kF4MManifestRenderer();
$renderer->entryId = $this->entryId;
$renderer->tokenizer = $this->tokenizer;
$renderer->flavors = $flavors;
$renderer->duration = $duration;
$renderer->mimeType = $this->getMimeType($flavors);
return $renderer;
}
default:
break;
}
KExternalErrors::dieError(KExternalErrors::INVALID_ENTRY_TYPE);
}
示例3: executeImpl
/**
* Executes addComment action, which returns a form enabling the insertion of a comment
* The request may include 1 fields: entry id.
*/
protected function executeImpl(kshow $kshow, entry &$entry)
{
$version = @$_REQUEST["version"];
// it's a path on the disk
if (kString::beginsWith($version, ".")) {
// someone is trying to hack in the system
return sfView::ERROR;
}
// in case we're making a roughcut out of a regular invite, we start from scratch
if ($entry->getMediaType() != entry::ENTRY_MEDIA_TYPE_SHOW || $entry->getDataPath($version) === null) {
$this->xml_content = "<xml></xml>";
return;
}
// fetch content of file from disk - it should hold the XML
$file_name = myContentStorage::getFSContentRootPath() . "/" . $entry->getDataPath($version);
//echo "[$file_name]";
if (kString::endsWith($file_name, "xml")) {
if (file_exists($file_name)) {
$this->xml_content = kFile::getFileContent($file_name);
// echo "[" . $this->xml_content . "]" ;
} else {
$this->xml_content = "<xml></xml>";
}
myMetadataUtils::updateEntryForPending($entry, $version, $this->xml_content);
} else {
return sfView::ERROR;
}
// this is NOT an xml file we are looking for !
}
示例4: appendMediaEntryMrss
/**
* @param entry $entry
* @param SimpleXMLElement $mrss
*/
protected static function appendMediaEntryMrss(entry $entry, SimpleXMLElement $mrss)
{
$media = $mrss->addChild('media');
$media->addChild('mediaType', $entry->getMediaType());
$media->addChild('duration', $entry->getLengthInMsecs());
$media->addChild('conversionProfileId', $entry->getConversionProfileId());
$media->addChild('flavorParamsIds', $entry->getFlavorParamsIds());
}
示例5: enforceAudioVideoEntry
private function enforceAudioVideoEntry()
{
if ($this->entry->getType() != entryType::MEDIA_CLIP) {
KExternalErrors::dieError(KExternalErrors::INVALID_ENTRY_TYPE);
}
if (!in_array($this->entry->getMediaType(), array(entry::ENTRY_MEDIA_TYPE_VIDEO, entry::ENTRY_MEDIA_TYPE_AUDIO))) {
KExternalErrors::dieError(KExternalErrors::INVALID_ENTRY_TYPE);
}
}
示例6: setContextDataFlavorAssets
private function setContextDataFlavorAssets($flavorTags)
{
if ($this->entry->getType() == entryType::PLAYLIST && $this->entry->getMediaType() == entry::ENTRY_MEDIA_TYPE_TEXT) {
list($entryIds, $durations, $mediaEntry) = myPlaylistUtils::executeStitchedPlaylist($this->entry);
if (!$mediaEntry) {
return;
}
$mediaEntryId = $mediaEntry->getId();
$this->msDuration = array_sum($durations);
} else {
$mediaEntryId = $this->entry->getId();
$this->msDuration = $this->entry->getLengthInMsecs();
}
$flavorParamsIds = null;
$flavorParamsNotIn = false;
if (!$this->isAdmin) {
foreach ($this->contextDataResult->getActions() as $action) {
if ($action->getType() == RuleActionType::BLOCK) {
//in case of block action do not set the list of flavors
return;
}
if ($action->getType() == RuleActionType::LIMIT_FLAVORS) {
/* @var $action kAccessControlLimitFlavorsAction */
$flavorParamsIds = explode(',', $action->getFlavorParamsIds());
$flavorParamsNotIn = $action->getIsBlockedList();
}
}
}
$flavorAssets = array();
if (is_null($this->asset)) {
if (count($flavorParamsIds)) {
$flavorAssets = assetPeer::retrieveReadyByEntryIdAndFlavorParams($mediaEntryId, $flavorParamsIds, $flavorParamsNotIn);
} else {
$flavorAssets = assetPeer::retrieveFlavorsByEntryIdAndStatus($mediaEntryId, null, array(flavorAsset::ASSET_STATUS_READY));
}
if ($mediaEntryId != $this->entry->getId()) {
// hack: setting the entry id of the flavors to the original playlist id
// since the player uses it in the playManifest url
foreach ($flavorAssets as $flavorAsset) {
$flavorAsset->setEntryId($this->entry->getId());
}
}
} else {
$flavorAllowed = true;
if (count($flavorParamsIds)) {
$flavorAllowed = $this->isFlavorAllowed($this->asset->getFlavorParamsId(), $flavorParamsIds, $flavorParamsNotIn);
}
if ($flavorAllowed) {
$flavorAssets[] = $this->asset;
}
}
$this->filterFlavorAssetsByTags($flavorAssets, $flavorTags);
}
示例7: entryHandled
public function entryHandled(entry $dbEntry)
{
$srcEntry = entryPeer::retrieveByPK($this->entryId);
if ($srcEntry->getType() == KalturaEntryType::MEDIA_CLIP && $dbEntry->getType() == KalturaEntryType::MEDIA_CLIP && $dbEntry->getMediaType() == KalturaMediaType::IMAGE) {
if ($dbEntry->getMediaType() == KalturaMediaType::IMAGE) {
$dbEntry->setDimensions($srcEntry->getWidth(), $srcEntry->getHeight());
$dbEntry->setMediaDate($srcEntry->getMediaDate(null));
$dbEntry->save();
} else {
$srcFlavorAsset = null;
if (is_null($this->flavorParamsId)) {
$srcFlavorAsset = assetPeer::retrieveOriginalByEntryId($this->entryId);
} else {
$srcFlavorAsset = assetPeer::retrieveByEntryIdAndParams($this->entryId, $this->flavorParamsId);
}
if ($srcFlavorAsset) {
$dbEntry->setDimensions($srcFlavorAsset->getWidth(), $srcFlavorAsset->getHeight());
$dbEntry->save();
}
}
}
return parent::entryHandled($dbEntry);
}
示例8: executeImpl
protected function executeImpl(kshow $kshow, entry &$entry)
{
if ($entry->getMediaType() == entry::ENTRY_MEDIA_TYPE_SHOW) {
$this->show_versions = array_reverse($entry->getAllversions());
} else {
$this->show_versions = array();
}
$this->producer = kuser::getKuserById($kshow->getProducerId());
$this->editor = $entry->getKuser();
$this->thumbnail = $entry ? $entry->getThumbnailPath() : "";
// is the logged-in-user is an admin or the producer or the show can always be published...
$likuser_id = $this->getLoggedInUserId();
$viewer_type = myKshowUtils::getViewerType($kshow, $likuser_id);
$this->entry = $entry ? $entry : new entry();
// create a dummy entry for the GUI
$this->can_publish = $viewer_type == KshowKuser::KSHOWKUSER_VIEWER_PRODUCER || $kshow->getCanPublish();
}
示例9: enforceAudioVideoEntry
private function enforceAudioVideoEntry()
{
switch ($this->entry->getType()) {
case entryType::MEDIA_CLIP:
if (!in_array($this->entry->getMediaType(), array(entry::ENTRY_MEDIA_TYPE_VIDEO, entry::ENTRY_MEDIA_TYPE_AUDIO))) {
KExternalErrors::dieError(KExternalErrors::INVALID_ENTRY_TYPE);
}
break;
case entryType::PLAYLIST:
if ($this->entry->getMediaType() != entry::ENTRY_MEDIA_TYPE_TEXT) {
KExternalErrors::dieError(KExternalErrors::INVALID_ENTRY_TYPE);
}
break;
default:
KExternalErrors::dieError(KExternalErrors::INVALID_ENTRY_TYPE);
}
}
示例10: executeImpl
public function executeImpl(kshow $kshow, entry &$entry)
{
$genericWidget = "";
$myspaceWidget = "";
$kshow_id = $kshow->getId();
$entry_id = $entry->getId();
if (!$kshow->getPartnerId() && !$this->forceViewPermissions($kshow, $kshow_id, false, false)) {
die;
}
$this->kshow_category = $kshow->getTypeText();
$this->kshow_description = $kshow->getDescription();
$this->kshow_name = $kshow->getName();
$this->kshow_tags = $kshow->getTags();
$kdata = @$_REQUEST["kdata"];
if ($kdata == "null") {
$kdata = "";
}
$this->widget_type = @$_REQUEST["widget_type"];
list($genericWidget, $myspaceWidget) = myKshowUtils::getEmbedPlayerUrl($kshow_id, $entry_id, false, $kdata);
if ($entry_id == 1002) {
$this->share_url = requestUtils::getHost() . "/index.php/corp/kalturaPromo";
} else {
if ($kdata) {
$this->share_url = myKshowUtils::getWidgetCmdUrl($kdata, "share");
} else {
$this->share_url = myKshowUtils::getUrl($kshow_id) . "&entry_id={$entry_id}";
}
}
//list($status, $kmediaType, $kmediaData) = myContentRender::createPlayerMedia($entry); // myContentRender class removed, old code
$status = $entry->getStatus();
$kmediaType = $entry->getMediaType();
$kmediaData = "";
$this->message = $kmediaType == entry::ENTRY_MEDIA_TYPE_TEXT ? $kmediaData : "";
$this->generic_embed_code = $genericWidget;
$this->myspace_embed_code = $myspaceWidget;
$this->thumbnail = $entry ? $entry->getBigThumbnailPath(true) : "";
$this->kuser = $entry->getKuser();
$this->entry = $entry;
}
示例11: serveHttp
private function serveHttp()
{
if ($this->entry->getType() != entryType::MEDIA_CLIP) {
KExternalErrors::dieError(KExternalErrors::INVALID_ENTRY_TYPE);
}
switch ($this->entry->getType()) {
case entryType::MEDIA_CLIP:
switch ($this->entry->getMediaType()) {
case entry::ENTRY_MEDIA_TYPE_IMAGE:
// TODO - create sequence manifest
break;
case entry::ENTRY_MEDIA_TYPE_VIDEO:
case entry::ENTRY_MEDIA_TYPE_AUDIO:
$duration = $this->entry->getDurationInt();
$flavors = $this->buildFlavorsArray($duration, true);
return $this->buildXml(self::PLAY_STREAM_TYPE_RECORDED, $flavors, 'video/x-flv', $duration);
}
default:
break;
}
KExternalErrors::dieError(KExternalErrors::INVALID_ENTRY_TYPE);
}
示例12: attachUrlResource
/**
* @param kUrlResource $resource
* @param entry $dbEntry
* @param asset $dbAsset
* @return asset
*/
protected function attachUrlResource(kUrlResource $resource, entry $dbEntry, asset $dbAsset = null)
{
if ($dbAsset instanceof flavorAsset) {
$dbEntry->setSource(KalturaSourceType::URL);
$dbEntry->save();
}
$url = $resource->getUrl();
if (!$resource->getForceAsyncDownload()) {
// TODO - move image handling to media service
if ($dbEntry->getMediaType() == KalturaMediaType::IMAGE) {
$entryFullPath = myContentStorage::getFSUploadsPath() . '/' . $dbEntry->getId() . '.jpg';
if (KCurlWrapper::getDataFromFile($url, $entryFullPath)) {
return $this->attachFile($entryFullPath, $dbEntry, $dbAsset);
}
KalturaLog::err("Failed downloading file[{$url}]");
$dbEntry->setStatus(entryStatus::ERROR_IMPORTING);
$dbEntry->save();
return null;
}
if ($dbAsset && !$dbAsset instanceof flavorAsset) {
$ext = pathinfo($url, PATHINFO_EXTENSION);
$entryFullPath = myContentStorage::getFSUploadsPath() . '/' . $dbEntry->getId() . '.' . $ext;
if (KCurlWrapper::getDataFromFile($url, $entryFullPath)) {
$dbAsset = $this->attachFile($entryFullPath, $dbEntry, $dbAsset);
return $dbAsset;
}
KalturaLog::err("Failed downloading file[{$url}]");
$dbAsset->setStatus(asset::FLAVOR_ASSET_STATUS_ERROR);
$dbAsset->save();
return null;
}
}
kJobsManager::addImportJob(null, $dbEntry->getId(), $this->getPartnerId(), $url, $dbAsset, null, $resource->getImportJobData());
return $dbAsset;
}
示例13: attachResource
/**
* @param kResource $resource
* @param entry $dbEntry
* @param asset $dbAsset
* @return asset
*/
protected function attachResource(kResource $resource, entry $dbEntry, asset $dbAsset = null)
{
switch ($resource->getType()) {
case 'kAssetsParamsResourceContainers':
// image entry doesn't support asset params
if ($dbEntry->getMediaType() == KalturaMediaType::IMAGE) {
throw new KalturaAPIException(KalturaErrors::RESOURCE_TYPE_NOT_SUPPORTED, get_class($resource));
}
return $this->attachAssetsParamsResourceContainers($resource, $dbEntry);
case 'kAssetParamsResourceContainer':
// image entry doesn't support asset params
if ($dbEntry->getMediaType() == KalturaMediaType::IMAGE) {
throw new KalturaAPIException(KalturaErrors::RESOURCE_TYPE_NOT_SUPPORTED, get_class($resource));
}
return $this->attachAssetParamsResourceContainer($resource, $dbEntry, $dbAsset);
case 'kUrlResource':
return $this->attachUrlResource($resource, $dbEntry, $dbAsset);
case 'kLocalFileResource':
return $this->attachLocalFileResource($resource, $dbEntry, $dbAsset);
case 'kLiveEntryResource':
return $this->attachLiveEntryResource($resource, $dbEntry, $dbAsset);
case 'kFileSyncResource':
return $this->attachFileSyncResource($resource, $dbEntry, $dbAsset);
case 'kRemoteStorageResource':
case 'kRemoteStorageResources':
return $this->attachRemoteStorageResource($resource, $dbEntry, $dbAsset);
case 'kOperationResource':
if ($dbEntry->getMediaType() == KalturaMediaType::IMAGE) {
throw new KalturaAPIException(KalturaErrors::RESOURCE_TYPE_NOT_SUPPORTED, get_class($resource));
}
return $this->attachOperationResource($resource, $dbEntry, $dbAsset);
default:
KalturaLog::err("Resource of type [" . get_class($resource) . "] is not supported");
$dbEntry->setStatus(entryStatus::ERROR_IMPORTING);
$dbEntry->save();
throw new KalturaAPIException(KalturaErrors::RESOURCE_TYPE_NOT_SUPPORTED, get_class($resource));
}
}
示例14: copyEntry
public static function copyEntry(entry $entry, Partner $toPartner = null, $dontCopyUsers = false)
{
KalturaLog::log("copyEntry - Copying entry [" . $entry->getId() . "] to partner [" . $toPartner->getId() . "]");
$newEntry = $entry->copy();
$newEntry->setIntId(null);
if ($toPartner instanceof Partner) {
$newEntry->setPartnerId($toPartner->getId());
$newEntry->setSubpId($toPartner->getId() * 100);
$newEntry->setAccessControlId($toPartner->getDefaultAccessControlId());
$flavorParamsStr = $entry->getFlavorParamsIds();
$flavorParams = explode(',', $flavorParamsStr);
$newFlavorParams = array();
foreach ($flavorParams as $flavorParamsId) {
$newFlavorParamsId = kObjectCopyHandler::getMappedId('flavorParams', $flavorParamsId);
if (is_null($newFlavorParamsId)) {
$newFlavorParamsId = $flavorParamsId;
}
$newFlavorParams[] = $newFlavorParamsId;
}
$newEntry->setFlavorParamsIds(implode(',', $newFlavorParams));
}
$newKuser = null;
if (!$dontCopyUsers) {
// copy the kuser (if the same puser id exists its kuser will be used)
kuserPeer::setUseCriteriaFilter(false);
$kuser = $entry->getKuser();
$newKuser = kuserPeer::createKuserForPartner($newEntry->getPartnerId(), $kuser->getPuserId());
$newEntry->setKuserId($newKuser->getId());
kuserPeer::setUseCriteriaFilter(true);
}
// copy the kshow
kshowPeer::setUseCriteriaFilter(false);
$kshow = $entry->getKshow();
if ($kshow) {
$newKshow = $kshow->copy();
$newKshow->setIntId(null);
$newKshow->setPartnerId($toPartner->getId());
$newKshow->setSubpId($toPartner->getId() * 100);
if ($newKuser) {
$newKshow->setProducerId($newKuser->getId());
}
$newKshow->save();
$newEntry->setKshowId($newKshow->getId());
}
kshowPeer::setUseCriteriaFilter(true);
// reset the statistics
myEntryUtils::resetEntryStatistics($newEntry);
// set the new partner id into the default category criteria filter
$defaultCategoryFilter = categoryPeer::getCriteriaFilter()->getFilter();
$oldPartnerId = $defaultCategoryFilter->get(categoryPeer::PARTNER_ID);
$defaultCategoryFilter->remove(categoryPeer::PARTNER_ID);
$defaultCategoryFilter->addAnd(categoryPeer::PARTNER_ID, $newEntry->getPartnerId());
// save the entry
$newEntry->save();
// restore the original partner id in the default category criteria filter
$defaultCategoryFilter->remove(categoryPeer::PARTNER_ID);
$defaultCategoryFilter->addAnd(categoryPeer::PARTNER_ID, $oldPartnerId);
KalturaLog::log("copyEntry - New entry [" . $newEntry->getId() . "] was created");
// for any type that does not require assets:
$shouldCopyDataForNonClip = $entry->getType() != entryType::MEDIA_CLIP;
$shouldCopyDataForClip = false;
// only images get their data copied
if ($entry->getType() == entryType::MEDIA_CLIP) {
if ($entry->getMediaType() != entry::ENTRY_MEDIA_TYPE_VIDEO && $entry->getMediaType() != entry::ENTRY_MEDIA_TYPE_AUDIO) {
$shouldCopyDataForClip = true;
}
}
if ($shouldCopyDataForNonClip || $shouldCopyDataForClip) {
// copy the data
$from = $entry->getSyncKey(entry::FILE_SYNC_ENTRY_SUB_TYPE_DATA);
// replaced__getDataPath
$to = $newEntry->getSyncKey(entry::FILE_SYNC_ENTRY_SUB_TYPE_DATA);
// replaced__getDataPath
KalturaLog::log("copyEntriesByType - copying entry data [" . $from . "] to [" . $to . "]");
kFileSyncUtils::softCopy($from, $to);
}
$ismFrom = $entry->getSyncKey(entry::FILE_SYNC_ENTRY_SUB_TYPE_ISM);
if (kFileSyncUtils::fileSync_exists($ismFrom)) {
$ismTo = $newEntry->getSyncKey(entry::FILE_SYNC_ENTRY_SUB_TYPE_ISM);
KalturaLog::log("copying entry ism [" . $ismFrom . "] to [" . $ismTo . "]");
kFileSyncUtils::softCopy($ismFrom, $ismTo);
}
$ismcFrom = $entry->getSyncKey(entry::FILE_SYNC_ENTRY_SUB_TYPE_ISMC);
if (kFileSyncUtils::fileSync_exists($ismcFrom)) {
$ismcTo = $newEntry->getSyncKey(entry::FILE_SYNC_ENTRY_SUB_TYPE_ISMC);
KalturaLog::log("copying entry ism [" . $ismcFrom . "] to [" . $ismcTo . "]");
kFileSyncUtils::softCopy($ismcFrom, $ismcTo);
}
$from = $entry->getSyncKey(entry::FILE_SYNC_ENTRY_SUB_TYPE_THUMB);
// replaced__getThumbnailPath
$considerCopyThumb = true;
// if entry is image - data is thumbnail, and it was copied
if ($entry->getMediaType() == entry::ENTRY_MEDIA_TYPE_IMAGE) {
$considerCopyThumb = false;
}
// if entry is not clip, and there is no file in both DCs - nothing to copy
if ($entry->getType() != entryType::MEDIA_CLIP && !kFileSyncUtils::file_exists($from, true)) {
$considerCopyThumb = false;
}
if ($considerCopyThumb) {
//.........这里部分代码省略.........
示例15: addProvisionProvideJob
public static function addProvisionProvideJob(BatchJob $parentJob = null, entry $entry)
{
$subType = $entry->getSource();
if ($subType == entry::ENTRY_MEDIA_SOURCE_AKAMAI_LIVE) {
$partner = $entry->getPartner();
if (!is_null($partner)) {
$jobData = new kAkamaiProvisionJobData();
$akamaiLiveParams = $partner->getAkamaiLiveParams();
if ($akamaiLiveParams) {
$jobData->setWsdlUsername($akamaiLiveParams->getAkamaiLiveWsdlUsername());
$jobData->setWsdlPassword($akamaiLiveParams->getAkamaiLiveWsdlPassword());
$jobData->setCpcode($akamaiLiveParams->getAkamaiLiveCpcode());
$jobData->setEmailId($akamaiLiveParams->getAkamaiLiveEmailId());
$jobData->setPrimaryContact($akamaiLiveParams->getAkamaiLivePrimaryContact());
$jobData->setSecondaryContact($akamaiLiveParams->getAkamaiLiveSecondaryContact());
}
}
} else {
$jobData = new kProvisionJobData();
}
$jobData->setEncoderIP($entry->getEncodingIP1());
$jobData->setBackupEncoderIP($entry->getEncodingIP2());
$jobData->setEncoderPassword($entry->getStreamPassword());
$jobData->setEncoderUsername($entry->getStreamUsername());
$jobData->setEndDate($entry->getEndDate(null));
$jobData->setMediaType($entry->getMediaType());
$batchJob = null;
if ($parentJob) {
$batchJob = $parentJob->createChild();
} else {
$batchJob = new BatchJob();
$batchJob->setEntryId($entry->getId());
$batchJob->setPartnerId($entry->getPartnerId());
}
return self::addJob($batchJob, $jobData, BatchJobType::PROVISION_PROVIDE, $subType);
}