Thursday, October 14, 2010

SharePoint - Add Audience Rule Programatically

Hi,
I know this is not something special I am posting in this one because this is something which is easily available on internet if you try to use our Google / bing correctly :)
I was working (rather having a look at) Audience Targeting Feature in SharePoint 2007 and came to know that somehow we can add only six rules while creating a audience by using user interface (which you can found in SSP) here is link how you can do that
but after reading somewhere, I figured out the way to add more than six audience rules .. Yes you are right.. From code
this might be because they thought , generally one cant  make such a complex audience having more than six audience rules and I also thinks so :)
but still If one want to have a look at API and try to add more than six audience rules then this is how I done it (nothing special , just added a rule using API..You can concatenate such chain of rules using AND , OR)

try
{
  using (SPSite site = new SPSite(http://yoursite))
  {
    ServerContext siteContext = ServerContext.GetContext(site);
    AudienceManager aManager = new AudienceManager(siteContext);
    AudienceCollection audiences = aManager.Audiences;

    Audience INFORMANAGEMENTUSERS = null;

    if (audiences.AudienceExist("Information Management Users"))
    {
      INFORMANAGEMENTUSERS = audiences["Information Management Users"];
      Console.WriteLine(string.Format("Audience Found with Name {0}", INFORMANAGEMENTUSERS.AudienceName));
    }
    else
    {
      INFORMANAGEMENTUSERS = audiences.Create("Information Management Users", "Test Audeinces");
      Console.WriteLine("Audience Added");
    }

      ArrayList aRules = INFORMANAGEMENTUSERS.AudienceRules;

      if (aRules == null)
      {
         aRules = new ArrayList();
      }
      else
      {
        AudienceRuleComponent rule1 = new AudienceRuleComponent(null, "AND", null);                           //Just Concatenating Previous Rule
        aRules.Add(rule1);
      }

AudienceRuleComponent rule2 = new AudienceRuleComponent(PropertyConstants.Department, "=", "Information Management");

aRules.Add(rule2);

       INFORMANAGEMENTUSERS.AudienceRules = aRules;
       INFORMANAGEMENTUSERS.Commit();

       Console.WriteLine("Audience Rule Added");

   }
 }
   catch (Exception ex)
   {
        Console.WriteLine(ex.Message);
   }

   Console.ReadLine();

No comments:

Post a Comment