Désactiver la fonctionnalité "Mes Collègues" sur une plateforme MOSS 

Admin, Office Server 2007, Sharepoint, MySites

Mon besoin est simple : je ne veux plus de la fonctionnalité "Mes Collègues" dans les "My Site".

Je vais donc dans mon fournisseur de services partagés, section "Profils utilisateur et Mes sites". Je clique sur le lien "Stratégies des services de profil" pour changer la stratégie, et là je tombe sur :

 

clip_image002

 

Parfait. Je n'ai plus qu'à désactiver la stratégie des collègues sur mon site, et hop, plus de collègues ….

 

clip_image004

 

Et là, surprise, je me rends compte que la liste pour changer le statut d'activation est grisée.

 

clip_image006

 

En fouillant un peu dans le "Code Behind" de cette page (assemby Microsoft.SharePoint.Portal, classe Microsoft.SharePoint.Portal.UserProfiles.AdminUI.EditPolicyPage) grâce à .NET Reflector (encore et toujours), on constate qu'il est écrit en dur dans le contrôle que si c'est la stratégie des collègues qui est rendue sur le client, alors le combo est grisé …

 

if (this.m_PolicyItem.Id == PrivacyPolicyIdConstants.MyColleaguesOnMySite)
{
      this.drpPolicy.Enabled = false;
}

 

Ok, il y a sûrement une raison à ce bout de code, et c'est probablement une très mauvaise idée, mais j'ai quand même écrit une petite application console pour désactiver, via l'API SharePoint, cette stratégie. Voila ci-dessous le code (du moins les sections importantes) ….

 

   1:  SPSecurity.RunWithElevatedPrivileges(delegate()
   2:  {
   3:     using (SPSite site = new SPSite("http://SHAREPOINT")
   4:     {
   5:        ServerContext sc = ServerContext.GetContext(site);
   6:        UserProfileManager upm = new UserProfileManager(sc);
   7:        PrivacyPolicyManager instance = PrivacyPolicyManager.GetInstance(upm);
   8:        PrivacyPolicyItem myColleagues = (PrivacyPolicyItem)instance[PrivacyPolicyIdConstants.MyColleaguesOnMySite];
   9:        myColleagues.PrivacyPolicy = PrivacyPolicy.Disabled;
  10:        myColleagues.Commit();
  11:     }
  12:  });

 

Ce qui est important ici, c'est de bien récupérer toutes les stratégies existantes (ligne 7) ainsi que le GUID de la stratégie "Collègues sur mon site" grâce à la propriété statique PrivacyPolicyIdConstants.MyColleaguesOnMySite

Une fois l'instance de la stratégie récupérée, il n'y a plus qu'à changer son statut (ligne 9).

Attention, ne pas oublier le Commit().

 

Je rappelle que si le code est commenté, c'est qu'il y a peut-être une raison :-p …. Il faut donc prendre des précautions !

 
Posté le 25 May 08
Commentaire (0)  |  Url de Trackback  | Lien vers ce message (0) | Marquez ce billet avec:        
 

Liens vers ce message

Commentaires


Nom *:
URL:
Email:
Commentaires:

© 2011 Julien Chomarat - Design based on Blue World