protected override PolicyContextMenuBase InternalGetPolicyMenu(ref OwaStoreObjectId itemId)
        {
            if (itemId != null)
            {
                if (itemId.OwaStoreObjectIdType != OwaStoreObjectIdType.MailBoxObject && itemId.OwaStoreObjectIdType != OwaStoreObjectIdType.ArchiveMailboxObject && itemId.OwaStoreObjectIdType != OwaStoreObjectIdType.Conversation && itemId.OwaStoreObjectIdType != OwaStoreObjectIdType.ArchiveConversation)
                {
                    throw new OwaInvalidRequestException("Only (archive)mailbox and (archive)conversation objects can be handled.");
                }
                if (itemId.IsConversationId)
                {
                    OwaStoreObjectId[] allItemIds = ConversationUtilities.GetAllItemIds(base.UserContext, new OwaStoreObjectId[]
                    {
                        itemId
                    }, new StoreObjectId[0]);
                    if (allItemIds.Length == 1)
                    {
                        itemId = allItemIds[0];
                    }
                }
            }
            DeletePolicyContextMenu deletePolicyContextMenu = DeletePolicyContextMenu.Create(base.UserContext);

            if (itemId != null && !itemId.IsConversationId && itemId.IsStoreObjectId && itemId.StoreObjectId.IsFolderId)
            {
                StoreObjectId storeObjectId = itemId.StoreObjectId;
                StoreSession  session       = itemId.GetSession(base.UserContext);
                if (Utilities.IsDefaultFolderId(session, storeObjectId, DefaultFolderType.Inbox) || Utilities.IsDefaultFolderId(session, storeObjectId, DefaultFolderType.Drafts) || Utilities.IsDefaultFolderId(session, storeObjectId, DefaultFolderType.SentItems) || Utilities.IsDefaultFolderId(session, storeObjectId, DefaultFolderType.Notes) || Utilities.IsDefaultFolderId(session, storeObjectId, DefaultFolderType.JunkEmail) || Utilities.IsDefaultFolderId(session, storeObjectId, DefaultFolderType.DeletedItems))
                {
                    deletePolicyContextMenu.RenderCheckedOnly = true;
                }
            }
            return(deletePolicyContextMenu);
        }
Ejemplo n.º 2
0
        // Token: 0x0600258F RID: 9615 RVA: 0x000D943C File Offset: 0x000D763C
        internal SharedCalendarItemInfobar(UserContext userContext, CalendarFolder folder, int colorIndex, bool renderNotifyForOtherUser)
        {
            if (userContext == null)
            {
                throw new ArgumentNullException("userContext");
            }
            if (folder == null)
            {
                throw new ArgumentNullException("folder");
            }
            this.userContext = userContext;
            this.folder      = folder;
            this.colorIndex  = colorIndex;
            this.renderNotifyForOtherUser = renderNotifyForOtherUser;
            this.isSharedOutFolder        = Utilities.IsFolderSharedOut(folder);
            OwaStoreObjectId owaStoreObjectId = OwaStoreObjectId.CreateFromStoreObject(folder);

            if (owaStoreObjectId.GetSession(userContext) is MailboxSession)
            {
                this.folderEncodedDisplayName = Utilities.SanitizeHtmlEncode(string.Format(LocalizedStrings.GetNonEncoded(-83764036), folder.DisplayName, Utilities.GetMailboxOwnerDisplayName((MailboxSession)owaStoreObjectId.GetSession(userContext))));
            }
            else
            {
                this.folderEncodedDisplayName = Utilities.SanitizeHtmlEncode(folder.DisplayName);
            }
            this.isSharedFolder = (owaStoreObjectId != null && owaStoreObjectId.IsOtherMailbox);
            this.isPublicFolder = owaStoreObjectId.IsPublic;
            if (this.isSharedFolder)
            {
                this.folderOwnerEncodedName = Utilities.SanitizeHtmlEncode(Utilities.GetFolderOwnerExchangePrincipal(owaStoreObjectId, userContext).MailboxInfo.DisplayName);
            }
            this.containerClass = folder.GetValueOrDefault <string>(StoreObjectSchema.ContainerClass, "IPF.Appointment");
        }
Ejemplo n.º 3
0
        public void RemoveOtherInbox()
        {
            base.ThrowIfCannotActAsOwner();
            OwaStoreObjectId owaStoreObjectId = (OwaStoreObjectId)base.GetParameter("Id");

            if (owaStoreObjectId.MailboxOwnerLegacyDN == null)
            {
                throw new OwaInvalidRequestException("Can't find legacyDN information.");
            }
            OtherMailboxConfiguration.RemoveOtherMailbox(base.UserContext, owaStoreObjectId.MailboxOwnerLegacyDN);
            try
            {
                MailboxSession mailboxSession  = owaStoreObjectId.GetSession(base.UserContext) as MailboxSession;
                StoreObjectId  defaultFolderId = mailboxSession.GetDefaultFolderId(DefaultFolderType.Inbox);
                if (defaultFolderId != null)
                {
                    OwaStoreObjectId owaStoreObjectId2 = OwaStoreObjectId.CreateFromSessionFolderId(base.UserContext, mailboxSession, defaultFolderId);
                    if (base.UserContext.IsPushNotificationsEnabled)
                    {
                        base.UserContext.MapiNotificationManager.UnsubscribeFolderCounts(owaStoreObjectId2, mailboxSession);
                        base.UserContext.MapiNotificationManager.UnsubscribeFolderChanges(owaStoreObjectId2, mailboxSession);
                    }
                    if (base.UserContext.IsPullNotificationsEnabled)
                    {
                        base.UserContext.NotificationManager.DeleteDelegateFolderCountAdvisor(owaStoreObjectId2);
                        base.UserContext.NotificationManager.DeleteOwaConditionAdvisor(owaStoreObjectId2);
                    }
                }
            }
            catch (ObjectNotFoundException arg)
            {
                ExTraceGlobals.CoreCallTracer.TraceDebug <ObjectNotFoundException>(0L, "NavigationNodeEventHandler.RemoveOtherInbox() exception {0}", arg);
            }
        }
Ejemplo n.º 4
0
        // Token: 0x06002E1D RID: 11805 RVA: 0x001074AC File Offset: 0x001056AC
        private OwaStoreObjectId GetLatestFlaggedOrNormalItem()
        {
            OwaStoreObjectId owaStoreObjectId = base.GetParameter("id") as OwaStoreObjectId;

            if (owaStoreObjectId == null || !owaStoreObjectId.IsConversationId)
            {
                return(owaStoreObjectId);
            }
            MailboxSession mailboxSession = (MailboxSession)owaStoreObjectId.GetSession(base.UserContext);
            Conversation   conversation   = Conversation.Load(mailboxSession, owaStoreObjectId.ConversationId, base.UserContext.IsIrmEnabled, new PropertyDefinition[]
            {
                ItemSchema.Id,
                StoreObjectSchema.ParentItemId,
                ItemSchema.ReceivedTime,
                ItemSchema.FlagStatus
            });

            conversation.ConversationTree.Sort(ConversationTreeSortOrder.ChronologicalDescending);
            IList <StoreObjectId> flagedItems = ConversationUtilities.GetFlagedItems(mailboxSession, conversation, owaStoreObjectId.ParentFolderId, new FlagStatus[]
            {
                FlagStatus.Flagged
            });

            if (flagedItems.Count > 0)
            {
                return(OwaStoreObjectId.CreateFromStoreObjectId(flagedItems[0], owaStoreObjectId));
            }
            StoreObjectId latestMessage = ConversationUtilities.GetLatestMessage(mailboxSession, conversation, owaStoreObjectId.ParentFolderId);

            if (latestMessage != null)
            {
                return(OwaStoreObjectId.CreateFromStoreObjectId(latestMessage, owaStoreObjectId));
            }
            return(null);
        }
Ejemplo n.º 5
0
        public void ExpandItemParts()
        {
            ExTraceGlobals.MailCallTracer.TraceDebug((long)this.GetHashCode(), "ReadConversationEventHandler.ExpandItemParts");
            OwaStoreObjectId owaStoreObjectId = (OwaStoreObjectId)base.GetParameter("CnvId");

            OwaStoreObjectId[]   array        = (OwaStoreObjectId[])base.GetParameter("IPId");
            Conversation         conversation = ConversationUtilities.LoadConversation(base.UserContext, owaStoreObjectId, ItemPartWriter.GetRequestedProperties());
            List <StoreObjectId> localItemIds = ConversationUtilities.GetLocalItemIds((MailboxSession)owaStoreObjectId.GetSession(base.UserContext), conversation, owaStoreObjectId.ParentFolderId);

            ConversationUtilities.MarkLocalNodes(conversation, localItemIds);
            conversation.OnBeforeItemLoad += ItemPartWriter.OnBeforeItemLoad;
            foreach (OwaStoreObjectId owaStoreObjectId2 in array)
            {
                this.SanitizingWriter.Write("<div id=\"");
                this.SanitizingWriter.Write(owaStoreObjectId2.ToString());
                this.SanitizingWriter.Write("\">");
                IConversationTreeNode conversationTreeNode;
                if (!conversation.ConversationTree.TryGetConversationTreeNode(owaStoreObjectId2.StoreObjectId, out conversationTreeNode))
                {
                    this.Writer.Write("<div id=divExp itemNotFound=1>&nbsp;</div>");
                }
                else
                {
                    MailboxSession session = (MailboxSession)owaStoreObjectId.GetSession(base.UserContext);
                    ConversationUtilities.SortPropertyBags(conversationTreeNode, localItemIds, session);
                    using (ItemPartWriter writer = ItemPartWriter.GetWriter(base.UserContext, this.Writer, owaStoreObjectId, conversation, conversationTreeNode))
                    {
                        writer.RenderExpandedItemPart(false, false, null);
                    }
                }
                this.SanitizingWriter.Write("</div>");
            }
        }
Ejemplo n.º 6
0
 // Token: 0x06002FB2 RID: 12210 RVA: 0x001153B8 File Offset: 0x001135B8
 private bool CanFolderHaveSubFolders(OwaStoreObjectId folderId)
 {
     if (folderId.IsPublic)
     {
         return(true);
     }
     using (Folder folder = Folder.Bind(folderId.GetSession(base.UserContext), folderId.StoreObjectId, new PropertyDefinition[]
     {
         FolderSchema.IsOutlookSearchFolder,
         FolderSchema.ExtendedFolderFlags
     }))
     {
         if (Utilities.IsDefaultFolder(folder, DefaultFolderType.SearchFolders))
         {
             return(false);
         }
         if (Utilities.IsOutlookSearchFolder(folder))
         {
             return(false);
         }
         if (Utilities.IsELCRootFolder(folder))
         {
             return(false);
         }
         if (Utilities.IsOneOfTheFolderFlagsSet(folder, new ExtendedFolderFlags[]
         {
             ExtendedFolderFlags.ExclusivelyBound,
             ExtendedFolderFlags.RemoteHierarchy
         }))
         {
             return(false);
         }
     }
     return(true);
 }
Ejemplo n.º 7
0
        public void EmptyDeletedItems()
        {
            OwaStoreObjectId owaStoreObjectId = (OwaStoreObjectId)base.GetParameter("id");

            if (!Utilities.IsDefaultFolderId(base.UserContext, owaStoreObjectId, DefaultFolderType.DeletedItems))
            {
                throw new OwaInvalidRequestException("Can only perform EmptyDeletedItems operation on DeletedItems folder");
            }
            owaStoreObjectId.GetSession(base.UserContext).DeleteAllObjects(DeleteItemFlags.SoftDelete, owaStoreObjectId.StoreObjectId);
        }
Ejemplo n.º 8
0
        private void ProcessOwaConditionAdvisors()
        {
            Dictionary <OwaStoreObjectId, OwaConditionAdvisor> conditionAdvisorTable = base.UserContext.NotificationManager.ConditionAdvisorTable;

            if (conditionAdvisorTable != null)
            {
                OwaStoreObjectId      remindersSearchFolderOwaId = base.UserContext.RemindersSearchFolderOwaId;
                bool                  flag = false;
                IDictionaryEnumerator dictionaryEnumerator = conditionAdvisorTable.GetEnumerator();
                while (dictionaryEnumerator.MoveNext())
                {
                    OwaConditionAdvisor owaConditionAdvisor = (OwaConditionAdvisor)dictionaryEnumerator.Value;
                    OwaStoreObjectId    folderId            = owaConditionAdvisor.FolderId;
                    try
                    {
                        MailboxSession mailboxSession = folderId.GetSession(base.UserContext) as MailboxSession;
                        if (mailboxSession != null)
                        {
                            bool flag2 = owaConditionAdvisor.IsConditionTrue(mailboxSession);
                            if (base.UserContext.UserOptions.EnableReminders && !flag && folderId.Equals(remindersSearchFolderOwaId))
                            {
                                flag = flag2;
                            }
                            if (flag2 || owaConditionAdvisor.IsRecycled)
                            {
                                if (!folderId.Equals(remindersSearchFolderOwaId))
                                {
                                    this.Writer.Write("stDrty(\"");
                                    Utilities.JavascriptEncode(folderId.ToBase64String(), this.Writer);
                                    this.Writer.Write("\");");
                                }
                                owaConditionAdvisor.ResetCondition(mailboxSession);
                                owaConditionAdvisor.IsRecycled = false;
                            }
                        }
                    }
                    catch (ObjectNotFoundException)
                    {
                    }
                }
                if (base.UserContext.UserOptions.EnableReminders)
                {
                    this.ProcessReminders(flag);
                }
            }
        }
Ejemplo n.º 9
0
        protected override void LoadViewState()
        {
            OwaStoreObjectId owaStoreObjectId = OwaStoreObjectId.CreateFromString(Utilities.GetQueryStringParameter(base.Request, "id"));
            MailboxSession   mailboxSession   = (MailboxSession)owaStoreObjectId.GetSession(base.UserContext);
            StoreObjectId    defaultFolderId  = mailboxSession.GetDefaultFolderId(DefaultFolderType.RecoverableItemsDeletions);

            if (defaultFolderId == null)
            {
                DumpsterFolderHelper.CheckAndCreateFolder(mailboxSession);
                defaultFolderId = mailboxSession.GetDefaultFolderId(DefaultFolderType.RecoverableItemsDeletions);
            }
            OwaStoreObjectId folderId = OwaStoreObjectId.CreateFromStoreObjectId(defaultFolderId, owaStoreObjectId);

            this.folder     = Utilities.GetFolderForContent <Folder>(base.UserContext, folderId, RecoverDeletedItems.folderProperties);
            this.viewWidth  = Utilities.GetFolderProperty <int>(this.folder, ViewStateProperties.ViewWidth, 450);
            this.viewHeight = Utilities.GetFolderProperty <int>(this.folder, ViewStateProperties.ViewHeight, 250);
        }
        public void IgnoreConversations()
        {
            DeleteItemInfo[]   array  = (DeleteItemInfo[])base.GetParameter("Itms");
            OwaStoreObjectId[] array2 = (OwaStoreObjectId[])base.GetParameter("Cnvs");
            if (array != null)
            {
                if (array2 != null)
                {
                    throw new OwaInvalidRequestException("IgnoreConversations does not accept both conversation IDs and items.");
                }
                if (array.Length > 500)
                {
                    throw new OwaInvalidOperationException(string.Format(CultureInfo.InvariantCulture, "Calling ignore conversation on {0} item(s) in a single request is not supported", new object[]
                    {
                        array.Length
                    }));
                }
                OwaStoreObjectId        owaStoreObjectId = (OwaStoreObjectId)base.GetParameter("fId");
                MailboxSession          session          = (MailboxSession)owaStoreObjectId.GetSession(base.UserContext);
                List <OwaStoreObjectId> list             = new List <OwaStoreObjectId>(array.Length);
                using (Folder folder = Folder.Bind(session, owaStoreObjectId.StoreObjectId))
                {
                    foreach (DeleteItemInfo deleteItemInfo in array)
                    {
                        ConversationId conversationId = ConversationUtilities.MapItemToConversation(base.UserContext, deleteItemInfo.OwaStoreObjectId);
                        if (conversationId != null)
                        {
                            list.Add(OwaStoreObjectId.CreateFromConversationId(conversationId, folder, null));
                        }
                    }
                }
                array2 = list.ToArray();
            }
            base.CheckSizeOfBatchOperation(array2);
            bool flag = true;

            foreach (OwaStoreObjectId conversationId2 in array2)
            {
                flag &= ConversationUtilities.IgnoreConversation(base.UserContext, conversationId2);
            }
            if (!flag)
            {
                base.RenderErrorResult("errDel", 166628739);
            }
        }
		public void TickleXTC()
		{
			OwaStoreObjectId owaStoreObjectId = base.GetParameter("sId") as OwaStoreObjectId;
			if (owaStoreObjectId == null)
			{
				throw new ArgumentException("sId is not a valid OwaStoreObjectId");
			}
			MailboxSession mailboxSession = owaStoreObjectId.GetSession(base.UserContext) as MailboxSession;
			if (mailboxSession == null)
			{
				throw new OwaInvalidRequestException("The provided Id does not have a valid mailboxSession");
			}
			if (!mailboxSession.IsRemote)
			{
				throw new OwaInvalidRequestException("The mailbox session for the provided Id is not a remote mailbox");
			}
			mailboxSession.CheckForNotifications();
		}
        public void GetPolicyMenu()
        {
            if (!this.policyProvider.IsPolicyEnabled(base.UserContext.MailboxSession))
            {
                throw new OwaInvalidRequestException("The mailbox is not enabled for " + this.policyProvider.ToString());
            }
            OwaStoreObjectId      owaStoreObjectId = base.GetParameter("id") as OwaStoreObjectId;
            PolicyContextMenuBase policyMenu       = this.InternalGetPolicyMenu(ref owaStoreObjectId);

            if (owaStoreObjectId != null && !owaStoreObjectId.IsConversationId)
            {
                this.DoPolicy((MailboxSession)owaStoreObjectId.GetSession(base.UserContext), owaStoreObjectId.StoreObjectId, true, delegate(StoreObject storeObject)
                {
                    bool isInherited;
                    Guid?policyTag = this.policyProvider.GetPolicyTag(storeObject, out isInherited);
                    policyMenu.SetStates(isInherited, policyTag);
                });
            }
            policyMenu.Render(this.Writer);
        }
        public void PrereadMessages()
        {
            OwaStoreObjectId owaStoreObjectId = (OwaStoreObjectId)base.GetParameter("fId");
            MailboxSession   mailboxSession   = owaStoreObjectId.GetSession(base.UserContext) as MailboxSession;

            OwaStoreObjectId[] array  = (OwaStoreObjectId[])base.GetParameter("Itms");
            StoreId[]          array2 = null;
            if (mailboxSession == null)
            {
                throw new OwaInvalidRequestException("Session type does not support preread.");
            }
            if (array.Length == 0)
            {
                throw new ArgumentNullException("itemIds cannot be empty");
            }
            try
            {
                if (this.IsConversationView)
                {
                    array2 = ConversationUtilities.GetPrereadItemIds(mailboxSession, array);
                }
                else
                {
                    array2 = new StoreId[array.Length];
                    for (int i = 0; i < array.Length; i++)
                    {
                        array2[i] = Utilities.TryGetStoreId(array[i]);
                    }
                }
            }
            catch (ArgumentNullException exception)
            {
                if (Globals.SendWatsonReports)
                {
                    ExWatson.AddExtraData(this.GetExtraWatsonData(array));
                    ExWatson.SendReport(exception, ReportOptions.None, null);
                    return;
                }
            }
            mailboxSession.PrereadMessages(array2);
        }
Ejemplo n.º 14
0
 // Token: 0x06002FAE RID: 12206 RVA: 0x00114FF8 File Offset: 0x001131F8
 private void RenderFolderTreeChangedNode(OwaStoreObjectId parentFolderId, OwaStoreObjectId newFolderId, bool isExpanded, bool updateFolderId, FolderTreeRenderType renderType)
 {
     this.Writer.Write("<div id=tn");
     if (base.UserContext.ArchiveAccessed && parentFolderId.Equals(base.UserContext.GetArchiveRootFolderId()))
     {
         this.Writer.Write(" archiveroot=\"1\"");
         MailboxSession mailboxSession = parentFolderId.GetSession(base.UserContext) as MailboxSession;
         if (mailboxSession != null && mailboxSession.MailboxOwner.MailboxInfo.IsRemote)
         {
             this.Writer.Write(" isremote=\"1\"");
         }
     }
     if (updateFolderId)
     {
         this.Writer.Write(" ufid=\"f");
         Utilities.HtmlEncode(parentFolderId.ToString(), this.Writer);
         this.Writer.Write("\"");
     }
     this.Writer.Write(">");
     if (isExpanded)
     {
         this.RenderSiblingNodes(parentFolderId, newFolderId, renderType);
     }
     else
     {
         if (newFolderId == null)
         {
             throw new ArgumentNullException("newFolderId");
         }
         FolderTreeNode folderTreeNode = FolderTreeNode.Load(base.UserContext, newFolderId, renderType);
         if (folderTreeNode != null)
         {
             FolderTreeNode folderTreeNode2 = folderTreeNode;
             folderTreeNode2.CustomAttributes += " _NF=1";
             folderTreeNode.RenderUndecoratedNode(this.Writer);
         }
     }
     this.Writer.Write("</div>");
 }
Ejemplo n.º 15
0
        public void Refresh()
        {
            ExTraceGlobals.MailCallTracer.TraceDebug((long)this.GetHashCode(), "ReadConversationEventHandler.Refresh");
            OwaStoreObjectId owaStoreObjectId = (OwaStoreObjectId)base.GetParameter("CnvId");

            OwaStoreObjectId[] expandedIds    = (OwaStoreObjectId[])base.GetParameter("ExpIds");
            int[]        expandedInternetMIds = (int[])base.GetParameter("ExpInternetMIds");
            Conversation conversation         = ConversationUtilities.LoadConversation(base.UserContext, owaStoreObjectId, ItemPartWriter.GetRequestedProperties());

            conversation.TrimToNewest(Globals.MaxItemsInConversationReadingPane);
            MailboxSession       session      = (MailboxSession)owaStoreObjectId.GetSession(base.UserContext);
            List <StoreObjectId> localItemIds = ConversationUtilities.GetLocalItemIds(session, conversation, owaStoreObjectId.ParentFolderId);

            conversation.OnBeforeItemLoad += ItemPartWriter.OnBeforeItemLoad;
            this.Writer.Write("<div id=divRfrsh");
            RenderingUtilities.RenderExpando(this.Writer, "iGC", ConversationUtilities.GetGlobalCount(conversation));
            RenderingUtilities.RenderExpando(this.Writer, "iC", localItemIds.Count);
            RenderingUtilities.RenderExpando(this.Writer, "iSort", (int)base.UserContext.UserOptions.ConversationSortOrder);
            this.Writer.Write(">");
            ConversationUtilities.RenderItemParts(this.Writer, base.UserContext, owaStoreObjectId, conversation, expandedIds, expandedInternetMIds, localItemIds, null, false);
            this.Writer.Write("</div>");
        }
Ejemplo n.º 16
0
        // Token: 0x06002FAF RID: 12207 RVA: 0x00115124 File Offset: 0x00113324
        private void RenderSiblingNodes(OwaStoreObjectId parentFolderId, OwaStoreObjectId newFolderId, FolderTreeRenderType renderType)
        {
            FolderTreeNode folderTreeNode;

            if (parentFolderId.IsPublic)
            {
                folderTreeNode = FolderTreeNode.CreatePublicFolderTreeNode(base.UserContext, parentFolderId.StoreObjectId);
            }
            else if (parentFolderId.IsOtherMailbox)
            {
                folderTreeNode = FolderTreeNode.CreateOtherMailboxRootNode(base.UserContext, parentFolderId, string.Empty, true);
                if (folderTreeNode == null)
                {
                    throw new OwaEventHandlerException("User cannot view other's Inbox", LocalizedStrings.GetNonEncoded(995407892), true);
                }
            }
            else
            {
                folderTreeNode = FolderTreeNode.CreateMailboxFolderTreeNode(base.UserContext, (MailboxSession)parentFolderId.GetSession(base.UserContext), parentFolderId.StoreObjectId, renderType);
            }
            if (folderTreeNode == null)
            {
                return;
            }
            if (newFolderId != null)
            {
                foreach (TreeNode treeNode in folderTreeNode.Children)
                {
                    FolderTreeNode folderTreeNode2 = (FolderTreeNode)treeNode;
                    if (folderTreeNode2.FolderId.Equals(newFolderId))
                    {
                        FolderTreeNode folderTreeNode3 = folderTreeNode2;
                        folderTreeNode3.CustomAttributes += " _NF=1";
                    }
                }
            }
            folderTreeNode.RenderUndecoratedChildrenNode(this.Writer);
        }
Ejemplo n.º 17
0
        public void Remove()
        {
            base.ThrowIfCannotActAsOwner();
            StoreObjectId nodeId = (StoreObjectId)base.GetParameter("srcNId");
            NavigationNodeGroupSection navigationNodeGroupSection = (NavigationNodeGroupSection)base.GetParameter("GS");
            NavigationNodeCollection   navigationNodeCollection   = NavigationNodeCollection.TryCreateNavigationNodeCollection(base.UserContext, base.UserContext.MailboxSession, navigationNodeGroupSection);
            List <OwaStoreObjectId>    list           = new List <OwaStoreObjectId>();
            NavigationNode             navigationNode = navigationNodeCollection.FindNavigationNodeByNodeId(nodeId);

            if (navigationNode == null)
            {
                base.RenderPartialFailure(-289549140, OwaEventHandlerErrorCode.NotSet);
            }
            else
            {
                OperationResult operationResult = (OperationResult)0;
                if (navigationNodeGroupSection != NavigationNodeGroupSection.First)
                {
                    List <NavigationNodeFolder> list2 = new List <NavigationNodeFolder>();
                    if (navigationNode is NavigationNodeFolder)
                    {
                        list2.Add(navigationNode as NavigationNodeFolder);
                    }
                    else if (navigationNode is NavigationNodeGroup)
                    {
                        NavigationNodeGroup navigationNodeGroup = navigationNode as NavigationNodeGroup;
                        foreach (NavigationNodeFolder item in navigationNodeGroup.Children)
                        {
                            list2.Add(item);
                        }
                    }
                    foreach (NavigationNodeFolder navigationNodeFolder in list2)
                    {
                        if (navigationNodeFolder.IsValid)
                        {
                            OwaStoreObjectId owaStoreObjectId = OwaStoreObjectId.CreateFromNavigationNodeFolder(base.UserContext, navigationNodeFolder);
                            MailboxSession   mailboxSession   = owaStoreObjectId.IsArchive ? ((MailboxSession)owaStoreObjectId.GetSession(base.UserContext)) : base.UserContext.MailboxSession;
                            if (navigationNodeFolder.IsFolderInSpecificMailboxSession(mailboxSession))
                            {
                                if (Utilities.IsSpecialFolderForSession(mailboxSession, navigationNodeFolder.FolderId))
                                {
                                    throw new OwaEventHandlerException("Cannot delete default folders.", LocalizedStrings.GetNonEncoded(-1164567320), true);
                                }
                                if (operationResult == (OperationResult)0)
                                {
                                    operationResult = OperationResult.Succeeded;
                                }
                                AggregateOperationResult aggregateOperationResult = mailboxSession.Delete(DeleteItemFlags.MoveToDeletedItems, new StoreId[]
                                {
                                    navigationNodeFolder.FolderId
                                });
                                if (aggregateOperationResult.OperationResult == OperationResult.Succeeded)
                                {
                                    list.Add(OwaStoreObjectId.CreateFromNavigationNodeFolder(base.UserContext, navigationNodeFolder));
                                }
                                else
                                {
                                    operationResult = OperationResult.PartiallySucceeded;
                                }
                            }
                        }
                    }
                    if (operationResult != (OperationResult)0 && list.Count == 0)
                    {
                        operationResult = OperationResult.Failed;
                    }
                    if (operationResult == OperationResult.Failed)
                    {
                        base.RenderPartialFailure(1041829989, OwaEventHandlerErrorCode.NotSet);
                    }
                    else if (operationResult == OperationResult.PartiallySucceeded)
                    {
                        base.RenderPartialFailure(995407892, OwaEventHandlerErrorCode.NotSet);
                    }
                }
                else
                {
                    NavigationNodeFolder navigationNodeFolder2 = navigationNode as NavigationNodeFolder;
                    if (navigationNodeFolder2 != null && navigationNodeFolder2.IsFilteredView)
                    {
                        OwaStoreObjectId owaStoreObjectId2 = OwaStoreObjectId.CreateFromNavigationNodeFolder(base.UserContext, navigationNodeFolder2);
                        using (SearchFolder searchFolder = SearchFolder.Bind(owaStoreObjectId2.GetSession(base.UserContext), owaStoreObjectId2.StoreObjectId, FolderList.FolderTreeQueryProperties))
                        {
                            searchFolder[FolderSchema.SearchFolderAllowAgeout] = true;
                            searchFolder.DisplayName = Utilities.GetRandomNameForTempFilteredView(base.UserContext);
                            searchFolder.Save();
                        }
                    }
                }
                if (operationResult == (OperationResult)0 || operationResult == OperationResult.Succeeded)
                {
                    if (navigationNodeCollection.RemoveFolderOrGroupByNodeId(nodeId) != null)
                    {
                        navigationNodeCollection.Save(base.UserContext.MailboxSession);
                    }
                }
                else if (operationResult == OperationResult.PartiallySucceeded)
                {
                    foreach (OwaStoreObjectId owaStoreObjectId3 in list)
                    {
                        navigationNodeCollection.RemoveFolderByLegacyDNandId(owaStoreObjectId3.MailboxOwnerLegacyDN ?? base.UserContext.MailboxOwnerLegacyDN, owaStoreObjectId3.StoreObjectId);
                    }
                    navigationNodeCollection.Save(base.UserContext.MailboxSession);
                }
            }
            NavigationTreeDirtyFlag navigationTreeDirtyFlag = NavigationTreeDirtyFlag.None;

            if (navigationNodeGroupSection == NavigationNodeGroupSection.First)
            {
                navigationTreeDirtyFlag = NavigationTreeDirtyFlag.Favorites;
            }
            else
            {
                if (list.Count > 0)
                {
                    List <FolderTreeNode> list3 = FolderTreeNode.CreateDeletedNodesWithDirtyCheck(base.UserContext, list, out navigationTreeDirtyFlag);
                    this.Writer.Write("<div id=tn>");
                    foreach (FolderTreeNode folderTreeNode in list3)
                    {
                        folderTreeNode.RenderUndecoratedNode(this.Writer);
                    }
                    this.Writer.Write("</div>");
                }
                switch (navigationNodeGroupSection)
                {
                case NavigationNodeGroupSection.Calendar:
                    navigationTreeDirtyFlag |= NavigationTreeDirtyFlag.Calendar;
                    break;

                case NavigationNodeGroupSection.Contacts:
                    navigationTreeDirtyFlag |= NavigationTreeDirtyFlag.Contact;
                    break;

                case NavigationNodeGroupSection.Tasks:
                    navigationTreeDirtyFlag |= NavigationTreeDirtyFlag.Task;
                    break;
                }
            }
            RenderingUtilities.RenderNavigationTreeDirtyFlag(this.Writer, base.UserContext, navigationTreeDirtyFlag, (NavigationModule[])base.GetParameter("cms"));
        }
Ejemplo n.º 18
0
        public void Delete()
        {
            OwaStoreObjectId owaStoreObjectId = (OwaStoreObjectId)base.GetParameter("id");

            if (owaStoreObjectId.IsOtherMailbox || owaStoreObjectId.IsGSCalendar)
            {
                throw new OwaInvalidRequestException("Cannot perform delete on shared folder");
            }
            ExTraceGlobals.MailCallTracer.TraceDebug((long)this.GetHashCode(), "TreeEventHandler.Delete");
            if (Utilities.IsDefaultFolderId(base.UserContext, owaStoreObjectId, DefaultFolderType.SearchFolders))
            {
                throw new OwaInvalidRequestException("Cannot Delete Search Folders");
            }
            bool flag  = (bool)base.GetParameter("fSrcD");
            bool flag2 = flag || owaStoreObjectId.IsPublic || (bool)base.GetParameter("pd");
            NavigationTreeDirtyFlag flag3 = NavigationTreeDirtyFlag.None;

            using (Folder folder = Utilities.GetFolder <Folder>(base.UserContext, owaStoreObjectId, new PropertyDefinition[]
            {
                StoreObjectSchema.ContainerClass,
                FolderSchema.IsOutlookSearchFolder,
                FolderSchema.AdminFolderFlags,
                StoreObjectSchema.ParentEntryId
            }))
            {
                string className = folder.ClassName;
                if (Utilities.IsOutlookSearchFolder(folder))
                {
                    throw new OwaInvalidRequestException("Cannot Delete Search Folders");
                }
                if (Utilities.IsELCFolder(folder))
                {
                    throw new OwaInvalidRequestException("Cannot Delete ELC folders.");
                }
                if (Utilities.IsOneOfTheFolderFlagsSet(folder, new ExtendedFolderFlags[]
                {
                    ExtendedFolderFlags.RemoteHierarchy
                }))
                {
                    throw new OwaInvalidRequestException("Cannot delete a folder that is controlled remotely.");
                }
                if (!flag2 || (!owaStoreObjectId.IsPublic && !flag))
                {
                    flag3 = this.CheckNavigationTreeDirtyFlag(folder, true);
                }
            }
            OperationResult operationResult = Utilities.Delete(base.UserContext, flag2, new OwaStoreObjectId[]
            {
                owaStoreObjectId
            }).OperationResult;

            if (operationResult == OperationResult.Failed)
            {
                Strings.IDs localizedId = flag2 ? -1691273193 : 1041829989;
                throw new OwaEventHandlerException("Delete returned an OperationResult.Failed", LocalizedStrings.GetNonEncoded(localizedId));
            }
            if (operationResult == OperationResult.PartiallySucceeded)
            {
                throw new OwaAccessDeniedException(LocalizedStrings.GetNonEncoded(995407892));
            }
            if (!flag2)
            {
                this.RenderFolderTreeChangedNode(base.UserContext.GetDeletedItemsFolderId((MailboxSession)owaStoreObjectId.GetSession(base.UserContext)), owaStoreObjectId, false, false, FolderTreeRenderType.None);
            }
            RenderingUtilities.RenderNavigationTreeDirtyFlag(this.Writer, base.UserContext, flag3, (NavigationModule[])base.GetParameter("cms"));
        }
Ejemplo n.º 19
0
        public void Rename()
        {
            base.ThrowIfCannotActAsOwner();
            string text = ((string)base.GetParameter("SB")).Trim();
            string s    = text;
            NavigationNodeGroupSection navigationNodeGroupSection = (NavigationNodeGroupSection)base.GetParameter("GS");
            NavigationNodeCollection   navigationNodeCollection   = NavigationNodeCollection.TryCreateNavigationNodeCollection(base.UserContext, base.UserContext.MailboxSession, navigationNodeGroupSection);
            NavigationNode             navigationNode             = navigationNodeCollection.FindNavigationNodeByNodeId((StoreObjectId)base.GetParameter("srcNId"));

            if (navigationNode == null)
            {
                throw new OwaEventHandlerException("Cannot find specified navigation node", LocalizedStrings.GetNonEncoded(-289549140), true);
            }
            if (text.Length != 0)
            {
                if (navigationNode is NavigationNodeFolder)
                {
                    NavigationNodeFolder navigationNodeFolder = navigationNode as NavigationNodeFolder;
                    if (!navigationNodeFolder.IsValid)
                    {
                        throw new OwaInvalidRequestException("This is not a valid navigation node");
                    }
                    if (navigationNodeFolder.NavigationNodeType == NavigationNodeType.SmartFolder && !navigationNodeFolder.IsFilteredView)
                    {
                        throw new OwaInvalidRequestException("Cannot rename search folders");
                    }
                    OwaStoreObjectId owaStoreObjectId = OwaStoreObjectId.CreateFromNavigationNodeFolder(base.UserContext, navigationNodeFolder);
                    MailboxSession   mailboxSession   = owaStoreObjectId.IsArchive ? ((MailboxSession)owaStoreObjectId.GetSession(base.UserContext)) : base.UserContext.MailboxSession;
                    if (owaStoreObjectId.IsArchive && navigationNodeFolder.NavigationNodeType == NavigationNodeType.NormalFolder)
                    {
                        s = string.Format(LocalizedStrings.GetNonEncoded(-83764036), text, Utilities.GetMailboxOwnerDisplayName(mailboxSession));
                    }
                    if (navigationNodeFolder.IsFolderInSpecificMailboxSession(mailboxSession))
                    {
                        using (Folder folder = Folder.Bind(mailboxSession, navigationNodeFolder.FolderId, new PropertyDefinition[]
                        {
                            FolderSchema.ExtendedFolderFlags
                        }))
                        {
                            if (!Utilities.CanFolderBeRenamed(base.UserContext, folder))
                            {
                                throw new OwaInvalidRequestException("Folder cannot be renamed.");
                            }
                            folder.DisplayName = text;
                            FolderSaveResult folderSaveResult = folder.Save();
                            if (folderSaveResult.OperationResult != OperationResult.Succeeded)
                            {
                                if (Utilities.IsFolderNameConflictError(folderSaveResult))
                                {
                                    throw new OwaEventHandlerException("Folder rename did not return OperationResult.Succeeded", LocalizedStrings.GetNonEncoded(1602494619), OwaEventHandlerErrorCode.FolderNameExists, true);
                                }
                                throw new OwaAccessDeniedException(LocalizedStrings.GetNonEncoded(995407892));
                            }
                        }
                    }
                }
                navigationNode.Subject = text;
                navigationNodeCollection.Save(base.UserContext.MailboxSession);
                this.Writer.Write("<div id=tn>");
                Utilities.HtmlEncode(text, this.Writer, true);
                this.Writer.Write("</div><div id=ntn>");
                Utilities.HtmlEncode(s, this.Writer, true);
                this.Writer.Write("</div>");
                return;
            }
            if (navigationNode is NavigationNodeGroup)
            {
                throw new OwaEventHandlerException("User did not provide name for new group", LocalizedStrings.GetNonEncoded(-1749891264), true);
            }
            throw new OwaEventHandlerException("User did not provide name for new folder", LocalizedStrings.GetNonEncoded(-41080803), true);
        }
Ejemplo n.º 20
0
        private void GetDataAndUpdateCommonViewIfNecessary(bool needGetColor)
        {
            NavigationNodeCollection navigationNodeCollection = null;

            NavigationNodeFolder[] array = null;
            if (Utilities.IsWebPartDelegateAccessRequest(OwaContext.Current) || (!needGetColor && this.FolderId.Equals(this.UserContext.CalendarFolderOwaId)) || !this.TryGetNodeFoldersFromNavigationTree(out array, out navigationNodeCollection))
            {
                base.CalendarTitle = ((this.folder != null) ? this.folder.DisplayName : string.Empty);
                this.CalendarColor = -2;
                return;
            }
            this.CalendarColor = CalendarColorManager.GetCalendarFolderColor(this.UserContext, navigationNodeCollection, array);
            OwaStoreObjectId owaStoreObjectId = OwaStoreObjectId.CreateFromNavigationNodeFolder(this.UserContext, array[0]);

            if (owaStoreObjectId.IsArchive)
            {
                base.CalendarTitle = string.Format(LocalizedStrings.GetNonEncoded(-83764036), array[0].Subject, Utilities.GetMailboxOwnerDisplayName((MailboxSession)owaStoreObjectId.GetSession(this.UserContext)));
            }
            else
            {
                base.CalendarTitle = array[0].Subject;
            }
            foreach (NavigationNodeFolder navigationNodeFolder in array)
            {
                if (!navigationNodeFolder.IsGSCalendar && navigationNodeFolder.IsPrimarySharedCalendar)
                {
                    navigationNodeFolder.UpgradeToGSCalendar();
                }
                if (this.olderExchangeCalendarTypeInNode == NavigationNodeFolder.OlderExchangeCalendarType.Unknown)
                {
                    this.olderExchangeCalendarTypeInNode = navigationNodeFolder.OlderExchangeSharedCalendarType;
                }
            }
        }