mirror of
https://github.com/EGroupware/egroupware.git
synced 2025-01-12 17:08:16 +01:00
fixed missing sorting in inital sync-collection report with empty sync-token
This commit is contained in:
parent
017737e7eb
commit
1d1dbd252c
@ -155,6 +155,9 @@ class addressbook_groupdav extends groupdav_handler
|
|||||||
$files['sync-token-params'] = array($path, $user);
|
$files['sync-token-params'] = array($path, $user);
|
||||||
|
|
||||||
$this->sync_collection_token = null;
|
$this->sync_collection_token = null;
|
||||||
|
|
||||||
|
$filter['order'] = 'contact_modified ASC'; // return oldest modifications first
|
||||||
|
$filter['sync-collection'] = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isset($nresults))
|
if (isset($nresults))
|
||||||
@ -207,7 +210,7 @@ class addressbook_groupdav extends groupdav_handler
|
|||||||
$order = 'egw_addressbook.contact_id';
|
$order = 'egw_addressbook.contact_id';
|
||||||
}
|
}
|
||||||
// detect sync-collection report
|
// detect sync-collection report
|
||||||
$sync_collection_report = isset($filter[0]) && strpos($filter[0], 'contact_modified>') === 0;
|
$sync_collection_report = $filter['sync-collection'];
|
||||||
|
|
||||||
if (isset($filter_in[self::$path_attr]) && !is_array($filter_in[self::$path_attr]))
|
if (isset($filter_in[self::$path_attr]) && !is_array($filter_in[self::$path_attr]))
|
||||||
{
|
{
|
||||||
@ -484,7 +487,6 @@ class addressbook_groupdav extends groupdav_handler
|
|||||||
$sync_token = array_pop($parts);
|
$sync_token = array_pop($parts);
|
||||||
$filters[] = 'contact_modified>'.(int)$sync_token;
|
$filters[] = 'contact_modified>'.(int)$sync_token;
|
||||||
$filters['tid'] = null; // to return deleted entries too
|
$filters['tid'] = null; // to return deleted entries too
|
||||||
$filters['order'] = 'contact_modified ASC'; // return oldest modifications first
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 'sync-level':
|
case 'sync-level':
|
||||||
|
@ -220,6 +220,11 @@ class calendar_groupdav extends groupdav_handler
|
|||||||
$files['sync-token-params'] = array($path, $user);
|
$files['sync-token-params'] = array($path, $user);
|
||||||
|
|
||||||
$this->sync_collection_token = null;
|
$this->sync_collection_token = null;
|
||||||
|
|
||||||
|
$filter['order'] = 'cal_modified ASC'; // return oldest modifications first
|
||||||
|
$filter['sync-collection'] = true;
|
||||||
|
// no end-date / limit into the future, as unchanged entries would never be transferted later on
|
||||||
|
unset($filter['end']);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isset($nresults))
|
if (isset($nresults))
|
||||||
@ -267,7 +272,7 @@ class calendar_groupdav extends groupdav_handler
|
|||||||
$filter['num_rows'] = $start[1];
|
$filter['num_rows'] = $start[1];
|
||||||
}
|
}
|
||||||
$requested_multiget_ids = (array)$filter['query'][self::$path_attr];
|
$requested_multiget_ids = (array)$filter['query'][self::$path_attr];
|
||||||
$sync_collection = strpos($filter['query'][0],'cal_modified>') === 0 && $filter['filter'] == 'everything';
|
$sync_collection = $filter['sync-collection'];
|
||||||
|
|
||||||
$events =& $this->bo->search($filter);
|
$events =& $this->bo->search($filter);
|
||||||
|
|
||||||
@ -496,12 +501,9 @@ class calendar_groupdav extends groupdav_handler
|
|||||||
$sync_token = array_pop($parts);
|
$sync_token = array_pop($parts);
|
||||||
$cal_filters['query'][] = 'cal_modified>'.(int)$sync_token;
|
$cal_filters['query'][] = 'cal_modified>'.(int)$sync_token;
|
||||||
$cal_filters['filter'] = 'everything'; // to return deleted entries too
|
$cal_filters['filter'] = 'everything'; // to return deleted entries too
|
||||||
$cal_filters['order'] = 'cal_modified ASC'; // return oldest modifications first
|
|
||||||
// no standard time-range!
|
// no standard time-range!
|
||||||
unset($cal_filters['start']);
|
unset($cal_filters['start']);
|
||||||
}
|
}
|
||||||
// no end-date / limit into the future, as unchanged entries would never be transferted later on
|
|
||||||
unset($cal_filters['end']);
|
|
||||||
break;
|
break;
|
||||||
case 'sync-level':
|
case 'sync-level':
|
||||||
if ($option['data'] != '1')
|
if ($option['data'] != '1')
|
||||||
|
@ -188,6 +188,9 @@ class infolog_groupdav extends groupdav_handler
|
|||||||
$files['sync-token-params'] = array($path, $user);
|
$files['sync-token-params'] = array($path, $user);
|
||||||
|
|
||||||
$this->sync_collection_token = null;
|
$this->sync_collection_token = null;
|
||||||
|
|
||||||
|
$filter['order'] = 'info_datemodified ASC'; // return oldest modifications first
|
||||||
|
$filter['sync-collection'] = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isset($nresults))
|
if (isset($nresults))
|
||||||
@ -306,15 +309,15 @@ class infolog_groupdav extends groupdav_handler
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
// sync-collection report --> return modified of last contact as sync-token
|
// sync-collection report --> return modified of last contact as sync-token
|
||||||
$sync_collection_report = strpos($task_filter, '+deleted') !== false;
|
$sync_collection_report = $filter['sync-collection'];
|
||||||
if ($sync_collection_report)
|
if ($sync_collection_report)
|
||||||
{
|
{
|
||||||
$this->sync_collection_token = $info['date_modified'];
|
$this->sync_collection_token = $task['date_modified'];
|
||||||
|
|
||||||
// hack to support limit with sync-collection report: tasks are returned in modified ASC order (oldest first)
|
// hack to support limit with sync-collection report: tasks are returned in modified ASC order (oldest first)
|
||||||
// if limit is smaller then full result, return modified-1 as sync-token, so client requests next chunk incl. modified
|
// if limit is smaller then full result, return modified-1 as sync-token, so client requests next chunk incl. modified
|
||||||
// (which might contain further entries with identical modification time)
|
// (which might contain further entries with identical modification time)
|
||||||
if ($start[0] == 0 && $start[1] != groupdav_propfind_iterator::CHUNK_SIZE && $query['total'] > $start[1])
|
if ($start[0] == 0 && $start[1] != groupdav_propfind_iterator::CHUNK_SIZE && $this->bo->total > $start[1])
|
||||||
{
|
{
|
||||||
--$this->sync_collection_token;
|
--$this->sync_collection_token;
|
||||||
}
|
}
|
||||||
@ -408,7 +411,6 @@ class infolog_groupdav extends groupdav_handler
|
|||||||
$sync_token = array_pop($parts);
|
$sync_token = array_pop($parts);
|
||||||
$cal_filters[] = 'info_datemodified>'.(int)$sync_token;
|
$cal_filters[] = 'info_datemodified>'.(int)$sync_token;
|
||||||
$cal_filters['filter'] .= '+deleted'; // to return deleted entries too
|
$cal_filters['filter'] .= '+deleted'; // to return deleted entries too
|
||||||
$cal_filters['order'] = 'info_datemodified ASC'; // return oldest modifications first
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 'sync-level':
|
case 'sync-level':
|
||||||
|
Loading…
Reference in New Issue
Block a user