mirror of
https://github.com/EGroupware/egroupware.git
synced 2024-11-21 23:43:17 +01:00
if async ID would be longer than 64 chars truncate it to 32 chars plus md5 hash of all data
take care of being able to read old, just truncated IDs too
This commit is contained in:
parent
4747cb2c23
commit
31838415b3
@ -267,9 +267,16 @@ class importexport_schedule_ui
|
||||
}
|
||||
|
||||
/**
|
||||
* Generate a async key
|
||||
*/
|
||||
public static function generate_id($data)
|
||||
* Generate an unique async key
|
||||
*
|
||||
* If the id is longer than 64 chars (supported in current DB schema), we use the first 32 chars
|
||||
* plus a md5 hash of the whole data.
|
||||
*
|
||||
* @param array $data
|
||||
* @param bool $old false: generate new id with md5 hash, if otherwise to long, true: generate old, to 64 chars truncated, id
|
||||
* @return false|string
|
||||
*/
|
||||
public static function generate_id($data, $old=false)
|
||||
{
|
||||
|
||||
$query = array(
|
||||
@ -280,7 +287,11 @@ class importexport_schedule_ui
|
||||
$definition_list = ((array)$definitions->get_definitions());
|
||||
|
||||
$id = 'importexport.'.$definition_list[0].'.'.$data['target'];
|
||||
return substr($id, 0, 64);
|
||||
if (strlen($id) <= 64 || $old)
|
||||
{
|
||||
return substr($id, 0, 64);
|
||||
}
|
||||
return substr($id, 0, 32).md5($id);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -645,12 +656,12 @@ class importexport_schedule_ui
|
||||
{
|
||||
$id = self::generate_id($data);
|
||||
$async = new Api\Asyncservice();
|
||||
$jobs = $async->read($id);
|
||||
$job = $jobs[$id];
|
||||
$jobs = $async->read($id) ?: $async->read($old_id=self::generate_id($data, true)) ?: [];
|
||||
$job = array_shift($jobs);
|
||||
|
||||
if(is_array($job))
|
||||
{
|
||||
$async->cancel_timer($id);
|
||||
$async->cancel_timer($old_id ?? $id);
|
||||
$result = $async->set_timer(
|
||||
$job['times'],
|
||||
$id,
|
||||
|
Loading…
Reference in New Issue
Block a user