public function KalturaHelpers::filterOutUpToDateEntries in Kaltura 7.3
Filters up-to-date entries of specific timestamp.
Parameters
int $timestamp: Timestamp to check.
Return value
array Entry IDs that need to be updated.
Throws
\Exception If number of entries was changed remotely while fetching entries.
File
- kaltura_client/
kaltura_helpers.php, line 586
Class
- KalturaHelpers
- Class KalturaHelpers.
Code
public function filterOutUpToDateEntries($timestamp) {
$client = $this
->getKalturaClient(TRUE);
$filter = new KalturaMediaEntryFilter();
$filter->orderBy = KalturaMediaEntryOrderBy::CREATED_AT_ASC;
$filter->updatedAtGreaterThanOrEqual = $timestamp;
$filter->updatedAtLessThanOrEqual = $timestamp;
$pager = new KalturaFilterPager();
$pager->pageSize = 100;
$entry_ids = array();
$total = NULL;
while (TRUE) {
++$pager->pageIndex;
$result = $client->media
->listAction($filter, $pager);
if (!isset($total)) {
$total = $result->totalCount;
}
elseif ($result->totalCount != $total) {
throw new Exception(t('Number of entries was changed remotely.'));
}
if (empty($result->objects)) {
break;
}
foreach ($result->objects as $entry) {
$entry_ids[] = $entry->id;
}
if (count($entry_ids) == $total) {
break;
}
}
if ($entry_ids) {
$query = new EntityFieldQuery();
$result = $query
->entityCondition('entity_type', 'kaltura_entry')
->propertyCondition('kaltura_entryid', $entry_ids)
->propertyCondition('kaltura_updated_date', $timestamp)
->execute();
if (!empty($result['kaltura_entry'])) {
$entities = entity_load('kaltura_entry', array_keys($result['kaltura_entry']));
$up_to_date = array();
foreach ($entities as $entity) {
$up_to_date[] = $entity->kaltura_entryid;
}
$entry_ids = array_diff($entry_ids, $up_to_date);
}
}
return $entry_ids;
}