コード例 #1
0
 public static function executeStaticPlaylistFromEntryIds(array $entry_id_list, $entry_filter = null, $detailed = true, $pager = null)
 {
     // if exists extra_filters - use the first one to filter the entry_id_list
     $c = KalturaCriteria::create(entryPeer::OM_CLASS);
     $filter = new entryFilter();
     $filter->setIdIn($entry_id_list);
     $filter->setStatusEquel(entryStatus::READY);
     $filter->setPartnerSearchScope(baseObjectFilter::MATCH_KALTURA_NETWORK_AND_PRIVATE);
     $filter->attachToCriteria($c);
     if (!self::$isAdminKs) {
         self::addSchedulingToCriteria($c);
     }
     self::addModerationToCriteria($c);
     if ($entry_filter) {
         if ($entry_filter->getLimit() > 0) {
             $limit = $entry_filter->getLimit();
         }
         $entry_filter->setLimit(null);
         // read the _eq_display_in_search field but ignore it because it's part of a more complex criterion - see bellow
         $display_in_search = $entry_filter->get("_eq_display_in_search");
         if ($display_in_search >= 2) {
             $entry_filter->set("_eq_display_in_search", null);
         }
         $entry_filter->setPartnerSearchScope(baseObjectFilter::MATCH_KALTURA_NETWORK_AND_PRIVATE);
         $entry_filter->attachToCriteria($c);
         // add some hard-coded criteria
         $c->addAnd(entryPeer::TYPE, array(entryType::MEDIA_CLIP, entryType::MIX, entryType::LIVE_STREAM), Criteria::IN);
         // search only for clips or roughcuts
         $c->addAnd(entryPeer::STATUS, entryStatus::READY);
         // search only for READY entries
         if ($display_in_search >= 2) {
             // We don't allow searching in the KalturaNEtwork anymore (mainly for performance reasons)
             // allow only assets for the partner
             $c->addAnd(entryPeer::PARTNER_ID, $partner_id);
             //
             /*				
             				$crit = $c->getNewCriterion ( entryPeer::PARTNER_ID , $partner_id );
             				$crit->addOr ( $c->getNewCriterion ( entryPeer::DISPLAY_IN_SEARCH , $display_in_search ) );
             				$c->addAnd ( $crit );
             */
         }
     }
     if ($detailed) {
         $unsorted_entry_list = entryPeer::doSelectJoinkuser($c);
     } else {
         $unsorted_entry_list = entryPeer::doSelect($c);
     }
     // maybe join with kuser to add some data about the contributor
     // now sort the list according to $entry_id_list
     $entry_list = array();
     // build a map where the key is the id of the entry
     $id_list = self::buildIdMap($unsorted_entry_list);
     if ($pager) {
         $pageSize = $pager->calcPageSize();
         $startOffset = $pager->calcOffset();
     }
     // VERY STRANGE !! &$entry_id must be with a & or else the values of the array change !!!
     foreach ($entry_id_list as &$entry_id) {
         if ($entry_id != "") {
             $current_entry = @$id_list[$entry_id];
             if ($current_entry) {
                 if (isset($limit) && $limit-- === 0) {
                     break;
                 }
                 if ($pager) {
                     if ($startOffset > 0) {
                         $startOffset--;
                         continue;
                     } else {
                         if ($pageSize > 0) {
                             $pageSize--;
                         } else {
                             break;
                         }
                     }
                 }
                 // add to the entry_list only when the entry_id is not empty
                 $entry_list[] = $current_entry;
             }
         }
     }
     if (count($entry_list) == 0) {
         return null;
     }
     return $entry_list;
 }
コード例 #2
0
 /**
  * Returns all live entries that were live in the past X hours
  */
 protected function getLiveEntries(WSLiveReportsClient $client, $partnerId, KalturaFilterPager $pager)
 {
     // Get live entries list
     /** @var WSLiveEntriesListResponse */
     $response = $client->getLiveEntries($partnerId);
     if ($response->totalCount == 0) {
         return null;
     }
     // Hack to overcome the bug of single value
     $entryIds = $response->entries;
     if (!is_array($entryIds)) {
         $entryIds = array();
         $entryIds[] = $response->entries;
     }
     // Order entries by first broadcast
     $baseCriteria = KalturaCriteria::create(entryPeer::OM_CLASS);
     $filter = new entryFilter();
     $filter->setTypeEquel(KalturaEntryType::LIVE_STREAM);
     $filter->setIdIn($entryIds);
     $filter->setPartnerSearchScope(baseObjectFilter::MATCH_KALTURA_NETWORK_AND_PRIVATE);
     $filter->attachToCriteria($baseCriteria);
     $baseCriteria->addAscendingOrderByColumn("entry.name");
     $pager->attachToCriteria($baseCriteria);
     $entries = entryPeer::doSelect($baseCriteria);
     $entryIds = array();
     foreach ($entries as $entry) {
         $entryIds[] = $entry->getId();
     }
     $totalCount = $baseCriteria->getRecordsCount();
     return array($entryIds, $totalCount);
 }
 public static function getStaticPlaylistFilters(entry $playlist)
 {
     $entriesList = explode(',', $playlist->getDataContent());
     $filter = new entryFilter();
     $filter->setIdIn($entriesList);
     return array($filter);
 }