mardi 11 septembre 2012

SPWeb.Groups et SPWeb.SiteGroups


Il existe une différence entre ces deux collections de groupes Sharepoint qui est de taille.

En effet SPWeb.Groups ne retourne que les groupes ayant au moins un niveau d'autorisation associé tandis que SPWeb.SiteGroups renvoi tout les groupes de votre SPWeb.

Une différence de taille si vous utilisez un groupe uniquement à des fins hiérarchique.

Préférez donc utiliser SPWeb.SiteGroups plutôt que SPWeb.Groups.

Et voici une exemple de fonction permettant de récupérer les adresses email de tout les utilisateurs d'un groupe:


public string GetEmailForUserInGroupe(string groupName)
{
     string userMail = string.Empty;
     SPSecurity.RunWithElevatedPrivileges(delegate()
     {
            using (SPSite site = SPContext.Current.Site)
            {
                site.AllowUnsafeUpdates = true;
                using (SPWeb web = site.OpenWeb())
                {
                    web.AllowUnsafeUpdates = true;
                    SPGroupCollection groupColl = web.SiteGroups;
                    int count = groupColl.Count;
                    for (int i = 0; i < count && string.IsNullOrEmpty(userMail); i++)
                    {
                        if (groupColl[i].Name.Equals(groupName))
                        {
                            SPUserCollection userColl = groupColl[i].Users;
                            foreach (SPUser us in userColl)
                            {
                                if (!string.IsNullOrEmpty(us.Email))
                                {
                                    userMail = string.Concat(userMail, us.Email, ';');
                                }
                            }
                        }
                    }
                    web.AllowUnsafeUpdates = false;
                }
                site.AllowUnsafeUpdates = false;
            }
        });
        return userMail;
}    



Aucun commentaire :

Enregistrer un commentaire