La lista dei "my link" è abilitata a livello di Shared Service Provider, anche se non sono attiviti i siti personali all'interno della farm SharePoint, e ci permette di salvare link personali per una scelta rapida. Ma questo ormai lo sappiamo tutti, visto che è un concetto presente già da SharePoint 2003/WSS 2.
Attraverso l'utilizzo del modello ad oggetti e, in particolare, dei namespace Microsoft.Office.Server.UserProfiles e Microsoft.Office.Server abbiamo la gestione completa di tali link all'interno delle nostre personalizzazioni SharePoint.
Ecco, quindi, che possiamo creare applicazioni che inseriscono dei link all'interno della lista "my link" per l'utente corrente e all'interno della farm corrente, utilizzando il seguente codice:

//farm corrente

UserProfileManager userProfileManager = new UserProfileManager(ServerContext.Current);

//utente corrente UserProfile currentUser = userProfileManager.GetUserProfile(true);
QuickLinkManager quickLinkManager = currentUser.QuickLinks;
quickLinkManager.Create("PeppeDotNet.it", "http://www.peppedotnet.it", QuickLinkGroupType.General, "", Privacy.Private);

o che, per esempio, li modifichino o li cancellino:

foreach(QuickLink link in quickLinkManager.GetItems(Privacy.Private))

{
if (link.Title == "PeppeDotNet.it")
link.Title = "Peppe the best";
else
link.Delete();
}
quickLinkManager.DeleteAll();

L'utilizzo di queste classi, come vedete, è veramente semplice. Le uniche cose a cui porre attenzione sono le seguenti.

1- Se vogliamo specificare una site collection, posta sotto il controllo di uno Shared Service Provider diverso da quello del contesto corrente, dobbiamo specificarla istanziando la classe SPSite e passarla come parametro alla classe ServerContext.

SPSite site = new SPSite("http://moss/");

ServerContext context = ServerContext.GetContext(site);
UserProfileManager userProfileManager = new UserProfileManager(context);

//..

2- Se vogliamo inserire, cancellare o modificare i link di un altro utente (diverso da quello corrente), dobbiamo utilzzare un'altra signature del metodo GetUserProfile, passando il login name dell'utente in questione come parametro principale.

//..



UserProfile user = userProfileManager.GetUserProfile("PEPPEDOTNET\\peppe");
QuickLinkManager quickLinkManager = user.QuickLinks;

//..

3- Se vogliamo inserire un nuovo link e spostarlo sotto una categoria personalizzata, dobbiamo usare il valore UserSpecified dell'enumerazione QuickLinkGroupType specificando anche il nome del gruppo, come quarto parametro del metodo Create. E' importante ricordarsi che questo parametro viene preso in considerazione solo le l'enumerazione di tipo QuickLinkGroupType ha valore UserSpecified, altrimenti viene proprio ignorato.

//..



QuickLinkManager quickLinkManager = currentUser.QuickLinks;
quickLinkManager.Create("PeppeDotNet.it", "http://www.peppedotnet.it",
QuickLinkGroupType.UserSpecified, "Best SharePoint Sites", Privacy.Public);

4- Se vogliamo modificare i link di un utente diverso dall'utenza corrente, dobbiamo eseguire il codice con privilegi di amministratore !