Ejemplo n.º 1
0
        // Token: 0x060003BC RID: 956 RVA: 0x0001A6EC File Offset: 0x000188EC
        private void InvokeInternal(MailboxSession mailboxSession, MailboxDataForTags mailboxDataForTags)
        {
            if (mailboxSession.MailboxOwner.RecipientType == RecipientType.MailUser && !this.FaiExists(mailboxSession))
            {
                ElcSubAssistant.Tracer.TraceDebug <ElcTagSubAssistant, string>((long)this.GetHashCode(), "{0}: FAI doesn't exist for archive mailbox: {1}. Skip it.", this, mailboxSession.MailboxOwner.MailboxInfo.DisplayName);
                return;
            }
            if (!this.CheckForPolicy(mailboxDataForTags))
            {
                if (mailboxDataForTags.LitigationHoldEnabled || mailboxDataForTags.SuspendExpiration)
                {
                    ElcUserTagInformation elcUserTagInformation = (ElcUserTagInformation)mailboxDataForTags.ElcUserInformation;
                    elcUserTagInformation.EnsureUserConfigurationIsValid();
                    elcUserTagInformation.SaveConfigItem(mailboxDataForTags.ArchiveProcessor);
                }
                return;
            }
            bool flag = this.tagProvisioner.Invoke(mailboxDataForTags);

            if (flag)
            {
                this.MapPolicyForArchive(mailboxDataForTags);
                this.tagEnforcerManager.Invoke(mailboxDataForTags);
            }
            this.TrainForAutoTagging(mailboxDataForTags);
        }
        // Token: 0x060003F6 RID: 1014 RVA: 0x0001C798 File Offset: 0x0001A998
        private bool InvokeInternal(MailboxDataForTags mailboxDataForTags)
        {
            TagProvisioner.Tracer.TraceDebug <TagProvisioner, IExchangePrincipal>((long)this.GetHashCode(), "{0}: TagProvisioner invoked for for mailbox '{1}'.", this, mailboxDataForTags.MailboxSession.MailboxOwner);
            ElcUserTagInformation elcUserTagInformation = (ElcUserTagInformation)mailboxDataForTags.ElcUserInformation;
            bool      flag      = false;
            TagChange tagChange = new TagChange();

            if (mailboxDataForTags.MailboxSession.MailboxOwner.RecipientType != RecipientType.MailUser)
            {
                MailboxUpgrader  mailboxUpgrader  = new MailboxUpgrader(elcUserTagInformation);
                UpgradeStatus    upgradeStatus    = mailboxUpgrader.UpgradeIfNecessary();
                ADChangeDetector adchangeDetector = new ADChangeDetector(mailboxDataForTags);
                tagChange = adchangeDetector.Detect();
                if (tagChange.ChangeType != ChangeType.None || (upgradeStatus & UpgradeStatus.AppliedFolderTag) != UpgradeStatus.None)
                {
                    flag = true;
                    elcUserTagInformation.FullCrawlRequired = true;
                }
            }
            else if (elcUserTagInformation.FullCrawlRequired)
            {
                flag = true;
            }
            mailboxDataForTags.StatisticsLogEntry.IsFullCrawlNeeded = flag;
            Synchronizer synchronizer = new Synchronizer(mailboxDataForTags, this.elcAssistant, flag);

            synchronizer.Invoke();
            return(elcUserTagInformation.SaveConfigItem(mailboxDataForTags.ArchiveProcessor));
        }