Commit 353c0e4f authored by Sebastian Kummer's avatar Sebastian Kummer

Merge pull request #269 in ZP/z-push from develop to release/2.3

* commit 'e729b422':
  ZP-952 Fixed variable name.
  ZP-899 Add sensitivity of appointment to rocompare, print body/description in the notification email.
  ZP-950 Changed method to determine ZP_VERSION so it contains the branch, tag, offset and commit id, fixed access description.
  ZP-952 Don't try to convert folderid if this is a hierarchy notification.
  ZP-951 Do not compare for type, as key(false) returns 0 (integer).
  ZP-899 Extended EvaluateAndCompare(), added STREAMER_RONOTIFY to Streamer to define which properties should be compared, updated copyright dates for SyncObjects.
parents 2066c35c e729b422
...@@ -81,7 +81,7 @@ on **DATE** at **TIME** you've tried to save a data in the folder '**FOLDERNAME* ...@@ -81,7 +81,7 @@ on **DATE** at **TIME** you've tried to save a data in the folder '**FOLDERNAME*
This operation was not successful, as you lack write access to this folder. This operation was not successful, as you lack write access to this folder.
Your data has been dropped and replaced with the original data on your device to ensure data integrity. Your data has been dropped and replaced with the original data on your device to ensure data integrity.
Below is a copy of the data you tried to save. If you want your changes to be stored permanently you should forward this email to a person with write access to this folder asking to perform these changes again." Below is a copy of the data you tried to save. If you want your changes to be stored permanently you should forward this email to a person with write access to this folder asking to perform these changes again.
**DIFFERENCES** **DIFFERENCES**
If you have questions about this email, please contact your e-mail administrator. If you have questions about this email, please contact your e-mail administrator.
......
...@@ -512,7 +512,10 @@ class ReplyBackImExporter implements IImportChanges, IExportChanges { ...@@ -512,7 +512,10 @@ class ReplyBackImExporter implements IImportChanges, IExportChanges {
// get the differences between the two objects // get the differences between the two objects
$data = substr(get_class($oldmessage), 4) . "\r\n"; $data = substr(get_class($oldmessage), 4) . "\r\n";
$dataarray = $message->EvaluateAndCompare($oldmessage, @constant('READ_ONLY_NOTIFY_YOURDATA')); // get the suppported fields as we need them to determine the ghosted properties
$supportedFields = ZPush::GetDeviceManager()->GetSupportedFields(ZPush::GetDeviceManager()->GetFolderIdForBackendId($folderid));
$dataarray = $oldmessage->EvaluateAndCompare($message, @constant('READ_ONLY_NOTIFY_YOURDATA'), $supportedFields);
foreach($dataarray as $key => $value) { foreach($dataarray as $key => $value) {
$value = str_replace("\r", "", $value); $value = str_replace("\r", "", $value);
$value = str_replace("\n", str_pad("\r\n",25), $value); $value = str_replace("\n", str_pad("\r\n",25), $value);
......
...@@ -52,6 +52,7 @@ class Streamer implements Serializable { ...@@ -52,6 +52,7 @@ class Streamer implements Serializable {
const STREAMER_ARRAY = 2; const STREAMER_ARRAY = 2;
const STREAMER_TYPE = 3; const STREAMER_TYPE = 3;
const STREAMER_PROP = 4; const STREAMER_PROP = 4;
const STREAMER_RONOTIFY = 5;
const STREAMER_TYPE_DATE = 1; const STREAMER_TYPE_DATE = 1;
const STREAMER_TYPE_HEX = 2; const STREAMER_TYPE_HEX = 2;
const STREAMER_TYPE_DATE_DASHES = 3; const STREAMER_TYPE_DATE_DASHES = 3;
......
...@@ -594,25 +594,28 @@ class SyncCollections implements Iterator { ...@@ -594,25 +594,28 @@ class SyncCollections implements Iterator {
$validNotifications = false; $validNotifications = false;
foreach ($notifications as $backendFolderId) { foreach ($notifications as $backendFolderId) {
// the backend will notify on the backend folderid
$folderid = ZPush::GetDeviceManager()->GetFolderIdForBackendId($backendFolderId);
// Check hierarchy notifications // Check hierarchy notifications
if ($folderid === IBackend::HIERARCHYNOTIFICATION) { if ($backendFolderId === IBackend::HIERARCHYNOTIFICATION) {
// wait two seconds before validating this notification, because it could potentially be made by the mobile and we need some time to update the states. // wait two seconds before validating this notification, because it could potentially be made by the mobile and we need some time to update the states.
sleep(2); sleep(2);
// check received hierarchy notifications by exporting // check received hierarchy notifications by exporting
if ($this->countHierarchyChange(true)) if ($this->countHierarchyChange(true)) {
throw new StatusException("SyncCollections->CheckForChanges(): HierarchySync required.", self::HIERARCHY_CHANGED); throw new StatusException("SyncCollections->CheckForChanges(): HierarchySync required.", self::HIERARCHY_CHANGED);
} }
// check if the notification on the folder is within our filter
else if ($this->CountChange($folderid)) {
ZLog::Write(LOGLEVEL_DEBUG, sprintf("SyncCollections->CheckForChanges(): Notification received on folder '%s'", $folderid));
$validNotifications = true;
$this->waitingTime = time()-$started;
} }
else { else {
ZLog::Write(LOGLEVEL_DEBUG, sprintf("SyncCollections->CheckForChanges(): Notification received on folder '%s', but it is not relevant", $folderid)); // the backend will notify on the backend folderid
$folderid = ZPush::GetDeviceManager()->GetFolderIdForBackendId($backendFolderId);
// check if the notification on the folder is within our filter
if ($this->CountChange($folderid)) {
ZLog::Write(LOGLEVEL_DEBUG, sprintf("SyncCollections->CheckForChanges(): Notification received on folder '%s'", $folderid));
$validNotifications = true;
$this->waitingTime = time()-$started;
}
else {
ZLog::Write(LOGLEVEL_DEBUG, sprintf("SyncCollections->CheckForChanges(): Notification received on folder '%s', but it is not relevant", $folderid));
}
} }
} }
if ($validNotifications) if ($validNotifications)
...@@ -884,7 +887,7 @@ class SyncCollections implements Iterator { ...@@ -884,7 +887,7 @@ class SyncCollections implements Iterator {
* @return boolean * @return boolean
*/ */
public function valid() { public function valid() {
return (key($this->collections) !== null && key($this->collections) !== false); return (key($this->collections) != null && key($this->collections) != false);
} }
/** /**
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
* *
* Created : 05.09.2011 * Created : 05.09.2011
* *
* Copyright 2007 - 2013 Zarafa Deutschland GmbH * Copyright 2007 - 2016 Zarafa Deutschland GmbH
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License, version 3, * it under the terms of the GNU Affero General Public License, version 3,
...@@ -83,7 +83,8 @@ class SyncAppointment extends SyncObject { ...@@ -83,7 +83,8 @@ class SyncAppointment extends SyncObject {
function SyncAppointment() { function SyncAppointment() {
$mapping = array( $mapping = array(
SYNC_POOMCAL_TIMEZONE => array ( self::STREAMER_VAR => "timezone"), SYNC_POOMCAL_TIMEZONE => array ( self::STREAMER_VAR => "timezone",
self::STREAMER_RONOTIFY => true),
SYNC_POOMCAL_DTSTAMP => array ( self::STREAMER_VAR => "dtstamp", SYNC_POOMCAL_DTSTAMP => array ( self::STREAMER_VAR => "dtstamp",
self::STREAMER_TYPE => self::STREAMER_TYPE_DATE, self::STREAMER_TYPE => self::STREAMER_TYPE_DATE,
...@@ -92,23 +93,28 @@ class SyncAppointment extends SyncObject { ...@@ -92,23 +93,28 @@ class SyncAppointment extends SyncObject {
SYNC_POOMCAL_STARTTIME => array ( self::STREAMER_VAR => "starttime", SYNC_POOMCAL_STARTTIME => array ( self::STREAMER_VAR => "starttime",
self::STREAMER_TYPE => self::STREAMER_TYPE_DATE, self::STREAMER_TYPE => self::STREAMER_TYPE_DATE,
self::STREAMER_CHECKS => array( self::STREAMER_CHECK_REQUIRED => self::STREAMER_CHECK_SETZERO, self::STREAMER_CHECKS => array( self::STREAMER_CHECK_REQUIRED => self::STREAMER_CHECK_SETZERO,
self::STREAMER_CHECK_CMPLOWER => SYNC_POOMCAL_ENDTIME ) ), self::STREAMER_CHECK_CMPLOWER => SYNC_POOMCAL_ENDTIME ),
self::STREAMER_RONOTIFY => true ),
SYNC_POOMCAL_SUBJECT => array ( self::STREAMER_VAR => "subject", SYNC_POOMCAL_SUBJECT => array ( self::STREAMER_VAR => "subject",
self::STREAMER_CHECKS => array( self::STREAMER_CHECK_REQUIRED => self::STREAMER_CHECK_SETEMPTY)), self::STREAMER_CHECKS => array( self::STREAMER_CHECK_REQUIRED => self::STREAMER_CHECK_SETEMPTY),
self::STREAMER_RONOTIFY => true),
SYNC_POOMCAL_UID => array ( self::STREAMER_VAR => "uid"), SYNC_POOMCAL_UID => array ( self::STREAMER_VAR => "uid"),
SYNC_POOMCAL_ORGANIZERNAME => array ( self::STREAMER_VAR => "organizername"), // verified below SYNC_POOMCAL_ORGANIZERNAME => array ( self::STREAMER_VAR => "organizername"), // verified below
SYNC_POOMCAL_ORGANIZEREMAIL => array ( self::STREAMER_VAR => "organizeremail"), // verified below SYNC_POOMCAL_ORGANIZEREMAIL => array ( self::STREAMER_VAR => "organizeremail"), // verified below
SYNC_POOMCAL_LOCATION => array ( self::STREAMER_VAR => "location"), SYNC_POOMCAL_LOCATION => array ( self::STREAMER_VAR => "location",
self::STREAMER_RONOTIFY => true),
SYNC_POOMCAL_ENDTIME => array ( self::STREAMER_VAR => "endtime", SYNC_POOMCAL_ENDTIME => array ( self::STREAMER_VAR => "endtime",
self::STREAMER_TYPE => self::STREAMER_TYPE_DATE, self::STREAMER_TYPE => self::STREAMER_TYPE_DATE,
self::STREAMER_CHECKS => array( self::STREAMER_CHECK_REQUIRED => self::STREAMER_CHECK_SETONE, self::STREAMER_CHECKS => array( self::STREAMER_CHECK_REQUIRED => self::STREAMER_CHECK_SETONE,
self::STREAMER_CHECK_CMPHIGHER => SYNC_POOMCAL_STARTTIME ) ), self::STREAMER_CHECK_CMPHIGHER => SYNC_POOMCAL_STARTTIME ),
self::STREAMER_RONOTIFY => true ),
SYNC_POOMCAL_RECURRENCE => array ( self::STREAMER_VAR => "recurrence", SYNC_POOMCAL_RECURRENCE => array ( self::STREAMER_VAR => "recurrence",
self::STREAMER_TYPE => "SyncRecurrence"), self::STREAMER_TYPE => "SyncRecurrence",
self::STREAMER_RONOTIFY => true),
// Sensitivity values // Sensitivity values
// 0 = Normal // 0 = Normal
...@@ -116,7 +122,8 @@ class SyncAppointment extends SyncObject { ...@@ -116,7 +122,8 @@ class SyncAppointment extends SyncObject {
// 2 = Private // 2 = Private
// 3 = Confident // 3 = Confident
SYNC_POOMCAL_SENSITIVITY => array ( self::STREAMER_VAR => "sensitivity", SYNC_POOMCAL_SENSITIVITY => array ( self::STREAMER_VAR => "sensitivity",
self::STREAMER_CHECKS => array( self::STREAMER_CHECK_ONEVALUEOF => array(0,1,2,3) )), self::STREAMER_CHECKS => array( self::STREAMER_CHECK_ONEVALUEOF => array(0,1,2,3) ),
self::STREAMER_RONOTIFY => true),
// Busystatus values // Busystatus values
// 0 = Free // 0 = Free
...@@ -126,13 +133,16 @@ class SyncAppointment extends SyncObject { ...@@ -126,13 +133,16 @@ class SyncAppointment extends SyncObject {
// 4 = Working Elsewhere // 4 = Working Elsewhere
SYNC_POOMCAL_BUSYSTATUS => array ( self::STREAMER_VAR => "busystatus", SYNC_POOMCAL_BUSYSTATUS => array ( self::STREAMER_VAR => "busystatus",
self::STREAMER_CHECKS => array( self::STREAMER_CHECK_REQUIRED => self::STREAMER_CHECK_SETTWO, self::STREAMER_CHECKS => array( self::STREAMER_CHECK_REQUIRED => self::STREAMER_CHECK_SETTWO,
self::STREAMER_CHECK_ONEVALUEOF => array(0,1,2,3,4) )), self::STREAMER_CHECK_ONEVALUEOF => array(0,1,2,3,4) ),
self::STREAMER_RONOTIFY => true),
SYNC_POOMCAL_ALLDAYEVENT => array ( self::STREAMER_VAR => "alldayevent", SYNC_POOMCAL_ALLDAYEVENT => array ( self::STREAMER_VAR => "alldayevent",
self::STREAMER_CHECKS => array( self::STREAMER_CHECK_ZEROORONE => self::STREAMER_CHECK_SETZERO)), self::STREAMER_CHECKS => array( self::STREAMER_CHECK_ZEROORONE => self::STREAMER_CHECK_SETZERO),
self::STREAMER_RONOTIFY => true),
SYNC_POOMCAL_REMINDER => array ( self::STREAMER_VAR => "reminder", SYNC_POOMCAL_REMINDER => array ( self::STREAMER_VAR => "reminder",
self::STREAMER_CHECKS => array( self::STREAMER_CHECK_CMPHIGHER => -1)), self::STREAMER_CHECKS => array( self::STREAMER_CHECK_CMPHIGHER => -1),
self::STREAMER_RONOTIFY => true),
SYNC_POOMCAL_RTF => array ( self::STREAMER_VAR => "rtf"), SYNC_POOMCAL_RTF => array ( self::STREAMER_VAR => "rtf"),
...@@ -147,25 +157,31 @@ class SyncAppointment extends SyncObject { ...@@ -147,25 +157,31 @@ class SyncAppointment extends SyncObject {
// 13 = as 5 // 13 = as 5
// 15 = as 7 // 15 = as 7
SYNC_POOMCAL_MEETINGSTATUS => array ( self::STREAMER_VAR => "meetingstatus", SYNC_POOMCAL_MEETINGSTATUS => array ( self::STREAMER_VAR => "meetingstatus",
self::STREAMER_CHECKS => array( self::STREAMER_CHECK_ONEVALUEOF => array(0,1,3,5,7,9,11,13,15) )), self::STREAMER_CHECKS => array( self::STREAMER_CHECK_ONEVALUEOF => array(0,1,3,5,7,9,11,13,15) ),
self::STREAMER_RONOTIFY => true),
SYNC_POOMCAL_ATTENDEES => array ( self::STREAMER_VAR => "attendees", SYNC_POOMCAL_ATTENDEES => array ( self::STREAMER_VAR => "attendees",
self::STREAMER_TYPE => "SyncAttendee", self::STREAMER_TYPE => "SyncAttendee",
self::STREAMER_ARRAY => SYNC_POOMCAL_ATTENDEE), self::STREAMER_ARRAY => SYNC_POOMCAL_ATTENDEE,
self::STREAMER_RONOTIFY => true),
SYNC_POOMCAL_BODY => array ( self::STREAMER_VAR => "body"), SYNC_POOMCAL_BODY => array ( self::STREAMER_VAR => "body",
self::STREAMER_RONOTIFY => true),
SYNC_POOMCAL_BODYTRUNCATED => array ( self::STREAMER_VAR => "bodytruncated"), SYNC_POOMCAL_BODYTRUNCATED => array ( self::STREAMER_VAR => "bodytruncated"),
SYNC_POOMCAL_EXCEPTIONS => array ( self::STREAMER_VAR => "exceptions", SYNC_POOMCAL_EXCEPTIONS => array ( self::STREAMER_VAR => "exceptions",
self::STREAMER_TYPE => "SyncAppointmentException", self::STREAMER_TYPE => "SyncAppointmentException",
self::STREAMER_ARRAY => SYNC_POOMCAL_EXCEPTION), self::STREAMER_ARRAY => SYNC_POOMCAL_EXCEPTION,
self::STREAMER_RONOTIFY => true),
SYNC_POOMCAL_CATEGORIES => array ( self::STREAMER_VAR => "categories", SYNC_POOMCAL_CATEGORIES => array ( self::STREAMER_VAR => "categories",
self::STREAMER_ARRAY => SYNC_POOMCAL_CATEGORY), self::STREAMER_ARRAY => SYNC_POOMCAL_CATEGORY,
self::STREAMER_RONOTIFY => true),
); );
if (Request::GetProtocolVersion() >= 12.0) { if (Request::GetProtocolVersion() >= 12.0) {
$mapping[SYNC_AIRSYNCBASE_BODY] = array ( self::STREAMER_VAR => "asbody", $mapping[SYNC_AIRSYNCBASE_BODY] = array ( self::STREAMER_VAR => "asbody",
self::STREAMER_TYPE => "SyncBaseBody"); self::STREAMER_TYPE => "SyncBaseBody",
self::STREAMER_RONOTIFY => true);
$mapping[SYNC_AIRSYNCBASE_NATIVEBODYTYPE] = array ( self::STREAMER_VAR => "nativebodytype"); $mapping[SYNC_AIRSYNCBASE_NATIVEBODYTYPE] = array ( self::STREAMER_VAR => "nativebodytype");
...@@ -174,9 +190,12 @@ class SyncAppointment extends SyncObject { ...@@ -174,9 +190,12 @@ class SyncAppointment extends SyncObject {
} }
if(Request::GetProtocolVersion() >= 14.0) { if(Request::GetProtocolVersion() >= 14.0) {
$mapping[SYNC_POOMCAL_DISALLOWNEWTIMEPROPOSAL] = array ( self::STREAMER_VAR => "disallownewtimeprop"); $mapping[SYNC_POOMCAL_DISALLOWNEWTIMEPROPOSAL] = array ( self::STREAMER_VAR => "disallownewtimeprop",
$mapping[SYNC_POOMCAL_RESPONSEREQUESTED] = array ( self::STREAMER_VAR => "responserequested"); self::STREAMER_RONOTIFY => true);
$mapping[SYNC_POOMCAL_RESPONSETYPE] = array ( self::STREAMER_VAR => "responsetype"); $mapping[SYNC_POOMCAL_RESPONSEREQUESTED] = array ( self::STREAMER_VAR => "responserequested",
self::STREAMER_RONOTIFY => true);
$mapping[SYNC_POOMCAL_RESPONSETYPE] = array ( self::STREAMER_VAR => "responsetype",
self::STREAMER_RONOTIFY => true);
} }
parent::SyncObject($mapping); parent::SyncObject($mapping);
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
* *
* Created : 05.09.2011 * Created : 05.09.2011
* *
* Copyright 2007 - 2013 Zarafa Deutschland GmbH * Copyright 2007 - 2016 Zarafa Deutschland GmbH
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License, version 3, * it under the terms of the GNU Affero General Public License, version 3,
...@@ -55,21 +55,29 @@ class SyncAppointmentException extends SyncAppointment { ...@@ -55,21 +55,29 @@ class SyncAppointmentException extends SyncAppointment {
$this->mapping += array( $this->mapping += array(
SYNC_POOMCAL_DELETED => array ( self::STREAMER_VAR => "deleted", SYNC_POOMCAL_DELETED => array ( self::STREAMER_VAR => "deleted",
self::STREAMER_CHECKS => array( self::STREAMER_CHECK_ZEROORONE => self::STREAMER_CHECK_SETZERO)), self::STREAMER_CHECKS => array( self::STREAMER_CHECK_ZEROORONE => self::STREAMER_CHECK_SETZERO),
self::STREAMER_RONOTIFY => true),
SYNC_POOMCAL_EXCEPTIONSTARTTIME => array ( self::STREAMER_VAR => "exceptionstarttime", SYNC_POOMCAL_EXCEPTIONSTARTTIME => array ( self::STREAMER_VAR => "exceptionstarttime",
self::STREAMER_TYPE => self::STREAMER_TYPE_DATE, self::STREAMER_TYPE => self::STREAMER_TYPE_DATE,
self::STREAMER_CHECKS => array( self::STREAMER_CHECK_REQUIRED => self::STREAMER_CHECK_SETONE)), self::STREAMER_CHECKS => array( self::STREAMER_CHECK_REQUIRED => self::STREAMER_CHECK_SETONE),
self::STREAMER_RONOTIFY => true),
); );
// some parameters are not required in an exception, others are not allowed to be set in SyncAppointmentExceptions // some parameters are not required in an exception, others are not allowed to be set in SyncAppointmentExceptions
$this->mapping[SYNC_POOMCAL_TIMEZONE][self::STREAMER_CHECKS] = array(); $this->mapping[SYNC_POOMCAL_TIMEZONE][self::STREAMER_CHECKS] = array();
$this->mapping[SYNC_POOMCAL_TIMEZONE][self::STREAMER_RONOTIFY] = true;
$this->mapping[SYNC_POOMCAL_DTSTAMP][self::STREAMER_CHECKS] = array(); $this->mapping[SYNC_POOMCAL_DTSTAMP][self::STREAMER_CHECKS] = array();
$this->mapping[SYNC_POOMCAL_STARTTIME][self::STREAMER_CHECKS] = array(self::STREAMER_CHECK_CMPLOWER => SYNC_POOMCAL_ENDTIME); $this->mapping[SYNC_POOMCAL_STARTTIME][self::STREAMER_CHECKS] = array(self::STREAMER_CHECK_CMPLOWER => SYNC_POOMCAL_ENDTIME);
$this->mapping[SYNC_POOMCAL_STARTTIME][self::STREAMER_RONOTIFY] = true;
$this->mapping[SYNC_POOMCAL_SUBJECT][self::STREAMER_CHECKS] = array(); $this->mapping[SYNC_POOMCAL_SUBJECT][self::STREAMER_CHECKS] = array();
$this->mapping[SYNC_POOMCAL_SUBJECT][self::STREAMER_RONOTIFY] = true;
$this->mapping[SYNC_POOMCAL_ENDTIME][self::STREAMER_CHECKS] = array(self::STREAMER_CHECK_CMPHIGHER => SYNC_POOMCAL_STARTTIME); $this->mapping[SYNC_POOMCAL_ENDTIME][self::STREAMER_CHECKS] = array(self::STREAMER_CHECK_CMPHIGHER => SYNC_POOMCAL_STARTTIME);
$this->mapping[SYNC_POOMCAL_ENDTIME][self::STREAMER_RONOTIFY] = true;
$this->mapping[SYNC_POOMCAL_BUSYSTATUS][self::STREAMER_CHECKS] = array(self::STREAMER_CHECK_ONEVALUEOF => array(0,1,2,3,4) ); $this->mapping[SYNC_POOMCAL_BUSYSTATUS][self::STREAMER_CHECKS] = array(self::STREAMER_CHECK_ONEVALUEOF => array(0,1,2,3,4) );
$this->mapping[SYNC_POOMCAL_BUSYSTATUS][self::STREAMER_RONOTIFY] = true;
$this->mapping[SYNC_POOMCAL_REMINDER][self::STREAMER_CHECKS] = array(self::STREAMER_CHECK_CMPHIGHER => -1); $this->mapping[SYNC_POOMCAL_REMINDER][self::STREAMER_CHECKS] = array(self::STREAMER_CHECK_CMPHIGHER => -1);
$this->mapping[SYNC_POOMCAL_REMINDER][self::STREAMER_RONOTIFY] = true;
$this->mapping[SYNC_POOMCAL_EXCEPTIONS][self::STREAMER_CHECKS] = array(self::STREAMER_CHECK_NOTALLOWED => true); $this->mapping[SYNC_POOMCAL_EXCEPTIONS][self::STREAMER_CHECKS] = array(self::STREAMER_CHECK_NOTALLOWED => true);
} }
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
* *
* Created : 05.09.2011 * Created : 05.09.2011
* *
* Copyright 2007 - 2013 Zarafa Deutschland GmbH * Copyright 2007 - 2016 Zarafa Deutschland GmbH
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License, version 3, * it under the terms of the GNU Affero General Public License, version 3,
...@@ -56,7 +56,8 @@ class SyncAttachment extends SyncObject { ...@@ -56,7 +56,8 @@ class SyncAttachment extends SyncObject {
function SyncAttachment() { function SyncAttachment() {
$mapping = array( $mapping = array(
SYNC_POOMMAIL_ATTMETHOD => array ( self::STREAMER_VAR => "attmethod"), SYNC_POOMMAIL_ATTMETHOD => array ( self::STREAMER_VAR => "attmethod",
self::STREAMER_RONOTIFY => true),
SYNC_POOMMAIL_ATTSIZE => array ( self::STREAMER_VAR => "attsize", SYNC_POOMMAIL_ATTSIZE => array ( self::STREAMER_VAR => "attsize",
self::STREAMER_CHECKS => array( self::STREAMER_CHECK_REQUIRED => self::STREAMER_CHECK_SETZERO, self::STREAMER_CHECKS => array( self::STREAMER_CHECK_REQUIRED => self::STREAMER_CHECK_SETZERO,
self::STREAMER_CHECK_CMPHIGHER => -1 )), self::STREAMER_CHECK_CMPHIGHER => -1 )),
...@@ -68,7 +69,8 @@ class SyncAttachment extends SyncObject { ...@@ -68,7 +69,8 @@ class SyncAttachment extends SyncObject {
self::STREAMER_CHECKS => array( self::STREAMER_CHECK_REQUIRED => self::STREAMER_CHECK_SETEMPTY)), self::STREAMER_CHECKS => array( self::STREAMER_CHECK_REQUIRED => self::STREAMER_CHECK_SETEMPTY)),
SYNC_POOMMAIL_ATTOID => array ( self::STREAMER_VAR => "attoid"), SYNC_POOMMAIL_ATTOID => array ( self::STREAMER_VAR => "attoid"),
SYNC_POOMMAIL_ATTREMOVED => array ( self::STREAMER_VAR => "attremoved"), SYNC_POOMMAIL_ATTREMOVED => array ( self::STREAMER_VAR => "attremoved",
self::STREAMER_RONOTIFY => true),
); );
parent::SyncObject($mapping); parent::SyncObject($mapping);
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
* *
* Created : 05.09.2011 * Created : 05.09.2011
* *
* Copyright 2007 - 2013 Zarafa Deutschland GmbH * Copyright 2007 - 2016 Zarafa Deutschland GmbH
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License, version 3, * it under the terms of the GNU Affero General Public License, version 3,
...@@ -53,15 +53,19 @@ class SyncAttendee extends SyncObject { ...@@ -53,15 +53,19 @@ class SyncAttendee extends SyncObject {
function SyncAttendee() { function SyncAttendee() {
$mapping = array( $mapping = array(
SYNC_POOMCAL_EMAIL => array ( self::STREAMER_VAR => "email", SYNC_POOMCAL_EMAIL => array ( self::STREAMER_VAR => "email",
self::STREAMER_CHECKS => array( self::STREAMER_CHECK_REQUIRED => self::STREAMER_CHECK_SETEMPTY)), self::STREAMER_CHECKS => array( self::STREAMER_CHECK_REQUIRED => self::STREAMER_CHECK_SETEMPTY),
self::STREAMER_RONOTIFY => true),
SYNC_POOMCAL_NAME => array ( self::STREAMER_VAR => "name", SYNC_POOMCAL_NAME => array ( self::STREAMER_VAR => "name",
self::STREAMER_CHECKS => array( self::STREAMER_CHECK_REQUIRED => self::STREAMER_CHECK_SETEMPTY) ) self::STREAMER_CHECKS => array( self::STREAMER_CHECK_REQUIRED => self::STREAMER_CHECK_SETEMPTY),
self::STREAMER_RONOTIFY => true)
); );
if (Request::GetProtocolVersion() >= 12.0) { if (Request::GetProtocolVersion() >= 12.0) {
$mapping[SYNC_POOMCAL_ATTENDEESTATUS] = array ( self::STREAMER_VAR => "attendeestatus"); $mapping[SYNC_POOMCAL_ATTENDEESTATUS] = array ( self::STREAMER_VAR => "attendeestatus",
$mapping[SYNC_POOMCAL_ATTENDEETYPE] = array ( self::STREAMER_VAR => "attendeetype"); self::STREAMER_RONOTIFY => true);
$mapping[SYNC_POOMCAL_ATTENDEETYPE] = array ( self::STREAMER_VAR => "attendeetype",
self::STREAMER_RONOTIFY => true);
} }
parent::SyncObject($mapping); parent::SyncObject($mapping);
......
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
* *
* Created : 09.09.2011 * Created : 09.09.2011
* *
* Copyright 2007 - 2013 Zarafa Deutschland GmbH * Copyright 2007 - 2016 Zarafa Deutschland GmbH
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License, version 3, * it under the terms of the GNU Affero General Public License, version 3,
...@@ -57,7 +57,8 @@ class SyncBaseBody extends SyncObject { ...@@ -57,7 +57,8 @@ class SyncBaseBody extends SyncObject {
SYNC_AIRSYNCBASE_ESTIMATEDDATASIZE => array (self::STREAMER_VAR => "estimatedDataSize"), SYNC_AIRSYNCBASE_ESTIMATEDDATASIZE => array (self::STREAMER_VAR => "estimatedDataSize"),
SYNC_AIRSYNCBASE_TRUNCATED => array (self::STREAMER_VAR => "truncated"), SYNC_AIRSYNCBASE_TRUNCATED => array (self::STREAMER_VAR => "truncated"),
SYNC_AIRSYNCBASE_DATA => array (self::STREAMER_VAR => "data", SYNC_AIRSYNCBASE_DATA => array (self::STREAMER_VAR => "data",
self::STREAMER_TYPE => self::STREAMER_TYPE_STREAM_ASPLAIN), self::STREAMER_TYPE => self::STREAMER_TYPE_STREAM_ASPLAIN,
self::STREAMER_RONOTIFY => true),
); );
if(Request::GetProtocolVersion() >= 14.0) { if(Request::GetProtocolVersion() >= 14.0) {
$mapping[SYNC_AIRSYNCBASE_PREVIEW] = array (self::STREAMER_VAR => "preview"); $mapping[SYNC_AIRSYNCBASE_PREVIEW] = array (self::STREAMER_VAR => "preview");
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
* *
* Created : 05.09.2011 * Created : 05.09.2011
* *
* Copyright 2007 - 2013 Zarafa Deutschland GmbH * Copyright 2007 - 2016 Zarafa Deutschland GmbH
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License, version 3, * it under the terms of the GNU Affero General Public License, version 3,
...@@ -113,89 +113,144 @@ class SyncContact extends SyncObject { ...@@ -113,89 +113,144 @@ class SyncContact extends SyncObject {
public $nickname; public $nickname;
public $mms; public $mms;
// AS 12.0 props
public $asbody;
function SyncContact() { function SyncContact() {
$mapping = array ( $mapping = array (
SYNC_POOMCONTACTS_ANNIVERSARY => array ( self::STREAMER_VAR => "anniversary", SYNC_POOMCONTACTS_ANNIVERSARY => array ( self::STREAMER_VAR => "anniversary",
self::STREAMER_TYPE => self::STREAMER_TYPE_DATE_DASHES ), self::STREAMER_TYPE => self::STREAMER_TYPE_DATE_DASHES,
self::STREAMER_RONOTIFY => true),
SYNC_POOMCONTACTS_ASSISTANTNAME => array ( self::STREAMER_VAR => "assistantname"), SYNC_POOMCONTACTS_ASSISTANTNAME => array ( self::STREAMER_VAR => "assistantname",
SYNC_POOMCONTACTS_ASSISTNAMEPHONENUMBER => array ( self::STREAMER_VAR => "assistnamephonenumber"), self::STREAMER_RONOTIFY => true),
SYNC_POOMCONTACTS_ASSISTNAMEPHONENUMBER => array ( self::STREAMER_VAR => "assistnamephonenumber",
self::STREAMER_RONOTIFY => true),
SYNC_POOMCONTACTS_BIRTHDAY => array ( self::STREAMER_VAR => "birthday", SYNC_POOMCONTACTS_BIRTHDAY => array ( self::STREAMER_VAR => "birthday",
self::STREAMER_TYPE => self::STREAMER_TYPE_DATE_DASHES ), self::STREAMER_TYPE => self::STREAMER_TYPE_DATE_DASHES,
self::STREAMER_RONOTIFY => true),
SYNC_POOMCONTACTS_BODY => array ( self::STREAMER_VAR => "body"), SYNC_POOMCONTACTS_BODY => array ( self::STREAMER_VAR => "body",
self::STREAMER_RONOTIFY => true),
SYNC_POOMCONTACTS_BODYSIZE => array ( self::STREAMER_VAR => "bodysize"), SYNC_POOMCONTACTS_BODYSIZE => array ( self::STREAMER_VAR => "bodysize"),
SYNC_POOMCONTACTS_BODYTRUNCATED => array ( self::STREAMER_VAR => "bodytruncated"), SYNC_POOMCONTACTS_BODYTRUNCATED => array ( self::STREAMER_VAR => "bodytruncated"),
SYNC_POOMCONTACTS_BUSINESS2PHONENUMBER => array ( self::STREAMER_VAR => "business2phonenumber"), SYNC_POOMCONTACTS_BUSINESS2PHONENUMBER => array ( self::STREAMER_VAR => "business2phonenumber",
SYNC_POOMCONTACTS_BUSINESSCITY => array ( self::STREAMER_VAR => "businesscity"), self::STREAMER_RONOTIFY => true),
SYNC_POOMCONTACTS_BUSINESSCOUNTRY => array ( self::STREAMER_VAR => "businesscountry"), SYNC_POOMCONTACTS_BUSINESSCITY => array ( self::STREAMER_VAR => "businesscity",
SYNC_POOMCONTACTS_BUSINESSPOSTALCODE => array ( self::STREAMER_VAR => "businesspostalcode"), self::STREAMER_RONOTIFY => true),
SYNC_POOMCONTACTS_BUSINESSSTATE => array ( self::STREAMER_VAR => "businessstate"), SYNC_POOMCONTACTS_BUSINESSCOUNTRY => array ( self::STREAMER_VAR => "businesscountry",
SYNC_POOMCONTACTS_BUSINESSSTREET => array ( self::STREAMER_VAR => "businessstreet"), self::STREAMER_RONOTIFY => true),
SYNC_POOMCONTACTS_BUSINESSFAXNUMBER => array ( self::STREAMER_VAR => "businessfaxnumber"), SYNC_POOMCONTACTS_BUSINESSPOSTALCODE => array ( self::STREAMER_VAR => "businesspostalcode",
SYNC_POOMCONTACTS_BUSINESSPHONENUMBER => array ( self::STREAMER_VAR => "businessphonenumber"), self::STREAMER_RONOTIFY => true),
SYNC_POOMCONTACTS_CARPHONENUMBER => array ( self::STREAMER_VAR => "carphonenumber"), SYNC_POOMCONTACTS_BUSINESSSTATE => array ( self::STREAMER_VAR => "businessstate",
self::STREAMER_RONOTIFY => true),
SYNC_POOMCONTACTS_BUSINESSSTREET => array ( self::STREAMER_VAR => "businessstreet",
self::STREAMER_RONOTIFY => true),
SYNC_POOMCONTACTS_BUSINESSFAXNUMBER => array ( self::STREAMER_VAR => "businessfaxnumber",
self::STREAMER_RONOTIFY => true),
SYNC_POOMCONTACTS_BUSINESSPHONENUMBER => array ( self::STREAMER_VAR => "businessphonenumber",
self::STREAMER_RONOTIFY => true),
SYNC_POOMCONTACTS_CARPHONENUMBER => array ( self::STREAMER_VAR => "carphonenumber",
self::STREAMER_RONOTIFY => true),
SYNC_POOMCONTACTS_CHILDREN => array ( self::STREAMER_VAR => "children", SYNC_POOMCONTACTS_CHILDREN => array ( self::STREAMER_VAR => "children",
self::STREAMER_ARRAY => SYNC_POOMCONTACTS_CHILD ), self::STREAMER_ARRAY => SYNC_POOMCONTACTS_CHILD,
self::STREAMER_RONOTIFY => true),
SYNC_POOMCONTACTS_COMPANYNAME => array ( self::STREAMER_VAR => "companyname"), SYNC_POOMCONTACTS_COMPANYNAME => array ( self::STREAMER_VAR => "companyname",
SYNC_POOMCONTACTS_DEPARTMENT => array ( self::STREAMER_VAR => "department"), self::STREAMER_RONOTIFY => true),
SYNC_POOMCONTACTS_EMAIL1ADDRESS => array ( self::STREAMER_VAR => "email1address"), SYNC_POOMCONTACTS_DEPARTMENT => array ( self::STREAMER_VAR => "department",
SYNC_POOMCONTACTS_EMAIL2ADDRESS => array ( self::STREAMER_VAR => "email2address"), self::STREAMER_RONOTIFY => true),
SYNC_POOMCONTACTS_EMAIL3ADDRESS => array ( self::STREAMER_VAR => "email3address"), SYNC_POOMCONTACTS_EMAIL1ADDRESS => array ( self::STREAMER_VAR => "email1address",
SYNC_POOMCONTACTS_FILEAS => array ( self::STREAMER_VAR => "fileas"), self::STREAMER_RONOTIFY => true),
SYNC_POOMCONTACTS_FIRSTNAME => array ( self::STREAMER_VAR => "firstname"), SYNC_POOMCONTACTS_EMAIL2ADDRESS => array ( self::STREAMER_VAR => "email2address",
SYNC_POOMCONTACTS_HOME2PHONENUMBER => array ( self::STREAMER_VAR => "home2phonenumber"), self::STREAMER_RONOTIFY => true),
SYNC_POOMCONTACTS_HOMECITY => array ( self::STREAMER_VAR => "homecity"), SYNC_POOMCONTACTS_EMAIL3ADDRESS => array ( self::STREAMER_VAR => "email3address",
SYNC_POOMCONTACTS_HOMECOUNTRY => array ( self::STREAMER_VAR => "homecountry"), self::STREAMER_RONOTIFY => true),
SYNC_POOMCONTACTS_HOMEPOSTALCODE => array ( self::STREAMER_VAR => "homepostalcode"), SYNC_POOMCONTACTS_FILEAS => array ( self::STREAMER_VAR => "fileas",
SYNC_POOMCONTACTS_HOMESTATE => array ( self::STREAMER_VAR => "homestate"), self::STREAMER_RONOTIFY => true),
SYNC_POOMCONTACTS_HOMESTREET => array ( self::STREAMER_VAR => "homestreet"), SYNC_POOMCONTACTS_FIRSTNAME => array ( self::STREAMER_VAR => "firstname",
SYNC_POOMCONTACTS_HOMEFAXNUMBER => array ( self::STREAMER_VAR => "homefaxnumber"), self::STREAMER_RONOTIFY => true),
SYNC_POOMCONTACTS_HOMEPHONENUMBER => array ( self::STREAMER_VAR => "homephonenumber"), SYNC_POOMCONTACTS_HOME2PHONENUMBER => array ( self::STREAMER_VAR => "home2phonenumber",
SYNC_POOMCONTACTS_JOBTITLE => array ( self::STREAMER_VAR => "jobtitle"), self::STREAMER_RONOTIFY => true),
SYNC_POOMCONTACTS_LASTNAME => array ( self::STREAMER_VAR => "lastname"), SYNC_POOMCONTACTS_HOMECITY => array ( self::STREAMER_VAR => "homecity",
SYNC_POOMCONTACTS_MIDDLENAME => array ( self::STREAMER_VAR => "middlename"), self::STREAMER_RONOTIFY => true),
SYNC_POOMCONTACTS_MOBILEPHONENUMBER => array ( self::STREAMER_VAR => "mobilephonenumber"), SYNC_POOMCONTACTS_HOMECOUNTRY => array ( self::STREAMER_VAR => "homecountry",
SYNC_POOMCONTACTS_OFFICELOCATION => array ( self::STREAMER_VAR => "officelocation"), self::STREAMER_RONOTIFY => true),
SYNC_POOMCONTACTS_OTHERCITY => array ( self::STREAMER_VAR => "othercity"), SYNC_POOMCONTACTS_HOMEPOSTALCODE => array ( self::STREAMER_VAR => "homepostalcode",
SYNC_POOMCONTACTS_OTHERCOUNTRY => array ( self::STREAMER_VAR => "othercountry"), self::STREAMER_RONOTIFY => true),
SYNC_POOMCONTACTS_OTHERPOSTALCODE => array ( self::STREAMER_VAR => "otherpostalcode"), SYNC_POOMCONTACTS_HOMESTATE => array ( self::STREAMER_VAR => "homestate",
SYNC_POOMCONTACTS_OTHERSTATE => array ( self::STREAMER_VAR => "otherstate"), self::STREAMER_RONOTIFY => true),
SYNC_POOMCONTACTS_OTHERSTREET => array ( self::STREAMER_VAR => "otherstreet"), SYNC_POOMCONTACTS_HOMESTREET => array ( self::STREAMER_VAR => "homestreet",
SYNC_POOMCONTACTS_PAGERNUMBER => array ( self::STREAMER_VAR => "pagernumber"), self::STREAMER_RONOTIFY => true),
SYNC_POOMCONTACTS_RADIOPHONENUMBER => array ( self::STREAMER_VAR => "radiophonenumber"), SYNC_POOMCONTACTS_HOMEFAXNUMBER => array ( self::STREAMER_VAR => "homefaxnumber",
SYNC_POOMCONTACTS_SPOUSE => array ( self::STREAMER_VAR => "spouse"), self::STREAMER_RONOTIFY => true),
SYNC_POOMCONTACTS_SUFFIX => array ( self::STREAMER_VAR => "suffix"), SYNC_POOMCONTACTS_HOMEPHONENUMBER => array ( self::STREAMER_VAR => "homephonenumber",
SYNC_POOMCONTACTS_TITLE => array ( self::STREAMER_VAR => "title"), self::STREAMER_RONOTIFY => true),
SYNC_POOMCONTACTS_WEBPAGE => array ( self::STREAMER_VAR => "webpage"), SYNC_POOMCONTACTS_JOBTITLE => array ( self::STREAMER_VAR => "jobtitle",
SYNC_POOMCONTACTS_YOMICOMPANYNAME => array ( self::STREAMER_VAR => "yomicompanyname"), self::STREAMER_RONOTIFY => true),
SYNC_POOMCONTACTS_YOMIFIRSTNAME => array ( self::STREAMER_VAR => "yomifirstname"), SYNC_POOMCONTACTS_LASTNAME => array ( self::STREAMER_VAR => "lastname",
SYNC_POOMCONTACTS_YOMILASTNAME => array ( self::STREAMER_VAR => "yomilastname"), self::STREAMER_RONOTIFY => true),
SYNC_POOMCONTACTS_MIDDLENAME => array ( self::STREAMER_VAR => "middlename",
self::STREAMER_RONOTIFY => true),
SYNC_POOMCONTACTS_MOBILEPHONENUMBER => array ( self::STREAMER_VAR => "mobilephonenumber",
self::STREAMER_RONOTIFY => true),
SYNC_POOMCONTACTS_OFFICELOCATION => array ( self::STREAMER_VAR => "officelocation",
self::STREAMER_RONOTIFY => true),
SYNC_POOMCONTACTS_OTHERCITY => array ( self::STREAMER_VAR => "othercity",
self::STREAMER_RONOTIFY => true),
SYNC_POOMCONTACTS_OTHERCOUNTRY => array ( self::STREAMER_VAR => "othercountry",
self::STREAMER_RONOTIFY => true),
SYNC_POOMCONTACTS_OTHERPOSTALCODE => array ( self::STREAMER_VAR => "otherpostalcode",
self::STREAMER_RONOTIFY => true),
SYNC_POOMCONTACTS_OTHERSTATE => array ( self::STREAMER_VAR => "otherstate",
self::STREAMER_RONOTIFY => true),
SYNC_POOMCONTACTS_OTHERSTREET => array ( self::STREAMER_VAR => "otherstreet",
self::STREAMER_RONOTIFY => true),
SYNC_POOMCONTACTS_PAGERNUMBER => array ( self::STREAMER_VAR => "pagernumber",
self::STREAMER_RONOTIFY => true),
SYNC_POOMCONTACTS_RADIOPHONENUMBER => array ( self::STREAMER_VAR => "radiophonenumber",
self::STREAMER_RONOTIFY => true),
SYNC_POOMCONTACTS_SPOUSE => array ( self::STREAMER_VAR => "spouse",
self::STREAMER_RONOTIFY => true),
SYNC_POOMCONTACTS_SUFFIX => array ( self::STREAMER_VAR => "suffix",
self::STREAMER_RONOTIFY => true),
SYNC_POOMCONTACTS_TITLE => array ( self::STREAMER_VAR => "title",
self::STREAMER_RONOTIFY => true),
SYNC_POOMCONTACTS_WEBPAGE => array ( self::STREAMER_VAR => "webpage",
self::STREAMER_RONOTIFY => true),
SYNC_POOMCONTACTS_YOMICOMPANYNAME => array ( self::STREAMER_VAR => "yomicompanyname",
self::STREAMER_RONOTIFY => true),
SYNC_POOMCONTACTS_YOMIFIRSTNAME => array ( self::STREAMER_VAR => "yomifirstname",
self::STREAMER_RONOTIFY => true),
SYNC_POOMCONTACTS_YOMILASTNAME => array ( self::STREAMER_VAR => "yomilastname",
self::STREAMER_RONOTIFY => true),
SYNC_POOMCONTACTS_RTF => array ( self::STREAMER_VAR => "rtf"), SYNC_POOMCONTACTS_RTF => array ( self::STREAMER_VAR => "rtf"),
SYNC_POOMCONTACTS_PICTURE => array ( self::STREAMER_VAR => "picture", SYNC_POOMCONTACTS_PICTURE => array ( self::STREAMER_VAR => "picture",
self::STREAMER_CHECKS => array( self::STREAMER_CHECK_LENGTHMAX => SYNC_CONTACTS_MAXPICTURESIZE )), self::STREAMER_CHECKS => array( self::STREAMER_CHECK_LENGTHMAX => SYNC_CONTACTS_MAXPICTURESIZE ),
self::STREAMER_RONOTIFY => true),
SYNC_POOMCONTACTS_CATEGORIES => array ( self::STREAMER_VAR => "categories", SYNC_POOMCONTACTS_CATEGORIES => array ( self::STREAMER_VAR => "categories",
self::STREAMER_ARRAY => SYNC_POOMCONTACTS_CATEGORY ), self::STREAMER_ARRAY => SYNC_POOMCONTACTS_CATEGORY ,
self::STREAMER_RONOTIFY => true),
); );
if (Request::GetProtocolVersion() >= 2.5) { if (Request::GetProtocolVersion() >= 2.5) {
$mapping[SYNC_POOMCONTACTS2_CUSTOMERID] = array ( self::STREAMER_VAR => "customerid"); $mapping[SYNC_POOMCONTACTS2_CUSTOMERID] = array ( self::STREAMER_VAR => "customerid", self::STREAMER_RONOTIFY => true);
$mapping[SYNC_POOMCONTACTS2_GOVERNMENTID] = array ( self::STREAMER_VAR => "governmentid"); $mapping[SYNC_POOMCONTACTS2_GOVERNMENTID] = array ( self::STREAMER_VAR => "governmentid", self::STREAMER_RONOTIFY => true);
$mapping[SYNC_POOMCONTACTS2_IMADDRESS] = array ( self::STREAMER_VAR => "imaddress"); $mapping[SYNC_POOMCONTACTS2_IMADDRESS] = array ( self::STREAMER_VAR => "imaddress", self::STREAMER_RONOTIFY => true);
$mapping[SYNC_POOMCONTACTS2_IMADDRESS2] = array ( self::STREAMER_VAR => "imaddress2"); $mapping[SYNC_POOMCONTACTS2_IMADDRESS2] = array ( self::STREAMER_VAR => "imaddress2", self::STREAMER_RONOTIFY => true);
$mapping[SYNC_POOMCONTACTS2_IMADDRESS3] = array ( self::STREAMER_VAR => "imaddress3"); $mapping[SYNC_POOMCONTACTS2_IMADDRESS3] = array ( self::STREAMER_VAR => "imaddress3", self::STREAMER_RONOTIFY => true);
$mapping[SYNC_POOMCONTACTS2_MANAGERNAME] = array ( self::STREAMER_VAR => "managername"); $mapping[SYNC_POOMCONTACTS2_MANAGERNAME] = array ( self::STREAMER_VAR => "managername", self::STREAMER_RONOTIFY => true);
$mapping[SYNC_POOMCONTACTS2_COMPANYMAINPHONE] = array ( self::STREAMER_VAR => "companymainphone"); $mapping[SYNC_POOMCONTACTS2_COMPANYMAINPHONE] = array ( self::STREAMER_VAR => "companymainphone", self::STREAMER_RONOTIFY => true);
$mapping[SYNC_POOMCONTACTS2_ACCOUNTNAME] = array ( self::STREAMER_VAR => "accountname"); $mapping[SYNC_POOMCONTACTS2_ACCOUNTNAME] = array ( self::STREAMER_VAR => "accountname", self::STREAMER_RONOTIFY => true);
$mapping[SYNC_POOMCONTACTS2_NICKNAME] = array ( self::STREAMER_VAR => "nickname"); $mapping[SYNC_POOMCONTACTS2_NICKNAME] = array ( self::STREAMER_VAR => "nickname", self::STREAMER_RONOTIFY => true);
$mapping[SYNC_POOMCONTACTS2_MMS] = array ( self::STREAMER_VAR => "mms"); $mapping[SYNC_POOMCONTACTS2_MMS] = array ( self::STREAMER_VAR => "mms", self::STREAMER_RONOTIFY => true);
} }
if (Request::GetProtocolVersion() >= 12.0) { if (Request::GetProtocolVersion() >= 12.0) {
$mapping[SYNC_AIRSYNCBASE_BODY] = array ( self::STREAMER_VAR => "asbody", $mapping[SYNC_AIRSYNCBASE_BODY] = array ( self::STREAMER_VAR => "asbody",
self::STREAMER_TYPE => "SyncBaseBody"); self::STREAMER_TYPE => "SyncBaseBody",
self::STREAMER_RONOTIFY => true);
//unset these properties because airsyncbase body and attachments will be used instead //unset these properties because airsyncbase body and attachments will be used instead
unset($mapping[SYNC_POOMCONTACTS_BODY], $mapping[SYNC_POOMCONTACTS_BODYTRUNCATED]); unset($mapping[SYNC_POOMCONTACTS_BODY], $mapping[SYNC_POOMCONTACTS_BODYTRUNCATED]);
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
* *
* Created : 05.09.2011 * Created : 05.09.2011
* *
* Copyright 2007 - 2013 Zarafa Deutschland GmbH * Copyright 2007 - 2016 Zarafa Deutschland GmbH
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License, version 3, * it under the terms of the GNU Affero General Public License, version 3,
...@@ -102,12 +102,16 @@ class SyncMail extends SyncObject { ...@@ -102,12 +102,16 @@ class SyncMail extends SyncObject {
SYNC_POOMMAIL_FROM => array ( self::STREAMER_VAR => "from", SYNC_POOMMAIL_FROM => array ( self::STREAMER_VAR => "from",
self::STREAMER_CHECKS => array( self::STREAMER_CHECK_LENGTHMAX => 32768, self::STREAMER_CHECKS => array( self::STREAMER_CHECK_LENGTHMAX => 32768,
self::STREAMER_CHECK_EMAIL => "" )), self::STREAMER_CHECK_EMAIL => "" ),
self::STREAMER_RONOTIFY => true),
SYNC_POOMMAIL_SUBJECT => array ( self::STREAMER_VAR => "subject"), SYNC_POOMMAIL_SUBJECT => array ( self::STREAMER_VAR => "subject",
SYNC_POOMMAIL_THREADTOPIC => array ( self::STREAMER_VAR => "threadtopic"), self::STREAMER_RONOTIFY => true),
SYNC_POOMMAIL_THREADTOPIC => array ( self::STREAMER_VAR => "threadtopic",
self::STREAMER_RONOTIFY => true),
SYNC_POOMMAIL_DATERECEIVED => array ( self::STREAMER_VAR => "datereceived", SYNC_POOMMAIL_DATERECEIVED => array ( self::STREAMER_VAR => "datereceived",
self::STREAMER_TYPE => self::STREAMER_TYPE_DATE_DASHES), self::STREAMER_TYPE => self::STREAMER_TYPE_DATE_DASHES,
self::STREAMER_RONOTIFY => true),
SYNC_POOMMAIL_DISPLAYTO => array ( self::STREAMER_VAR => "displayto"), SYNC_POOMMAIL_DISPLAYTO => array ( self::STREAMER_VAR => "displayto"),
...@@ -121,7 +125,8 @@ class SyncMail extends SyncObject { ...@@ -121,7 +125,8 @@ class SyncMail extends SyncObject {
self::STREAMER_CHECK_ONEVALUEOF => array(0,1,2) )), self::STREAMER_CHECK_ONEVALUEOF => array(0,1,2) )),
SYNC_POOMMAIL_READ => array ( self::STREAMER_VAR => "read", SYNC_POOMMAIL_READ => array ( self::STREAMER_VAR => "read",
self::STREAMER_CHECKS => array( self::STREAMER_CHECK_ONEVALUEOF => array(0,1) )), self::STREAMER_CHECKS => array( self::STREAMER_CHECK_ONEVALUEOF => array(0,1) ),
self::STREAMER_RONOTIFY => true),
SYNC_POOMMAIL_ATTACHMENTS => array ( self::STREAMER_VAR => "attachments", SYNC_POOMMAIL_ATTACHMENTS => array ( self::STREAMER_VAR => "attachments",
self::STREAMER_TYPE => "SyncAttachment", self::STREAMER_TYPE => "SyncAttachment",
...@@ -170,7 +175,8 @@ class SyncMail extends SyncObject { ...@@ -170,7 +175,8 @@ class SyncMail extends SyncObject {
$mapping[SYNC_POOMMAIL_FLAG] = array ( self::STREAMER_VAR => "flag", $mapping[SYNC_POOMMAIL_FLAG] = array ( self::STREAMER_VAR => "flag",
self::STREAMER_TYPE => "SyncMailFlags", self::STREAMER_TYPE => "SyncMailFlags",
self::STREAMER_PROP => self::STREAMER_TYPE_SEND_EMPTY); self::STREAMER_PROP => self::STREAMER_TYPE_SEND_EMPTY,
self::STREAMER_RONOTIFY => true);
$mapping[SYNC_AIRSYNCBASE_NATIVEBODYTYPE] = array ( self::STREAMER_VAR => "nativebodytype"); $mapping[SYNC_AIRSYNCBASE_NATIVEBODYTYPE] = array ( self::STREAMER_VAR => "nativebodytype");
...@@ -191,7 +197,8 @@ class SyncMail extends SyncObject { ...@@ -191,7 +197,8 @@ class SyncMail extends SyncObject {
$mapping[SYNC_POOMMAIL2_RECEIVEDASBCC] = array ( self::STREAMER_VAR => "receivedasbcc"); $mapping[SYNC_POOMMAIL2_RECEIVEDASBCC] = array ( self::STREAMER_VAR => "receivedasbcc");
$mapping[SYNC_POOMMAIL2_SENDER] = array ( self::STREAMER_VAR => "sender"); $mapping[SYNC_POOMMAIL2_SENDER] = array ( self::STREAMER_VAR => "sender");
$mapping[SYNC_POOMMAIL_CATEGORIES] = array ( self::STREAMER_VAR => "categories", $mapping[SYNC_POOMMAIL_CATEGORIES] = array ( self::STREAMER_VAR => "categories",
self::STREAMER_ARRAY => SYNC_POOMMAIL_CATEGORY); self::STREAMER_ARRAY => SYNC_POOMMAIL_CATEGORY,
self::STREAMER_RONOTIFY => true);
//TODO bodypart, accountid, rightsmanagementlicense //TODO bodypart, accountid, rightsmanagementlicense
} }
......
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
* *
* Created : 09.09.2011 * Created : 09.09.2011
* *
* Copyright 2007 - 2013 Zarafa Deutschland GmbH * Copyright 2007 - 2016 Zarafa Deutschland GmbH
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License, version 3, * it under the terms of the GNU Affero General Public License, version 3,
...@@ -62,35 +62,48 @@ class SyncMailFlags extends SyncObject { ...@@ -62,35 +62,48 @@ class SyncMailFlags extends SyncObject {
function SyncMailFlags() { function SyncMailFlags() {
$mapping = array( $mapping = array(
SYNC_POOMTASKS_SUBJECT => array ( self::STREAMER_VAR => "subject"), SYNC_POOMTASKS_SUBJECT => array ( self::STREAMER_VAR => "subject",
SYNC_POOMMAIL_FLAGSTATUS => array ( self::STREAMER_VAR => "flagstatus"), self::STREAMER_RONOTIFY => true),
SYNC_POOMMAIL_FLAGTYPE => array ( self::STREAMER_VAR => "flagtype"), SYNC_POOMMAIL_FLAGSTATUS => array ( self::STREAMER_VAR => "flagstatus",
self::STREAMER_RONOTIFY => true),
SYNC_POOMMAIL_FLAGTYPE => array ( self::STREAMER_VAR => "flagtype",
self::STREAMER_RONOTIFY => true),
SYNC_POOMTASKS_DATECOMPLETED => array ( self::STREAMER_VAR => "datecompleted", SYNC_POOMTASKS_DATECOMPLETED => array ( self::STREAMER_VAR => "datecompleted",
self::STREAMER_TYPE => self::STREAMER_TYPE_DATE_DASHES), self::STREAMER_TYPE => self::STREAMER_TYPE_DATE_DASHES,
self::STREAMER_RONOTIFY => true),
SYNC_POOMMAIL_COMPLETETIME => array ( self::STREAMER_VAR => "completetime", SYNC_POOMMAIL_COMPLETETIME => array ( self::STREAMER_VAR => "completetime",
self::STREAMER_TYPE => self::STREAMER_TYPE_DATE_DASHES), self::STREAMER_TYPE => self::STREAMER_TYPE_DATE_DASHES,
self::STREAMER_RONOTIFY => true),
SYNC_POOMTASKS_STARTDATE => array ( self::STREAMER_VAR => "startdate", SYNC_POOMTASKS_STARTDATE => array ( self::STREAMER_VAR => "startdate",
self::STREAMER_TYPE => self::STREAMER_TYPE_DATE_DASHES), self::STREAMER_TYPE => self::STREAMER_TYPE_DATE_DASHES,
self::STREAMER_RONOTIFY => true),
SYNC_POOMTASKS_DUEDATE => array ( self::STREAMER_VAR => "duedate", SYNC_POOMTASKS_DUEDATE => array ( self::STREAMER_VAR => "duedate",
self::STREAMER_TYPE => self::STREAMER_TYPE_DATE_DASHES), self::STREAMER_TYPE => self::STREAMER_TYPE_DATE_DASHES,
self::STREAMER_RONOTIFY => true),
SYNC_POOMTASKS_UTCSTARTDATE => array ( self::STREAMER_VAR => "utcstartdate", SYNC_POOMTASKS_UTCSTARTDATE => array ( self::STREAMER_VAR => "utcstartdate",
self::STREAMER_TYPE => self::STREAMER_TYPE_DATE_DASHES), self::STREAMER_TYPE => self::STREAMER_TYPE_DATE_DASHES,
self::STREAMER_RONOTIFY => true),
SYNC_POOMTASKS_UTCDUEDATE => array ( self::STREAMER_VAR => "utcduedate", SYNC_POOMTASKS_UTCDUEDATE => array ( self::STREAMER_VAR => "utcduedate",
self::STREAMER_TYPE => self::STREAMER_TYPE_DATE_DASHES), self::STREAMER_TYPE => self::STREAMER_TYPE_DATE_DASHES,
self::STREAMER_RONOTIFY => true),
SYNC_POOMTASKS_REMINDERSET => array ( self::STREAMER_VAR => "reminderset"), SYNC_POOMTASKS_REMINDERSET => array ( self::STREAMER_VAR => "reminderset",
self::STREAMER_RONOTIFY => true),
SYNC_POOMTASKS_REMINDERTIME => array ( self::STREAMER_VAR => "remindertime", SYNC_POOMTASKS_REMINDERTIME => array ( self::STREAMER_VAR => "remindertime",
self::STREAMER_TYPE => self::STREAMER_TYPE_DATE_DASHES), self::STREAMER_TYPE => self::STREAMER_TYPE_DATE_DASHES,
self::STREAMER_RONOTIFY => true),
SYNC_POOMTASKS_ORDINALDATE => array ( self::STREAMER_VAR => "ordinaldate", SYNC_POOMTASKS_ORDINALDATE => array ( self::STREAMER_VAR => "ordinaldate",
self::STREAMER_TYPE => self::STREAMER_TYPE_DATE_DASHES), self::STREAMER_TYPE => self::STREAMER_TYPE_DATE_DASHES,
self::STREAMER_RONOTIFY => true),
SYNC_POOMTASKS_SUBORDINALDATE => array ( self::STREAMER_VAR => "subordinaldate"), SYNC_POOMTASKS_SUBORDINALDATE => array ( self::STREAMER_VAR => "subordinaldate",
self::STREAMER_RONOTIFY => true),
); );
parent::SyncObject($mapping); parent::SyncObject($mapping);
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
* *
* Created : 16.01.2012 * Created : 16.01.2012
* *
* Copyright 2007 - 2013 Zarafa Deutschland GmbH * Copyright 2007 - 2016 Zarafa Deutschland GmbH
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License, version 3, * it under the terms of the GNU Affero General Public License, version 3,
...@@ -72,17 +72,22 @@ class SyncNote extends SyncObject { ...@@ -72,17 +72,22 @@ class SyncNote extends SyncObject {
function SyncNote() { function SyncNote() {
$mapping = array( $mapping = array(
SYNC_AIRSYNCBASE_BODY => array ( self::STREAMER_VAR => "asbody", SYNC_AIRSYNCBASE_BODY => array ( self::STREAMER_VAR => "asbody",
self::STREAMER_TYPE => "SyncBaseBody"), self::STREAMER_TYPE => "SyncBaseBody",
self::STREAMER_RONOTIFY => true),
SYNC_NOTES_CATEGORIES => array ( self::STREAMER_VAR => "categories", SYNC_NOTES_CATEGORIES => array ( self::STREAMER_VAR => "categories",
self::STREAMER_ARRAY => SYNC_NOTES_CATEGORY), self::STREAMER_ARRAY => SYNC_NOTES_CATEGORY,
self::STREAMER_RONOTIFY => true),
SYNC_NOTES_LASTMODIFIEDDATE => array ( self::STREAMER_VAR => "lastmodified", SYNC_NOTES_LASTMODIFIEDDATE => array ( self::STREAMER_VAR => "lastmodified",
self::STREAMER_TYPE => self::STREAMER_TYPE_DATE), self::STREAMER_TYPE => self::STREAMER_TYPE_DATE,
self::STREAMER_RONOTIFY => true),
SYNC_NOTES_MESSAGECLASS => array ( self::STREAMER_VAR => "messageclass"), SYNC_NOTES_MESSAGECLASS => array ( self::STREAMER_VAR => "messageclass",
self::STREAMER_RONOTIFY => true),
SYNC_NOTES_SUBJECT => array ( self::STREAMER_VAR => "subject"), SYNC_NOTES_SUBJECT => array ( self::STREAMER_VAR => "subject",
self::STREAMER_RONOTIFY => true),
SYNC_NOTES_IGNORE_COLOR => array ( self::STREAMER_VAR => "Color", SYNC_NOTES_IGNORE_COLOR => array ( self::STREAMER_VAR => "Color",
self::STREAMER_TYPE => self::STREAMER_TYPE_IGNORE), self::STREAMER_TYPE => self::STREAMER_TYPE_IGNORE),
......
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
* *
* Created : 01.10.2007 * Created : 01.10.2007
* *
* Copyright 2007 - 2013 Zarafa Deutschland GmbH * Copyright 2007 - 2016 Zarafa Deutschland GmbH
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License, version 3, * it under the terms of the GNU Affero General Public License, version 3,
...@@ -170,71 +170,161 @@ abstract class SyncObject extends Streamer { ...@@ -170,71 +170,161 @@ abstract class SyncObject extends Streamer {
* Compares this a SyncObject to another, while printing out all properties and showing where they differ. * Compares this a SyncObject to another, while printing out all properties and showing where they differ.
* *
* @see SyncObject * @see SyncObject
* @param SyncObject $odo other SyncObject * @param SyncObject $odo other SyncObject
* @param string $odoName how different data should be named * @param string $odoName how different data should be named
* @param int $recCount recursion counter * @param array $supportedFields the list of the supported fields of the device
* @param int $recCount recursion counter
*
* @access public
* @return array with one property per line, key being the property instance variable name * @return array with one property per line, key being the property instance variable name
*/ */
public function EvaluateAndCompare($odo, $odoName = "", $keyprefix = "", $recCount = 0) { public function EvaluateAndCompare($odo, $odoName = "", $supportedFields, $keyprefix = "", $recCount = 0) {
if ($odo === false) if ($odo === false)
return false; return false;
// check objecttype // check objecttype
if (! ($odo instanceof SyncObject)) { if (! ($odo instanceof SyncObject) || get_class($this) != get_class($odo)) {
ZLog::Write(LOGLEVEL_DEBUG, "SyncObject->EvaluateAndCompare() the target object is not a SyncObject"); ZLog::Write(LOGLEVEL_DEBUG, "SyncObject->EvaluateAndCompare() the target object is not a SyncObject or the objects are different SyncObjects: '%s' and '%s'", get_class($this), get_class($odo));
return false; return false;
} }
// If $supportedFields is false, it means that the device doesn't have any supported fields.
// Set it to an empty array in order to avoid warnings.
if ($supportedFields == false) {
$supportedFields = array();
}
$out = array(); $out = array();
if ($keyprefix) if ($keyprefix)
$keyprefix = $keyprefix . $recCount; $keyprefix = $keyprefix . $recCount;
// check for mapped fields // check for mapped fields
foreach ($this->mapping as $v) { foreach ($this->mapping as $k=>$v) {
// Do not bother with the properties for which notifications aren't required
// or if they are not set
if (!isset($v[self::STREAMER_RONOTIFY]) || !$v[self::STREAMER_RONOTIFY] || (!isset($this->$v[self::STREAMER_VAR]) && !isset($odo->$v[self::STREAMER_VAR]))) {
continue;
}
$val = $v[self::STREAMER_VAR]; $val = $v[self::STREAMER_VAR];
// array of values? // both values are set case
if (isset($v[self::STREAMER_ARRAY])) { if (isset($this->$val) && isset($odo->$val)) {
// if neither array is created then don't fail the comparison if (isset($v[self::STREAMER_TYPE])) {
if (!isset($this->$val) && !isset($odo->$val)) { // Do the recursive compare of sub SyncObject
continue; if ($this->$val instanceof SyncObject) {
$out += $this->$val->EvaluateAndCompare($odo->$val, $odoName, $supportedFields, substr(get_class($this->$val), 4), $recCount++);
}
// array of values?
else if (isset($v[self::STREAMER_ARRAY])) {
// if both arrays exist then seek for differences in the arrays
if (count(array_diff($this->$val, $odo->$val)) + count(array_diff($odo->$val, $this->$val)) > 0) {
if ($v[self::STREAMER_TYPE] == "SyncAppointmentException") {
$out[$keyprefix.$val] = "An exception was changed.";
}
else {
$out[$keyprefix.$val] = implode(", ", $this->$val) ." - ". $odoName .": ". implode(", ", $odo->$val);
}
}
}
// if they are streams, compare the streams
else if ($v[self::STREAMER_TYPE] == self::STREAMER_TYPE_STREAM_ASPLAIN || $v[self::STREAMER_TYPE] == self::STREAMER_TYPE_STREAM_ASBASE64) {
// Remove the \r as it seems to be only in one of the streams
$t = str_replace("\r", "", stream_get_contents($this->$val));
$o = str_replace("\r", "", stream_get_contents($odo->$val));
if ($this instanceof SyncBaseBody) {
$out["Body/Description"] = (trim($t) == trim($o)) ? "No changes made" : $t." - ". $odoName .": ".$o;
}
else if($v[self::STREAMER_TYPE] == self::STREAMER_TYPE_STREAM_ASPLAIN) {
$out[$keyprefix.$val] = (trim($t) == trim($o)) ? $t : $t." - ". $odoName .": ".$o;
}
else {
$out[$keyprefix.$val] = "Binary data changed";
}
}
// do the nice date formatting
else if ($v[self::STREAMER_TYPE] == self::STREAMER_TYPE_DATE || $v[self::STREAMER_TYPE] == self::STREAMER_TYPE_DATE_DASHES) {
if($this->$val == $odo->$val) {
$out[$keyprefix.$val] = Utils::GetFormattedTime($this->$val);
}
else {
$out[$keyprefix.$val] = (isset($this->$val) && strlen($this->$val) ?
Utils::GetFormattedTime($this->$val):"undefined") ." - ". $odoName .": ".
(isset($odo->$val) && strlen($odo->$val) ? Utils::GetFormattedTime($odo->$val) : "undefined");
}
}
// else just compare their values
else {
if($this->$val == $odo->$val) {
$out[$keyprefix.$val] = $this->$val;
}
else {
$out[$keyprefix.$val] = (isset($this->$val) && $this->$val ? $this->$val:"undefined") ." - ". $odoName .": ". (isset($odo->$val) && $odo->$val ? $odo->$val:"undefined");
}
}
} }
else { // array of values?
else if (isset($v[self::STREAMER_ARRAY])) {
// if both arrays exist then seek for differences in the arrays // if both arrays exist then seek for differences in the arrays
if (count(array_diff($this->$val, $odo->$val)) + count(array_diff($odo->$val, $this->$val)) > 0) { if (count(array_diff($this->$val, $odo->$val)) + count(array_diff($odo->$val, $this->$val)) > 0) {
$out[$keyprefix.$val] = implode(", ", $this->$val) ." - ". $odoName .": ". implode(", ", $odo->$val); $out[$keyprefix.$val] = implode(", ", $this->$val) ." - ". $odoName .": ". implode(", ", $odo->$val);
} }
} }
} // else just compare their values
else { else {
// if both are not set, don't even bother the output if($this->$val == $odo->$val) {
if (!isset($this->$val) && !isset($odo->$val)) { if (! ($this instanceof SyncRecurrence)) {
continue; $out[$keyprefix.$val] = $this->$val;
}
// they are both set
else if (isset($this->$val) && isset($odo->$val)) {
//if they are subobjects, compare them recursively
if (isset($v[self::STREAMER_TYPE])) {
if ($this->$val instanceof SyncObject) {
$out += $this->$val->EvaluateAndCompare($odo->$val, $odoName, substr(get_class($this->$val), 4), $recCount++);
}
// if they are streams, compare the streams
else if ($v[self::STREAMER_TYPE] == self::STREAMER_TYPE_STREAM_ASPLAIN || $v[self::STREAMER_TYPE] == self::STREAMER_TYPE_STREAM_ASBASE64) {
$t = stream_get_contents($this->$val);
$o = stream_get_contents($odo->$val);
$out[$keyprefix.$val] = ($t === $o) ? $t : $t." - ". $odoName .": ".$o;
} }
} }
// else just compare their values
else { else {
if($this->$val === $odo->$val) { if ($this instanceof SyncRecurrence) {
$out[$keyprefix.$val] = $this->$val; $out["Recurrence"] = "Recurrence changed";
} }
else { else {
$out[$keyprefix.$val] = (isset($this->$val) && $this->$val ? $this->$val:"undefined") ." - ". $odoName .": ". (isset($odo->$val) && $odo->$val ? $odo->$val:"undefined"); $out[$keyprefix.$val] = (strlen($this->$val) ? $this->$val:"undefined") ." - ". $odoName .": ". (strlen($odo->$val) ? $odo->$val:"undefined");
} }
} }
} }
} }
// a value removed in $odo case
elseif (isset($this->$val)) {
// If it's a supported property and it's not set, it was removed.
// Otherwise it's a ghosted property and the device didn't send it, so we don't have to care about that case.
if (in_array($k, $supportedFields)) {
if ((is_scalar($this->$val) && strlen($this->$val)) || (!is_scalar($this->$val) && !empty($this->$val))) {
$out[$keyprefix.$val] = (is_array($this->$val) ? implode(",", $this->$val) : $this->$val) . " - " . $odoName .": value completely removed";
}
}
// there is no data sent for SyncMail, so just output its values
else if ($this instanceof SyncMail) {
if (isset($v[self::STREAMER_TYPE]) && ($v[self::STREAMER_TYPE] == self::STREAMER_TYPE_DATE || $v[self::STREAMER_TYPE] == self::STREAMER_TYPE_DATE_DASHES)) {
$out[$keyprefix.$val] = Utils::GetFormattedTime($this->$val);
}
else {
$out[$keyprefix.$val] = $this->$val;
}
}
}
// a value added to $odo case
elseif (isset($odo->$val)) {
if (stripos($keyprefix, "MailFlags") !== false) {
$out["Flags"] = "To-do flags were added";
}
else if (isset($v[self::STREAMER_TYPE])) {
if($v[self::STREAMER_TYPE] == "SyncAppointmentException") {
$out[$keyprefix.$val] = "Not set - " . $odoName . ": an exception was added";
}
else {
$out[$keyprefix.$val] = "Not set - " . $odoName . ": " . $odo->$val . " (value added)";
}
}
else if (isset($v[self::STREAMER_ARRAY])) {
// if both arrays exist then seek for differences in the arrays
$out[$keyprefix.$val] = "Not set - ". $odoName .": ". implode(", ", $odo->$val) . " (value added)";
}
else {
$out[$keyprefix.$val] = "Not set - " . $odoName . ": " . $odo->$val . " (value added)";
}
}
} }
return $out; return $out;
......
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
* *
* Created : 05.09.2011 * Created : 05.09.2011
* *
* Copyright 2007 - 2013 Zarafa Deutschland GmbH * Copyright 2007 - 2016 Zarafa Deutschland GmbH
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License, version 3, * it under the terms of the GNU Affero General Public License, version 3,
...@@ -69,18 +69,22 @@ class SyncRecurrence extends SyncObject { ...@@ -69,18 +69,22 @@ class SyncRecurrence extends SyncObject {
// 6 = Recurs yearly on the nth day // 6 = Recurs yearly on the nth day
SYNC_POOMCAL_TYPE => array ( self::STREAMER_VAR => "type", SYNC_POOMCAL_TYPE => array ( self::STREAMER_VAR => "type",
self::STREAMER_CHECKS => array( self::STREAMER_CHECK_REQUIRED => self::STREAMER_CHECK_SETZERO, self::STREAMER_CHECKS => array( self::STREAMER_CHECK_REQUIRED => self::STREAMER_CHECK_SETZERO,
self::STREAMER_CHECK_ONEVALUEOF => array(0,1,2,3,5,6) )), self::STREAMER_CHECK_ONEVALUEOF => array(0,1,2,3,5,6) ),
self::STREAMER_RONOTIFY => true),
SYNC_POOMCAL_UNTIL => array ( self::STREAMER_VAR => "until", SYNC_POOMCAL_UNTIL => array ( self::STREAMER_VAR => "until",
self::STREAMER_TYPE => self::STREAMER_TYPE_DATE), self::STREAMER_TYPE => self::STREAMER_TYPE_DATE,
self::STREAMER_RONOTIFY => true),
SYNC_POOMCAL_OCCURRENCES => array ( self::STREAMER_VAR => "occurrences", SYNC_POOMCAL_OCCURRENCES => array ( self::STREAMER_VAR => "occurrences",
self::STREAMER_CHECKS => array( self::STREAMER_CHECK_CMPHIGHER => 0, self::STREAMER_CHECKS => array( self::STREAMER_CHECK_CMPHIGHER => 0,
self::STREAMER_CHECK_CMPLOWER => 1000 )), self::STREAMER_CHECK_CMPLOWER => 1000 ),
self::STREAMER_RONOTIFY => true),
SYNC_POOMCAL_INTERVAL => array ( self::STREAMER_VAR => "interval", SYNC_POOMCAL_INTERVAL => array ( self::STREAMER_VAR => "interval",
self::STREAMER_CHECKS => array( self::STREAMER_CHECK_CMPHIGHER => 0, self::STREAMER_CHECKS => array( self::STREAMER_CHECK_CMPHIGHER => 0,
self::STREAMER_CHECK_CMPLOWER => 1000 )), self::STREAMER_CHECK_CMPLOWER => 1000 ),
self::STREAMER_RONOTIFY => true),
// DayOfWeek values // DayOfWeek values
// 1 = Sunday // 1 = Sunday
...@@ -95,28 +99,33 @@ class SyncRecurrence extends SyncObject { ...@@ -95,28 +99,33 @@ class SyncRecurrence extends SyncObject {
// As this is a bitmask, actually all values 0 > x < 128 are allowed // As this is a bitmask, actually all values 0 > x < 128 are allowed
SYNC_POOMCAL_DAYOFWEEK => array ( self::STREAMER_VAR => "dayofweek", SYNC_POOMCAL_DAYOFWEEK => array ( self::STREAMER_VAR => "dayofweek",
self::STREAMER_CHECKS => array( self::STREAMER_CHECK_CMPHIGHER => 0, self::STREAMER_CHECKS => array( self::STREAMER_CHECK_CMPHIGHER => 0,
self::STREAMER_CHECK_CMPLOWER => 128 )), self::STREAMER_CHECK_CMPLOWER => 128 ),
self::STREAMER_RONOTIFY => true),
// DayOfMonth values // DayOfMonth values
// 1-31 representing the day // 1-31 representing the day
SYNC_POOMCAL_DAYOFMONTH => array ( self::STREAMER_VAR => "dayofmonth", SYNC_POOMCAL_DAYOFMONTH => array ( self::STREAMER_VAR => "dayofmonth",
self::STREAMER_CHECKS => array( self::STREAMER_CHECK_CMPHIGHER => 0, self::STREAMER_CHECKS => array( self::STREAMER_CHECK_CMPHIGHER => 0,
self::STREAMER_CHECK_CMPLOWER => 32 )), self::STREAMER_CHECK_CMPLOWER => 32 ),
self::STREAMER_RONOTIFY => true),
// WeekOfMonth // WeekOfMonth
// 1-4 = Y st/nd/rd/th week of month // 1-4 = Y st/nd/rd/th week of month
// 5 = last week of month // 5 = last week of month
SYNC_POOMCAL_WEEKOFMONTH => array ( self::STREAMER_VAR => "weekofmonth", SYNC_POOMCAL_WEEKOFMONTH => array ( self::STREAMER_VAR => "weekofmonth",
self::STREAMER_CHECKS => array( self::STREAMER_CHECK_ONEVALUEOF => array(1,2,3,4,5) )), self::STREAMER_CHECKS => array( self::STREAMER_CHECK_ONEVALUEOF => array(1,2,3,4,5) ),
self::STREAMER_RONOTIFY => true),
// MonthOfYear // MonthOfYear
// 1-12 representing the month // 1-12 representing the month
SYNC_POOMCAL_MONTHOFYEAR => array ( self::STREAMER_VAR => "monthofyear", SYNC_POOMCAL_MONTHOFYEAR => array ( self::STREAMER_VAR => "monthofyear",
self::STREAMER_CHECKS => array( self::STREAMER_CHECK_ONEVALUEOF => array(1,2,3,4,5,6,7,8,9,10,11,12) )), self::STREAMER_CHECKS => array( self::STREAMER_CHECK_ONEVALUEOF => array(1,2,3,4,5,6,7,8,9,10,11,12) ),
self::STREAMER_RONOTIFY => true),
); );
if(Request::GetProtocolVersion() >= 14.0) { if(Request::GetProtocolVersion() >= 14.0) {
$mapping[SYNC_POOMCAL_CALENDARTYPE] = array ( self::STREAMER_VAR => "calendartype"); $mapping[SYNC_POOMCAL_CALENDARTYPE] = array ( self::STREAMER_VAR => "calendartype",
self::STREAMER_RONOTIFY => true);
} }
parent::SyncObject($mapping); parent::SyncObject($mapping);
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
* *
* Created : 05.09.2011 * Created : 05.09.2011
* *
* Copyright 2007 - 2013 Zarafa Deutschland GmbH * Copyright 2007 - 2016 Zarafa Deutschland GmbH
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License, version 3, * it under the terms of the GNU Affero General Public License, version 3,
...@@ -67,19 +67,24 @@ class SyncTask extends SyncObject { ...@@ -67,19 +67,24 @@ class SyncTask extends SyncObject {
function SyncTask() { function SyncTask() {
$mapping = array ( $mapping = array (
SYNC_POOMTASKS_BODY => array ( self::STREAMER_VAR => "body"), SYNC_POOMTASKS_BODY => array ( self::STREAMER_VAR => "body",
self::STREAMER_RONOTIFY => true),
SYNC_POOMTASKS_COMPLETE => array ( self::STREAMER_VAR => "complete", SYNC_POOMTASKS_COMPLETE => array ( self::STREAMER_VAR => "complete",
self::STREAMER_CHECKS => array( self::STREAMER_CHECK_REQUIRED => self::STREAMER_CHECK_SETZERO, self::STREAMER_CHECKS => array( self::STREAMER_CHECK_REQUIRED => self::STREAMER_CHECK_SETZERO,
self::STREAMER_CHECK_ZEROORONE => self::STREAMER_CHECK_SETZERO )), self::STREAMER_CHECK_ZEROORONE => self::STREAMER_CHECK_SETZERO ),
self::STREAMER_RONOTIFY => true),
SYNC_POOMTASKS_DATECOMPLETED => array ( self::STREAMER_VAR => "datecompleted", SYNC_POOMTASKS_DATECOMPLETED => array ( self::STREAMER_VAR => "datecompleted",
self::STREAMER_TYPE => self::STREAMER_TYPE_DATE_DASHES), self::STREAMER_TYPE => self::STREAMER_TYPE_DATE_DASHES,
self::STREAMER_RONOTIFY => true),
SYNC_POOMTASKS_DUEDATE => array ( self::STREAMER_VAR => "duedate", SYNC_POOMTASKS_DUEDATE => array ( self::STREAMER_VAR => "duedate",
self::STREAMER_TYPE => self::STREAMER_TYPE_DATE_DASHES), self::STREAMER_TYPE => self::STREAMER_TYPE_DATE_DASHES,
self::STREAMER_RONOTIFY => true),
SYNC_POOMTASKS_UTCDUEDATE => array ( self::STREAMER_VAR => "utcduedate", SYNC_POOMTASKS_UTCDUEDATE => array ( self::STREAMER_VAR => "utcduedate",
self::STREAMER_TYPE => self::STREAMER_TYPE_DATE_DASHES), self::STREAMER_TYPE => self::STREAMER_TYPE_DATE_DASHES,
self::STREAMER_RONOTIFY => true),
// Importance values // Importance values
// 0 = Low // 0 = Low
...@@ -88,19 +93,25 @@ class SyncTask extends SyncObject { ...@@ -88,19 +93,25 @@ class SyncTask extends SyncObject {
// even the default value 1 is optional, the native android client 2.2 interprets a non-existing value as 0 (low) // even the default value 1 is optional, the native android client 2.2 interprets a non-existing value as 0 (low)
SYNC_POOMTASKS_IMPORTANCE => array ( self::STREAMER_VAR => "importance", SYNC_POOMTASKS_IMPORTANCE => array ( self::STREAMER_VAR => "importance",
self::STREAMER_CHECKS => array( self::STREAMER_CHECK_REQUIRED => self::STREAMER_CHECK_SETONE, self::STREAMER_CHECKS => array( self::STREAMER_CHECK_REQUIRED => self::STREAMER_CHECK_SETONE,
self::STREAMER_CHECK_ONEVALUEOF => array(0,1,2) )), self::STREAMER_CHECK_ONEVALUEOF => array(0,1,2) ),
self::STREAMER_RONOTIFY => true),
SYNC_POOMTASKS_RECURRENCE => array ( self::STREAMER_VAR => "recurrence", SYNC_POOMTASKS_RECURRENCE => array ( self::STREAMER_VAR => "recurrence",
self::STREAMER_TYPE => "SyncTaskRecurrence"), self::STREAMER_TYPE => "SyncTaskRecurrence",
self::STREAMER_RONOTIFY => true),
SYNC_POOMTASKS_REGENERATE => array ( self::STREAMER_VAR => "regenerate"), SYNC_POOMTASKS_REGENERATE => array ( self::STREAMER_VAR => "regenerate",
SYNC_POOMTASKS_DEADOCCUR => array ( self::STREAMER_VAR => "deadoccur"), self::STREAMER_RONOTIFY => true),
SYNC_POOMTASKS_DEADOCCUR => array ( self::STREAMER_VAR => "deadoccur",
self::STREAMER_RONOTIFY => true),
SYNC_POOMTASKS_REMINDERSET => array ( self::STREAMER_VAR => "reminderset", SYNC_POOMTASKS_REMINDERSET => array ( self::STREAMER_VAR => "reminderset",
self::STREAMER_CHECKS => array( self::STREAMER_CHECK_REQUIRED => self::STREAMER_CHECK_SETZERO, self::STREAMER_CHECKS => array( self::STREAMER_CHECK_REQUIRED => self::STREAMER_CHECK_SETZERO,
self::STREAMER_CHECK_ZEROORONE => self::STREAMER_CHECK_SETZERO )), self::STREAMER_CHECK_ZEROORONE => self::STREAMER_CHECK_SETZERO ),
self::STREAMER_RONOTIFY => true),
SYNC_POOMTASKS_REMINDERTIME => array ( self::STREAMER_VAR => "remindertime", SYNC_POOMTASKS_REMINDERTIME => array ( self::STREAMER_VAR => "remindertime",
self::STREAMER_TYPE => self::STREAMER_TYPE_DATE_DASHES), self::STREAMER_TYPE => self::STREAMER_TYPE_DATE_DASHES,
self::STREAMER_RONOTIFY => true),
// Sensitivity values // Sensitivity values
// 0 = Normal // 0 = Normal
...@@ -108,23 +119,29 @@ class SyncTask extends SyncObject { ...@@ -108,23 +119,29 @@ class SyncTask extends SyncObject {
// 2 = Private // 2 = Private
// 3 = Confident // 3 = Confident
SYNC_POOMTASKS_SENSITIVITY => array ( self::STREAMER_VAR => "sensitivity", SYNC_POOMTASKS_SENSITIVITY => array ( self::STREAMER_VAR => "sensitivity",
self::STREAMER_CHECKS => array( self::STREAMER_CHECK_ONEVALUEOF => array(0,1,2,3) )), self::STREAMER_CHECKS => array( self::STREAMER_CHECK_ONEVALUEOF => array(0,1,2,3) ),
self::STREAMER_RONOTIFY => true),
SYNC_POOMTASKS_STARTDATE => array ( self::STREAMER_VAR => "startdate", SYNC_POOMTASKS_STARTDATE => array ( self::STREAMER_VAR => "startdate",
self::STREAMER_TYPE => self::STREAMER_TYPE_DATE_DASHES), self::STREAMER_TYPE => self::STREAMER_TYPE_DATE_DASHES,
self::STREAMER_RONOTIFY => true),
SYNC_POOMTASKS_UTCSTARTDATE => array ( self::STREAMER_VAR => "utcstartdate", SYNC_POOMTASKS_UTCSTARTDATE => array ( self::STREAMER_VAR => "utcstartdate",
self::STREAMER_TYPE => self::STREAMER_TYPE_DATE_DASHES), self::STREAMER_TYPE => self::STREAMER_TYPE_DATE_DASHES,
self::STREAMER_RONOTIFY => true),
SYNC_POOMTASKS_SUBJECT => array ( self::STREAMER_VAR => "subject"), SYNC_POOMTASKS_SUBJECT => array ( self::STREAMER_VAR => "subject",
self::STREAMER_RONOTIFY => true),
SYNC_POOMTASKS_RTF => array ( self::STREAMER_VAR => "rtf"), SYNC_POOMTASKS_RTF => array ( self::STREAMER_VAR => "rtf"),
SYNC_POOMTASKS_CATEGORIES => array ( self::STREAMER_VAR => "categories", SYNC_POOMTASKS_CATEGORIES => array ( self::STREAMER_VAR => "categories",
self::STREAMER_ARRAY => SYNC_POOMTASKS_CATEGORY), self::STREAMER_ARRAY => SYNC_POOMTASKS_CATEGORY,
self::STREAMER_RONOTIFY => true),
); );
if (Request::GetProtocolVersion() >= 12.0) { if (Request::GetProtocolVersion() >= 12.0) {
$mapping[SYNC_AIRSYNCBASE_BODY] = array ( self::STREAMER_VAR => "asbody", $mapping[SYNC_AIRSYNCBASE_BODY] = array ( self::STREAMER_VAR => "asbody",
self::STREAMER_TYPE => "SyncBaseBody"); self::STREAMER_TYPE => "SyncBaseBody",
self::STREAMER_RONOTIFY => true);
//unset these properties because airsyncbase body and attachments will be used instead //unset these properties because airsyncbase body and attachments will be used instead
unset($mapping[SYNC_POOMTASKS_BODY]); unset($mapping[SYNC_POOMTASKS_BODY]);
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
* *
* Created : 05.09.2011 * Created : 05.09.2011
* *
* Copyright 2007 - 2013 Zarafa Deutschland GmbH * Copyright 2007 - 2016 Zarafa Deutschland GmbH
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License, version 3, * it under the terms of the GNU Affero General Public License, version 3,
...@@ -64,7 +64,8 @@ class SyncTaskRecurrence extends SyncObject { ...@@ -64,7 +64,8 @@ class SyncTaskRecurrence extends SyncObject {
function SyncTaskRecurrence() { function SyncTaskRecurrence() {
$mapping = array ( $mapping = array (
SYNC_POOMTASKS_START => array ( self::STREAMER_VAR => "start", SYNC_POOMTASKS_START => array ( self::STREAMER_VAR => "start",
self::STREAMER_TYPE => self::STREAMER_TYPE_DATE), self::STREAMER_TYPE => self::STREAMER_TYPE_DATE,
self::STREAMER_RONOTIFY => true),
// Recurrence type // Recurrence type
// 0 = Recurs daily // 0 = Recurs daily
...@@ -75,22 +76,28 @@ class SyncTaskRecurrence extends SyncObject { ...@@ -75,22 +76,28 @@ class SyncTaskRecurrence extends SyncObject {
// 6 = Recurs yearly on the nth day // 6 = Recurs yearly on the nth day
SYNC_POOMTASKS_TYPE => array ( self::STREAMER_VAR => "type", SYNC_POOMTASKS_TYPE => array ( self::STREAMER_VAR => "type",
self::STREAMER_CHECKS => array( self::STREAMER_CHECK_REQUIRED => self::STREAMER_CHECK_SETZERO, self::STREAMER_CHECKS => array( self::STREAMER_CHECK_REQUIRED => self::STREAMER_CHECK_SETZERO,
self::STREAMER_CHECK_ONEVALUEOF => array(0,1,2,3,5,6) )), self::STREAMER_CHECK_ONEVALUEOF => array(0,1,2,3,5,6) ),
self::STREAMER_RONOTIFY => true),
SYNC_POOMTASKS_UNTIL => array ( self::STREAMER_VAR => "until", SYNC_POOMTASKS_UNTIL => array ( self::STREAMER_VAR => "until",
self::STREAMER_TYPE => self::STREAMER_TYPE_DATE ), self::STREAMER_TYPE => self::STREAMER_TYPE_DATE,
self::STREAMER_RONOTIFY => true),
SYNC_POOMTASKS_OCCURRENCES => array ( self::STREAMER_VAR => "occurrences", SYNC_POOMTASKS_OCCURRENCES => array ( self::STREAMER_VAR => "occurrences",
self::STREAMER_CHECKS => array( self::STREAMER_CHECK_CMPHIGHER => 0, self::STREAMER_CHECKS => array( self::STREAMER_CHECK_CMPHIGHER => 0,
self::STREAMER_CHECK_CMPLOWER => 1000 )), self::STREAMER_CHECK_CMPLOWER => 1000 ),
self::STREAMER_RONOTIFY => true),
SYNC_POOMTASKS_INTERVAL => array ( self::STREAMER_VAR => "interval", SYNC_POOMTASKS_INTERVAL => array ( self::STREAMER_VAR => "interval",
self::STREAMER_CHECKS => array( self::STREAMER_CHECK_CMPHIGHER => 0, self::STREAMER_CHECKS => array( self::STREAMER_CHECK_CMPHIGHER => 0,
self::STREAMER_CHECK_CMPLOWER => 1000 )), self::STREAMER_CHECK_CMPLOWER => 1000 ),
self::STREAMER_RONOTIFY => true),
//TODO: check iOS5 sends deadoccur inside of the recurrence //TODO: check iOS5 sends deadoccur inside of the recurrence
SYNC_POOMTASKS_DEADOCCUR => array ( self::STREAMER_VAR => "deadoccur"), SYNC_POOMTASKS_DEADOCCUR => array ( self::STREAMER_VAR => "deadoccur",
SYNC_POOMTASKS_REGENERATE => array ( self::STREAMER_VAR => "regenerate"), self::STREAMER_RONOTIFY => true),
SYNC_POOMTASKS_REGENERATE => array ( self::STREAMER_VAR => "regenerate",
self::STREAMER_RONOTIFY => true),
// DayOfWeek values // DayOfWeek values
// 1 = Sunday // 1 = Sunday
...@@ -104,28 +111,33 @@ class SyncTaskRecurrence extends SyncObject { ...@@ -104,28 +111,33 @@ class SyncTaskRecurrence extends SyncObject {
// 127 = The last day of the month. Value valid only in monthly or yearly recurrences. // 127 = The last day of the month. Value valid only in monthly or yearly recurrences.
SYNC_POOMTASKS_DAYOFWEEK => array ( self::STREAMER_VAR => "dayofweek", SYNC_POOMTASKS_DAYOFWEEK => array ( self::STREAMER_VAR => "dayofweek",
self::STREAMER_CHECKS => array( self::STREAMER_CHECK_CMPHIGHER => 0, self::STREAMER_CHECKS => array( self::STREAMER_CHECK_CMPHIGHER => 0,
self::STREAMER_CHECK_CMPLOWER => 128 )), self::STREAMER_CHECK_CMPLOWER => 128 ),
self::STREAMER_RONOTIFY => true),
// DayOfMonth values // DayOfMonth values
// 1-31 representing the day // 1-31 representing the day
SYNC_POOMTASKS_DAYOFMONTH => array ( self::STREAMER_VAR => "dayofmonth", SYNC_POOMTASKS_DAYOFMONTH => array ( self::STREAMER_VAR => "dayofmonth",
self::STREAMER_CHECKS => array( self::STREAMER_CHECK_CMPHIGHER => 0, self::STREAMER_CHECKS => array( self::STREAMER_CHECK_CMPHIGHER => 0,
self::STREAMER_CHECK_CMPLOWER => 32 )), self::STREAMER_CHECK_CMPLOWER => 32 ),
self::STREAMER_RONOTIFY => true),
// WeekOfMonth // WeekOfMonth
// 1-4 = Y st/nd/rd/th week of month // 1-4 = Y st/nd/rd/th week of month
// 5 = last week of month // 5 = last week of month
SYNC_POOMTASKS_WEEKOFMONTH => array ( self::STREAMER_VAR => "weekofmonth", SYNC_POOMTASKS_WEEKOFMONTH => array ( self::STREAMER_VAR => "weekofmonth",
self::STREAMER_CHECKS => array( self::STREAMER_CHECK_ONEVALUEOF => array(1,2,3,4,5) )), self::STREAMER_CHECKS => array( self::STREAMER_CHECK_ONEVALUEOF => array(1,2,3,4,5) ),
self::STREAMER_RONOTIFY => true),
// MonthOfYear // MonthOfYear
// 1-12 representing the month // 1-12 representing the month
SYNC_POOMTASKS_MONTHOFYEAR => array ( self::STREAMER_VAR => "monthofyear", SYNC_POOMTASKS_MONTHOFYEAR => array ( self::STREAMER_VAR => "monthofyear",
self::STREAMER_CHECKS => array( self::STREAMER_CHECK_ONEVALUEOF => array(1,2,3,4,5,6,7,8,9,10,11,12) )), self::STREAMER_CHECKS => array( self::STREAMER_CHECK_ONEVALUEOF => array(1,2,3,4,5,6,7,8,9,10,11,12) ),
self::STREAMER_RONOTIFY => true),
); );
if(Request::GetProtocolVersion() >= 14.0) { if(Request::GetProtocolVersion() >= 14.0) {
$mapping[SYNC_POOMTASKS_CALENDARTYPE] = array ( self::STREAMER_VAR => "calendartype"); $mapping[SYNC_POOMTASKS_CALENDARTYPE] = array ( self::STREAMER_VAR => "calendartype",
self::STREAMER_RONOTIFY => true);
} }
parent::SyncObject($mapping); parent::SyncObject($mapping);
......
...@@ -1237,7 +1237,7 @@ class TimezoneUtil { ...@@ -1237,7 +1237,7 @@ class TimezoneUtil {
// That's ugly and needs a proper fix. But for now this method can convert // That's ugly and needs a proper fix. But for now this method can convert
// - Europe/Berlin // - Europe/Berlin
// - W Europe Standard Time // - W Europe Standard Time
// to "(GMT+01:00) Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna" // to "(GMT+01:00) Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna"
// which is more correct than the hardcoded default of (GMT+00:00...) // which is more correct than the hardcoded default of (GMT+00:00...)
$tzName = ''; $tzName = '';
foreach (self::$phptimezones as $tzn => $phptzs) { foreach (self::$phptimezones as $tzn => $phptzs) {
...@@ -1296,11 +1296,11 @@ class TimezoneUtil { ...@@ -1296,11 +1296,11 @@ class TimezoneUtil {
} }
/** /**
* Pack timezone info for Sync * Pack timezone info for Sync.
* *
* @param array $tz * @param array $tz
* *
* @access private * @access public
* @return string * @return string
*/ */
static public function GetSyncBlobFromTZ($tz) { static public function GetSyncBlobFromTZ($tz) {
......
...@@ -42,11 +42,13 @@ ...@@ -42,11 +42,13 @@
************************************************/ ************************************************/
if (!defined("ZPUSH_VERSION")) { if (!defined("ZPUSH_VERSION")) {
$commit = exec("type git && git log --date=short --pretty=format:'%h/%ad' -1"); $path = escapeshellarg(dirname(realpath($_SERVER['SCRIPT_FILENAME'])));
if(preg_match("/^[\da-f]+\/\d{4}-\d{2}-\d{2}$/i", $commit)) { $branch = trim(exec("hash git && cd $path >/dev/null 2>&1 && git branch --no-color 2>/dev/null | sed -e '/^[^*]/d' -e \"s/* \(.*\)/\\1/\""));
define("ZPUSH_VERSION", "GIT " . $commit); $version = exec("hash git && cd $path >/dev/null 2>&1 && git describe --always &2>/dev/null");
if ($branch && $version) {
define("ZPUSH_VERSION", $branch .'-'. $version);
} }
else { else {
define("ZPUSH_VERSION", "GIT"); define("ZPUSH_VERSION", "GIT");
} }
} }
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment