diff --git a/phpgwapi/inc/horde/Horde/SyncML/State.php b/phpgwapi/inc/horde/Horde/SyncML/State.php index df1c356b85..30a912ed3c 100644 --- a/phpgwapi/inc/horde/Horde/SyncML/State.php +++ b/phpgwapi/inc/horde/Horde/SyncML/State.php @@ -150,64 +150,64 @@ define('MAX_ENTRIES', 10); * @package Horde_SyncML */ class Horde_SyncML_State { - + var $_sessionID; - + var $_verProto; - + var $_msgID; - + var $_targetURI; - + var $_sourceURI; - + var $_version; - + var $_locName; - + var $_password; - + var $_isAuthorized; - + var $_uri; - + var $_uriMeta; - + var $_syncs = array(); - + var $_clientAnchorNext = array(); // written to db after successful sync - + var $_serverAnchorLast = array(); - + var $_serverAnchorNext = array(); // written to db after successful sync - + var $_clientDeviceInfo = array(); - + // array list of changed items, which need to be synced to the client var $_changedItems; - + // array list of deleted items, which need to be synced to the client var $_deletedItems; - + // array list of added items, which need to be synced to the client var $_addedItems; - + // bool flag that we need to more data var $_syncStatus; - + var $_log = array(); - + // stores if we received Alert 222 already var $_receivedAlert222 = false; - + // stores if we already requested the deviceinfo var $_devinfoRequested = false; - /* + /* * store the mappings of egw uids to client uids */ var $_uidMappings = array(); - + /** * Creates a new instance of Horde_SyncML_State. */ @@ -222,7 +222,7 @@ class Horde_SyncML_State { $this->isAuthorized = false; } - + /** * store the sent global uid */ @@ -237,7 +237,7 @@ class Horde_SyncML_State { if(isset($this->_uidMappings[$_sentEgwUid])) { return $this->_uidMappings[$_sentEgwUid]; } - + return false; } @@ -287,7 +287,7 @@ class Horde_SyncML_State { { return $this->_addedItems[$_type]; } - + return false; } @@ -297,20 +297,20 @@ class Horde_SyncML_State { { return $this->_changedItems[$_type]; } - + return false; } - + function &getDeletedItems($_type) { if(isset($this->_deletedItems[$_type])) { return $this->_deletedItems[$_type]; } - + return false; } - + function getMoreDataPending() { return $this->_moreDataPending; @@ -330,7 +330,7 @@ class Horde_SyncML_State { { return !empty($this->_wbxml); } - + function &getSyncStatus() { return $this->_syncStatus; @@ -398,7 +398,7 @@ class Horde_SyncML_State { #Horde::logMessage('SyncML: syncState set to ==> ' . $_syncStatus, __FILE__, __LINE__, PEAR_LOG_DEBUG); $this->_syncStatus = $_syncStatus; } - + function setTargetURI($targetURI) { $this->_targetURI = $targetURI; @@ -427,15 +427,15 @@ class Horde_SyncML_State { function isAuthorized() { if (!$this->_isAuthorized) { - + if(strstr($this->_locName,'@') === False) { - $this->_locName .= '@'.$GLOBALS['phpgw_info']['server']['default_domain']; + $this->_locName .= '@'.$GLOBALS['egw_info']['server']['default_domain']; } #Horde::logMessage('SyncML: Authenticate ' . $this->_locName . ' - ' . $this->_password, __FILE__, __LINE__, PEAR_LOG_DEBUG); - - if($GLOBALS['sessionid'] = $GLOBALS['phpgw']->session->create($this->_locName,$this->_password,'text','u')) + + if($GLOBALS['sessionid'] = $GLOBALS['egw']->session->create($this->_locName,$this->_password,'text','u')) { $this->_isAuthorized = true; #Horde::logMessage('SyncML_EGW: Authentication of ' . $this->_locName . '/' . $GLOBALS['sessionid'] . ' succeded' , __FILE__, __LINE__, PEAR_LOG_DEBUG); @@ -450,13 +450,13 @@ class Horde_SyncML_State { { // store sessionID in a variable, because ->verify maybe resets that value $sessionID = session_id(); - if(!$GLOBALS['phpgw']->session->verify($sessionID, 'staticsyncmlkp3')) + if(!$GLOBALS['egw']->session->verify($sessionID, 'staticsyncmlkp3')) Horde::logMessage('SyncML_EGW: egw session('.$sessionID. ') not verified ' , __FILE__, __LINE__, PEAR_LOG_DEBUG); } return $this->_isAuthorized; } - + function clearSync($target) { unset($this->_syncs[$target]); @@ -475,17 +475,17 @@ class Horde_SyncML_State { return false; } } - + function getTargets() { if(count($this->_syncs) < 1) return FALSE; - + foreach($this->_syncs as $target => $sync) { $targets[] = $target; } - + return $targets; } @@ -728,23 +728,23 @@ class Horde_SyncML_State { case 'notes': return 'text/x-vnote'; break; - + case 'calendar': case 'tasks': case 'caltasks': return 'text/x-vcalendar'; break; - + case 'sifcalendar': case 'scal': return 'text/x-s4j-sife'; break; - + case 'sifcontacts': case 'scard': return 'text/x-s4j-sifc'; break; - + case 'siftasks': case 'stask': return 'text/x-s4j-sift'; @@ -754,7 +754,7 @@ class Horde_SyncML_State { case 'snote': return 'text/x-s4j-sifn'; break; - + default: Horde::logMessage("SyncML: unrecognized content type '$_type'", __FILE__, __LINE__, PEAR_LOG_ERR); break; @@ -769,15 +769,15 @@ class Horde_SyncML_State { case 'contacts': return 'contacts'; break; - + case 'notes': return 'notes'; break; - + case 'tasks': return 'tasks'; break; - + case 'calendar': case 'caltasks': return 'calendar'; @@ -789,12 +789,12 @@ class Horde_SyncML_State { case 'scal': return 'sifcalendar'; break; - + case 'sifcontacts': case 'scard': return 'sifcontacts'; break; - + case 'siftasks': case 'stask': return 'siftasks'; @@ -819,17 +819,17 @@ class Horde_SyncML_State { * * This is passed as an option to the Horde API export functions. */ - + function getPreferedContentTypeClient($_sourceLocURI, $_targetLocURI = null) { $deviceInfo = $this->getClientDeviceInfo(); - + if(isset($deviceInfo['dataStore'][$_sourceLocURI]['rxPreference']['contentType'])) { return $this->adjustContentType($deviceInfo['dataStore'][$_sourceLocURI]['rxPreference']['contentType'], $_targetLocURI); } - + Horde::logMessage('SyncML: sourceLocURI ' . $_sourceLocURI .' not found', __FILE__, __LINE__, PEAR_LOG_DEBUG); - + if ($_targetLocURI != null) { return $this->adjustContentType($this->getPreferedContentType($_targetLocURI), $_targetLocURI); @@ -905,7 +905,7 @@ class Horde_SyncML_State { } $info = $dt->getObjectById($id); - + return $info->get('ClientDeviceInfo'); } diff --git a/phpgwapi/inc/horde/Horde/SyncML/State_egw.php b/phpgwapi/inc/horde/Horde/SyncML/State_egw.php index 296a1c2294..073563d65d 100644 --- a/phpgwapi/inc/horde/Horde/SyncML/State_egw.php +++ b/phpgwapi/inc/horde/Horde/SyncML/State_egw.php @@ -20,7 +20,7 @@ class EGW_SyncML_State extends Horde_SyncML_State { $mapID = $this->_locName . $this->_sourceURI . $type; - $db = clone($GLOBALS['phpgw']->db); + $db = clone($GLOBALS['egw']->db); $cols = array('map_timestamp'); diff --git a/phpgwapi/inc/horde/Horde/SyncML/Sync/TwoWaySync.php b/phpgwapi/inc/horde/Horde/SyncML/Sync/TwoWaySync.php index 6ba885949f..84da16ee42 100644 --- a/phpgwapi/inc/horde/Horde/SyncML/Sync/TwoWaySync.php +++ b/phpgwapi/inc/horde/Horde/SyncML/Sync/TwoWaySync.php @@ -22,41 +22,41 @@ class Horde_SyncML_Sync_TwoWaySync extends Horde_SyncML_Sync { function endSync($currentCmdID, &$output) { global $registry; - + $state = &$_SESSION['SyncML.state']; - + $syncType = $this->_targetLocURI; - + $hordeType = $state->getHordeType($syncType); - + $refts = $state->getServerAnchorLast($syncType); $currentCmdID = $this->handleSync($currentCmdID, $hordeType, $syncType, $output, $refts); - + return $currentCmdID; } function handleSync($currentCmdID, $hordeType, $syncType,&$output, $refts) { global $registry; - + // array of Items which got modified, but got never send to the client before $missedAdds = array(); - - $history = $GLOBALS['phpgw']->contenthistory; + + $history = $GLOBALS['egw']->contenthistory; $state = &$_SESSION['SyncML.state']; $counter = 0; - + $changes = &$state->getChangedItems($hordeType); $deletes = &$state->getDeletedItems($hordeType); $adds = &$state->getAddedItems($hordeType); - + Horde::logMessage("SyncML: ".count($changes).' changed items found for '.$hordeType, __FILE__, __LINE__, PEAR_LOG_DEBUG); Horde::logMessage("SyncML: ".count($deletes).' deleted items found for '.$hordeType, __FILE__, __LINE__, PEAR_LOG_DEBUG); Horde::logMessage("SyncML: ".count($adds). ' added items found for '.$hordeType , __FILE__, __LINE__, PEAR_LOG_DEBUG); - + // handle changes if(is_array($changes)) { while($guid = array_shift($changes)) { @@ -77,7 +77,7 @@ class Horde_SyncML_Sync_TwoWaySync extends Horde_SyncML_Sync { Horde::logMessage("SyncML: unable to create change for $guid: locid not found in map", __FILE__, __LINE__, PEAR_LOG_WARNING); continue; } - + // Create a replace request for client. $contentType = $state->getPreferedContentTypeClient($this->_sourceLocURI, $this->_targetLocURI); $c = $registry->call($hordeType. '/export', @@ -98,7 +98,7 @@ class Horde_SyncML_Sync_TwoWaySync extends Horde_SyncML_Sync { $currentCmdID = $cmd->outputCommand($currentCmdID, $output, 'Replace'); $state->log('Server-Replace'); - + // return if we have to much data if (++$counter >= MAX_ENTRIES && isset($contentType['mayFragment']) @@ -124,13 +124,13 @@ class Horde_SyncML_Sync_TwoWaySync extends Horde_SyncML_Sync { Horde::logMessage("SyncML: delete $guid ignored, came from client", __FILE__, __LINE__, PEAR_LOG_DEBUG); continue; } - + $locid = $state->getLocID($syncType, $guid); if (!$locid) { Horde::logMessage("SyncML: unable to create delete for $guid: locid not found in map", __FILE__, __LINE__, PEAR_LOG_WARNING); continue; } - + Horde::logMessage("SyncML: delete: $guid", __FILE__, __LINE__, PEAR_LOG_DEBUG); // Create a Delete request for client. $cmd = &new Horde_SyncML_Command_Sync_ContentSyncElement(); @@ -139,7 +139,7 @@ class Horde_SyncML_Sync_TwoWaySync extends Horde_SyncML_Sync { $currentCmdID = $cmd->outputCommand($currentCmdID, $output, 'Delete'); $state->log('Server-Delete'); $state->removeUID($syncType, $locid); - + $contentType = $state->getPreferedContentTypeClient($this->_sourceLocURI, $this->_targetLocURI); // return if we have to much data if(++$counter >= MAX_ENTRIES @@ -160,7 +160,7 @@ class Horde_SyncML_Sync_TwoWaySync extends Horde_SyncML_Sync { $adds = &$state->getAddedItems($hordeType); Horde::logMessage("SyncML: merged adds counter ".count($adds).' / '.$adds[0], __FILE__, __LINE__, PEAR_LOG_DEBUG); } - + if(is_array($adds)) { while($guid = array_shift($adds)) { $guid_ts = $history->getTSforAction($guid, 'add'); @@ -172,9 +172,9 @@ class Horde_SyncML_Sync_TwoWaySync extends Horde_SyncML_Sync { Horde::logMessage("SyncML: add: $guid ignored, came from client", __FILE__, __LINE__, PEAR_LOG_DEBUG); continue; } - + $locid = $state->getLocID($syncType, $guid); - + if ($locid && $refts == 0) { // For slow sync (ts=0): do not add data for which we // have a locid again. This is a heuristic to avoid @@ -183,10 +183,10 @@ class Horde_SyncML_Sync_TwoWaySync extends Horde_SyncML_Sync { continue; } Horde::logMessage("SyncML: add: $guid", __FILE__, __LINE__, PEAR_LOG_DEBUG); - + // Create an Add request for client. $contentType = $state->getPreferedContentTypeClient($this->_sourceLocURI, $this->_targetLocURI); - + $cmd = &new Horde_SyncML_Command_Sync_ContentSyncElement(); $c = $registry->call($hordeType . '/export', array( @@ -194,7 +194,7 @@ class Horde_SyncML_Sync_TwoWaySync extends Horde_SyncML_Sync { 'contentType' => $contentType , ) ); - + if (!is_a($c, 'PEAR_Error')) { // Item in history but not in database. Strange, but can happen. $cmd->setContent($c); @@ -206,7 +206,7 @@ class Horde_SyncML_Sync_TwoWaySync extends Horde_SyncML_Sync { $cmd->setSourceURI($guid); $currentCmdID = $cmd->outputCommand($currentCmdID, $output, 'Add'); $state->log('Server-Add'); - + // return if we have to much data if(++$counter >= MAX_ENTRIES && isset($contentType['mayFragment']) @@ -219,31 +219,31 @@ class Horde_SyncML_Sync_TwoWaySync extends Horde_SyncML_Sync { } } #Horde::logMessage("SyncML: handling sync ".$currentCmdID, __FILE__, __LINE__, PEAR_LOG_DEBUG); - + $state->clearSync($syncType); - + return $currentCmdID; } - + function loadData() { global $registry; - + $state = &$_SESSION['SyncML.state']; $syncType = $this->_targetLocURI; $hordeType = $state->getHordeType($syncType); $refts = $state->getServerAnchorLast($syncType); - + Horde::logMessage("SyncML: reading changed items from database for $hordeType", __FILE__, __LINE__, PEAR_LOG_DEBUG); $state->setChangedItems($hordeType, $registry->call($hordeType. '/listBy', array('action' => 'modify', 'timestamp' => $refts))); - + Horde::logMessage("SyncML: reading deleted items from database for $hordeType", __FILE__, __LINE__, PEAR_LOG_DEBUG); $state->setDeletedItems($hordeType, $registry->call($hordeType. '/listBy', array('action' => 'delete', 'timestamp' => $refts))); - + Horde::logMessage("SyncML: reading added items from database for $hordeType", __FILE__, __LINE__, PEAR_LOG_DEBUG); $state->setAddedItems($hordeType, $registry->call($hordeType. '/listBy', array('action' => 'add', 'timestamp' => $refts))); - + $this->_syncDataLoaded = TRUE; - + return count($state->getChangedItems($hordeType)) + count($state->getDeletedItems($hordeType)) + count($state->getAddedItems($hordeType));