public PersonalizationData GetUserSettings(PersonalizationSearchCriteria searchCriteria)
        {
            var userSettingsToReturn = new PersonalizationData();

            SqlConnection cn;

            SPSecurity.RunWithElevatedPrivileges(delegate
            {
                using (cn = new SqlConnection(EPMLiveCore.CoreFunctions.getConnectionString(_web.Site.WebApplication.Id)))
                {
                    cn.Open();

                    var cmd = new SqlCommand("SELECT * FROM PERSONALIZATIONS WHERE FK=@FK and UserId=@userid and [Key]=@key and SiteId=@siteid and WebId=@webid", cn);
                    cmd.Parameters.AddWithValue("@FK", searchCriteria.WebPartId.ToString());
                    cmd.Parameters.AddWithValue("@siteid", searchCriteria.SiteId.ToString());
                    cmd.Parameters.AddWithValue("@webid", searchCriteria.WebId.ToString());
                    cmd.Parameters.AddWithValue("@userid", searchCriteria.UserId);
                    cmd.Parameters.AddWithValue("@key", _personalizationKey);
                    var reader = cmd.ExecuteReader();

                    userSettingsToReturn.Hydrate(reader);

                    cn.Close();
                }
            });

            return(userSettingsToReturn);
        }
        protected void btnGetPersonalization_ServerClick(object sender, EventArgs e)
        {
            var data = new List <PersonalizationData>();

            Sitecore.Data.Database master = Sitecore.Data.Database.GetDatabase("master");
            var        startItem          = master.GetItem("/sitecore/content");
            DeviceItem device             = master.Resources.Devices["Default"];

            foreach (var item in startItem.Axes.GetDescendants())
            {
                PersonalizationData details = new PersonalizationData();
                Sitecore.Data.Fields.LayoutField           layoutField = item.Fields["__renderings"];
                List <Sitecore.Layouts.RenderingReference> renderings  = layoutField.GetReferences(device) != null?layoutField.GetReferences(device).ToList() : null;

                if (renderings != null)
                {
                    Sitecore.Data.Fields.LayoutField           finalLayoutField = item.Fields["__final renderings"];
                    List <Sitecore.Layouts.RenderingReference> finalRenderings  = finalLayoutField.GetReferences(device) != null?finalLayoutField.GetReferences(device).ToList() : null;

                    if (finalRenderings != null)
                    {
                        renderings.AddRange(finalRenderings);
                        var renderingsWithPersonalization = renderings.Where(r => r.Settings.Rules.Count > 0).ToList();
                        details.ItemName        = item.Name;
                        details.RederingDetails = new List <RenderingDetails>();
                        if (details.ItemName != null && renderingsWithPersonalization != null && renderingsWithPersonalization.Count > 0)
                        {
                            foreach (var rendering in renderingsWithPersonalization)
                            {
                                RenderingDetails renderingDetail = new RenderingDetails();
                                renderingDetail.RenderingID   = master.GetItem(rendering.RenderingID).Paths.FullPath.ToString();
                                renderingDetail.RenderingName = master.GetItem(rendering.RenderingID).Name;
                                details.RederingDetails.Add(renderingDetail);
                            }
                        }
                    }
                    data.Add(details);
                }
                data = data.Where(x => x.RederingDetails.Count() > 0).ToList();
            }
            personalizedData.Text = "";
            if (data.Count > 0)
            {
                foreach (var finalData in data)
                {
                    personalizedData.Text += "Item Name : <strong>" + finalData.ItemName + "</strong></br>";
                    personalizedData.Text += "Renderings with Personalizations defined : </br>";
                    foreach (var renderingData in finalData.RederingDetails)
                    {
                        personalizedData.Text += "Rendering - Path -" + renderingData.RenderingID + "</br>";
                    }
                    personalizedData.Text += "</br>";
                }
            }
            else
            {
                personalizedData.Text += "No renderings with Personalization found";
            }
        }
        public void Hydrate(PersonalizationData personalizationData)
        {
            WebPartId = personalizationData.ForeignKey;
            UserId    = personalizationData.UserId;
            SiteId    = personalizationData.SiteId;
            WebId     = personalizationData.WebId;
            ListId    = personalizationData.ListId;

            if (WebPartId != null && !string.IsNullOrEmpty(UserId) && SiteId != null && WebId != null && ListId != null)
            {
                PopulateUserSettings(personalizationData);
            }
        }
        public static PersonalizationData GetPersonalizationData(EpmChartUserSettings epmChartUserSettings)
        {
            var personalizationData = new PersonalizationData
            {
                ForeignKey = epmChartUserSettings.WebPartId,
                Key        = EpmChartUserSettings.Key,
                ListId     = epmChartUserSettings.ListId,
                SiteId     = epmChartUserSettings.SiteId,
                WebId      = epmChartUserSettings.WebId,
                UserId     = epmChartUserSettings.UserId,
                Value      = epmChartUserSettings.Value
            };

            return(personalizationData);
        }
示例#5
0
        /// <summary>
        /// Get application personalization information based on the incoming user.
        /// </summary>
        /// <returns></returns>
        public PersonalizationData GetPersonalizationData()
        {
            var    user     = RequestContext.Principal as ClaimsPrincipal;
            string userName = user.FindFirst("sub").Value;

            var persData = new PersonalizationData
            {
                Features = GetFeatures(userName).ToList(),
                UiClaims = new UiClaimsData
                {
                    UserName        = userName,
                    Capabilities    = GetCapabilities(userName),
                    Constraints     = GetConstraints(userName),
                    NameValueClaims = GetNameValueClaims(userName)
                }
            };

            return(persData);
        }
        public void PersistUserSettings(PersonalizationData userSettings)
        {
            var searchCriteria = new PersonalizationSearchCriteria
            {
                WebPartId = userSettings.ForeignKey,
                SiteId    = userSettings.SiteId,
                WebId     = userSettings.WebId,
                UserId    = userSettings.UserId,
                Key       = _personalizationKey
            };

            if (UserHasPersistedSettings(searchCriteria))
            {
                UpdateUserSettings(userSettings);
            }
            else
            {
                InsertUserSettings(userSettings);
            }
        }
        private void InsertUserSettings(PersonalizationData userSettings)
        {
            SPSecurity.RunWithElevatedPrivileges(delegate
            {
                using (var cn = new SqlConnection(EPMLiveCore.CoreFunctions.getConnectionString(_web.Site.WebApplication.Id)))
                {
                    cn.Open();

                    var cmd = new SqlCommand("INSERT INTO PERSONALIZATIONS (FK, userid, [key], value, siteid, webid, listid) VALUES (@FK, @userid, @key, @value, @siteid, @webid, @listid)", cn);
                    cmd.Parameters.AddWithValue("@FK", userSettings.ForeignKey);
                    cmd.Parameters.AddWithValue("@siteid", userSettings.SiteId);
                    cmd.Parameters.AddWithValue("@webid", userSettings.WebId);
                    cmd.Parameters.AddWithValue("@userid", userSettings.UserId);
                    cmd.Parameters.AddWithValue("@listid", userSettings.ListId);
                    cmd.Parameters.AddWithValue("@key", _personalizationKey);
                    cmd.Parameters.AddWithValue("@value", userSettings.Value);
                    cmd.ExecuteNonQuery();

                    cn.Close();
                }
            });
        }
        private void UpdateUserSettings(PersonalizationData personalizationData)
        {
            SPSecurity.RunWithElevatedPrivileges(delegate
            {
                using (var cn = new SqlConnection(EPMLiveCore.CoreFunctions.getConnectionString(_web.Site.WebApplication.Id)))
                {
                    cn.Open();

                    var cmd = new SqlCommand("UPDATE PERSONALIZATIONS set value=@value, listid=@listid where FK=@FK and userid=@userid and webid=@webid and siteid=@siteid", cn);
                    cmd.Parameters.AddWithValue("@FK", personalizationData.ForeignKey);
                    cmd.Parameters.AddWithValue("@siteid", personalizationData.SiteId);
                    cmd.Parameters.AddWithValue("@webid", personalizationData.WebId);
                    cmd.Parameters.AddWithValue("@userid", personalizationData.UserId);
                    cmd.Parameters.AddWithValue("@listid", personalizationData.ListId);
                    cmd.Parameters.AddWithValue("@key", personalizationData.Key);
                    cmd.Parameters.AddWithValue("@value", personalizationData.Value);
                    cmd.ExecuteNonQuery();

                    cn.Close();
                }
            });
        }
        private void PopulateUserSettings(PersonalizationData personalizationData)
        {
            if (personalizationData.Value == null)
            {
                return;
            }
            if (!personalizationData.Value.Contains("|"))
            {
                return;
            }

            var valueSections = personalizationData.Value.Split(new[] { '|' });

            if (valueSections.Length != 7)
            {
                return;
            }

            var xAxisField = valueSections[0];

            if (!string.IsNullOrEmpty(xAxisField))
            {
                XaxisField = xAxisField;
            }

            var xAxisFieldLabel = valueSections[1];

            if (!string.IsNullOrEmpty(xAxisFieldLabel))
            {
                XaxisFieldLabel = xAxisFieldLabel;
            }

            var yAxisFieldSection = valueSections[2];

            if (!string.IsNullOrEmpty(yAxisFieldSection))
            {
                var yAxisFields = yAxisFieldSection.Split(new[] { ',' });
                foreach (var yAxisField in yAxisFields)
                {
                    YaxisFields.Add(yAxisField);
                }
            }

            var yAxisFieldLabel = valueSections[3];

            if (!string.IsNullOrEmpty(yAxisFieldLabel))
            {
                YaxisFieldLabel = yAxisFieldLabel;
            }

            var zAxisField = valueSections[4];

            if (!string.IsNullOrEmpty(zAxisField))
            {
                ZaxisField = zAxisField;
            }

            var zAxisFieldLabel = valueSections[5];

            if (!string.IsNullOrEmpty(zAxisFieldLabel))
            {
                ZaxisFieldLabel = zAxisFieldLabel;
            }

            var zAxisColorField = valueSections[6];

            if (!string.IsNullOrEmpty(zAxisColorField))
            {
                ZaxisColorField = zAxisColorField;
            }

            IsValid = true;
        }