/**
  * List all distribution providers
  * 
  * @action list
  * @param KalturaDistributionProviderFilter $filter
  * @param KalturaFilterPager $pager
  * @return KalturaDistributionProviderListResponse
  */
 function listAction(KalturaDistributionProviderFilter $filter = null, KalturaFilterPager $pager = null)
 {
     if (!$filter) {
         $filter = new KalturaDistributionProviderFilter();
     }
     $c = new Criteria();
     if ($filter instanceof KalturaGenericDistributionProviderFilter) {
         $genericDistributionProviderFilter = new GenericDistributionProviderFilter();
         $filter->toObject($genericDistributionProviderFilter);
         $genericDistributionProviderFilter->attachToCriteria($c);
     }
     $count = GenericDistributionProviderPeer::doCount($c);
     if (!$pager) {
         $pager = new KalturaFilterPager();
     }
     $pager->attachToCriteria($c);
     $list = GenericDistributionProviderPeer::doSelect($c);
     $response = new KalturaDistributionProviderListResponse();
     $response->objects = KalturaDistributionProviderArray::fromDbArray($list, $this->getResponseProfile());
     $response->totalCount = $count;
     $syndicationProvider = new KalturaSyndicationDistributionProvider();
     $syndicationProvider->fromObject(SyndicationDistributionProvider::get());
     $response->objects[] = $syndicationProvider;
     $response->totalCount++;
     $pluginInstances = KalturaPluginManager::getPluginInstances('IKalturaContentDistributionProvider');
     foreach ($pluginInstances as $pluginInstance) {
         $provider = $pluginInstance->getKalturaProvider();
         if ($provider) {
             $response->objects[] = $provider;
             $response->totalCount++;
         }
     }
     return $response;
 }
 /**
  * @return array<IKalturaMrssContributor>
  */
 public static function getMrssContributors()
 {
     if (self::$mrssContributors) {
         return self::$mrssContributors;
     }
     self::$mrssContributors = KalturaPluginManager::getPluginInstances('IKalturaMrssContributor');
     return self::$mrssContributors;
 }
Ejemplo n.º 3
0
 protected function _loadTranslationData($data, $locale, array $options = array())
 {
     $translate = parent::_loadTranslationData($data, $locale, $options);
     $pluginInstances = KalturaPluginManager::getPluginInstances('IKalturaApplicationTranslations');
     foreach ($pluginInstances as $pluginInstance) {
         /* @var $pluginInstance IKalturaApplicationTranslations */
         $translations = $pluginInstance->getTranslations($locale);
         $translate = array_merge_recursive($translate, $translations);
     }
     return $translate;
 }
Ejemplo n.º 4
0
 /**
  * Creates a new KalturaCriteria for the given object name
  * 
  * @param string $objectType object type to create Criteria for.
  * @return KalturaCriteria derived object
  */
 public static function create($objectType)
 {
     $pluginInstances = KalturaPluginManager::getPluginInstances('IKalturaCriteriaFactory');
     foreach ($pluginInstances as $pluginInstance) {
         $criteria = $pluginInstance->getKalturaCriteria($objectType);
         if ($criteria) {
             return $criteria;
         }
     }
     return new KalturaCriteria();
 }
Ejemplo n.º 5
0
 public function doAction(Zend_Controller_Action $action)
 {
     $action->getHelper('layout')->disableLayout();
     $request = $action->getRequest();
     $drmProfileId = $this->_getParam('drm_profile_id');
     $partnerId = $this->_getParam('new_partner_id');
     $drmProfileProvider = $this->_getParam('new_drm_profile_provider');
     $drmProfileForm = null;
     $action->view->formValid = false;
     try {
         if ($request->isPost()) {
             $partnerId = $this->_getParam('partnerId');
             $drmProfileProvider = $this->_getParam('provider');
             $drmProfileForm = new Form_DrmProfileConfigure($partnerId, $drmProfileProvider);
             $action->view->formValid = $this->processForm($drmProfileForm, $request->getPost(), $partnerId, $drmProfileId);
             if (!is_null($drmProfileId)) {
                 $drmProfile = $drmProfileForm->getObject("Kaltura_Client_Drm_Type_DrmProfile", $request->getPost(), false, true);
             }
         } else {
             if (!is_null($drmProfileId)) {
                 $client = Infra_ClientHelper::getClient();
                 $drmPluginClient = Kaltura_Client_Drm_Plugin::get($client);
                 $drmProfile = $drmPluginClient->drmProfile->get($drmProfileId);
                 $partnerId = $drmProfile->partnerId;
                 $drmProfileProvider = $drmProfile->provider;
                 $drmProfileForm = new Form_DrmProfileConfigure($partnerId, $drmProfileProvider);
                 $drmProfileForm->populateFromObject($drmProfile, false);
             } else {
                 $drmProfileForm = new Form_DrmProfileConfigure($partnerId, $drmProfileProvider);
                 $drmProfileForm->getElement('partnerId')->setValue($partnerId);
             }
         }
     } catch (Exception $e) {
         $action->view->formValid = false;
         KalturaLog::err($e->getMessage() . "\n" . $e->getTraceAsString());
         $action->view->errMessage = $e->getMessage();
     }
     $action->view->form = $drmProfileForm;
     $pluginInstances = KalturaPluginManager::getPluginInstances('IKalturaApplicationPartialView');
     KalturaLog::debug("plugin instances [" . count($pluginInstances) . "]");
     foreach ($pluginInstances as $pluginInstance) {
         $drmProfilePlugins = $pluginInstance->getApplicationPartialViews('plugin', get_class($this));
         if (!$drmProfilePlugins) {
             continue;
         }
         foreach ($drmProfilePlugins as $plugin) {
             /* @var $plugin Kaltura_View_Helper_PartialViewPlugin */
             $plugin->plug($action->view);
         }
     }
 }
Ejemplo n.º 6
0
 protected function _initNavigation()
 {
     $this->bootstrap('layout');
     $this->bootstrap('acl');
     $layout = $this->getResource('layout');
     $view = $layout->getView();
     $config = new Zend_Config_Xml(APPLICATION_PATH . '/configs/navigation.xml');
     $navigation = new Zend_Navigation($config);
     $additionalNavigation = Zend_Registry::get('config')->navigation;
     $menu = $additionalNavigation->monitoring;
     $subMenu = $menu->enableDisable;
     $target = '';
     if ($subMenu->target) {
         $target = $subMenu->target;
     }
     $navigation->addPage(array('label' => $subMenu->label, 'uri' => $subMenu->uri, 'target' => $target));
     $menuPage = $navigation->findOneBy('label', 'Monitoring');
     $subMenuPage = $navigation->findOneBy('label', $subMenu->label);
     $subMenuPage->setParent($menuPage);
     $pluginAdminConsolePages = array();
     $pluginInstances = KalturaPluginManager::getPluginInstances('IKalturaAdminConsolePages');
     foreach ($pluginInstances as $pluginInstance) {
         foreach ($pluginInstance->getAdminConsolePages() as $pluginAdminConsolePage) {
             $pluginAdminConsolePages[] = $pluginAdminConsolePage;
         }
     }
     foreach ($pluginAdminConsolePages as $pluginAdminConsolePage) {
         if (!$pluginAdminConsolePage instanceof KalturaAdminConsolePlugin) {
             continue;
         }
         if (!$pluginAdminConsolePage->accessCheck(Kaltura_AclHelper::getCurrentPermissions())) {
             continue;
         }
         $navigation->addPage(array('label' => $pluginAdminConsolePage->getNavigationActionLabel(), 'controller' => 'plugin', 'action' => get_class($pluginAdminConsolePage)));
         $subMenuPage = $navigation->findOneBy('label', $pluginAdminConsolePage->getNavigationActionLabel());
         $menuPage = null;
         if ($pluginAdminConsolePage->getNavigationRootLabel()) {
             $menuPage = $navigation->findOneBy('label', $pluginAdminConsolePage->getNavigationRootLabel());
             if (!$menuPage) {
                 $navigation->addPage(array('label' => $pluginAdminConsolePage->getNavigationRootLabel(), 'controller' => 'plugin', 'action' => get_class($pluginAdminConsolePage)));
                 $menuPage = $navigation->findOneBy('label', $pluginAdminConsolePage->getNavigationRootLabel());
             }
         }
         if ($menuPage) {
             $subMenuPage->setParent($menuPage);
         }
     }
     $this->checkAclForNavigation($navigation);
     $view->navigation($navigation);
 }
Ejemplo n.º 7
0
 public static function initialize()
 {
     $dbConfigs = array();
     $pluginInstances = KalturaPluginManager::getPluginInstances('IKalturaDatabaseConfig');
     foreach ($pluginInstances as $pluginInstance) {
         $dbConfigs[] = $pluginInstance->getDatabaseConfig();
     }
     foreach ($dbConfigs as $dbConfig) {
         self::addExtraConfiguration($dbConfig);
     }
     Propel::setConfiguration(self::$config);
     Propel::setLogger(KalturaLog::getInstance());
     Propel::initialize();
 }
Ejemplo n.º 8
0
 public static function clearMemory()
 {
     foreach (self::$peerNames as $peerName => $dontCare) {
         call_user_func(array($peerName, 'clearInstancePool'));
     }
     self::$peerNames = array();
     $pluginInstances = KalturaPluginManager::getPluginInstances('IKalturaMemoryCleaner');
     foreach ($pluginInstances as $pluginInstance) {
         $pluginInstance->cleanMemory();
     }
     if (function_exists('gc_collect_cycles')) {
         // php 5.3 and above
         gc_collect_cycles();
     }
 }
Ejemplo n.º 9
0
 public static function mergeDescriptions($baseEnumName, array $descriptions)
 {
     $pluginInstances = KalturaPluginManager::getPluginInstances('IKalturaEnumerator');
     foreach ($pluginInstances as $pluginInstance) {
         $pluginName = $pluginInstance->getPluginName();
         $enums = $pluginInstance->getEnums($baseEnumName);
         foreach ($enums as $enum) {
             $additionalDescriptions = $enum::getAdditionalDescriptions();
             foreach ($additionalDescriptions as $key => $description) {
                 $descriptions[$key] = $description;
             }
         }
     }
     return $descriptions;
 }
Ejemplo n.º 10
0
 public function __construct($file_name, $service_name = null, $load_plugins = true, $useDefualt = true)
 {
     KalturaServiceConfig::setStrictMode(false);
     if ($load_plugins) {
         $serviceConfigs = array();
         $pluginInstances = KalturaPluginManager::getPluginInstances('IKalturaServices');
         foreach ($pluginInstances as $pluginInstance) {
             $serviceConfigs[] = $pluginInstance->getServiceConfig();
         }
         foreach ($serviceConfigs as $serviceConfig) {
             KalturaServiceConfig::addSecondaryConfigTables($serviceConfig);
         }
     }
     parent::myServiceConfig($file_name, $service_name, $useDefualt);
 }
 /**
  * @param EntryDistribution $entryDistribution
  * @param SimpleXMLElement $xmlElement
  * @return SimpleXMLElement
  */
 public function contributeDistribution(EntryDistribution $entryDistribution, SimpleXMLElement $mrss)
 {
     $distributionsProvider = null;
     $distributionsProfile = DistributionProfilePeer::retrieveByPK($entryDistribution->getDistributionProfileId());
     if ($distributionsProfile) {
         $distributionsProvider = $distributionsProfile->getProvider();
     }
     $distribution = $mrss->addChild('distribution');
     $distribution->addAttribute('entryDistributionId', $entryDistribution->getId());
     $distribution->addAttribute('distributionProfileId', $entryDistribution->getDistributionProfileId());
     $distribution->addAttribute('lastReport', $entryDistribution->getLastReport(null));
     if ($distributionsProvider) {
         $distribution->addAttribute('provider', $distributionsProvider->getName());
         if ($distributionsProvider->getType() == DistributionProviderType::GENERIC) {
             $distribution->addAttribute('distributionProviderId', $distributionsProvider->getId());
         } elseif ($distributionsProvider->getType() == DistributionProviderType::SYNDICATION) {
             if ($distributionsProfile instanceof SyndicationDistributionProfile) {
                 $distribution->addAttribute('feedId', $distributionsProfile->getFeedId());
             }
         } else {
             $pluginInstances = KalturaPluginManager::getPluginInstances('IKalturaContentDistributionProvider');
             foreach ($pluginInstances as $pluginInstance) {
                 if ($pluginInstance->getProvider() === $distributionsProvider) {
                     $pluginInstance->contributeMRSS($entryDistribution, $distribution);
                 }
             }
         }
     }
     if ($entryDistribution->getRemoteId()) {
         $distribution->addChild('remoteId', $entryDistribution->getRemoteId());
     }
     if ($entryDistribution->getSunrise(null)) {
         $distribution->addChild('sunrise', $entryDistribution->getSunrise(null));
     }
     if ($entryDistribution->getSunset(null)) {
         $distribution->addChild('sunset', $entryDistribution->getSunset(null));
     }
     $flavorAssetIds = explode(',', $entryDistribution->getFlavorAssetIds());
     $flavorAssetIdsNode = $distribution->addChild('flavorAssetIds');
     foreach ($flavorAssetIds as $flavorAssetId) {
         $flavorAssetIdsNode->addChild('flavorAssetId', $flavorAssetId);
     }
     $thumbAssetIds = explode(',', $entryDistribution->getThumbAssetIds());
     $thumbAssetIdsNode = $distribution->addChild('thumbAssetIds');
     foreach ($thumbAssetIds as $thumbAssetId) {
         $thumbAssetIdsNode->addChild('thumbAssetId', $thumbAssetId);
     }
 }
Ejemplo n.º 12
0
 protected static function loadConsumers()
 {
     $cachePath = kConf::get('cache_root_path') . '/EventConsumers.cache';
     if (file_exists($cachePath)) {
         self::$consumers = unserialize(file_get_contents($cachePath));
         return;
     }
     $coreConsumers = kConf::get('event_consumers');
     $pluginConsumers = array();
     $pluginInstances = KalturaPluginManager::getPluginInstances('IKalturaEventConsumers');
     foreach ($pluginInstances as $pluginInstance) {
         foreach ($pluginInstance->getEventConsumers() as $pluginConsumer) {
             $pluginConsumers[] = $pluginConsumer;
         }
     }
     $consumers = array_merge($coreConsumers, $pluginConsumers);
     $consumersLists = array();
     foreach ($consumers as $consumer) {
         if (!class_exists($consumer)) {
             continue;
         }
         $clazz = new ReflectionClass($consumer);
         $interfaces = $clazz->getInterfaces();
         foreach ($interfaces as $interface) {
             if ($interface->name == self::BASE_CONSUMER_INTERFACE) {
                 continue;
             }
             if (!$interface->implementsInterface(self::BASE_CONSUMER_INTERFACE)) {
                 continue;
             }
             if (!isset($consumersLists[$interface->name])) {
                 $consumersLists[$interface->name] = array();
             }
             $consumersLists[$interface->name][] = $consumer;
         }
     }
     foreach ($consumersLists as $interfaceName => $interfaceConsumersArray) {
         usort($interfaceConsumersArray, array('kEventsManager', 'compareConsumers'));
         self::$consumers[$interfaceName] = $interfaceConsumersArray;
     }
     $cacheDir = dirname($cachePath);
     if (!file_exists($cacheDir)) {
         kFile::fullMkfileDir($cacheDir, 0777, true);
     }
     @file_put_contents($cachePath, serialize(self::$consumers));
 }
 public static function mergeDescriptions($baseEnumName, array $descriptions)
 {
     $pluginInstances = KalturaPluginManager::getPluginInstances('IKalturaEnumerator');
     foreach ($pluginInstances as $pluginInstance) {
         $pluginName = $pluginInstance->getPluginName();
         $enums = $pluginInstance->getEnums($baseEnumName);
         foreach ($enums as $enum) {
             // TODO remove call_user_func after moving to php 5.3
             $additionalDescriptions = call_user_func(array($enum, 'getAdditionalDescriptions'));
             // $additionalDescriptions = $enum::getAdditionalDescriptions();
             foreach ($additionalDescriptions as $key => $description) {
                 $descriptions[$key] = $description;
             }
         }
     }
     return $descriptions;
 }
 protected static function getExtraDatabaseConfigs()
 {
     if (function_exists('apc_fetch')) {
         $dbConfigs = apc_fetch(self::EXTRA_DB_CONFIG_KEY);
         if ($dbConfigs !== false) {
             return $dbConfigs;
         }
     }
     $dbConfigs = array();
     $pluginInstances = KalturaPluginManager::getPluginInstances('IKalturaDatabaseConfig');
     foreach ($pluginInstances as $pluginInstance) {
         $dbConfigs[] = $pluginInstance->getDatabaseConfig();
     }
     if (function_exists('apc_store')) {
         apc_store(self::EXTRA_DB_CONFIG_KEY, $dbConfigs);
     }
     return $dbConfigs;
 }
Ejemplo n.º 15
0
 static function cacheMap($servicePath, $cacheFilePath)
 {
     if (!is_dir($servicePath)) {
         throw new Exception('Invalid directory [' . $servicePath . ']');
     }
     $servicePath = realpath($servicePath);
     $serviceMap = array();
     $classMap = KAutoloader::getClassMap();
     $checkedClasses = array();
     foreach ($classMap as $class => $classFilePath) {
         $classFilePath = realpath($classFilePath);
         if (strpos($classFilePath, $servicePath) === 0) {
             $reflectionClass = new ReflectionClass($class);
             if ($reflectionClass->isSubclassOf('KalturaBaseService')) {
                 $docComment = $reflectionClass->getDocComment();
                 $parser = new KalturaDocCommentParser($docComment);
                 $serviceId = strtolower($parser->serviceName);
                 $serviceMap[$serviceId] = $class;
             }
         }
         $checkedClasses[] = $class;
     }
     $pluginServices = array();
     $pluginInstances = KalturaPluginManager::getPluginInstances('IKalturaServices');
     foreach ($pluginInstances as $pluginName => $pluginInstance) {
         $pluginServices = $pluginInstance->getServicesMap();
         foreach ($pluginServices as $serviceName => $serviceClass) {
             $serviceName = strtolower($serviceName);
             $serviceId = "{$pluginName}_{$serviceName}";
             $pluginServices[$serviceId] = $serviceClass;
             $serviceMap[$serviceId] = $serviceClass;
         }
     }
     $cachedFile = '';
     $cachedFile .= '<?php' . PHP_EOL;
     $cachedFile .= 'self::$services = ' . var_export($serviceMap, true) . ';' . PHP_EOL;
     if (!is_dir(dirname($cacheFilePath))) {
         mkdir(dirname($cacheFilePath), 0777);
     }
     file_put_contents($cacheFilePath, $cachedFile);
 }
Ejemplo n.º 16
0
 /**
  * @param IIndexable $object
  */
 public function saveToMySql(IIndexable $object)
 {
     $id = $object->getId();
     if (!$id) {
         KalturaLog::err("Object [" . get_class($object) . "] id [" . $object->getId() . "] could not be saved to MySql, id is empty");
         return false;
     }
     $searchObject = self::getMySqlSearchObject($object->getObjectIndexName(), $id);
     $fields = $object->getIndexFieldsMap();
     foreach ($fields as $field => $getterName) {
         $setterName = str_replace('_', '', $field);
         $getter = "get{$getterName}";
         $setter = "set{$setterName}";
         if (!method_exists($searchObject, $setter)) {
             continue;
         }
         $value = call_user_func(array($object, $getter));
         call_user_func(array($searchObject, $setter), $value);
     }
     $pluginInstances = KalturaPluginManager::getPluginInstances('IKalturaSearchDataContributor');
     $pluginsData = array();
     foreach ($pluginInstances as $pluginName => $pluginInstance) {
         KalturaLog::debug("Loading {$pluginName} search texts");
         $pluginData = null;
         try {
             $pluginData = $pluginInstance->getSearchData($object);
         } catch (Exception $e) {
             KalturaLog::err($e->getMessage());
             continue;
         }
         if ($pluginData) {
             KalturaLog::debug("Search data for {$pluginName} [{$pluginData}]");
             $pluginsData[] = $pluginData;
         }
     }
     if (count($pluginsData)) {
         $searchObject->setPluginData(implode(',', $pluginsData));
     }
     $searchObject->save();
 }
 /**
  * batch addBulkUploadResultAction action adds KalturaBulkUploadResult to the DB
  * 
  * @action addBulkUploadResult
  * @param KalturaBulkUploadResult $bulkUploadResult The results to save to the DB
  * @param KalturaBulkUploadPluginDataArray $pluginDataArray
  * @return KalturaBulkUploadResult 
  */
 function addBulkUploadResultAction(KalturaBulkUploadResult $bulkUploadResult, KalturaBulkUploadPluginDataArray $pluginDataArray = null)
 {
     if (is_null($bulkUploadResult->action)) {
         $bulkUploadResult->action = KalturaBulkUploadAction::ADD;
     }
     $bulkUploadResult->pluginsData = $pluginDataArray;
     $dbBulkUploadResult = BulkUploadResultPeer::retrieveByBulkUploadIdAndIndex($bulkUploadResult->bulkUploadJobId, $bulkUploadResult->lineIndex);
     if ($dbBulkUploadResult) {
         $dbBulkUploadResult = $bulkUploadResult->toUpdatableObject($dbBulkUploadResult);
     } else {
         $dbBulkUploadResult = $bulkUploadResult->toInsertableObject();
     }
     /* @var $dbBulkUploadResult BulkUploadResult */
     $dbBulkUploadResult->save();
     if ($bulkUploadResult->objectId) {
         $dbBulkUploadResult->handleRelatedObjects();
         $jobs = BatchJobPeer::retrieveByEntryId($bulkUploadResult->objectId);
         foreach ($jobs as $job) {
             if (!$job->getParentJobId()) {
                 $job->setRootJobId($bulkUploadResult->bulkUploadJobId);
                 $job->setBulkJobId($bulkUploadResult->bulkUploadJobId);
                 $job->save();
             }
         }
         if ($dbBulkUploadResult->getObject() && $pluginDataArray && $pluginDataArray->count) {
             $pluginValues = $pluginDataArray->toValuesArray();
             if (count($pluginValues)) {
                 $pluginInstances = KalturaPluginManager::getPluginInstances('IKalturaBulkUploadHandler');
                 foreach ($pluginInstances as $pluginInstance) {
                     $pluginInstance->handleBulkUploadData($dbBulkUploadResult->getObject(), $pluginValues);
                 }
             }
         }
     }
     $bulkUploadResult->fromObject($dbBulkUploadResult);
     return $bulkUploadResult;
 }
Ejemplo n.º 18
0
 /**
  * Used to add dynamic JSON attributes to the search index
  */
 public function getDynamicAttributes()
 {
     $dynamicAttributes = array();
     // Map catrgories to creation date
     $categoryEntries = categoryEntryPeer::selectByEntryId($this->getId());
     foreach ($categoryEntries as $categoryEntry) {
         $createdAt = $categoryEntry->getCreatedAt(null);
         // Passing null in order to get a numerical Unix Time Stamp instead of a string
         // Get the dyn. attrib. name in the format of: cat_{cat id}_createdAt (e.g.: cat_123_createdAt)
         $dynAttribName = kCategoryEntryAdvancedFilter::getCategoryCreatedAtDynamicAttributeName($categoryEntry->getCategoryId());
         $dynamicAttributes[$dynAttribName] = $createdAt;
     }
     $pluginInstances = KalturaPluginManager::getPluginInstances('IKalturaDynamicAttributesContributer');
     foreach ($pluginInstances as $pluginName => $pluginInstance) {
         try {
             $dynamicAttributes += $pluginInstance->getDynamicAttributes($this);
         } catch (Exception $e) {
             KalturaLog::err($e->getMessage());
             continue;
         }
     }
     return $dynamicAttributes;
 }
Ejemplo n.º 19
0
 /**
  * Gets an item and insert it into the system
  * @param SimpleXMLElement $item
  */
 protected function handleItemAdd(SimpleXMLElement $item)
 {
     KalturaLog::debug("xml [" . $item->asXML() . "]");
     //Throw exception in case of  max proccessed items and handle all exceptions there
     $createdEntryBulkUploadResult = $this->createUploadResult($item, KalturaBulkUploadAction::ADD);
     if ($this->exceededMaxRecordsEachRun) {
         // exit if we have proccessed max num of items
         return;
     }
     $entry = $this->createEntryFromItem($item);
     //Creates the entry from the item element
     $this->handleTypedElement($entry, $item);
     //Sets the typed element values (Mix, Media, ...)
     $entry->creatorId = $this->data->userId;
     KalturaLog::debug("current entry is: " . print_r($entry, true));
     $thumbAssets = array();
     $flavorAssets = array();
     $noParamsThumbAssets = array();
     //Holds the no flavor params thumb assests
     $noParamsThumbResources = array();
     //Holds the no flavor params resources assests
     $noParamsFlavorAssets = array();
     //Holds the no flavor params flavor assests
     $noParamsFlavorResources = array();
     //Holds the no flavor params flavor resources
     $resource = new KalturaAssetsParamsResourceContainers();
     // holds all teh needed resources for the conversion
     $resource->resources = array();
     //For each content in the item element we add a new flavor asset
     if (isset($item->contentAssets)) {
         foreach ($item->contentAssets->content as $contentElement) {
             $assetResource = $this->getResource($contentElement, $entry->conversionProfileId);
             if (!$assetResource) {
                 continue;
             }
             $assetResourceContainer = new KalturaAssetParamsResourceContainer();
             $flavorAsset = $this->getFlavorAsset($contentElement, $entry->conversionProfileId);
             if (is_null($flavorAsset->flavorParamsId)) {
                 KalturaLog::debug("flavorAsset [" . print_r($flavorAsset, true) . "]");
                 $noParamsFlavorAssets[] = $flavorAsset;
                 $noParamsFlavorResources[] = $assetResource;
             } else {
                 KalturaLog::debug("flavorAsset->flavorParamsId [{$flavorAsset->flavorParamsId}]");
                 $flavorAssets[$flavorAsset->flavorParamsId] = $flavorAsset;
                 $assetResourceContainer->assetParamsId = $flavorAsset->flavorParamsId;
                 $assetResourceContainer->resource = $assetResource;
                 $resource->resources[] = $assetResourceContainer;
             }
         }
     }
     //For each thumbnail in the item element we create a new thumb asset
     if (isset($item->thumbnails)) {
         foreach ($item->thumbnails->thumbnail as $thumbElement) {
             $assetResource = $this->getResource($thumbElement, $entry->conversionProfileId);
             if (!$assetResource) {
                 continue;
             }
             $assetResourceContainer = new KalturaAssetParamsResourceContainer();
             $thumbAsset = $this->getThumbAsset($thumbElement, $entry->conversionProfileId);
             if (is_null($thumbAsset->thumbParamsId)) {
                 KalturaLog::debug("thumbAsset [" . print_r($thumbAsset, true) . "]");
                 $noParamsThumbAssets[] = $thumbAsset;
                 $noParamsThumbResources[] = $assetResource;
             } else {
                 KalturaLog::debug("thumbAsset->thumbParamsId [{$thumbAsset->thumbParamsId}]");
                 $thumbAssets[$thumbAsset->thumbParamsId] = $thumbAsset;
                 $assetResourceContainer->assetParamsId = $thumbAsset->thumbParamsId;
                 $assetResourceContainer->resource = $assetResource;
                 $resource->resources[] = $assetResourceContainer;
             }
         }
     }
     if (!count($resource->resources)) {
         if (count($noParamsFlavorResources) == 1) {
             $resource = reset($noParamsFlavorResources);
             $noParamsFlavorResources = array();
             $noParamsFlavorAssets = array();
         } else {
             $resource = null;
         }
     }
     $createdEntry = $this->sendItemAddData($entry, $resource, $noParamsFlavorAssets, $noParamsFlavorResources, $noParamsThumbAssets, $noParamsThumbResources);
     if (isset($item->categories)) {
         $createdEntryBulkUploadResult = $this->createCategoryAssociations($createdEntry->id, $this->implodeChildElements($item->categories), $createdEntryBulkUploadResult);
     }
     //Updates the bulk upload result for the given entry (with the status and other data)
     $this->updateObjectsResults(array($createdEntry), array($createdEntryBulkUploadResult));
     //Adds the additional data for the flavors and thumbs
     $this->handleFlavorAndThumbsAdditionalData($createdEntry->id, $flavorAssets, $thumbAssets);
     //Handles the plugin added data
     $pluginsErrorResults = array();
     $pluginsInstances = KalturaPluginManager::getPluginInstances('IKalturaBulkUploadXmlHandler');
     foreach ($pluginsInstances as $pluginsInstance) {
         /* @var $pluginsInstance IKalturaBulkUploadXmlHandler */
         try {
             $pluginsInstance->configureBulkUploadXmlHandler($this);
             $pluginsInstance->handleItemAdded($createdEntry, $item);
         } catch (Exception $e) {
             KBatchBase::unimpersonate();
             KalturaLog::err($pluginsInstance->getContainerName() . ' failed: ' . $e->getMessage());
             $pluginsErrorResults[] = $pluginsInstance->getContainerName() . ' failed: ' . $e->getMessage();
         }
     }
     if (count($pluginsErrorResults)) {
         throw new Exception(implode(', ', $pluginsErrorResults));
     }
 }
Ejemplo n.º 20
0
 private function appendPlugins(DOMElement $pluginsElement)
 {
     // Add all the plugins that offer services to the list of required plugins
     $pluginInstances = KalturaPluginManager::getPluginInstances('IKalturaPlugin');
     foreach ($pluginInstances as $pluginInstance) {
         if (!$this->pluginHasServices($pluginInstance)) {
             continue;
         }
         $pluginName = $pluginInstance->getPluginName();
         if (!in_array($pluginName, $this->_requiredPlugins)) {
             $this->_requiredPlugins[] = $pluginName;
         }
     }
     // Add plugin tags to the XML
     $pluginInstances = KalturaPluginManager::getPluginInstances('IKalturaPlugin');
     foreach ($pluginInstances as $pluginInstance) {
         if (!in_array($pluginInstance->getPluginName(), $this->_requiredPlugins)) {
             continue;
         }
         $this->appendPlugin($pluginsElement, $pluginInstance);
     }
 }
Ejemplo n.º 21
0
<?php

define('ROOT_DIR', realpath(dirname(__FILE__) . '/../../../'));
define('SPHINX_CONFIG_DIR', ROOT_DIR . '/configurations/sphinx/');
require_once ROOT_DIR . '/alpha/config/kConf.php';
require_once ROOT_DIR . '/infra/bootstrap_base.php';
require_once ROOT_DIR . '/infra/KAutoloader.php';
KAutoloader::addClassPath(KAutoloader::buildPath(KALTURA_ROOT_PATH, "vendor", "propel", "*"));
KAutoloader::addClassPath(KAutoloader::buildPath(KALTURA_ROOT_PATH, "plugins", "*"));
KAutoloader::setClassMapFilePath(kConf::get("cache_root_path") . '/deploy/classMap.cache');
KAutoloader::register();
$sphinxBase = SPHINX_CONFIG_DIR . 'base.conf';
$sphinxConfig = SPHINX_CONFIG_DIR . 'kaltura.conf';
if (!file_exists($sphinxBase)) {
    echo "Sphinx base file [{$sphinxBase}] not found\n";
    exit;
}
copy($sphinxBase, $sphinxConfig);
$pluginInstances = KalturaPluginManager::getPluginInstances('IKalturaSphinxConfiguration');
foreach ($pluginInstances as $pluginInstance) {
    $filePath = $pluginInstance->getSphinxConfigPath();
    if ($filePath && file_exists($filePath)) {
        echo "Appending config file [{$filePath}]\n";
        $config = file_get_contents($filePath);
        file_put_contents($sphinxConfig, $config, FILE_APPEND);
    }
}
Ejemplo n.º 22
0
 public function generateFileName($sub_type, $version = null)
 {
     self::validateFileSyncSubType($sub_type);
     switch ($sub_type) {
         case self::FILE_SYNC_BATCHJOB_SUB_TYPE_BULKUPLOAD:
             $ext = 'csv';
             $pluginInstances = KalturaPluginManager::getPluginInstances('IKalturaBulkUpload');
             foreach ($pluginInstances as $pluginInstance) {
                 $pluginExt = $pluginInstance->getFileExtension($this->getJobSubType());
                 if ($pluginExt) {
                     $ext = $pluginExt;
                     break;
                 }
             }
             return 'bulk_' . $this->getId() . '.' . $ext;
         case self::FILE_SYNC_BATCHJOB_SUB_TYPE_CONFIG:
             return 'config_' . $this->getId() . '.xml';
     }
     return null;
 }
Ejemplo n.º 23
0
 /**
  * @param array<CuePoint> $cuePoints
  * @return string xml
  */
 public static function generateXml(array $cuePoints)
 {
     $schemaType = CuePointPlugin::getApiValue(CuePointSchemaType::SERVE_API);
     $xsdUrl = "http://" . kConf::get('cdn_host') . "/api_v3/service/schema/action/serve/type/{$schemaType}";
     $scenes = new SimpleXMLElement('<scenes xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="' . $xsdUrl . '" />');
     $pluginInstances = KalturaPluginManager::getPluginInstances('IKalturaCuePointXmlParser');
     foreach ($cuePoints as $cuePoint) {
         $scene = null;
         foreach ($pluginInstances as $pluginInstance) {
             $scene = $pluginInstance->generateXml($cuePoint, $scenes, $scene);
         }
     }
     $xmlContent = $scenes->asXML();
     $xml = new KDOMDocument();
     libxml_use_internal_errors(true);
     libxml_clear_errors();
     if (!$xml->loadXML($xmlContent)) {
         $errorMessage = kXml::getLibXmlErrorDescription($xmlContent);
         throw new kCuePointException("XML is invalid:\n{$errorMessage}", kCuePointException::XML_INVALID);
     }
     $xsdPath = SchemaService::getSchemaPath($schemaType);
     libxml_clear_errors();
     if (!$xml->schemaValidate($xsdPath)) {
         $errorMessage = kXml::getLibXmlErrorDescription($xmlContent);
         throw new kCuePointException("XML is invalid:\n{$errorMessage}", kCuePointException::XML_INVALID);
     }
     return $xmlContent;
 }
 public function doAction(Zend_Controller_Action $action)
 {
     $action->getHelper('layout')->disableLayout();
     $this->client = Infra_ClientHelper::getClient();
     $eventNotificationPlugin = Kaltura_Client_EventNotification_Plugin::get($this->client);
     $request = $action->getRequest();
     $partnerId = $this->_getParam('partner_id');
     if (!$partnerId) {
         $partnerId = 0;
     }
     $templateId = $this->_getParam('template_id');
     $cloneTemplateId = $this->_getParam('clone_template_id');
     $type = null;
     $eventNotificationTemplate = null;
     $action->view->errMessage = null;
     $action->view->form = '';
     $action->view->plugins = array();
     $form = null;
     try {
         Infra_ClientHelper::impersonate($partnerId);
         if ($cloneTemplateId) {
             if ($partnerId) {
                 $eventNotificationTemplate = $eventNotificationPlugin->eventNotificationTemplate->cloneAction($cloneTemplateId);
                 $templateId = $eventNotificationTemplate->id;
                 $type = $eventNotificationTemplate->type;
             } else {
                 $action->view->errMessage = "Partner ID must be defined.";
                 $templateId = null;
                 Infra_ClientHelper::unimpersonate();
                 return;
             }
         } elseif ($templateId) {
             $eventNotificationTemplate = $eventNotificationPlugin->eventNotificationTemplate->get($templateId);
             $type = $eventNotificationTemplate->type;
         } else {
             $type = $this->_getParam('type');
         }
         $form = KalturaPluginManager::loadObject('Form_EventNotificationTemplateConfiguration', $type, array($partnerId, $type));
         /* @var $form Form_EventNotificationTemplateConfiguration */
         $templateClass = KalturaPluginManager::getObjectClass('Kaltura_Client_EventNotification_Type_EventNotificationTemplate', $type);
         KalturaLog::debug("template class [{$templateClass}]");
         if (!$form || !$form instanceof Form_EventNotificationTemplateConfiguration) {
             $action->view->errMessage = "Template form not found for type [{$type}]";
             return;
         }
         $urlParams = array('controller' => 'plugin', 'action' => 'EventNotificationTemplateConfigureAction', 'clone_template_id' => null);
         if ($templateId) {
             $urlParams['template_id'] = $templateId;
         }
         $form->setAction($action->view->url($urlParams));
         if ($templateId) {
             if ($request->isPost()) {
                 if ($form->isValid($request->getPost())) {
                     $form->populate($request->getPost());
                     $eventNotificationTemplate = $form->getObject($templateClass, $request->getPost());
                     $form->resetUnUpdatebleAttributes($eventNotificationTemplate);
                     $eventNotificationTemplate = $eventNotificationPlugin->eventNotificationTemplate->update($templateId, $eventNotificationTemplate);
                     $form->setAttrib('class', 'valid');
                     $action->view->formValid = true;
                 } else {
                     $form->populate($request->getPost());
                     $eventNotificationTemplate = $form->getObject($templateClass, $request->getPost());
                 }
                 $form->finit($eventNotificationTemplate);
             } else {
                 $form->populateFromObject($eventNotificationTemplate);
             }
         } else {
             if ($request->isPost() && $form->isValid($request->getPost())) {
                 $form->populate($request->getPost());
                 $eventNotificationTemplate = $form->getObject($templateClass, $request->getPost());
                 $eventNotificationTemplate->partnerId = null;
                 $eventNotificationTemplate = $eventNotificationPlugin->eventNotificationTemplate->add($eventNotificationTemplate);
                 $form->setAttrib('class', 'valid');
                 $action->view->formValid = true;
             } else {
                 $form->populate($request->getPost());
                 $eventNotificationTemplate = $form->getObject($templateClass, $request->getPost());
             }
             $form->finit($eventNotificationTemplate);
         }
     } catch (Exception $e) {
         KalturaLog::err($e->getMessage() . "\n" . $e->getTraceAsString());
         $action->view->errMessage = $e->getMessage();
         if ($form) {
             $form->populate($request->getPost());
             $eventNotificationTemplate = $form->getObject($templateClass, $request->getPost());
         }
     }
     Infra_ClientHelper::unimpersonate();
     $action->view->form = $form;
     $action->view->templateId = $templateId;
     $pluginInstances = KalturaPluginManager::getPluginInstances('IKalturaApplicationPartialView');
     KalturaLog::debug("plugin instances [" . count($pluginInstances) . "]");
     foreach ($pluginInstances as $pluginInstance) {
         $entryInvestigatePlugins = $pluginInstance->getApplicationPartialViews('plugin', get_class($this));
         if (!$entryInvestigatePlugins) {
             continue;
         }
         foreach ($entryInvestigatePlugins as $plugin) {
             /* @var $plugin Kaltura_View_Helper_PartialViewPlugin */
             $plugin->plug($action->view);
         }
     }
 }
    public static function getPluginSchema($type)
    {
        $coreType = kPluginableEnumsManager::apiToCore('SchemaType', $type);
        if ($coreType != self::getSchemaTypeCoreValue(DropFolderXmlSchemaType::DROP_FOLDER_XML)) {
            return null;
        }
        $xmlApiType = BulkUploadXmlPlugin::getApiValue(XmlSchemaType::BULK_UPLOAD_XML);
        $baseXsdElement = BulkUploadXmlPlugin::getPluginSchema($xmlApiType);
        $xsd = '<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">';
        foreach ($baseXsdElement->children('http://www.w3.org/2001/XMLSchema') as $element) {
            /* @var $element SimpleXMLElement */
            $xsd .= '
	
	' . $element->asXML();
        }
        $xsd .= '
				
	<xs:complexType name="T_dropFolderFileContentResource">
		<xs:choice minOccurs="0" maxOccurs="1">
			<xs:element name="fileSize" type="xs:long" minOccurs="1" maxOccurs="1">
				<xs:annotation>
					<xs:documentation>
						The expected size of the file<br/>
						Used for validation
					</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="fileChecksum" minOccurs="1" maxOccurs="1">
				<xs:annotation>
					<xs:documentation>
						The expected checksum of the file<br/>
						md5 or sha1<br/>
						Used for validation
					</xs:documentation>
				</xs:annotation>
				<xs:complexType>
					<xs:simpleContent>
						<xs:extension base="xs:string">
							<xs:attribute name="type" use="optional" default="md5">				
								<xs:simpleType>
									<xs:restriction base="xs:string">
										<xs:enumeration value="md5"/>
										<xs:enumeration value="sha1"/>
									</xs:restriction>
								</xs:simpleType>
							</xs:attribute>
						</xs:extension>
					</xs:simpleContent>
				</xs:complexType>
			</xs:element>
		</xs:choice>
		<xs:attribute name="filePath" use="required">
			<xs:annotation>
				<xs:documentation>
					The name of the file in the drop folder
				</xs:documentation>
			</xs:annotation>
			<xs:simpleType>
				<xs:restriction base="xs:string">
					<xs:maxLength value="500"/>
				</xs:restriction>
			</xs:simpleType>
		</xs:attribute>
		<xs:attribute name="dropFolderFileId" type="xs:string" use="optional">
			<xs:annotation>
				<xs:documentation>
					The id of the drop folder file object
				</xs:documentation>
			</xs:annotation>
		</xs:attribute>
	</xs:complexType>

	<xs:element name="dropFolderFileContentResource" type="T_dropFolderFileContentResource" substitutionGroup="contentResource-extension">
		<xs:annotation>
			<xs:documentation>Specifies that content file location is within a Kaltura defined drop folder</xs:documentation>
			<xs:appinfo>
				<example title="Using file size validation example">
					<item>
						<action>add</action>
						<type>1</type>
						<media>...</media>
						<content>...</content>
						<thumbnail>
							<dropFolderFileContentResource filePath="file.jpg">
								<fileSize>453453344</fileSize>
							</dropFolderFileContentResource>
						</thumbnail>
					</item>
				</example>
				<example title="Using checksum validation example">
					<item>
						<action>add</action>
						<type>1</type>
						<media>...</media>
						<content>...</content>
						<thumbnail>
							<dropFolderFileContentResource filePath="file.jpg">
								<fileChecksum type="md5">sdfsjodf90sfsdfzfasdfwrg34</fileChecksum>
							</dropFolderFileContentResource>
						</thumbnail>
					</item>
				</example>
			</xs:appinfo>
		</xs:annotation>
	</xs:element>
	
	';
        $schemaContributors = KalturaPluginManager::getPluginInstances('IKalturaSchemaContributor');
        foreach ($schemaContributors as $key => $schemaContributor) {
            /* @var $schemaContributor IKalturaSchemaContributor */
            $elements = $schemaContributor->contributeToSchema($xmlApiType);
            if ($elements) {
                $xsd .= $elements;
            }
        }
        $xsd .= '
</xs:schema>';
        return new SimpleXMLElement($xsd);
    }
    /**
     * @param KalturaSchemaType $type  
     * @return string filePath 
     */
    public static function getSchemaPath($type)
    {
        $cacheXsdFile = kConf::get("cache_root_path") . "/{$type}.xsd";
        if (file_exists($cacheXsdFile)) {
            return realpath($cacheXsdFile);
        }
        $xsdFile = fopen($cacheXsdFile, 'w');
        $elementsXSD = '';
        $baseXsdElement = new SimpleXMLElement('<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"/>');
        if ($type == SchemaType::SYNDICATION) {
            $baseXsdElement = new SimpleXMLElement(file_get_contents(kConf::get("syndication_core_xsd_path")));
        } else {
            $plugin = kPluginableEnumsManager::getPlugin($type);
            if ($plugin instanceof IKalturaSchemaDefiner) {
                KalturaLog::debug("Found plugin [" . get_class($plugin) . "]");
                $baseXsdElement = $plugin->getPluginSchema($type);
            }
        }
        if (!$baseXsdElement instanceof SimpleXMLElement) {
            $baseXsdElement = new SimpleXMLElement('<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"/>');
        }
        $version = '1.0';
        if ($baseXsdElement['version']) {
            $version = $baseXsdElement['version'];
        }
        fwrite($xsdFile, "<xs:schema xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" version=\"{$version}\">");
        foreach ($baseXsdElement->children('http://www.w3.org/2001/XMLSchema') as $element) {
            /* @var $element SimpleXMLElement */
            $xsd = $element->asXML();
            $elementsXSD .= $xsd;
            fwrite($xsdFile, '
	' . $xsd);
        }
        $schemaContributors = KalturaPluginManager::getPluginInstances('IKalturaSchemaContributor');
        foreach ($schemaContributors as $key => $schemaContributor) {
            /* @var $schemaContributor IKalturaSchemaContributor */
            $elements = $schemaContributor->contributeToSchema($type);
            if ($elements) {
                $elementsXSD .= $elements;
                fwrite($xsdFile, $elements);
            }
        }
        fwrite($xsdFile, '
	<!-- Kaltura enum types -->
	');
        $enumClasses = array();
        $matches = null;
        if (preg_match_all('/type="(Kaltura[^"]+)"/', $elementsXSD, $matches)) {
            $enumClasses = $matches[1];
        }
        $enumTypes = array();
        foreach ($enumClasses as $class) {
            $classTypeReflector = KalturaTypeReflectorCacher::get($class);
            if ($classTypeReflector) {
                self::loadClassRecursively($classTypeReflector, $enumTypes);
            }
        }
        foreach ($enumTypes as $class => $classTypeReflector) {
            if (!is_subclass_of($class, 'KalturaEnum') && !is_subclass_of($class, 'KalturaStringEnum')) {
                // class must be enum
                continue;
            }
            $xsdType = 'int';
            if ($classTypeReflector->isStringEnum()) {
                $xsdType = 'string';
            }
            $xsd = '
	<xs:simpleType name="' . $class . '">
		<xs:annotation><xs:documentation>http://' . kConf::get('www_host') . '/api_v3/testmeDoc/index.php?object=' . $class . '</xs:documentation></xs:annotation>
		<xs:restriction base="xs:' . $xsdType . '">';
            $contants = $classTypeReflector->getConstants();
            foreach ($contants as $contant) {
                $xsd .= '
			<xs:enumeration value="' . $contant->getDefaultValue() . '"><xs:annotation><xs:documentation>' . $contant->getName() . '</xs:documentation></xs:annotation></xs:enumeration>';
            }
            $xsd .= '
		</xs:restriction>
	</xs:simpleType>
			';
            fwrite($xsdFile, $xsd);
        }
        fwrite($xsdFile, '
</xs:schema>');
        fclose($xsdFile);
        return realpath($cacheXsdFile);
    }
Ejemplo n.º 27
0
 public function isServiceExists($serviceId)
 {
     if (array_key_exists($serviceId, $this->_servicesMap)) {
         return true;
     }
     if (strpos($serviceId, '_') <= 0) {
         return false;
     }
     $serviceId = strtolower($serviceId);
     list($servicePlugin, $serviceName) = explode('_', $serviceId);
     $pluginInstances = KalturaPluginManager::getPluginInstances('IKalturaServices');
     if (!isset($pluginInstances[$servicePlugin])) {
         return false;
     }
     $pluginInstance = $pluginInstances[$servicePlugin];
     $servicesMap = $pluginInstance->getServicesMap();
     KalturaLog::debug(print_r($servicesMap, true));
     foreach ($servicesMap as $name => $class) {
         if (strtolower($name) == $serviceName) {
             $class = $servicesMap[$name];
             KalturaServicesMap::addService($serviceId, $class);
             $this->_servicesMap = KalturaServicesMap::getMap();
             return true;
         }
     }
     return false;
 }
 protected function handleResults(array $results, array $items)
 {
     if (count($results) != count($this->operations) || count($this->operations) != count($items)) {
         KalturaLog::err("results count [" . count($results) . "] operations count [" . count($this->operations) . "] items count [" . count($items) . "]");
         return;
     }
     $pluginsInstances = KalturaPluginManager::getPluginInstances('IKalturaBulkUploadXmlHandler');
     foreach ($results as $index => $cuePoint) {
         if (is_array($cuePoint) && isset($cuePoint['code'])) {
             throw new Exception($cuePoint['message']);
         }
         foreach ($pluginsInstances as $pluginsInstance) {
             /* @var $pluginsInstance IKalturaBulkUploadXmlHandler */
             $pluginsInstance->configureBulkUploadXmlHandler($this->xmlBulkUploadEngine);
             if ($this->operations[$index] == KalturaBulkUploadAction::ADD) {
                 $pluginsInstance->handleItemAdded($cuePoint, $items[$index]);
             } elseif ($this->operations[$index] == KalturaBulkUploadAction::UPDATE) {
                 $pluginsInstance->handleItemUpdated($cuePoint, $items[$index]);
             } elseif ($this->operations[$index] == KalturaBulkUploadAction::DELETE) {
                 $pluginsInstance->handleItemDeleted($cuePoint, $items[$index]);
             }
         }
     }
 }
Ejemplo n.º 29
0
 private static function executeQueryByType($partner_id, $report_type, $report_flavor, reportsInputFilter $input_filter, $page_size, $page_index, $order_by, $object_ids = null, $offset = null)
 {
     $start = microtime(true);
     try {
         $add_search_text = false;
         $has_object_ids = false;
         if ($input_filter instanceof endUserReportsInputFilter) {
             $has_object_ids = $input_filter->categories;
         }
         $has_object_ids = $has_object_ids || $object_ids;
         if (is_numeric($report_type)) {
             $file_path = myReportsSqlFileMgr::getSqlFilePath(self::$type_map[$report_type], self::$flavor_map[$report_flavor], $add_search_text, $has_object_ids ? true : false, $input_filter);
         } else {
             if (strpos($report_type, ".") === 0 || strpos($report_type, "/") === 0 || strpos($report_type, "http") === 0) {
                 throw new kCoreException("Will not search for invalid report_type [{$report_type}", kCoreException::INVALID_QUERY);
             }
             $file_path = dirname(__FILE__) . "/" . $report_type . ".sql";
         }
         $sql_raw_content = file_get_contents($file_path);
         if (!$sql_raw_content) {
             $pluginInstances = KalturaPluginManager::getPluginInstances('IKalturaReportProvider');
             foreach ($pluginInstances as $pluginInstance) {
                 $res = $pluginInstance->getReportResult($partner_id, $report_type, $report_flavor, $object_ids, $order_by);
                 if (!is_null($res)) {
                     return $res;
                 }
             }
             throw new kCoreException("Cannot find sql for [{$report_type}] [{$report_flavor}] at [{$file_path}]", kCoreException::QUERY_NOT_FOUND);
         }
         $entryFilter = new entryFilter();
         $entryFilter->setPartnerSearchScope($partner_id);
         $shouldSelectFromSearchEngine = false;
         $category_ids_clause = "1=1";
         if ($input_filter instanceof endUserReportsInputFilter) {
             if ($input_filter->playbackContext || $input_filter->ancestorPlaybackContext) {
                 $categoryFilter = new categoryFilter();
                 if ($input_filter->playbackContext && $input_filter->ancestorPlaybackContext) {
                     $categoryIds = category::CATEGORY_ID_THAT_DOES_NOT_EXIST;
                 } else {
                     if ($input_filter->playbackContext) {
                         $categoryFilter->set("_in_full_name", $input_filter->playbackContext);
                     }
                     if ($input_filter->ancestorPlaybackContext) {
                         $categoryFilter->set("_matchor_likex_full_name", $input_filter->ancestorPlaybackContext);
                     }
                     $c = KalturaCriteria::create(categoryPeer::OM_CLASS);
                     $categoryFilter->attachToCriteria($c);
                     $c->applyFilters();
                     $categoryIdsFromDB = $c->getFetchedIds();
                     if (count($categoryIdsFromDB)) {
                         $categoryIds = implode(",", $categoryIdsFromDB);
                     } else {
                         $categoryIds = category::CATEGORY_ID_THAT_DOES_NOT_EXIST;
                     }
                 }
                 $category_ids_clause = "ev.context_id in ( {$categoryIds} )";
             }
         }
         if ($input_filter->categories) {
             $entryFilter->set("_matchor_categories", $input_filter->categories);
             $shouldSelectFromSearchEngine = true;
         }
         if ($input_filter->keywords) {
             if ($input_filter->search_in_tags) {
                 $entryFilter->set("_free_text", $input_filter->keywords);
             } else {
                 $entryFilter->set("_like_admin_tags", $input_filter->keywords);
             }
             $shouldSelectFromSearchEngine = true;
         }
         $entryIdsFromDB = array();
         if ($shouldSelectFromSearchEngine) {
             $c = KalturaCriteria::create(entryPeer::OM_CLASS);
             $entryFilter->attachToCriteria($c);
             $c->applyFilters();
             $entryIdsFromDB = $c->getFetchedIds();
             if ($c->getRecordsCount() > count($entryIdsFromDB)) {
                 throw new kCoreException('Search is to general', kCoreException::SEARCH_TOO_GENERAL);
             }
             if (!count($entryIdsFromDB)) {
                 $entryIdsFromDB[] = entry::ENTRY_ID_THAT_DOES_NOT_EXIST;
             }
         }
         $obj_ids_clause = null;
         if ($object_ids) {
             //the object ids are not supposed to include single quotes - if they do have them - remove them
             $object_ids = str_replace("'", '', $object_ids);
             // quote all the objects with SINGLE-QUOTES
             $object_ids_str = "'" . str_replace(",", "','", $object_ids) . "'";
             if ($report_type == self::REPORT_TYPE_CONTENT_CONTRIBUTIONS) {
                 $obj_ids_clause = "en.entry_media_source_id in ( {$object_ids_str})";
             } else {
                 if ($report_type == self::REPORT_TYPE_TOP_SYNDICATION) {
                     $obj_ids_clause = "ev.domain_id in ( {$object_ids_str})";
                 } else {
                     if ($report_type == self::REPORT_TYPE_MAP_OVERLAY) {
                         $obj_ids_clause = "ev.country_id in ( {$object_ids_str})";
                     } else {
                         if ($report_type == self::REPORT_TYPE_ADMIN_CONSOLE) {
                             $obj_ids_clause = "dim_partner.partner_id in ( {$object_ids_str})";
                         } else {
                             if ($report_type == self::REPORT_TYPE_PARTNER_USAGE || $report_type == self::REPORT_TYPE_VAR_USAGE || $report_type == self::REPORT_TYPE_PEAK_STORAGE) {
                                 $obj_ids_clause = "partner_id in ({$object_ids_str})";
                             } else {
                                 if ($report_type == self::REPORT_TYPE_PLATFORMS) {
                                     $obj_ids_clause = "device in ({$object_ids_str})";
                                 } else {
                                     $objectIds = explode(',', $object_ids);
                                     $entryIds = "'" . implode("','", array_merge($objectIds, $entryIdsFromDB)) . "'";
                                     $obj_ids_clause = "ev.entry_id in ( {$entryIds} )";
                                 }
                             }
                         }
                     }
                 }
             }
         } elseif (count($entryIdsFromDB)) {
             $entryIds = "'" . implode("','", $entryIdsFromDB) . "'";
             $obj_ids_clause = "ev.entry_id in ( {$entryIds} )";
         }
         if ($input_filter instanceof endUserReportsInputFilter && $input_filter->userIds != null && ($report_type == self::REPORT_TYPE_USER_USAGE || $report_type == self::REPORT_TYPE_SPECIFIC_USER_USAGE)) {
             $userFilter = new kuserFilter();
             $userFilter->set("_in_puser_id", $input_filter->userIds);
             $c = KalturaCriteria::create(kuserPeer::OM_CLASS);
             $userFilter->attachToCriteria($c);
             $c->applyFilters();
             $userIdsFromDB = $c->getFetchedIds();
             if (count($userIdsFromDB)) {
                 $kuserIds = implode(",", $userIdsFromDB);
             } else {
                 $kuserIds = kuser::KUSER_ID_THAT_DOES_NOT_EXIST;
             }
             $obj_ids_clause = "u.kuser_id in ( {$kuserIds} )";
         }
         if (is_numeric($report_type)) {
             $order_by = self::getOrderBy(self::$type_map[$report_type], $order_by);
         }
         $query = self::getReplacedSql($sql_raw_content, $partner_id, $input_filter, $page_size, $page_index, $order_by, $obj_ids_clause, $category_ids_clause, $offset);
         if (is_numeric($report_type)) {
             $query_header = "/* -- " . self::$type_map[$report_type] . " " . self::$flavor_map[$report_flavor] . " -- */\n";
         } else {
             $query_header = "/* -- " . $report_type . " -- */\n";
         }
         KalturaLog::log("\n{$query_header}{$query}");
         $res = self::executeQuery($query);
         $end = microtime(true);
         KalturaLog::log("Query took [" . ($end - $start) . "]");
         return $res;
     } catch (Exception $ex) {
         KalturaLog::log($ex->getMessage());
         // TODO - write proeper error
         if ($ex->getCode() == kCoreException::SEARCH_TOO_GENERAL) {
         }
         throw $ex;
         throw new Exception("Error while processing report for [{$partner_id} , {$report_type} , {$report_flavor}]");
     }
 }
Ejemplo n.º 30
0
 function generate()
 {
     parent::generate();
     $xpath = new DOMXPath($this->_doc);
     // enumes
     $this->appendLine('<?php');
     if ($this->generateDocs) {
         $this->appendLine('/**');
         $this->appendLine(" * @package {$this->package}");
         $this->appendLine(" * @subpackage {$this->subpackage}");
         $this->appendLine(' */');
     }
     $this->appendLine('require_once(dirname(__FILE__) . "/KalturaClientBase.php");');
     $this->appendLine('');
     $enumNodes = $xpath->query("/xml/enums/enum");
     foreach ($enumNodes as $enumNode) {
         if (!$enumNode->hasAttribute('plugin')) {
             $this->writeEnum($enumNode);
         }
     }
     $this->addFile("KalturaEnums.php", $this->getTextBlock());
     // classes
     $this->startNewTextBlock();
     $this->appendLine('<?php');
     if ($this->generateDocs) {
         $this->appendLine('/**');
         $this->appendLine(" * @package {$this->package}");
         $this->appendLine(" * @subpackage {$this->subpackage}");
         $this->appendLine(' */');
     }
     $this->appendLine('require_once(dirname(__FILE__) . "/KalturaClientBase.php");');
     $this->appendLine('');
     $classNodes = $xpath->query("/xml/classes/class");
     foreach ($classNodes as $classNode) {
         if (!$classNode->hasAttribute('plugin')) {
             $this->writeClass($classNode);
         }
     }
     $this->addFile("KalturaTypes.php", $this->getTextBlock());
     // services
     $this->startNewTextBlock();
     $this->appendLine('<?php');
     if ($this->generateDocs) {
         $this->appendLine('/**');
         $this->appendLine(" * @package {$this->package}");
         $this->appendLine(" * @subpackage {$this->subpackage}");
         $this->appendLine(' */');
     }
     $this->appendLine('require_once(dirname(__FILE__) . "/KalturaClientBase.php");');
     $this->appendLine('require_once(dirname(__FILE__) . "/KalturaEnums.php");');
     $this->appendLine('require_once(dirname(__FILE__) . "/KalturaTypes.php");');
     $this->appendLine('');
     $serviceNodes = $xpath->query("/xml/services/service");
     foreach ($serviceNodes as $serviceNode) {
         if (!$serviceNode->hasAttribute('plugin')) {
             $this->writeService($serviceNode);
         }
     }
     $this->appendLine();
     $configurationNodes = $xpath->query("/xml/configurations/*");
     $this->writeMainClient($serviceNodes, $configurationNodes);
     $this->appendLine();
     $this->addFile("KalturaClient.php", $this->getTextBlock());
     // plugins
     $plugins = KalturaPluginManager::getPluginInstances();
     foreach ($plugins as $plugin) {
         $this->writePlugin($plugin);
     }
 }