mirror of
https://github.com/EGroupware/egroupware.git
synced 2025-06-25 12:21:26 +02:00
Optimize SyncML device information handling
This commit is contained in:
parent
58dfaac768
commit
dc1fa86a9a
@ -458,6 +458,7 @@ class Horde_SyncML_State {
|
|||||||
function setClientDeviceInfo($clientDeviceInfo)
|
function setClientDeviceInfo($clientDeviceInfo)
|
||||||
{
|
{
|
||||||
$this->_clientDeviceInfo = $clientDeviceInfo;
|
$this->_clientDeviceInfo = $clientDeviceInfo;
|
||||||
|
$this->_clientDeviceInfo['persistent'] = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
function setDeletedItems($_type, $_deletedItems)
|
function setDeletedItems($_type, $_deletedItems)
|
||||||
@ -1131,13 +1132,16 @@ class Horde_SyncML_State {
|
|||||||
*/
|
*/
|
||||||
function writeClientDeviceInfo()
|
function writeClientDeviceInfo()
|
||||||
{
|
{
|
||||||
if (!isset($this->_clientDeviceInfo) || !is_array($this->_clientDeviceInfo)) {
|
if (!isset($this->_clientDeviceInfo) ||
|
||||||
|
!is_array($this->_clientDeviceInfo) ||
|
||||||
|
!empty($this->_clientDeviceInfo['persistent'])) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
$dt = &$this->getDataTree();
|
$dt = &$this->getDataTree();
|
||||||
|
|
||||||
$s = $this->_locName . $this->_sourceURI . 'deviceInfo';
|
$s = $this->_locName . $this->_sourceURI . 'deviceInfo';
|
||||||
|
$this->_clientDeviceInfo['persistent'] = true;
|
||||||
|
|
||||||
// Set $locid.
|
// Set $locid.
|
||||||
$info = new DataTreeObject($s);
|
$info = new DataTreeObject($s);
|
||||||
|
@ -238,6 +238,7 @@ class EGW_SyncML_State extends Horde_SyncML_State
|
|||||||
'tzid' => $syncml_prefs[$deviceTimezone],
|
'tzid' => $syncml_prefs[$deviceTimezone],
|
||||||
'charset' => $syncml_prefs[$deviceCharSet],
|
'charset' => $syncml_prefs[$deviceCharSet],
|
||||||
'devId' => $deviceID,
|
'devId' => $deviceID,
|
||||||
|
'persistent' => true,
|
||||||
'dataStore' => unserialize($row['dev_datastore']),
|
'dataStore' => unserialize($row['dev_datastore']),
|
||||||
);
|
);
|
||||||
return $this->_clientDeviceInfo;
|
return $this->_clientDeviceInfo;
|
||||||
@ -634,66 +635,67 @@ class EGW_SyncML_State extends Horde_SyncML_State
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!isset($this->size_dev_hwversion)) {
|
if (empty($this->_clientDeviceInfo['persistent'])) {
|
||||||
$tableDefDevInfo = $GLOBALS['egw']->db->get_table_definitions('syncml',$this->table_devinfo);
|
// the device information was updated
|
||||||
$this->size_dev_hwversion = $tableDefDevInfo['fd']['dev_hwversion']['precision'];
|
|
||||||
unset($tableDefDevInfo);
|
if(!isset($this->size_dev_hwversion)) {
|
||||||
|
$tableDefDevInfo = $GLOBALS['egw']->db->get_table_definitions('syncml',$this->table_devinfo);
|
||||||
|
$this->size_dev_hwversion = $tableDefDevInfo['fd']['dev_hwversion']['precision'];
|
||||||
|
unset($tableDefDevInfo);
|
||||||
|
}
|
||||||
|
|
||||||
|
$softwareVersion = !empty($this->_clientDeviceInfo['softwareVersion']) ? $this->_clientDeviceInfo['softwareVersion'] : '';
|
||||||
|
$hardwareVersion = !empty($this->_clientDeviceInfo['hardwareVersion']) ? substr($this->_clientDeviceInfo['hardwareVersion'], 0, $this->size_dev_hwversion) : '';
|
||||||
|
$firmwareVersion = !empty($this->_clientDeviceInfo['firmwareVersion']) ? $this->_clientDeviceInfo['firmwareVersion'] : '';
|
||||||
|
|
||||||
|
$where = array(
|
||||||
|
'dev_model' => $this->_clientDeviceInfo['model'],
|
||||||
|
'dev_manufacturer' => $this->_clientDeviceInfo['manufacturer'],
|
||||||
|
'dev_swversion' => $softwareVersion,
|
||||||
|
'dev_hwversion' => $hardwareVersion,
|
||||||
|
'dev_fwversion' => $firmwareVersion,
|
||||||
|
);
|
||||||
|
|
||||||
|
if (($deviceID = $GLOBALS['egw']->db->select('egw_syncmldevinfo', 'dev_id', $where,
|
||||||
|
__LINE__, __FILE__, false, '', 'syncml')->fetchColumn())) {
|
||||||
|
$data = array (
|
||||||
|
'dev_datastore' => serialize($this->_clientDeviceInfo['dataStore']),
|
||||||
|
);
|
||||||
|
$GLOBALS['egw']->db->update('egw_syncmldevinfo', $data, $where,
|
||||||
|
__LINE__, __FILE__, 'syncml');
|
||||||
|
} else {
|
||||||
|
$data = array (
|
||||||
|
'dev_dtdversion' => $this->_clientDeviceInfo['DTDVersion'],
|
||||||
|
'dev_numberofchanges' => ($this->_clientDeviceInfo['supportNumberOfChanges'] ? true : false),
|
||||||
|
'dev_largeobjs' => ($this->_clientDeviceInfo['supportLargeObjs'] ? true : false),
|
||||||
|
'dev_utc' => ($this->_clientDeviceInfo['UTC'] ? true : false),
|
||||||
|
'dev_swversion' => $softwareVersion,
|
||||||
|
'dev_hwversion' => $hardwareVersion,
|
||||||
|
'dev_fwversion' => $firmwareVersion,
|
||||||
|
'dev_oem' => $this->_clientDeviceInfo['oem'],
|
||||||
|
'dev_model' => $this->_clientDeviceInfo['model'],
|
||||||
|
'dev_manufacturer' => $this->_clientDeviceInfo['manufacturer'],
|
||||||
|
'dev_devicetype' => $this->_clientDeviceInfo['deviceType'],
|
||||||
|
'dev_datastore' => serialize($this->_clientDeviceInfo['dataStore']),
|
||||||
|
);
|
||||||
|
$GLOBALS['egw']->db->insert('egw_syncmldevinfo', $data, $where, __LINE__, __FILE__, 'syncml');
|
||||||
|
|
||||||
|
$deviceID = $GLOBALS['egw']->db->get_last_insert_id('egw_syncmldevinfo', 'dev_id');
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->_clientDeviceInfo['persistent'] = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
$softwareVersion = !empty($this->_clientDeviceInfo['softwareVersion']) ? $this->_clientDeviceInfo['softwareVersion'] : '';
|
$data = $where = array (
|
||||||
$hardwareVersion = !empty($this->_clientDeviceInfo['hardwareVersion']) ? substr($this->_clientDeviceInfo['hardwareVersion'], 0, $this->size_dev_hwversion) : '';
|
|
||||||
$firmwareVersion = !empty($this->_clientDeviceInfo['firmwareVersion']) ? $this->_clientDeviceInfo['firmwareVersion'] : '';
|
|
||||||
|
|
||||||
$where = array(
|
|
||||||
'dev_model' => $this->_clientDeviceInfo['model'],
|
|
||||||
'dev_manufacturer' => $this->_clientDeviceInfo['manufacturer'],
|
|
||||||
'dev_swversion' => $softwareVersion,
|
|
||||||
'dev_hwversion' => $hardwareVersion,
|
|
||||||
'dev_fwversion' => $firmwareVersion,
|
|
||||||
);
|
|
||||||
|
|
||||||
if (($deviceID = $GLOBALS['egw']->db->select('egw_syncmldevinfo', 'dev_id', $where,
|
|
||||||
__LINE__, __FILE__, false, '', 'syncml')->fetchColumn())) {
|
|
||||||
$data = array (
|
|
||||||
'dev_datastore' => serialize($this->_clientDeviceInfo['dataStore']),
|
|
||||||
);
|
|
||||||
$GLOBALS['egw']->db->update('egw_syncmldevinfo', $data, $where,
|
|
||||||
__LINE__, __FILE__, 'syncml');
|
|
||||||
} else {
|
|
||||||
$data = array (
|
|
||||||
'dev_dtdversion' => $this->_clientDeviceInfo['DTDVersion'],
|
|
||||||
'dev_numberofchanges' => ($this->_clientDeviceInfo['supportNumberOfChanges'] ? true : false),
|
|
||||||
'dev_largeobjs' => ($this->_clientDeviceInfo['supportLargeObjs'] ? true : false),
|
|
||||||
'dev_utc' => ($this->_clientDeviceInfo['UTC'] ? true : false),
|
|
||||||
'dev_swversion' => $softwareVersion,
|
|
||||||
'dev_hwversion' => $hardwareVersion,
|
|
||||||
'dev_fwversion' => $firmwareVersion,
|
|
||||||
'dev_oem' => $this->_clientDeviceInfo['oem'],
|
|
||||||
'dev_model' => $this->_clientDeviceInfo['model'],
|
|
||||||
'dev_manufacturer' => $this->_clientDeviceInfo['manufacturer'],
|
|
||||||
'dev_devicetype' => $this->_clientDeviceInfo['deviceType'],
|
|
||||||
'dev_datastore' => serialize($this->_clientDeviceInfo['dataStore']),
|
|
||||||
);
|
|
||||||
$GLOBALS['egw']->db->insert('egw_syncmldevinfo', $data, $where, __LINE__, __FILE__, 'syncml');
|
|
||||||
|
|
||||||
$deviceID = $GLOBALS['egw']->db->get_last_insert_id('egw_syncmldevinfo', 'dev_id');
|
|
||||||
}
|
|
||||||
|
|
||||||
$where = array (
|
|
||||||
'owner_locname' => $this->_locName,
|
'owner_locname' => $this->_locName,
|
||||||
'owner_deviceid' => $this->_sourceURI,
|
'owner_deviceid' => $this->_sourceURI,
|
||||||
);
|
);
|
||||||
|
|
||||||
if ($GLOBALS['egw']->db->select('egw_syncmldeviceowner', 'owner_devid', $where,
|
$GLOBALS['egw']->db->delete('egw_syncmldeviceowner', $where,
|
||||||
__LINE__, __FILE__, false, '', 'syncml')->fetchColumn()) {
|
__LINE__, __FILE__, 'syncml');
|
||||||
$GLOBALS['egw']->db->delete('egw_syncmldeviceowner', $where,
|
|
||||||
__LINE__, __FILE__, 'syncml');
|
$data['owner_devid'] = $deviceID;
|
||||||
}
|
|
||||||
$data = array (
|
|
||||||
'owner_locname' => $this->_locName,
|
|
||||||
'owner_deviceid' => $this->_sourceURI,
|
|
||||||
'owner_devid' => $deviceID,
|
|
||||||
);
|
|
||||||
$GLOBALS['egw']->db->insert('egw_syncmldeviceowner', $data, $where,
|
$GLOBALS['egw']->db->insert('egw_syncmldeviceowner', $data, $where,
|
||||||
__LINE__, __FILE__, 'syncml');
|
__LINE__, __FILE__, 'syncml');
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user