Skip to main content

Create and Retrieve a Social Rating



The SocialRatingManager object enables you to create a social rating for any specified URL. Because entries in Microsoft SharePoint Server lists and document libraries can be represented by URLs, you can create and retrieve social ratings for those items, and for any other SharePoint Server page. This topic demonstrates how to use the SocialRatingManager to create and retrieve social ratings and how to enable social ratings on a SharePoint Server in a custom application. The samples in this topic assume that you have added the following references to your Microsoft Visual Studio 2010 project:

Microsoft.SharePoint

Microsoft.Office.Server

Microsoft.Office.Server.UserProfiles

System.Web

Creating Social Ratings

The overloaded SetRating method creates a single SocialRating object for the current user on a single specified URL. A social rating consists of a URL and an integer ranging from 0 through 5. It also can optionally consist of a string title for the rating and a FeedbackData object that consists of name/value pairs that will be logged as analysis data. The sample below demonstrates how to use the SocialRatingManager to create a single rating on a specified URL.

Uri myUri = new Uri("URL");
FeedbackData myFeedbackData = new FeedbackData();
myFeedbackData.UserTitle = "employee";
using (SPSite site = new SPSite("SharePoint site URL"))
{
SPServiceContext context = SPServiceContext.GetContext(site);
SocialRatingManager mySocialRatingManager = new SocialRatingManager(context);
mySocialRatingManager.SetRating(myUri, 5, myFeedbackData);
}

Retrieving Social Ratings

The overloaded GetRating method retrieves a single SocialRating object for a single specified URL. If you do not specify a UserProfile, the method returns the social rating (if any exists) added to the specified URL by the current user. The sample below demonstrates how to use the SocialRatingManager to retrieve a single rating for a specified user.

using (SPSite site = new SPSite("SharePoint site URL"))
{
SPServiceContext context = SPServiceContext.GetContext(site);
SocialRatingManager mySocialRatingManager = new SocialRatingManager(context);
SocialRating aRating = mySocialRatingManager.GetRating(myUri);
Console.WriteLine(aRating.Url + ": " + aRating.Rating);
}

The overloaded GetRatings method retrieves all SocialRating objects for a specified URL or user. If you specify a URL, the method returns all social ratings added to that URL in the current SPServerContext. If you specify a user, the method returns all social ratings that the specified user added.

using (SPSite site = new SPSite("SharePoint site URL"))
{
SPServiceContext context = SPServiceContext.GetContext(site);
UserProfileManager myUserProfileManager = new UserProfileManager(context);
UserProfile myUserProfile = myUserProfileManager.GetUserProfile(false);
SocialRatingManager mySocialRatingManager = new SocialRatingManager(context);
SocialRating[] ratings = mySocialRatingManager.GetRatings(myUserProfile);
Console.WriteLine("Ratings for user:");
foreach (SocialRating rating in ratings)
{
Console.WriteLine(rating.Url + ": " + rating.Rating);
}
}

Enabling Social Ratings on a List

You can enable the average rating field and the rating count field on lists and document libraries by using the user interface for list and document library settings. Both fields are available as site columns that you can add to any list or document library by enabling item rating from within the list or library settings. The sample below demonstrates how to enable these fields on any list by using code inside a custom application.

public void AddRatingsFields(SPList list)
{
//Add the average rating field.
SPField averageRatingField = list.ParentWeb.AvailableFields[new Guid("5a14d1ab-1513-48c7-97b3-657a5ba6c742")];
list.Fields.AddFieldAsXml(averageRatingField.SchemaXml, true, SPAddFieldOptions.AddToAllContentTypes | SPAddFieldOptions.AddFieldToDefaultView);

//Add the rating count field.
SPField ratingCountField = list.ParentWeb.AvailableFields[new Guid("b1996002-9167-45e5-a4df-b2c41c6723c7")];
list.Fields.AddFieldAsXml(ratingCountField.SchemaXml, true, SPAddFieldOptions.AddToAllContentTypes | SPAddFieldOptions.AddFieldToDefaultView);
}





Get Rating control properties and display on page using image handler.

  private void GetRatingControlProperties(HttpContext _context, string _WebUrl)
        {
            SPSecurity.RunWithElevatedPrivileges(delegate
                {
                  
                    using (SPSite _spSite = new SPSite(SPContext.Current.Web.Url))
                    {
                        string _pageUrl = _WebUrl + "/" + PublishingWeb.DefaultPagesListName + "/" + PublishingWeb.DefaultDefaultPageName;
                        SPServiceContext _spContext = SPServiceContext.GetContext(_spSite);
                        SocialRatingManager mySocialRatingManager = new SocialRatingManager(_spContext);
                        SocialRating aRating = mySocialRatingManager.GetRating(new Uri(_pageUrl));

                        int averating = aRating.Rating;
                        if (averating > 0)
                        {
                            if (averating >= 4.75)
                            {
                                DisplayRating(_context, "5", "5");
                            }
                            else if (averating >= 4.25 && averating <= 4.75)
                            {
                                DisplayRating(_context, "4_5", "4.5");
                            }
                            else if (averating >= 3.75 && averating <= 4.25)
                            {
                                DisplayRating(_context, "4", "4");
                            }
                            else if (averating >= 3.25 && averating <= 3.75)
                            {
                                DisplayRating(_context, "3_5", "3.5");
                            }
                            else if (averating >= 2.75 && averating <= 3.25)
                            {
                                DisplayRating(_context, "3", "3");
                            }
                            else if (averating >= 2.25 && averating <= 2.75)
                            {
                                DisplayRating(_context, "2_5", "2.5");
                            }
                            else if (averating >= 1.75 && averating <= 2.25)
                            {
                                DisplayRating(_context, "2", "2");
                            }
                            else if (averating >= 1.25 && averating <= 1.75)
                            {
                                DisplayRating(_context, "1_5", "1.5");
                            }
                            else if (averating <= 1.25)
                            {
                                DisplayRating(_context, "1", "1");
                            }
                        }
                        else
                        {
                            DisplayRating(_context, "0", "0");
                        }
                    }
                });
        }

Comments

Popular posts from this blog

How to deal with SharePoint 2010 exception "An exception occurred when trying to issue security token: The server was unable to process the request due to an internal error"

Scenario: You receive the below exception when you try to logon to a site that has been configured to use Claims Based Authentication with a custom membership provider using FBA credentials: Event ID from Event Log  - 8306 An exception occurred when trying to issue security token: The server was unable to process the request due to an internal error.  For more information about the error, either turn on IncludeExceptionDetailInFaults (either from ServiceBehaviorAttribute or from the <serviceDebug> configuration behavior) on the server in order to send the exception information back to the client, or turn on tracing as per the Microsoft .NET Framework 3.0 SDK documentation and inspect the server trace logs.. Explanation: This error started to appear in our QA environment which does not have Visual Studio installed. I have tried starting the service "Claims to Windows Token Service" but that did not help either. I have made sure that all config...

SharePoint SPFX components basic details and understanding

Microsoft developed SharePoint, a web-based platform that enables businesses and organisations to share and manage documents and information. The SharePoint Framework (SPFx) is a set of client-side tools and components that can be used to construct unique solutions on top of SharePoint. The creation of a SharePoint SPFx component will be covered in this blog. Let's address specific requirements before creating a SharePoint SPFx component. Install the necessary software on your computer: Version 10 or later of Node.js SharePoint Framework (SPFx) generator using Git Now that all the prerequisites have been deployed, let's start developing the SharePoint SPFx component. Start by making a new SPFx project. Making a new SPFx application is the initial step. Launch the command prompt and execute the following commands  yo @microsoft/sharepoint The Yeoman generator for the SharePoint Framework will be started using this command. You will be prompted to enter details about your project...

Cascading drop down column in a SharePoint List

This article will show how to use codeplex project to achieve Cascading drop down columns in SharePoint list. This article will show how to achieve parent child relationship in column of SharePoint list.   Objective This article will show how to use codeplex project to achieve Cascading drop down columns in SharePoint list. This article will show how to achieve parent child relationship in column of SharePoint list. Step 1 Download the project from codeplex . Choose WSP file to download. To download the project Click here Step 2 After downloading the WSP add the solution using STSADM command. Navigate to BIN folder and add the solution. Command C:\Program Files\Common Files\microsoft shared\Web Server Extensions\12\BIN> stsa dm -o addsolution -filename c:\Stoneshare.CascadingDropDown.WithFilter.wsp Step 3 Open Central ADMIN and deploy solution. Navigate to Operation -> Global Configuration -> Solution Management. Select the Global Deployment option. St...