internal static PropertyConstraintViolationError ValidateMailTip(object value, PropertyDefinition propertyDefinition, IPropertyBag propertyBag, PropertyDefinitionConstraint owner) { string cultureAndMailTip = (string)value; string text; string mailTip; if (!ADRecipient.TryGetMailTipParts(cultureAndMailTip, out text, out mailTip)) { return(new PropertyConstraintViolationError(DirectoryStrings.ErrorMailTipTranslationFormatIncorrect, propertyDefinition, value, owner)); } if (text == string.Empty) { return(new PropertyConstraintViolationError(DirectoryStrings.ErrorMailTipCultureNotSpecified, propertyDefinition, value, owner)); } LocalizedString empty = LocalizedString.Empty; if (!ConstraintDelegates.TryValidateMailTipCulture(text, ref empty)) { return(new PropertyConstraintViolationError(empty, propertyDefinition, value, owner)); } try { if (!ConstraintDelegates.TryValidateMailTipDisplayableLength(mailTip, ref empty)) { return(new PropertyConstraintViolationError(empty, propertyDefinition, value, owner)); } } catch (ExchangeDataException ex) { return(new PropertyConstraintViolationError(DirectoryStrings.ErrorMailTipHtmlCorrupt(ex.Message), propertyDefinition, value, owner)); } return(null); }
public static string GetCustomMailTip(RecipientData recipientData, int traceId, int lcid) { MailTipsUtility.GetMailTipsTracer.TraceFunction((long)traceId, "Entering GetBestCustomMailTip"); CultureInfo cultureInfo = null; try { cultureInfo = new CultureInfo(lcid); } catch (ArgumentException) { MailTipsUtility.GetMailTipsTracer.TraceDebug((long)traceId, "Exiting GetBestCustomMailTip - invalid culture, returning default"); return(ADRecipient.DefaultMailTipGetter(recipientData.MailTipTranslations) as string); } object mailTipTranslations = recipientData.MailTipTranslations; if (mailTipTranslations == null) { return(null); } IList <string> list = (IList <string>)mailTipTranslations; if (list.Count == 0) { MailTipsUtility.GetMailTipsTracer.TraceDebug((long)traceId, "Exiting GetBestCustomMailTip - no values, returning null"); return(null); } string result; if (list.Count != 1) { for (int i = 0; i < 10; i++) { string name = cultureInfo.Name; MailTipsUtility.GetMailTipsTracer.TraceDebug <string>((long)traceId, "Checking for custom MailTip for {0}", name); if (MailTipsUtility.TryGetTranslation(list, name, out result)) { MailTipsUtility.GetMailTipsTracer.TraceDebug((long)traceId, "Exiting GetBestCustomMailTip with match"); return(result); } if (cultureInfo == CultureInfo.InvariantCulture) { MailTipsUtility.GetMailTipsTracer.TraceDebug((long)traceId, "Exiting GetBestCustomMailTip with default"); return(ADRecipient.DefaultMailTipGetter(recipientData.MailTipTranslations) as string); } cultureInfo = cultureInfo.Parent; } return(ADRecipient.DefaultMailTipGetter(recipientData.MailTipTranslations) as string); } string text; if (ADRecipient.TryGetMailTipParts(list[0], out text, out result)) { MailTipsUtility.GetMailTipsTracer.TraceDebug((long)traceId, "Exiting GetBestCustomMailTip - returning the sole value"); return(result); } MailTipsUtility.GetMailTipsTracer.TraceDebug((long)traceId, "Exiting GetBestCustomMailTip - sole value corrupt, returning null"); return(null); }
// Token: 0x060003E0 RID: 992 RVA: 0x0000E8BC File Offset: 0x0000CABC private static void SanitizeMailTips(ADRecipient recipient) { if (recipient.MailTipTranslations != null) { bool isReadOnly = recipient.IsReadOnly; if (isReadOnly) { recipient.SetIsReadOnly(false); } for (int i = 0; i < recipient.MailTipTranslations.Count; i++) { string str; string text; if (ADRecipient.TryGetMailTipParts(recipient.MailTipTranslations[i], out str, out text) && !string.IsNullOrEmpty(text)) { using (StringReader stringReader = new StringReader(text)) { using (StringWriter stringWriter = new StringWriter(CultureInfo.InvariantCulture)) { HtmlToHtml htmlToHtml = new HtmlToHtml(); htmlToHtml.SetPreserveDisplayNoneStyle(true); htmlToHtml.InputEncoding = Encoding.UTF8; htmlToHtml.OutputEncoding = Encoding.UTF8; htmlToHtml.FilterHtml = true; htmlToHtml.Convert(stringReader, stringWriter); string str2 = stringWriter.ToString(); recipient.MailTipTranslations[i] = str + ":" + str2; } } } } if (isReadOnly) { recipient.SetIsReadOnly(true); } } }
private static bool TryGetTranslation(IList <string> translations, string cultureName, out string result) { foreach (string text in translations) { string text2; if (text.StartsWith(cultureName + ":", StringComparison.OrdinalIgnoreCase) && ADRecipient.TryGetMailTipParts(text, out text2, out result)) { return(true); } } result = string.Empty; return(false); }