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 :

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

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

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 !