コード例 #1
0
ファイル: FolderTree.cs プロジェクト: YHZX2013/exchange_diff
 public void SetPermissions(ISyncItemId folderId, SyncPermissions permissions)
 {
     FolderTree.FolderInfo folderInfo = this.GetFolderInfo(folderId);
     if (folderInfo.Permissions != permissions)
     {
         folderInfo.Permissions = permissions;
         this.isDirty           = true;
     }
 }
コード例 #2
0
        // Token: 0x0600088B RID: 2187 RVA: 0x00032D38 File Offset: 0x00030F38
        protected StoreObjectId GetXsoFolderId(string syncFolderId, out SyncPermissions permissions)
        {
            StoreObjectId result = null;

            permissions = SyncPermissions.FullAccess;
            if (syncFolderId == "0")
            {
                result = base.MailboxSession.GetDefaultFolderId(DefaultFolderType.Root);
            }
            else
            {
                MailboxSyncItemId mailboxSyncItemId = ((FolderIdMapping)this.folderIdMappingSyncState[CustomStateDatumType.IdMapping])[syncFolderId] as MailboxSyncItemId;
                if (mailboxSyncItemId != null)
                {
                    FolderTree folderTree = (FolderTree)this.FolderIdMappingSyncState[CustomStateDatumType.FullFolderTree];
                    result      = (StoreObjectId)mailboxSyncItemId.NativeId;
                    permissions = folderTree.GetPermissions(mailboxSyncItemId);
                }
            }
            return(result);
        }
コード例 #3
0
        // Token: 0x060008A9 RID: 2217 RVA: 0x00033BC0 File Offset: 0x00031DC0
        private XmlNode CreateChangeNode(XmlDocument doc, string nameSpaceUri, ChangeType changeType, FolderTree fullFolderTree, ISyncItemId mailboxSyncId, HierarchySyncOperation op, string shortId, string parentShortId, ref bool sendWatson)
        {
            XmlNode xmlNode = null;

            switch (changeType)
            {
            case ChangeType.Add:
                xmlNode = doc.CreateElement("Add", nameSpaceUri);
                base.ProtocolLogger.IncrementValue("F", PerFolderProtocolLoggerData.ServerAdds);
                break;

            case ChangeType.Change:
                xmlNode = doc.CreateElement("Update", nameSpaceUri);
                base.ProtocolLogger.IncrementValue("F", PerFolderProtocolLoggerData.ServerChanges);
                break;
            }
            AirSyncDiagnostics.TraceDebug <string, string, string>(ExTraceGlobals.AlgorithmTracer, this, "FolderSyncCommand.CreateChangeNode(). <{0}> node for folder {1} with short ID {2} will be sent to client.", Enum.GetName(typeof(ChangeType), changeType), op.DisplayName, shortId);
            XmlNode xmlNode2 = doc.CreateElement("ServerId", nameSpaceUri);

            xmlNode2.InnerText = shortId;
            xmlNode.AppendChild(xmlNode2);
            XmlNode xmlNode3 = doc.CreateElement("ParentId", nameSpaceUri);

            xmlNode3.InnerText = (string.IsNullOrEmpty(parentShortId) ? "0" : parentShortId);
            xmlNode.AppendChild(xmlNode3);
            XmlNode xmlNode4 = doc.CreateElement("DisplayName", nameSpaceUri);

            if (op.DisplayName.Length < 255)
            {
                xmlNode4.InnerText = op.DisplayName;
            }
            else
            {
                using (Folder folder = op.GetFolder())
                {
                    xmlNode4.InnerText = folder.DisplayName;
                }
            }
            xmlNode.AppendChild(xmlNode4);
            XmlNode xmlNode5 = doc.CreateElement("Type", nameSpaceUri);

            xmlNode5.InnerText = AirSyncUtility.GetAirSyncFolderType(base.MailboxSession, fullFolderTree.IsSharedFolder(mailboxSyncId), op.ItemId, op.ClassName);
            xmlNode.AppendChild(xmlNode5);
            SyncPermissions permissions = fullFolderTree.GetPermissions(mailboxSyncId);

            if (permissions != SyncPermissions.FullAccess)
            {
                if (base.Version < 140)
                {
                    sendWatson = true;
                    AirSyncDiagnostics.TraceError <string, SyncPermissions>(ExTraceGlobals.RequestsTracer, this, "Error trying to change folder {0} with permissions {1}.  Permissions must be FullAccess.", op.DisplayName, permissions);
                }
                else
                {
                    XmlNode xmlNode6 = doc.CreateElement("Permissions", nameSpaceUri);
                    XmlNode xmlNode7 = xmlNode6;
                    int     num      = (int)permissions;
                    xmlNode7.InnerText = num.ToString(CultureInfo.InvariantCulture);
                    xmlNode.AppendChild(xmlNode6);
                }
            }
            if (fullFolderTree.IsSharedFolder(mailboxSyncId))
            {
                string owner = fullFolderTree.GetOwner(mailboxSyncId);
                if (base.Version < 140)
                {
                    sendWatson = true;
                    AirSyncDiagnostics.TraceError <string, string>(ExTraceGlobals.RequestsTracer, this, "Folder {0} with owner {1} is marked as shared in a version lower than 14.", op.DisplayName, owner);
                }
                else
                {
                    XmlNode xmlNode8 = doc.CreateElement("Owner", nameSpaceUri);
                    xmlNode8.InnerText = owner;
                    xmlNode.AppendChild(xmlNode8);
                }
            }
            return(xmlNode);
        }