/** * @param KalturaMetadataFilter $filter * @param $shouldUpdate * @return int */ protected function indexMetadataObjects(KalturaMetadataFilter $filter, $shouldUpdate) { $filter->orderBy = KalturaMetadataOrderBy::CREATED_AT_ASC; $metadataPlugin = KalturaMetadataClientPlugin::get(KBatchBase::$kClient); $metadataList = $metadataPlugin->metadata->listAction($filter, $this->pager); if (!count($metadataList->objects)) { return 0; } KBatchBase::$kClient->startMultiRequest(); foreach ($metadataList->objects as $metadata) { $metadataPlugin->metadata->index($metadata->id, $shouldUpdate); } $results = KBatchBase::$kClient->doMultiRequest(); foreach ($results as $index => $result) { if (!is_int($result)) { unset($results[$index]); } } if (!count($results)) { return 0; } $lastIndexId = end($results); $this->setLastIndexId($lastIndexId); return count($results); }
function kaltura_meta_profile() { $metadataPlugin = KalturaMetadataClientPlugin::get($mypenguin->getClientconf()); $result = $metadataPlugin->metadataprofile->listAction(); ?> <form method = "post" action = ""> <table> <tr> <td><label for="row">zaglavie</label></td> <td><input type="text" id="row"></td> </tr> </table> <?php var_dump($result); ?> </form> <?php }
/** * @param KalturaBaseEntry $object */ function processObject($object) { /** @var KalturaExecuteMetadataXsltObjectTask $objectTask */ $objectTask = $this->getObjectTask(); if (is_null($objectTask)) { return; } $entryId = $object->id; $metadataProfileId = $objectTask->metadataProfileId; $metadataObjectType = $objectTask->metadataObjectType; $xslt = $objectTask->xslt; $client = $this->getClient(); $metadataPlugin = KalturaMetadataClientPlugin::get($client); $filter = new KalturaMetadataFilter(); $filter->objectIdEqual = $entryId; $filter->metadataProfileIdEqual = $metadataProfileId; $filter->metadataObjectTypeEqual = $metadataObjectType; try { $this->impersonate($object->partnerId); $metadataResult = $metadataPlugin->metadata->listAction($filter); $this->unimpersonate(); } catch (Exception $ex) { $this->unimpersonate(); throw $ex; } if (!count($metadataResult->objects)) { KalturaLog::info(sprintf('Metadata object was not found for entry %s, profile id %s and object type %s', $entryId, $metadataProfileId, $metadataObjectType)); return; } $xsltFilePath = sys_get_temp_dir() . '/xslt_' . time(true) . '.xslt'; file_put_contents($xsltFilePath, $xslt); $metadataId = $metadataResult->objects[0]->id; try { $this->impersonate($object->partnerId); $metadataPlugin->metadata->updateFromXSL($metadataId, $xsltFilePath); $this->unimpersonate(); } catch (Exception $ex) { $this->unimpersonate(); throw $ex; } unlink($xsltFilePath); }
/** * @return KalturaMetadataClientPlugin */ public static function get(KalturaClient $client) { if (!self::$instance) { self::$instance = new KalturaMetadataClientPlugin($client); } return self::$instance; }
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(KBatchBase::$kClient); $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); } }
/** * * Adds the metadata search test data * @param KalturaClient $client */ protected static function addMetadataSearchData(KalturaClient $client) { //add metadata profile $metadataProfile = new KalturaMetadataProfile(); $metadataProfile->name = 'Metadata profile for tests'; $metadataProfile->createMode = KalturaMetadataProfileCreateMode::API; $metadataProfile->systemName = 'Metadata profile for tests'; $metadataProfileXsd = '<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:element name="metadata"> <xsd:complexType> <xsd:sequence> <xsd:element id="md_90192848-AAE47-03390173D13A" name="Startdate" minOccurs="0" maxOccurs="1" type="dateType"> <xsd:annotation> <xsd:documentation></xsd:documentation> <xsd:appinfo> <label>startdate</label> <key>startdate</key> <searchable>true</searchable> <description></description> </xsd:appinfo> </xsd:annotation> </xsd:element> <xsd:element id="md_D7EAD7A91-6360-BF2F-03393913BE11" name="Enddate" minOccurs="0" maxOccurs="1" type="dateType"> <xsd:annotation> <xsd:documentation></xsd:documentation> <xsd:appinfo> <label>enddate</label> <key>enddate</key> <searchable>true</searchable> <description></description> </xsd:appinfo> </xsd:annotation> </xsd:element> <xsd:element id="md_D7EADC16-791-6360-BF2F-03393913Bs11" name="MyNumber" minOccurs="0" maxOccurs="1" type="intType"> <xsd:annotation> <xsd:documentation></xsd:documentation> <xsd:appinfo> <label>MyNumber</label> <key>MyNumber</key> <searchable>true</searchable> <description></description> </xsd:appinfo> </xsd:annotation> </xsd:element> <xsd:element id="md_D7EADC16-7A91-6360F-03393913Bs11" name="MyNumber2" minOccurs="0" maxOccurs="1" type="intType"> <xsd:annotation> <xsd:documentation></xsd:documentation> <xsd:appinfo> <label>MyNumber2</label> <key>MyNumber2</key> <searchable>true</searchable> <description></description> </xsd:appinfo> </xsd:annotation> </xsd:element> <xsd:element id="md_D7EADC16-7A91-6360-BF2F-033932s11" name="MyNumber3" minOccurs="0" maxOccurs="1" type="intType"> <xsd:annotation> <xsd:documentation></xsd:documentation> <xsd:appinfo> <label>MyNumber3</label> <key>MyNumber3</key> <searchable>true</searchable> <description></description> </xsd:appinfo> </xsd:annotation> </xsd:element> <xsd:element id="md_C084580E-43B0-38A7-9F23-033B3" name="MyTextList" minOccurs="0" maxOccurs="1"> <xsd:annotation> <xsd:documentation></xsd:documentation> <xsd:appinfo> <label>my text list</label> <key>my text list</key> <searchable>true</searchable> <description></description> </xsd:appinfo> </xsd:annotation> <xsd:simpleType> <xsd:restriction base="listType"> <xsd:enumeration value="a1" /> <xsd:enumeration value="b2" /> <xsd:enumeration value="c3" /> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element id="md_D7EADC16-7ABF2F-033932s11" name="MyTest" minOccurs="0" maxOccurs="1" type="textType"> <xsd:annotation> <xsd:documentation></xsd:documentation> <xsd:appinfo> <label>MyTest</label> <key>MyTest</key> <searchable>true</searchable> <description></description> </xsd:appinfo> </xsd:annotation> </xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:complexType name="textType"> <xsd:simpleContent> <xsd:extension base="xsd:string" /> </xsd:simpleContent> </xsd:complexType> <xsd:complexType name="intType"> <xsd:simpleContent> <xsd:extension base="xsd:long" /> </xsd:simpleContent> </xsd:complexType> <xsd:complexType name="dateType"> <xsd:simpleContent> <xsd:extension base="xsd:long" /> </xsd:simpleContent> </xsd:complexType> <xsd:complexType name="objectType"> <xsd:simpleContent> <xsd:extension base="xsd:string" /> </xsd:simpleContent> </xsd:complexType> <xsd:simpleType name="listType"> <xsd:restriction base="xsd:string" /> </xsd:simpleType> </xsd:schema>'; $metadataClient = KalturaMetadataClientPlugin::get($client); $metadataProfile = $metadataClient->metadataProfile->add($metadataProfile, $metadataProfileXsd); KalturaGlobalData::setData("@METADATA_SEARCH_PROFILE_ID@", $metadataProfile->id); KalturaGlobalData::setData("@METADATA_SEARCH_FIELD_NAME1@", '/*[local-name()=\'metadata\']/*[local-name()=\'MyTest\']'); KalturaGlobalData::setData("@METADATA_SEARCH_FIELD_VALUE1@", 'myTest'); KalturaGlobalData::setData("@METADATA_SEARCH_FIELD_NAME2@", '/*[local-name()=\'metadata\']/*[local-name()=\'Startdate\']'); KalturaGlobalData::setData("@METADATA_SEARCH_FIELD_VALUE2@", '1310503500'); KalturaGlobalData::setData("@METADATA_SEARCH_FIELD_NAME3@", '/*[local-name()=\'metadata\']/*[local-name()=\'MyNumber\']'); //add entries $entries = array(); $xmlData = array(0 => '<metadata><Startdate>1310503400</Startdate><Enddate>1310504000</Enddate><MyNumber>6</MyNumber><MyNumber2>2</MyNumber2><MyNumber3>3</MyNumber3><MyTextList>a1</MyTextList><MyTest>myTest</MyTest></metadata>', 1 => '<metadata><Startdate>1310503000</Startdate><Enddate>1310508000</Enddate><MyNumber>3</MyNumber><MyNumber2>4</MyNumber2><MyNumber3>5</MyNumber3><MyTextList>b2</MyTextList><MyTest>just some words...</MyTest></metadata>', 2 => '<metadata><Startdate>1310504000</Startdate><Enddate>1310508000</Enddate><MyNumber>2</MyNumber><MyNumber2>5</MyNumber2><MyNumber3>6</MyNumber3><MyTextList>b2</MyTextList><MyTest>just some words...</MyTest></metadata>', 3 => '<metadata><Startdate>1310508000</Startdate><Enddate>1310509000</Enddate><MyNumber>5</MyNumber><MyNumber2>2</MyNumber2><MyNumber3>8</MyNumber3><MyTextList>a1</MyTextList><MyTest>myTest</MyTest></metadata>', 4 => '<metadata><Startdate>1310504000</Startdate><Enddate>1310509000</Enddate><MyNumber>4</MyNumber><MyNumber2>4</MyNumber2><MyNumber3>4</MyNumber3><MyTextList>a1</MyTextList><MyTest>myTest</MyTest></metadata>'); KalturaGlobalData::setData("@METADATA_TEST_XML@", $xmlData[0]); $entry = new KalturaMediaEntry(); for ($i = 0; $i < count($xmlData); $i++) { $entry->id = null; $entry->name = 'Entry For metadataSearch ' . $i; $entry->type = KalturaEntryType::MEDIA_CLIP; $entry->mediaType = KalturaMediaType::VIDEO; $newEntry = $client->media->add($entry, KalturaEntryType::MEDIA_CLIP); $contentResource = new KalturaUrlResource(); $contentResource->url = "http://sites.google.com/site/demokmc/Home/titanicin5seconds.flv"; $client->media->addContent($newEntry->id, $contentResource); //add metadata sleep(1); //sync with sphinx $entries[$i] = $newEntry->id; $metadataClient->metadata->add($metadataProfile->id, KalturaMetadataObjectType::ENTRY, $newEntry->id, $xmlData[$i]); } $expectedResults = $entries[4] . ',' . $entries[3]; KalturaGlobalData::setData("@METADATA_SEARCH_ENTRIES_IDS@", $expectedResults); }
/** * Sync target objects * @param KalturaDistributionJobData $jobData * @param CrossKalturaEntryObjectsContainer $targetObjects */ protected function sync(KalturaDistributionJobData $jobData, CrossKalturaEntryObjectsContainer $targetObjects) { $syncedObjects = new CrossKalturaEntryObjectsContainer(); $targetEntryId = $jobData->remoteId; // add/update entry if ($targetEntryId) { // update entry KalturaLog::info('Updating target entry id [' . $targetEntryId . ']'); $syncedObjects->entry = $this->targetClient->baseEntry->update($targetEntryId, $targetObjects->entry); } else { // add entry $syncedObjects->entry = $this->targetClient->baseEntry->add($targetObjects->entry); $targetEntryId = $syncedObjects->entry->id; KalturaLog::info('New target entry added with id [' . $targetEntryId . ']'); } $this->targetEntryId = $targetEntryId; // sync metadata objects foreach ($targetObjects->metadataObjects as $metadataObj) { /* @var $metadataObj KalturaMetadata */ $metadataObj->objectId = $targetEntryId; } $targetMetadataClient = KalturaMetadataClientPlugin::get($this->targetClient); $syncedObjects->metadataObjects = $this->syncTargetEntryObjects($targetMetadataClient->metadata, $targetObjects->metadataObjects, $this->sourceObjects->metadataObjects, $jobData->providerData->distributedMetadata, $targetEntryId, 'getMetadataAddArgs', 'getMetadataUpdateArgs'); // sync flavor assets $syncedObjects->flavorAssets = $this->syncTargetEntryObjects($this->targetClient->flavorAsset, $targetObjects->flavorAssets, $this->sourceObjects->flavorAssets, $jobData->providerData->distributedFlavorAssets, $targetEntryId); // sync flavor content $this->syncAssetsContent($this->targetClient->flavorAsset, $targetObjects->flavorAssetsContent, $syncedObjects->flavorAssets, $jobData->providerData->distributedFlavorAssets, $this->sourceObjects->flavorAssets); // sync thumbnail assets $syncedObjects->thumbAssets = $this->syncTargetEntryObjects($this->targetClient->thumbAsset, $targetObjects->thumbAssets, $this->sourceObjects->thumbAssets, $jobData->providerData->distributedThumbAssets, $targetEntryId); // sync thumbnail content $this->syncAssetsContent($this->targetClient->thumbAsset, $targetObjects->thumbAssetsContent, $syncedObjects->thumbAssets, $jobData->providerData->distributedThumbAssets, $this->sourceObjects->thumbAssets); // sync caption assets if ($this->distributeCaptions) { $targetCaptionClient = KalturaCaptionClientPlugin::get($this->targetClient); $syncedObjects->captionAssets = $this->syncTargetEntryObjects($targetCaptionClient->captionAsset, $targetObjects->captionAssets, $this->sourceObjects->captionAssets, $jobData->providerData->distributedCaptionAssets, $targetEntryId); // sync caption content $this->syncAssetsContent($targetCaptionClient->captionAsset, $targetObjects->captionAssetsContent, $syncedObjects->captionAssets, $jobData->providerData->distributedCaptionAssets, $this->sourceObjects->captionAssets); } // sync cue points if ($this->distributeCuePoints) { foreach ($targetObjects->cuePoints as $cuePoint) { /* @var $cuePoint KalturaCuePoint */ $cuePoint->entryId = $targetEntryId; } $targetCuePointClient = KalturaCuePointClientPlugin::get($this->targetClient); $syncedObjects->cuePoints = $this->syncTargetEntryObjects($targetCuePointClient->cuePoint, $targetObjects->cuePoints, $this->sourceObjects->cuePoints, $jobData->providerData->distributedCuePoints, $targetEntryId, 'getCuePointAddArgs'); } return $syncedObjects; }
$partnerId = $argv[1]; $secret = $argv[2]; $type = KalturaSessionType::ADMIN; $config = new KalturaConfiguration($partnerId); $config->serviceUrl = $argv[3]; $client = new KalturaClient($config); $ks = $client->session->start($secret, $userId, $type, $partnerId, $expiry, $privileges); $client->setKs($ks); $pager = null; $filter = new KalturaMetadataProfileFilter(); $profile_name = METADATA_SYSTEM_NAME; $filter->systemNameEqual = $profile_name; $results = $client->metadataProfile->listAction($filter, $pager); if ($results->totalCount) { $metadata_prof_id = $results->objects[0]->id; $metadataPlugin = KalturaMetadataClientPlugin::get($client); $result = $metadataPlugin->metadataProfile->listFields($metadata_prof_id); echo "Found {$profile_name}, ID {$metadata_prof_id}.\n"; } else { echo "Could not find {$profile_name}. Exiting.\n"; exit(1); } $filter = new KalturaMediaEntryFilter(); $filterAdvancedSearch = new KalturaMetadataSearchItem(); $filterAdvancedSearch->metadataProfileId = $metadata_prof_id; $filterAdvancedSearchItems = new KalturaSearchCondition(); $filterAdvancedSearchItems->field = "/*[local-name()='metadata']/*[local-name()='ProcessOCR']"; $filterAdvancedSearchItems->value = 'Yes'; $filterAdvancedSearch->items = array($filterAdvancedSearchItems); $filter->advancedSearch = $filterAdvancedSearch; //$filter=null;
protected function createCategoryAssociations(KalturaDropFolder $folder, $userId, $entryId) { if ($folder->metadataProfileId && $folder->categoriesMetadataFieldName) { $filter = new KalturaMetadataFilter(); $filter->metadataProfileIdEqual = $folder->metadataProfileId; $filter->objectIdEqual = $userId; $filter->metadataObjectTypeEqual = KalturaMetadataObjectType::USER; try { $metadataPlugin = KalturaMetadataClientPlugin::get(KBatchBase::$kClient); //Expect only one result $res = $metadataPlugin->metadata->listAction($filter, new KalturaFilterPager()); $metadataObj = $res->objects[0]; $xmlElem = new SimpleXMLElement($metadataObj->xml); $categoriesXPathRes = $xmlElem->xpath($folder->categoriesMetadataFieldName); $categories = array(); foreach ($categoriesXPathRes as $catXPath) { $categories[] = strval($catXPath); } $categoryFilter = new KalturaCategoryFilter(); $categoryFilter->idIn = implode(',', $categories); $categoryListResponse = KBatchBase::$kClient->category->listAction($categoryFilter, new KalturaFilterPager()); if ($categoryListResponse->objects && count($categoryListResponse->objects)) { if (!$folder->enforceEntitlement) { //easy $this->createCategoryEntriesNoEntitlement($categoryListResponse->objects, $entryId); } else { //write your will $this->createCategoryEntriesWithEntitlement($categoryListResponse->objects, $entryId, $userId); } } } catch (Exception $e) { KalturaLog::err('Error encountered. Code: [' . $e->getCode() . '] Message: [' . $e->getMessage() . ']'); } } }