Remove HTML Tags Plugin in Ms CRM

 using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;


using Microsoft.Xrm.Sdk;

using Microsoft.Xrm.Sdk.Client;

using Microsoft.Xrm.Sdk.Query;

using Microsoft.Xrm.Sdk.Discovery;

using Microsoft.Crm.Sdk.Messages;

using System.ServiceModel;


namespace UpdateOppDescs

{

    internal class removeHTMLtaGSs : IPlugin

    {

        IOrganizationService service;

        public void Execute(IServiceProvider serviceProvider)

        {

            IPluginExecutionContext context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));

            IOrganizationServiceFactory serviceFactory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));

            IOrganizationService service = serviceFactory.CreateOrganizationService(context.UserId);


            if (context.InputParameters.Contains("Target") && context.InputParameters["Target"] is Entity)

            {

                Entity entity = (Entity)context.InputParameters["Target"];


                try

                {

                    if (entity.LogicalName == "opportunity")

                    {

                        ColumnSet attributes = new ColumnSet(new string[] { "description" });

                        Entity entty = service.Retrieve(entity.LogicalName, entity.Id, attributes);

                        if (entty.Contains("description") && entty.Attributes["description"] != null)

                        {

                            string desc = entty.Attributes["description"].ToString();

                            string desc2 = StripHTML(desc);

                            entty.Attributes["description"] = desc2;

                            service.Update(entty);

                        }

                        else { }


                    }


                }


                catch (Exception ex)

                {

                    throw new InvalidPluginExecutionException("An error occured in the Plugin:-", ex);

                }


            }


        }


        private string StripHTML(string source)

        {

            try

            {

                string result;


                // Remove HTML Development formatting

                // Replace line breaks with space

                // because browsers inserts space

                result = source.Replace("\r", " ");

                // Replace line breaks with space

                // because browsers inserts space

                result = result.Replace("\n", " ");

                // Remove step-formatting

                result = result.Replace("\t", string.Empty);

                // Remove repeating spaces because browsers ignore them

                result = System.Text.RegularExpressions.Regex.Replace(result,

                                                                      @"( )+", " ");


                // Remove the header (prepare first by clearing attributes)

                result = System.Text.RegularExpressions.Regex.Replace(result,

                         @"<( )*head([^>])*>", "<head>",

                         System.Text.RegularExpressions.RegexOptions.IgnoreCase);

                result = System.Text.RegularExpressions.Regex.Replace(result,

                         @"(<( )*(/)( )*head( )*>)", "</head>",

                         System.Text.RegularExpressions.RegexOptions.IgnoreCase);

                result = System.Text.RegularExpressions.Regex.Replace(result,

                         "(<head>).*(</head>)", string.Empty,

                         System.Text.RegularExpressions.RegexOptions.IgnoreCase);


                // remove all scripts (prepare first by clearing attributes)

                result = System.Text.RegularExpressions.Regex.Replace(result,

                         @"<( )*script([^>])*>", "<script>",

                         System.Text.RegularExpressions.RegexOptions.IgnoreCase);

                result = System.Text.RegularExpressions.Regex.Replace(result,

                         @"(<( )*(/)( )*script( )*>)", "</script>",

                         System.Text.RegularExpressions.RegexOptions.IgnoreCase);

                //result = System.Text.RegularExpressions.Regex.Replace(result,

                //         @"(<script>)([^(<script>\.</script>)])*(</script>)",

                //         string.Empty,

                //         System.Text.RegularExpressions.RegexOptions.IgnoreCase);

                result = System.Text.RegularExpressions.Regex.Replace(result,

                         @"(<script>).*(</script>)", string.Empty,

                         System.Text.RegularExpressions.RegexOptions.IgnoreCase);


                // remove all styles (prepare first by clearing attributes)

                result = System.Text.RegularExpressions.Regex.Replace(result,

                         @"<( )*style([^>])*>", "<style>",

                         System.Text.RegularExpressions.RegexOptions.IgnoreCase);

                result = System.Text.RegularExpressions.Regex.Replace(result,

                         @"(<( )*(/)( )*style( )*>)", "</style>",

                         System.Text.RegularExpressions.RegexOptions.IgnoreCase);

                result = System.Text.RegularExpressions.Regex.Replace(result,

                         "(<style>).*(</style>)", string.Empty,

                         System.Text.RegularExpressions.RegexOptions.IgnoreCase);


                // insert tabs in spaces of <td> tags

                result = System.Text.RegularExpressions.Regex.Replace(result,

                         @"<( )*td([^>])*>", "\t",

                         System.Text.RegularExpressions.RegexOptions.IgnoreCase);


                // insert line breaks in places of <BR> and <LI> tags

                result = System.Text.RegularExpressions.Regex.Replace(result,

                         @"<( )*br( )*>", "\r",

                         System.Text.RegularExpressions.RegexOptions.IgnoreCase);

                result = System.Text.RegularExpressions.Regex.Replace(result,

                         @"<( )*li( )*>", "\r",

                         System.Text.RegularExpressions.RegexOptions.IgnoreCase);


                // insert line paragraphs (double line breaks) in place

                // if <P>, <DIV> and <TR> tags

                result = System.Text.RegularExpressions.Regex.Replace(result,

                         @"<( )*div([^>])*>", "\r\r",

                         System.Text.RegularExpressions.RegexOptions.IgnoreCase);

                result = System.Text.RegularExpressions.Regex.Replace(result,

                         @"<( )*tr([^>])*>", "\r\r",

                         System.Text.RegularExpressions.RegexOptions.IgnoreCase);

                result = System.Text.RegularExpressions.Regex.Replace(result,

                         @"<( )*p([^>])*>", "\r\r",

                         System.Text.RegularExpressions.RegexOptions.IgnoreCase);


                // Remove remaining tags like <a>, links, images,

                // comments etc - anything that's enclosed inside < >

                result = System.Text.RegularExpressions.Regex.Replace(result,

                         @"<[^>]*>", string.Empty,

                         System.Text.RegularExpressions.RegexOptions.IgnoreCase);


                // replace special characters:

                result = System.Text.RegularExpressions.Regex.Replace(result,

                         @" ", " ",

                         System.Text.RegularExpressions.RegexOptions.IgnoreCase);


                result = System.Text.RegularExpressions.Regex.Replace(result,

                         @"&bull;", " * ",

                         System.Text.RegularExpressions.RegexOptions.IgnoreCase);

                result = System.Text.RegularExpressions.Regex.Replace(result,

                         @"&lsaquo;", "<",

                         System.Text.RegularExpressions.RegexOptions.IgnoreCase);

                result = System.Text.RegularExpressions.Regex.Replace(result,

                         @"&rsaquo;", ">",

                         System.Text.RegularExpressions.RegexOptions.IgnoreCase);

                result = System.Text.RegularExpressions.Regex.Replace(result,

                         @"&trade;", "(tm)",

                         System.Text.RegularExpressions.RegexOptions.IgnoreCase);

                result = System.Text.RegularExpressions.Regex.Replace(result,

                         @"&frasl;", "/",

                         System.Text.RegularExpressions.RegexOptions.IgnoreCase);

                result = System.Text.RegularExpressions.Regex.Replace(result,

                         @"&lt;", "<",

                         System.Text.RegularExpressions.RegexOptions.IgnoreCase);

                result = System.Text.RegularExpressions.Regex.Replace(result,

                         @"&gt;", ">",

                         System.Text.RegularExpressions.RegexOptions.IgnoreCase);

                result = System.Text.RegularExpressions.Regex.Replace(result,

                         @"&copy;", "(c)",

                         System.Text.RegularExpressions.RegexOptions.IgnoreCase);

                result = System.Text.RegularExpressions.Regex.Replace(result,

                         @"&reg;", "(r)",

                         System.Text.RegularExpressions.RegexOptions.IgnoreCase);

                // Remove all others. More can be added, see

              

                result = System.Text.RegularExpressions.Regex.Replace(result,

                         @"&(.{2,6});", string.Empty,

                         System.Text.RegularExpressions.RegexOptions.IgnoreCase);


                // for testing

                //System.Text.RegularExpressions.Regex.Replace(result,

                //       this.txtRegex.Text,string.Empty,

                //       System.Text.RegularExpressions.RegexOptions.IgnoreCase);


                // make line breaking consistent

                result = result.Replace("\n", "\r");


                // Remove extra line breaks and tabs:

                // replace over 2 breaks with 2 and over 4 tabs with 4.

                // Prepare first to remove any whitespaces in between

                // the escaped characters and remove redundant tabs in between line breaks

                result = System.Text.RegularExpressions.Regex.Replace(result,

                         "(\r)( )+(\r)", "\r\r",

                         System.Text.RegularExpressions.RegexOptions.IgnoreCase);

                result = System.Text.RegularExpressions.Regex.Replace(result,

                         "(\t)( )+(\t)", "\t\t",

                         System.Text.RegularExpressions.RegexOptions.IgnoreCase);

                result = System.Text.RegularExpressions.Regex.Replace(result,

                         "(\t)( )+(\r)", "\t\r",

                         System.Text.RegularExpressions.RegexOptions.IgnoreCase);

                result = System.Text.RegularExpressions.Regex.Replace(result,

                         "(\r)( )+(\t)", "\r\t",

                         System.Text.RegularExpressions.RegexOptions.IgnoreCase);

                // Remove redundant tabs

                result = System.Text.RegularExpressions.Regex.Replace(result,

                         "(\r)(\t)+(\r)", "\r\r",

                         System.Text.RegularExpressions.RegexOptions.IgnoreCase);

                // Remove multiple tabs following a line break with just one tab

                result = System.Text.RegularExpressions.Regex.Replace(result,

                         "(\r)(\t)+", "\r\t",

                         System.Text.RegularExpressions.RegexOptions.IgnoreCase);

                // Initial replacement target string for line breaks

                string breaks = "\r\r\r";

                // Initial replacement target string for tabs

                string tabs = "\t\t\t\t\t";

                for (int index = 0; index < result.Length; index++)

                {

                    result = result.Replace(breaks, "\r\r");

                    result = result.Replace(tabs, "\t\t\t\t");

                    breaks = breaks + "\r";

                    tabs = tabs + "\t";

                }


                // That's it.

                return result;

            }

            catch

            {

                //throw new Exception("An error occured in the Plugin.");

                return source;

            }

        }


    }

}


Comments

Popular posts from this blog

set the active stage in Dynamics 365 when the option set value is "yes"

Create a Task plugin in MS Dynamics CRM

Power Automate - Update Child record when parent record is updated by using power automate in MS Dynamics CRM