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);
     }
 }
 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 handleItemAdded(KalturaObjectBase $object, SimpleXMLElement $item)
 {
     if (!$object instanceof KalturaBaseEntry) {
         return;
     }
     if (!isset($item->subTitles)) {
         return;
     }
     if (empty($item->subTitles->subTitle)) {
         return;
     }
     KBatchBase::impersonate($this->xmlBulkUploadEngine->getCurrentPartnerId());
     $this->getCurrentCaptionAssets($object->id);
     $pluginsErrorResults = array();
     foreach ($item->subTitles->subTitle as $caption) {
         try {
             $this->handleCaptionAsset($object->id, $object->conversionProfileId, $caption);
         } catch (Exception $e) {
             KalturaLog::err($this->getContainerName() . ' failed: ' . $e->getMessage());
             $pluginsErrorResults[] = $e->getMessage();
         }
     }
     if (count($pluginsErrorResults)) {
         throw new Exception(implode(', ', $pluginsErrorResults));
     }
     KBatchBase::unimpersonate();
 }
 protected 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("Unable to retrieve distributionProfileId value", KalturaBatchJobAppErrors::BULK_MISSING_MANDATORY_PARAMETER);
     }
     $distributionPlugin = KalturaContentDistributionClientPlugin::get(KBatchBase::$kClient);
     $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;
     }
     KBatchBase::impersonate($this->xmlBulkUploadEngine->getCurrentPartnerId());
     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);
     }
     KBatchBase::unimpersonate();
 }
 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));
     }
 }