protected function getMetadataFields()
 {
     if (is_array($this->metadataProfileFields)) {
         return $this->metadataProfileFields;
     }
     $this->metadataProfileFields = array();
     Infra_ClientHelper::impersonate($this->partnerId);
     $client = Infra_ClientHelper::getClient();
     $metadataPlugin = Kaltura_Client_Metadata_Plugin::get($client);
     try {
         $metadataProfileFilter = new Kaltura_Client_Metadata_Type_MetadataProfileFilter();
         $metadataProfileFilter->partnerIdEqual = $this->partnerId;
         $metadataProfileList = $metadataPlugin->metadataProfile->listAction($metadataProfileFilter);
         if ($metadataProfileList->totalCount) {
             $client->startMultiRequest();
             foreach ($metadataProfileList->objects as $metadataProfile) {
                 $metadataFieldList = $metadataPlugin->metadataProfile->listFields($metadataProfile->id);
             }
             $results = $client->doMultiRequest();
             foreach ($results as $metadataFieldList) {
                 foreach ($metadataFieldList->objects as $metadataField) {
                     $this->metadataProfileFields[$metadataField->xPath] = $metadataField->label;
                 }
             }
         }
     } catch (Exception $e) {
         Infra_ClientHelper::unimpersonate();
         throw $e;
     }
     Infra_ClientHelper::unimpersonate();
     return $this->metadataProfileFields;
 }
 protected function addMetadataProfile($enableNone = false)
 {
     $metadataProfiles = null;
     try {
         $metadataProfileFilter = new Kaltura_Client_Metadata_Type_MetadataProfileFilter();
         $metadataProfileFilter->metadataObjectTypeEqual = Kaltura_Client_Metadata_Enum_MetadataObjectType::ENTRY;
         $client = Infra_ClientHelper::getClient();
         $metadataPlugin = Kaltura_Client_Metadata_Plugin::get($client);
         Infra_ClientHelper::impersonate($this->partnerId);
         $metadataProfileList = $metadataPlugin->metadataProfile->listAction($metadataProfileFilter);
         Infra_ClientHelper::unimpersonate();
         $metadataProfiles = $metadataProfileList->objects;
     } catch (Kaltura_Client_Exception $e) {
         $metadataProfiles = null;
     }
     if (count($metadataProfiles)) {
         $this->addElement('select', 'metadata_profile_id', array('label' => 'Metadata Profile ID:', 'filters' => array('StringTrim')));
         $element = $this->getElement('metadata_profile_id');
         if ($enableNone) {
             $element->addMultiOption('', 'None');
         }
         foreach ($metadataProfiles as $metadataProfile) {
             $element->addMultiOption($metadataProfile->id, $metadataProfile->name);
         }
     } else {
         $this->addElement('hidden', 'metadata_profile_id', array('value' => 0));
     }
 }
 public function addMetadataFieldsAsValues($elementName)
 {
     $this->getElement($elementName)->clearMultiOptions();
     Infra_ClientHelper::impersonate($this->partnerId);
     $client = Infra_ClientHelper::getClient();
     $metadataPlugin = Kaltura_Client_Metadata_Plugin::get($client);
     $profileListResponse = $metadataPlugin->metadataProfile->listAction();
     $metadataFields = array();
     foreach ($profileListResponse->objects as $profile) {
         $doc = new DOMDocument();
         $doc->loadXML($profile->xsd);
         $xpath = new DOMXPath($doc);
         $xpath->registerNamespace('xsd', 'http://www.w3.org/2001/XMLSchema');
         $nameNodes = $xpath->query('//xsd:element//xsd:element/@name');
         foreach ($nameNodes as $nameNode) {
             $metadataFields[$profile->id . ':' . $nameNode->nodeValue] = $profile->name . ' > ' . $nameNode->nodeValue;
         }
     }
     Infra_ClientHelper::unimpersonate();
     $this->getElement($elementName)->addMultiOptions(array('' => ''));
     $this->getElement($elementName)->addMultiOptions($metadataFields);
 }
 public function getMetadataProfileFields($metadataProfileId)
 {
     $metadataPlugin = Kaltura_Client_Metadata_Plugin::get($this->_client);
     return $metadataPlugin->metadataProfile->listFields($metadataProfileId);
 }