Commit e598af87 authored by Sebastian Kummer's avatar Sebastian Kummer

Merge pull request #653 in ZP/z-push from release/2.3 to master

* commit '35c395ab':
  Merge pull request #652 in ZP/z-push from bugfix/ZP-1345-own-private-items-stripped-when-folder-is-in-additionalfolders to develop
  Merge pull request #640 in ZP/z-push from bugfix/ZP-1345-own-private-items-stripped-when-folder-is-in-additionalfolders to develop
  Merge pull request #639 in ZP/z-push from bugfix/ZP-1344-reply-back-exporter-doesn-t-honour-private-flag to develop
parents 0c92d12e 35c395ab
...@@ -364,12 +364,15 @@ class MAPIUtils { ...@@ -364,12 +364,15 @@ class MAPIUtils {
*/ */
public static function IsMessageSharedAndPrivate($folderid, $mapimessage) { public static function IsMessageSharedAndPrivate($folderid, $mapimessage) {
$sensitivity = mapi_getprops($mapimessage, array(PR_SENSITIVITY)); $sensitivity = mapi_getprops($mapimessage, array(PR_SENSITIVITY));
$sharedUser = ZPush::GetAdditionalSyncFolderStore(bin2hex($folderid)); if (isset($sensitivity[PR_SENSITIVITY]) && $sensitivity[PR_SENSITIVITY] >= SENSITIVITY_PRIVATE) {
if ($sharedUser != false && $sharedUser != 'SYSTEM' && isset($sensitivity[PR_SENSITIVITY]) && $sensitivity[PR_SENSITIVITY] >= SENSITIVITY_PRIVATE) { $hexFolderid = bin2hex($folderid);
ZLog::Write(LOGLEVEL_DEBUG, sprintf("MAPIUtils->IsMessageSharedAndPrivate(): Message is in shared store '%s' and marked as private", $sharedUser)); $sharedUser = ZPush::GetAdditionalSyncFolderStore($hexFolderid);
return true; $shortId = ZPush::GetDeviceManager()->GetFolderIdForBackendId($hexFolderid);
if (Utils::GetFolderOriginFromId($shortId) != DeviceManager::FLD_ORIGIN_USER && $sharedUser != false && $sharedUser != 'SYSTEM') {
ZLog::Write(LOGLEVEL_DEBUG, sprintf("MAPIUtils->IsMessageSharedAndPrivate(): Message is in shared store '%s' and marked as private", $sharedUser));
return true;
}
} }
return false; return false;
} }
......
...@@ -468,6 +468,18 @@ class ReplyBackImExporter implements IImportChanges, IExportChanges { ...@@ -468,6 +468,18 @@ class ReplyBackImExporter implements IImportChanges, IExportChanges {
try { try {
ZLog::Write(LOGLEVEL_DEBUG, sprintf("ReplyBackImExporter->getMessage(): Getting message from MAPIProvider, sourcekey: '%s', parentsourcekey: '%s', entryid: '%s'", bin2hex($sourcekey), bin2hex($parentsourcekey), bin2hex($entryid))); ZLog::Write(LOGLEVEL_DEBUG, sprintf("ReplyBackImExporter->getMessage(): Getting message from MAPIProvider, sourcekey: '%s', parentsourcekey: '%s', entryid: '%s'", bin2hex($sourcekey), bin2hex($parentsourcekey), bin2hex($entryid)));
$message = $this->mapiprovider->GetMessage($mapimessage, $this->contentparameters); $message = $this->mapiprovider->GetMessage($mapimessage, $this->contentparameters);
// strip or do not send private messages from shared folders to the device
if (MAPIUtils::IsMessageSharedAndPrivate($this->folderid, $mapimessage)) {
if ($message->SupportsPrivateStripping()) {
ZLog::Write(LOGLEVEL_DEBUG, "ReplyBackImExporter->getMessage(): stripping data of private message from a shared folder");
$message->StripData(Streamer::STRIP_PRIVATE_DATA);
}
else {
ZLog::Write(LOGLEVEL_DEBUG, "ReplyBackImExporter->getMessage(): ignoring private message from a shared folder");
return SYNC_E_IGNORE;
}
}
} }
catch (SyncObjectBrokenException $mbe) { catch (SyncObjectBrokenException $mbe) {
if ($announceErrors) { if ($announceErrors) {
......
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