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; }
/** * 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); }