コード例 #1
0
        // Token: 0x060009E9 RID: 2537 RVA: 0x000418EC File Offset: 0x0003FAEC
        internal static string BuildTextSettingsItemBody(TextNotificationSettings settings)
        {
            StringBuilder stringBuilder = new StringBuilder(128);

            stringBuilder.AppendLine("V1.2");
            MailboxRegionalConfiguration regionalConfiguration = settings.RegionalConfiguration;

            stringBuilder.AppendLine(regionalConfiguration.TimeZone.ExTimeZone.Id);
            stringBuilder.AppendLine((regionalConfiguration.Language != null) ? regionalConfiguration.Language.LCID.ToString() : "0");
            stringBuilder.AppendLine(regionalConfiguration.TimeFormat);
            stringBuilder.AppendLine(regionalConfiguration.DateFormat);
            CalendarNotification textNotification = settings.TextNotification;

            stringBuilder.AppendLine(textNotification.MeetingReminderNotification ? "1" : "0");
            stringBuilder.AppendLine(textNotification.MeetingReminderSendDuringWorkHour ? "1" : "0");
            stringBuilder.AppendLine(textNotification.NextDays.ToString());
            stringBuilder.AppendLine(textNotification.CalendarUpdateNotification ? "1" : "0");
            stringBuilder.AppendLine(textNotification.CalendarUpdateSendDuringWorkHour ? "1" : "0");
            stringBuilder.AppendLine(textNotification.DailyAgendaNotification ? "1" : "0");
            stringBuilder.AppendLine(((int)textNotification.DailyAgendaNotificationSendTime.TotalSeconds).ToString());
            stringBuilder.AppendLine(textNotification.TextMessagingPhoneNumber.ToString());
            StorageWorkingHours workingHours = settings.WorkingHours;

            stringBuilder.AppendLine(workingHours.TimeZone.Id);
            stringBuilder.AppendLine(((int)workingHours.DaysOfWeek).ToString());
            stringBuilder.AppendLine(workingHours.StartTimeInMinutes.ToString());
            stringBuilder.AppendLine(workingHours.EndTimeInMinutes.ToString());
            SettingsItemBodyParser.CheckSettingsItemBodyLength(stringBuilder.Length);
            return(stringBuilder.ToString());
        }
コード例 #2
0
        // Token: 0x06000A62 RID: 2658 RVA: 0x0004446C File Offset: 0x0004266C
        internal static bool TryLoadRegionalConfiguration(MailboxSession session, out MailboxRegionalConfiguration regionalConfiguration)
        {
            regionalConfiguration = null;
            ADUser aduser = Utils.GetADRecipient(UserSettings.GetExternalDirectoryOrganizationId(session), session.MailboxOwnerLegacyDN) as ADUser;

            if (aduser == null)
            {
                Utils.Tracer.TraceError <string>((long)typeof(MailboxData).GetHashCode(), "Can't find AD recipient by mailbox owner's DN {0}", session.MailboxOwnerLegacyDN);
                return(false);
            }
            MailboxStoreTypeProvider mailboxStoreTypeProvider = new MailboxStoreTypeProvider(aduser);

            mailboxStoreTypeProvider.MailboxSession = session;
            try
            {
                regionalConfiguration = (MailboxRegionalConfiguration)mailboxStoreTypeProvider.Read <MailboxRegionalConfiguration>(session.MailboxOwner.ObjectId);
            }
            catch (FormatException arg)
            {
                Utils.Tracer.TraceError <ADObjectId, FormatException>((long)typeof(MailboxData).GetHashCode(), "MailboxRegionalConfiguration cannot be retrieved for user {0}. Error: {1}", session.MailboxOwner.ObjectId, arg);
                return(false);
            }
            if (regionalConfiguration == null || null == regionalConfiguration.TimeZone || regionalConfiguration.TimeZone.ExTimeZone == null)
            {
                Utils.Tracer.TraceError <ADObjectId>((long)typeof(MailboxData).GetHashCode(), "User {0} doesn't set a valid RegionalConfiguration or TimeZone", session.MailboxOwner.ObjectId);
                return(false);
            }
            return(true);
        }
コード例 #3
0
        // Token: 0x06000A6C RID: 2668 RVA: 0x0004494C File Offset: 0x00042B4C
        internal static bool AreInterestedFieldsEqual(MailboxRegionalConfiguration value1, MailboxRegionalConfiguration value2)
        {
            bool result;

            if (Utils.CheckMembers(value1, value2, out result))
            {
                return(value1.TimeZone == value2.TimeZone && value1.Language.Equals(value2.Language) && string.Equals(value1.TimeFormat, value2.TimeFormat, StringComparison.InvariantCulture) && string.Equals(value1.DateFormat, value2.DateFormat, StringComparison.InvariantCulture));
            }
            return(result);
        }
コード例 #4
0
        private void SetRegionalConfiguration()
        {
            MailboxRegionalConfiguration mailboxRegionalConfiguration = new MailboxRegionalConfiguration
            {
                TimeZone  = ExTimeZoneValue.Parse("Pacific Standard Time"),
                Principal = this.MailboxPrincipal
            };

            mailboxRegionalConfiguration.Save(this.mailboxStoreTypeProvider);
        }
コード例 #5
0
        internal static object ValidateTimeFormatCallback(object value)
        {
            string text;

            if (!MailboxRegionalConfiguration.ValidateTimeFormat(CultureInfo.CurrentUICulture, value, out text))
            {
                ExTraceGlobals.UserOptionsDataTracer.TraceDebug <string, object>(0L, "Returning default TimeFormat value: {0}. OriginalFormat: '{1}'", text, (value == null) ? "isnull" : ((value is string) ? value : "is not a string"));
                return(text);
            }
            ExTraceGlobals.UserOptionsDataTracer.TraceDebug(0L, "Returning user specified TimeFormat value: {0}", new object[]
            {
                value
            });
            return(value);
        }
コード例 #6
0
        // Token: 0x06001BC7 RID: 7111 RVA: 0x0006AEE4 File Offset: 0x000690E4
        protected override bool InternalExecute()
        {
            CultureInfo cultureInfo;

            try
            {
                cultureInfo = new CultureInfo(this.newUserLocale);
            }
            catch (CultureNotFoundException ex)
            {
                ExTraceGlobals.CoreTracer.TraceDebug <string, string>(0L, "{0} is not a valid culture. Exception Message-{1}", this.newUserLocale, ex.Message);
                return(false);
            }
            if (!SetUserLocale.IsSupportedCulture(cultureInfo))
            {
                ExTraceGlobals.CoreTracer.TraceDebug <string>(0L, "SetUserLocale::IsSupportedCulture- {0} is not a supported culture.", this.newUserLocale);
                return(false);
            }
            UserContext       userContext       = UserContextManager.GetUserContext(CallContext.Current.HttpContext, CallContext.Current.EffectiveCaller, true);
            ExchangePrincipal exchangePrincipal = userContext.ExchangePrincipal;
            PreferredCultures preferredCultures = new PreferredCultures(exchangePrincipal.PreferredCultures);

            preferredCultures.AddSupportedCulture(cultureInfo, new Predicate <CultureInfo>(SetUserLocale.IsSupportedCulture));
            this.SaveCultures(exchangePrincipal.ObjectId, userContext.MailboxSession.GetADRecipientSession(false, ConsistencyMode.FullyConsistent), preferredCultures);
            userContext.ExchangePrincipal = exchangePrincipal.WithPreferredCultures(preferredCultures);
            UserConfigurationPropertyDefinition propertyDefinition  = UserOptionPropertySchema.Instance.GetPropertyDefinition(UserConfigurationPropertyId.DateFormat);
            UserConfigurationPropertyDefinition propertyDefinition2 = UserOptionPropertySchema.Instance.GetPropertyDefinition(UserConfigurationPropertyId.TimeFormat);

            new UserOptionsType
            {
                DateFormat = MailboxRegionalConfiguration.GetDefaultDateFormat(cultureInfo),
                TimeFormat = MailboxRegionalConfiguration.GetDefaultTimeFormat(cultureInfo)
            }.Commit(base.CallContext, new UserConfigurationPropertyDefinition[]
            {
                propertyDefinition,
                propertyDefinition2
            });
            if (this.localizeFolderNames && !this.LocalizeFolders(cultureInfo))
            {
                return(false);
            }
            CallContext.Current.HttpContext.Response.Cookies.Add(new HttpCookie("mkt", cultureInfo.Name));
            CallContext.Current.HttpContext.Response.Cookies.Add(new HttpCookie("UpdatedUserSettings", 32.ToString()));
            return(true);
        }
コード例 #7
0
        // Token: 0x060009EC RID: 2540 RVA: 0x00041B98 File Offset: 0x0003FD98
        internal static TextNotificationSettings ParseTextSettingsItemBody(string body)
        {
            TextNotificationSettings result;

            using (StringReader stringReader = new StringReader(body))
            {
                if (SettingsItemBodyParser.GetNextLine(stringReader) != "V1.2")
                {
                    SettingsItemBodyParser.Tracer.TraceDebug(0L, "Unknown user settings version, skipped");
                    throw new FormatException();
                }
                MailboxRegionalConfiguration mailboxRegionalConfiguration = new MailboxRegionalConfiguration();
                mailboxRegionalConfiguration.TimeZone = new ExTimeZoneValue(SettingsItemBodyParser.GetNextTimeZone(stringReader));
                int nextInteger = SettingsItemBodyParser.GetNextInteger(stringReader);
                if (nextInteger != 0)
                {
                    mailboxRegionalConfiguration.Language = new CultureInfo(nextInteger);
                }
                mailboxRegionalConfiguration.TimeFormat = SettingsItemBodyParser.GetNextLine(stringReader);
                mailboxRegionalConfiguration.DateFormat = SettingsItemBodyParser.GetNextLine(stringReader);
                CalendarNotification calendarNotification = new CalendarNotification();
                calendarNotification.MeetingReminderNotification       = SettingsItemBodyParser.GetNextBoolean(stringReader);
                calendarNotification.MeetingReminderSendDuringWorkHour = SettingsItemBodyParser.GetNextBoolean(stringReader);
                calendarNotification.NextDays = SettingsItemBodyParser.GetNextInteger(stringReader);
                calendarNotification.CalendarUpdateNotification       = SettingsItemBodyParser.GetNextBoolean(stringReader);
                calendarNotification.CalendarUpdateSendDuringWorkHour = SettingsItemBodyParser.GetNextBoolean(stringReader);
                calendarNotification.DailyAgendaNotification          = SettingsItemBodyParser.GetNextBoolean(stringReader);
                calendarNotification.DailyAgendaNotificationSendTime  = TimeSpan.FromSeconds((double)SettingsItemBodyParser.GetNextInteger(stringReader));
                E164Number textMessagingPhoneNumber;
                if (!E164Number.TryParse(SettingsItemBodyParser.GetNextLine(stringReader), out textMessagingPhoneNumber))
                {
                    SettingsItemBodyParser.Tracer.TraceDebug(0L, "Invalid phone number, skipped");
                    throw new FormatException();
                }
                calendarNotification.TextMessagingPhoneNumber = textMessagingPhoneNumber;
                ExTimeZone          nextTimeZone = SettingsItemBodyParser.GetNextTimeZone(stringReader);
                int                 nextInteger2 = SettingsItemBodyParser.GetNextInteger(stringReader);
                int                 nextInteger3 = SettingsItemBodyParser.GetNextInteger(stringReader);
                int                 nextInteger4 = SettingsItemBodyParser.GetNextInteger(stringReader);
                StorageWorkingHours workingHours = StorageWorkingHours.Create(nextTimeZone, nextInteger2, nextInteger3, nextInteger4);
                result = new TextNotificationSettings(mailboxRegionalConfiguration, calendarNotification, workingHours);
            }
            return(result);
        }
コード例 #8
0
        public string GetUserConfiguration()
        {
            OwaUserConfiguration owaUserConfiguration = new OwaUserConfiguration();

            owaUserConfiguration.UserOptions                           = new UserOptionsType();
            owaUserConfiguration.UserOptions.TimeZone                  = AnonymousUserContext.Current.TimeZone.AlternativeId;
            owaUserConfiguration.UserOptions.TimeFormat                = MailboxRegionalConfiguration.GetDefaultTimeFormat(CultureInfo.CurrentUICulture);
            owaUserConfiguration.UserOptions.DateFormat                = MailboxRegionalConfiguration.GetDefaultDateFormat(CultureInfo.CurrentUICulture);
            owaUserConfiguration.UserOptions.WorkingHours              = new WorkingHoursType(0, 1440, 127, AnonymousUserContext.Current.TimeZone, AnonymousUserContext.Current.TimeZone);
            owaUserConfiguration.ApplicationSettings                   = new ApplicationSettingsType();
            owaUserConfiguration.ApplicationSettings.AnalyticsEnabled  = false;
            owaUserConfiguration.ApplicationSettings.InferenceEnabled  = false;
            owaUserConfiguration.ApplicationSettings.WatsonEnabled     = false;
            owaUserConfiguration.ApplicationSettings.DefaultTraceLevel = TraceLevel.Off;
            owaUserConfiguration.ApplicationSettings.InstrumentationSendIntervalSeconds = 0;
            owaUserConfiguration.SessionSettings = new SessionSettingsType();
            owaUserConfiguration.SessionSettings.ArchiveDisplayName           = string.Empty;
            owaUserConfiguration.SessionSettings.CanActAsOwner                = false;
            owaUserConfiguration.SessionSettings.IsExplicitLogon              = false;
            owaUserConfiguration.SessionSettings.IsExplicitLogonOthersMailbox = false;
            owaUserConfiguration.SessionSettings.UserCulture         = AnonymousUserContext.Current.Culture.Name;
            owaUserConfiguration.SessionSettings.UserDisplayName     = AntiXssEncoder.HtmlEncode(AnonymousUserContext.Current.ExchangePrincipal.MailboxInfo.DisplayName, false);
            owaUserConfiguration.SessionSettings.MaxMessageSizeInKb  = 0;
            owaUserConfiguration.SessionSettings.DefaultFolderIds    = new FolderId[1];
            owaUserConfiguration.SessionSettings.DefaultFolderIds[0] = IdConverter.GetFolderIdFromStoreId(AnonymousUserContext.Current.PublishedCalendarId, new MailboxId(AnonymousUserContext.Current.ExchangePrincipal.MailboxInfo.MailboxGuid));
            owaUserConfiguration.SessionSettings.DefaultFolderNames  = new string[]
            {
                DefaultFolderType.Calendar.ToString()
            };
            owaUserConfiguration.PolicySettings = new PolicySettingsType();
            owaUserConfiguration.PolicySettings.PlacesEnabled  = false;
            owaUserConfiguration.PolicySettings.WeatherEnabled = false;
            owaUserConfiguration.ViewStateConfiguration        = new OwaViewStateConfiguration();
            owaUserConfiguration.ViewStateConfiguration.CalendarViewTypeDesktop = 4;
            owaUserConfiguration.ViewStateConfiguration.CalendarViewTypeNarrow  = 1;
            owaUserConfiguration.ViewStateConfiguration.CalendarViewTypeWide    = 4;
            owaUserConfiguration.SegmentationSettings          = new SegmentationSettingsType(0UL);
            owaUserConfiguration.SegmentationSettings.Calendar = true;
            return(SessionDataHandler.EmitPayload("owaUserConfig", JsonConverter.ToJSON(owaUserConfiguration)));
        }
コード例 #9
0
        // Token: 0x06001664 RID: 5732 RVA: 0x0007E0B0 File Offset: 0x0007C2B0
        internal static ExTimeZone LoadRegionalConfiguration(ADUser adUser, MailboxSession session)
        {
            ExTraceGlobals.HeuristicsTracer.TraceFunction(0L, "ReminderTimeCalculatorContext.LoadRegionalConfiguration");
            MailboxStoreTypeProvider mailboxStoreTypeProvider = new MailboxStoreTypeProvider(adUser);

            mailboxStoreTypeProvider.MailboxSession = session;
            MailboxRegionalConfiguration mailboxRegionalConfiguration = null;

            try
            {
                mailboxRegionalConfiguration = (MailboxRegionalConfiguration)mailboxStoreTypeProvider.Read <MailboxRegionalConfiguration>(session.MailboxOwner.ObjectId);
            }
            catch (FormatException arg)
            {
                ExTraceGlobals.GeneralTracer.TraceError <IExchangePrincipal, FormatException>(0L, "User '{0}' doesn't have a valid regional configuration - {1}", session.MailboxOwner, arg);
            }
            if (mailboxRegionalConfiguration != null && mailboxRegionalConfiguration.TimeZone != null)
            {
                ExTraceGlobals.HeuristicsTracer.TraceDebug <string, IExchangePrincipal>(0L, "Found time zone {0} for User '{0}'", mailboxRegionalConfiguration.TimeZone.ExTimeZone.ToString(), session.MailboxOwner);
                return(mailboxRegionalConfiguration.TimeZone.ExTimeZone);
            }
            ExTraceGlobals.HeuristicsTracer.TraceDebug <IExchangePrincipal>(0L, "User '{0}' doesn't have a valid regional configuration - using UTC as default time zone", session.MailboxOwner);
            return(ExTimeZone.UtcTimeZone);
        }
コード例 #10
0
 public RegionalSettingsConfiguration(MailboxRegionalConfiguration mailboxRegionalConfiguration) : base(mailboxRegionalConfiguration)
 {
     this.MailboxRegionalConfiguration = mailboxRegionalConfiguration;
 }
コード例 #11
0
            // Token: 0x06000A2B RID: 2603 RVA: 0x00042F58 File Offset: 0x00041158
            public void Emit(MailboxSession session, CalendarNotificationType type, IList <CalendarInfo> events)
            {
                ExTraceGlobals.AssistantTracer.TraceDebug <string, string>((long)this.GetHashCode(), "Text Emitter is invoked, subject: {0} for user {1}", events[0].NormalizedSubject, this.MailboxData.Settings.LegacyDN);
                if (type == CalendarNotificationType.Uninteresting)
                {
                    return;
                }
                Emitter emitter = null;

                foreach (Emitter emitter2 in this.MailboxData.Settings.Text.TextNotification.CalendarNotificationSettings.Emitters)
                {
                    if (EmitterType.TextMessaging == emitter2.Type)
                    {
                        emitter = emitter2;
                        break;
                    }
                }
                if (emitter == null || emitter.PhoneNumbers.Count == 0)
                {
                    return;
                }
                MailboxRegionalConfiguration regionalConfiguration = this.MailboxData.Settings.Text.RegionalConfiguration;
                CultureInfo cultureInfo = regionalConfiguration.Language ?? CultureInfo.InvariantCulture;
                string      text        = regionalConfiguration.TimeFormat;

                if (string.IsNullOrEmpty(text))
                {
                    text = cultureInfo.DateTimeFormat.ShortTimePattern;
                }
                string text2 = regionalConfiguration.DateFormat;

                if (string.IsNullOrEmpty(text2))
                {
                    text2 = cultureInfo.DateTimeFormat.ShortDatePattern;
                }
                bool flag = false;

                try
                {
                    if (session == null)
                    {
                        ExchangePrincipal mailboxOwner = ExchangePrincipal.FromLocalServerMailboxGuid(this.MailboxData.Settings.GetADSettings(), this.MailboxData.DatabaseGuid, this.MailboxData.MailboxGuid);
                        session = MailboxSession.OpenAsSystemService(mailboxOwner, CultureInfo.InvariantCulture, "Client=TBA;Action=Emit");
                        flag    = true;
                    }
                    ExTraceGlobals.AssistantTracer.TraceDebug <string>((long)this.GetHashCode(), "Text Emitter is emitting for user {0}", this.MailboxData.Settings.LegacyDN);
                    if (CalendarNotificationType.Summary == type)
                    {
                        CalendarNotificationContentVersion1Point0 calendarNotificationContentVersion1Point = new CalendarNotificationContentVersion1Point0();
                        calendarNotificationContentVersion1Point.CalNotifType     = type;
                        calendarNotificationContentVersion1Point.CalNotifTypeDesc = Strings.notifTypeSummary.ToString(cultureInfo);
                        string agendaDateFormat = TextNotificationFactory.TextMessagingEmitter.GetAgendaDateFormat(text2);
                        string timeOfStartTime  = string.Empty;
                        foreach (CalendarInfo calendarInfo in events)
                        {
                            timeOfStartTime = calendarInfo.StartTime.ToString("H:mm", cultureInfo);
                            if (calendarInfo.EndTime.Subtract(calendarInfo.StartTime).Equals(TimeSpan.FromDays(1.0)) && calendarInfo.StartTime.Hour == 0 && calendarInfo.StartTime.Minute == 0)
                            {
                                timeOfStartTime = string.Empty;
                            }
                            calendarNotificationContentVersion1Point.CalEvents.Add(new CalendarEvent(cultureInfo.DateTimeFormat.GetDayName(calendarInfo.StartTime.DayOfWeek), calendarInfo.StartTime.ToString(agendaDateFormat, cultureInfo), timeOfStartTime, cultureInfo.DateTimeFormat.GetDayName(calendarInfo.EndTime.DayOfWeek), calendarInfo.EndTime.ToString(agendaDateFormat, cultureInfo), calendarInfo.EndTime.ToString("H:mm", cultureInfo), calendarInfo.NormalizedSubject ?? string.Empty, calendarInfo.Location ?? string.Empty));
                        }
                        TextNotificationFactory.TextMessagingEmitter.SendTextMessage(session, emitter.PhoneNumbers, calendarNotificationContentVersion1Point.ToString(), CalNotifsCounters.NumberOfAgendasSent);
                    }
                    else
                    {
                        foreach (CalendarInfo calendarInfo2 in events)
                        {
                            CalendarNotificationContentVersion1Point0 calendarNotificationContentVersion1Point2 = new CalendarNotificationContentVersion1Point0();
                            calendarNotificationContentVersion1Point2.CalNotifType = type;
                            bool flag2 = false;
                            ExPerformanceCounter perfcounter;
                            switch (type)
                            {
                            case CalendarNotificationType.Reminder:
                                calendarNotificationContentVersion1Point2.CalNotifTypeDesc = Strings.notifTypeReminder.ToString(cultureInfo);
                                perfcounter = CalNotifsCounters.NumberOfTextRemindersSent;
                                break;

                            case CalendarNotificationType.NewUpdate:
                                calendarNotificationContentVersion1Point2.CalNotifTypeDesc = Strings.notifTypeNewUpdate.ToString(cultureInfo);
                                perfcounter = CalNotifsCounters.NumberOfUpdatesSent;
                                flag2       = true;
                                break;

                            case CalendarNotificationType.ChangedUpdate:
                                calendarNotificationContentVersion1Point2.CalNotifTypeDesc = Strings.notifTypeChangedUpdate.ToString(cultureInfo);
                                perfcounter = CalNotifsCounters.NumberOfUpdatesSent;
                                flag2       = true;
                                break;

                            case CalendarNotificationType.DeletedUpdate:
                                calendarNotificationContentVersion1Point2.CalNotifTypeDesc = Strings.notifTypeDeletedUpdate.ToString(cultureInfo);
                                perfcounter = CalNotifsCounters.NumberOfUpdatesSent;
                                flag2       = true;
                                break;

                            default:
                                throw new InvalidOperationException("unsupported CalendarNotificationType");
                            }
                            if (flag2)
                            {
                                CalendarChangeProcessor.UpdateAverageProcessingLatency(calendarInfo2.CreationRequestTime);
                            }
                            calendarNotificationContentVersion1Point2.CalEvents.Add(new CalendarEvent(cultureInfo.DateTimeFormat.GetDayName(calendarInfo2.StartTime.DayOfWeek), calendarInfo2.StartTime.ToString(text2, cultureInfo), calendarInfo2.StartTime.ToString(text, cultureInfo), cultureInfo.DateTimeFormat.GetDayName(calendarInfo2.EndTime.DayOfWeek), calendarInfo2.EndTime.ToString(text2, cultureInfo), calendarInfo2.EndTime.ToString(text, cultureInfo), calendarInfo2.NormalizedSubject ?? string.Empty, calendarInfo2.Location ?? string.Empty));
                            TextNotificationFactory.TextMessagingEmitter.SendTextMessage(session, emitter.PhoneNumbers, calendarNotificationContentVersion1Point2.ToString(), perfcounter);
                        }
                    }
                    ExTraceGlobals.AssistantTracer.TraceDebug <string, string>((long)this.GetHashCode(), "Text Emitter is emitted, subject: {0}, user: {1}", events[0].NormalizedSubject, this.MailboxData.Settings.LegacyDN);
                }
                finally
                {
                    if (flag)
                    {
                        session.Dispose();
                        session = null;
                    }
                }
            }
コード例 #12
0
        private void InitializeRegionalSettings()
        {
            RegionalSettingsConfiguration regionalSettingsConfiguration = null;

            this.HasRegionalSettings = false;
            RegionalSettingsConfiguration regionalSettingsConfiguration2 = new RegionalSettingsConfiguration(new MailboxRegionalConfiguration());

            if (base.IsInRole("Get-MailboxRegionalConfiguration?Identity@R:Self") && base.IsInRole("!DelegatedAdmin"))
            {
                if (HttpRuntime.Cache[this.RegionalCacheKey] != null)
                {
                    regionalSettingsConfiguration2 = (RegionalSettingsConfiguration)HttpRuntime.Cache[this.RegionalCacheKey];
                    this.regionalCmdletStatus      = LocalSession.RegionalCmdletStatus.Finished;
                }
                else
                {
                    this.regionalCmdletStatus      = LocalSession.RegionalCmdletStatus.Waiting;
                    regionalSettingsConfiguration2 = new RegionalSettingsConfiguration(new MailboxRegionalConfiguration
                    {
                        Language = base.UserCulture
                    });
                }
                if (base.IsInRole("MailboxFullAccess"))
                {
                    regionalSettingsConfiguration = regionalSettingsConfiguration2;
                    this.HasRegionalSettings      = (regionalSettingsConfiguration != null && regionalSettingsConfiguration.UserCulture != null);
                    if (this.regionalCmdletStatus == LocalSession.RegionalCmdletStatus.Finished)
                    {
                        this.HasRegionalSettings = (this.HasRegionalSettings && regionalSettingsConfiguration.TimeZone != null);
                    }
                }
            }
            else
            {
                this.regionalCmdletStatus = LocalSession.RegionalCmdletStatus.NotNeeded;
            }
            bool        flag        = !this.HasRegionalSettings;
            HttpContext httpContext = HttpContext.Current;
            CultureInfo cultureInfo = (regionalSettingsConfiguration == null) ? null : regionalSettingsConfiguration.UserCulture;

            if (regionalSettingsConfiguration == null || (!this.CanRedirectToOwa(httpContext) && !this.HasRegionalSettings) || (cultureInfo == null && httpContext.TargetServerOrVersionSpecifiedInUrlOrCookie()))
            {
                if (regionalSettingsConfiguration != null && cultureInfo == null && regionalSettingsConfiguration.MailboxRegionalConfiguration.Language != null)
                {
                    EcpEventLogConstants.Tuple_LanguagePackIsNotInstalled.LogEvent(new object[]
                    {
                        EcpEventLogExtensions.GetUserNameToLog(),
                        regionalSettingsConfiguration.MailboxRegionalConfiguration.Language.IetfLanguageTag
                    });
                }
                regionalSettingsConfiguration = this.GetDefaultRegionalSettings(regionalSettingsConfiguration2);
                this.HasRegionalSettings      = true;
            }
            string text = httpContext.Request.QueryString["mkt"];

            if (flag && string.IsNullOrEmpty(text))
            {
                text = httpContext.Request.QueryString["mkt2"];
            }
            if (!string.IsNullOrEmpty(text))
            {
                httpContext.Response.Cookies.Add(new HttpCookie("mkt", text));
            }
            else
            {
                HttpCookie httpCookie = httpContext.Request.Cookies["mkt"];
                if (httpCookie != null)
                {
                    text = httpCookie.Value;
                }
            }
            if (!string.IsNullOrEmpty(text))
            {
                try
                {
                    CultureInfo cultureInfoByIetfLanguageTag = CultureInfo.GetCultureInfoByIetfLanguageTag(text);
                    if (Culture.IsSupportedCulture(cultureInfoByIetfLanguageTag))
                    {
                        MailboxRegionalConfiguration mailboxRegionalConfiguration = new MailboxRegionalConfiguration();
                        mailboxRegionalConfiguration.Language = Culture.GetCultureInfoInstance(cultureInfoByIetfLanguageTag.LCID);
                        mailboxRegionalConfiguration.TimeZone = regionalSettingsConfiguration.MailboxRegionalConfiguration.TimeZone;
                        if (regionalSettingsConfiguration.UserCulture != null && regionalSettingsConfiguration.UserCulture.DateTimeFormat != null)
                        {
                            mailboxRegionalConfiguration.DateFormat = regionalSettingsConfiguration.DateFormat;
                            mailboxRegionalConfiguration.TimeFormat = regionalSettingsConfiguration.TimeFormat;
                        }
                        regionalSettingsConfiguration = new RegionalSettingsConfiguration(mailboxRegionalConfiguration);
                        this.HasRegionalSettings      = true;
                    }
                }
                catch (ArgumentException)
                {
                }
            }
            if (this.HasRegionalSettings)
            {
                this.UpdateRegionalSettings(regionalSettingsConfiguration);
            }
        }
コード例 #13
0
 // Token: 0x06000A35 RID: 2613 RVA: 0x000436D9 File Offset: 0x000418D9
 internal TextNotificationSettings(MailboxRegionalConfiguration regionalConfiguration, CalendarNotification textNotification, StorageWorkingHours workingHours)
 {
     this.RegionalConfiguration = regionalConfiguration;
     this.TextNotification      = textNotification;
     this.WorkingHours          = workingHours;
 }