public function handleItemAdded(KalturaObjectBase $object, SimpleXMLElement $item) { if (!$object instanceof $this->objectClass) { return; } $metadataItems = $item; if ($this->containerName) { $containerName = $this->containerName; if (empty($item->{$containerName})) { return; } $metadataItems = $item->{$containerName}; } $nodeName = $this->nodeName; if (empty($metadataItems->{$nodeName})) { // if there is no costum data then we exit return; } KalturaLog::debug("Handles custom metadata for object type [{$this->objectType}] class [{$this->objectClass}] id [{$object->id}] partner id [{$object->partnerId}]"); KBatchBase::impersonate($this->xmlBulkUploadEngine->getCurrentPartnerId()); $pluginsErrorResults = array(); foreach ($metadataItems->{$nodeName} as $customData) { try { $this->handleCustomData($object->id, $customData); } catch (Exception $e) { KalturaLog::err($this->getContainerName() . ' failed: ' . $e->getMessage()); $pluginsErrorResults[] = $e->getMessage(); } } if (count($pluginsErrorResults)) { throw new Exception(implode(', ', $pluginsErrorResults)); } KBatchBase::unimpersonate(); }
public function handleItemUpdated(KalturaObjectBase $object, SimpleXMLElement $item) { if (!$object instanceof KalturaBaseEntry) { return; } if (empty($item->scenes)) { return; } $action = KBulkUploadEngine::$actionsMap[KalturaBulkUploadAction::UPDATE]; if (isset($item->scenes->action)) { $action = strtolower($item->scenes->action); } switch ($action) { case KBulkUploadEngine::$actionsMap[KalturaBulkUploadAction::UPDATE]: break; default: throw new KalturaBatchException("scenes->action: {$action} is not supported", KalturaBatchJobAppErrors::BULK_ACTION_NOT_SUPPORTED); } $this->entryId = $object->id; $this->cuePointPlugin = KalturaCuePointClientPlugin::get(KBatchBase::$kClient); KBatchBase::impersonate($this->xmlBulkUploadEngine->getCurrentPartnerId()); $this->getExistingCuePointsBySystemName($this->entryId); KBatchBase::$kClient->startMultiRequest(); $items = array(); foreach ($item->scenes->children() as $scene) { if ($this->updateCuePoint($scene)) { $items[] = $scene; } } $results = KBatchBase::$kClient->doMultiRequest(); KBatchBase::unimpersonate(); if (is_array($results) && is_array($items)) { $this->handleResults($results, $items); } }
private function handleAttachmentAsset($entryId, SimpleXMLElement $attachment) { $attachmentPlugin = KalturaAttachmentClientPlugin::get(KBatchBase::$kClient); $attachmentAsset = new KalturaAttachmentAsset(); $attachmentAsset->tags = $this->xmlBulkUploadEngine->implodeChildElements($attachment->tags); if (isset($attachment->fileExt)) { $attachmentAsset->fileExt = $attachment->fileExt; } if (isset($attachment->description)) { $attachmentAsset->partnerDescription = $attachment->description; } if (isset($attachment->filename)) { $attachmentAsset->filename = $attachment->filename; } if (isset($attachment->title)) { $attachmentAsset->title = $attachment->title; } if (isset($attachment['format'])) { $attachmentAsset->format = $attachment['format']; } $attachmentAssetId = null; if (isset($attachment['attachmentAssetId'])) { $attachmentAssetId = $attachment['attachmentAssetId']; } if ($attachmentAssetId) { $attachmentPlugin->attachmentAsset->update($attachmentAssetId, $attachmentAsset); } else { $attachmentAsset = $attachmentPlugin->attachmentAsset->add($entryId, $attachmentAsset); $attachmentAssetId = $attachmentAsset->id; } $attachmentAssetResource = $this->xmlBulkUploadEngine->getResource($attachment, 0); if ($attachmentAssetResource) { $attachmentPlugin->attachmentAsset->setContent($attachmentAssetId, $attachmentAssetResource); } }
public function handleCustomData($objectId, SimpleXMLElement $customData) { $action = KBulkUploadEngine::$actionsMap[KalturaBulkUploadAction::REPLACE]; if (isset($customData->action)) { $action = strtolower($customData->action); } $metadataProfileId = null; if (!empty($customData['metadataProfileId'])) { $metadataProfileId = (int) $customData['metadataProfileId']; } if (!$metadataProfileId && !empty($customData['metadataProfile'])) { $metadataProfileId = $this->getMetadataProfileId($customData['metadataProfile']); } if (!$metadataProfileId) { throw new KalturaBatchException("Missing custom data metadataProfile attribute", KalturaBatchJobAppErrors::BULK_MISSING_MANDATORY_PARAMETER); } $metadataPlugin = KalturaMetadataClientPlugin::get($this->xmlBulkUploadEngine->getClient()); $metadataFilter = new KalturaMetadataFilter(); $metadataFilter->metadataObjectTypeEqual = $this->objectType; $metadataFilter->objectIdEqual = $objectId; $metadataFilter->metadataProfileIdEqual = $metadataProfileId; $pager = new KalturaFilterPager(); $pager->pageSize = 1; $metadataListResponse = $metadataPlugin->metadata->listAction($metadataFilter, $pager); $metadataId = null; $metadata = null; if (is_array($metadataListResponse->objects) && count($metadataListResponse->objects) > 0) { $metadata = reset($metadataListResponse->objects); $metadataId = $metadata->id; } switch ($action) { case KBulkUploadEngine::$actionsMap[KalturaBulkUploadAction::TRANSFORM_XSLT]: if (!isset($customData->xslt)) { throw new KalturaBatchException($this->containerName . '->' . $this->nodeName . "->xslt element is missing", KalturaBatchJobAppErrors::BULK_ELEMENT_NOT_FOUND); } if ($metadata) { $metadataXml = $metadata->xml; } else { $metadataXml = '<metadata></metadata>'; } $decodedXslt = kXml::decodeXml($customData->xslt); $metadataXml = kXml::transformXmlUsingXslt($metadataXml, $decodedXslt); break; case KBulkUploadEngine::$actionsMap[KalturaBulkUploadAction::REPLACE]: if (!isset($customData->xmlData)) { throw new KalturaBatchException($this->containerName . '->' . $this->nodeName . "->xmlData element is missing", KalturaBatchJobAppErrors::BULK_ELEMENT_NOT_FOUND); } $metadataXmlObject = $customData->xmlData->children(); $metadataXml = $metadataXmlObject->asXML(); break; default: throw new KalturaBatchException($this->containerName . '->' . $this->nodeName . "->action: {$action} is not supported", KalturaBatchJobAppErrors::BULK_ACTION_NOT_SUPPORTED); } if ($metadataId) { $metadataPlugin->metadata->update($metadataId, $metadataXml); } else { $metadataPlugin->metadata->add($metadataProfileId, $this->objectType, $objectId, $metadataXml); } }
public function handleDistribution($entryId, SimpleXMLElement $distribution) { $distributionProfileId = null; if (!empty($distribution->distributionProfileId)) { $distributionProfileId = (int) $distribution->distributionProfileId; } if (!$distributionProfileId && (!empty($distribution->distributionProfile) || !empty($distribution->distributionProvider))) { $distributionProfileId = $this->getDistributionProfileId($distribution->distributionProfile, $distribution->distributionProvider); } if (!$distributionProfileId) { throw new KalturaBatchException("Missing custom data distributionProfile attribute", KalturaBatchJobAppErrors::BULK_MISSING_MANDATORY_PARAMETER); } $distributionPlugin = KalturaContentDistributionClientPlugin::get($this->xmlBulkUploadEngine->getClient()); $entryDistributionFilter = new KalturaEntryDistributionFilter(); $entryDistributionFilter->distributionProfileIdEqual = $distributionProfileId; $entryDistributionFilter->entryIdEqual = $entryId; $pager = new KalturaFilterPager(); $pager->pageSize = 1; $entryDistributionResponse = $distributionPlugin->entryDistribution->listAction($entryDistributionFilter, $pager); $entryDistribution = new KalturaEntryDistribution(); $entryDistributionId = null; if (is_array($entryDistributionResponse->objects) && count($entryDistributionResponse->objects) > 0) { $existingEntryDistribution = reset($entryDistributionResponse->objects); $entryDistributionId = $existingEntryDistribution->id; } else { $entryDistribution->entryId = $entryId; $entryDistribution->distributionProfileId = $distributionProfileId; } if (!empty($distribution->sunrise) && KBulkUploadEngine::isFormatedDate($distribution->sunrise)) { $entryDistribution->sunrise = KBulkUploadEngine::parseFormatedDate($distribution->sunrise); } if (!empty($distribution->sunset) && KBulkUploadEngine::isFormatedDate($distribution->sunset)) { $entryDistribution->sunset = KBulkUploadEngine::parseFormatedDate($distribution->sunset); } if (!empty($distribution->flavorAssetIds)) { $entryDistribution->flavorAssetIds = $distribution->flavorAssetIds; } if (!empty($distribution->thumbAssetIds)) { $entryDistribution->thumbAssetIds = $distribution->thumbAssetIds; } $submitWhenReady = false; if ($distribution['submitWhenReady']) { $submitWhenReady = true; } $this->xmlBulkUploadEngine->impersonate(); if ($entryDistributionId) { $updatedEntryDistribution = $distributionPlugin->entryDistribution->update($entryDistributionId, $entryDistribution); if ($submitWhenReady && $updatedEntryDistribution->dirtyStatus == KalturaEntryDistributionFlag::UPDATE_REQUIRED) { $distributionPlugin->entryDistribution->submitUpdate($entryDistributionId); } } else { $createdEntryDistribution = $distributionPlugin->entryDistribution->add($entryDistribution); $distributionPlugin->entryDistribution->submitAdd($createdEntryDistribution->id, $submitWhenReady); } $this->xmlBulkUploadEngine->unimpersonate(); }
protected function validateResource(KalturaResource $resource, SimpleXMLElement $elementToSearchIn) { if ($resource instanceof KalturaDropFolderFileResource) { $fileId = $resource->dropFolderFileId; if (is_null($fileId)) { throw new KalturaBulkUploadXmlException("Drop folder id is null", KalturaBatchJobAppErrors::BULK_ITEM_VALIDATION_FAILED); } $dropFolderFile = $this->kClient->dropFolderFile->get($fileId); if (!$dropFolderFile) { throw new KalturaBulkUploadXmlException("Cannot find drop folder file with id [{$fileId}]", KalturaBatchJobAppErrors::BULK_ITEM_VALIDATION_FAILED); } } return parent::validateResource($resource, $elementToSearchIn); }
private function handleWidevineAssets($entryId, SimpleXMLElement $item) { KalturaLog::debug("Handling widevine assets for entry: " . $entryId); $pluginsErrorResults = array(); KBatchBase::impersonate($this->xmlBulkUploadEngine->getCurrentPartnerId()); foreach ($item->widevineAssets->widevineAsset as $widevineAsset) { try { $this->handleWidevineAsset($entryId, $widevineAsset); } catch (Exception $e) { KalturaLog::err($this->getContainerName() . ' failed: ' . $e->getMessage()); $pluginsErrorResults[] = $e->getMessage(); } } KBatchBase::unimpersonate(); if (count($pluginsErrorResults)) { throw new Exception(implode(', ', $pluginsErrorResults)); } }
private function getCurrentCaptionAssets($entryId) { $filter = new KalturaCaptionAssetItemFilter(); $filter->entryIdEqual = $entryId; $pager = new KalturaFilterPager(); $pager->pageSize = 500; $captionAssetPlugin = KalturaCaptionClientPlugin::get($this->xmlBulkUploadEngine->getClient()); $captions = $captionAssetPlugin->captionAsset->listAction($filter, $pager); $this->currentCaptionAssets = array(); if (!isset($captions->objects)) { return; } foreach ($captions->objects as $caption) { if ($caption->captionParamsId != 0) { //there could be multiple captions with captionParamsId=0 $this->currentCaptionAssets[$caption->captionParamsId] = $caption->id; } } }
private function handleCaptionAsset($entryId, $conversionProfileId, SimpleXMLElement $caption) { $captionAssetPlugin = KalturaCaptionClientPlugin::get(KBatchBase::$kClient); $captionAsset = new KalturaCaptionAsset(); $captionAsset->tags = $this->xmlBulkUploadEngine->implodeChildElements($caption->tags); if (isset($caption->captionAssetId)) { $captionAsset->id = $caption->captionAssetId; } if (isset($caption['captionParamsId']) || isset($caption['captionParams'])) { $captionAsset->captionParamsId = $this->xmlBulkUploadEngine->getAssetParamsId($caption, $conversionProfileId, true, 'caption'); } if (isset($caption['isDefault'])) { if (strtolower($caption['isDefault']) == 'true') { $captionAsset->isDefault = KalturaNullableBoolean::TRUE_VALUE; } else { $captionAsset->isDefault = KalturaNullableBoolean::FALSE_VALUE; } } if (isset($caption['format'])) { $captionAsset->format = $caption['format']; } if (isset($caption['lang'])) { $captionAsset->language = $caption['lang']; } $captionAssetId = null; if (isset($caption['captionAssetId'])) { $captionAssetId = $caption['captionAssetId']; } elseif (isset($captionAsset->captionParamsId)) { if (isset($this->currentCaptionAssets[$captionAsset->captionParamsId])) { $captionAssetId = $this->currentCaptionAssets[$captionAsset->captionParamsId]; } } if ($captionAssetId) { $captionAssetPlugin->captionAsset->update($captionAssetId, $captionAsset); } else { $captionAsset = $captionAssetPlugin->captionAsset->add($entryId, $captionAsset); $captionAssetId = $captionAsset->id; } $captionAssetResource = $this->xmlBulkUploadEngine->getResource($caption, $conversionProfileId); if ($captionAssetResource) { $captionAssetPlugin->captionAsset->setContent($captionAssetId, $captionAssetResource); } }
protected function createEntryFromItem(SimpleXMLElement $item, $type = null) { $entry = parent::createEntryFromItem($item, $type); if ($this->dropFolder->shouldValidateKS && !isset($entry->userId)) { $entry->userId = $this->ksInfo->userId; } return $entry; }