Question

J'essaie de récupérer un utilisateur sur la photo d'utilisateur de Sharepoint via le modèle objet WSS 3.0.J'ai parcouru le Web à la recherche de solutions, mais jusqu'à présent, je n'ai pas trouvé de moyen de le faire.Est-ce possible, et si oui, comment ?

Était-ce utile?

La solution

Voici un extrait de code qui devrait vous aider à faire le travail à votre place.Vous devrez peut-être effectuer une validation supplémentaire pour éviter toute exception (en vous assurant que le profil existe réellement, en vous assurant que l'URL de l'image existe réellement, etc...) :

    //get current profile manager
    UserProfileManager objUserProfileManager = new UserProfileManager(PortalContext.Current);
    //get current users profile
    UserProfile profile = objUserProfileManager.GetUserProfile(true);
    //get user image URL
    string imageUrl = (string)profile[PropertyConstants.PictureUrl];

    //do something here with imageUrl

Autres conseils

Si vous parlez strictement de WSS 3.0 (et non de MOSS), alors vous n'avez pas vraiment de profils d'utilisateurs globaux en soi, mais une liste d'informations utilisateur cachée dans chaque collection de sites.Cela signifie qu'aucun élément des espaces de noms Microsoft.Office.Server n'est disponible pour vous.

Cependant, vous pouvez mettre à jour la liste d'informations utilisateur par programme tant que vous connaissez l'URL de l'image d'un utilisateur.Tant que vous utilisez des privilèges élevés, vous devriez pouvoir manipuler cette liste comme vous pouvez le faire avec n’importe quelle autre liste SharePoint.Gardez à l’esprit que cette liste n’est valable que pour la portée d’une collection de sites, les utilisateurs devraient donc effectuer la même mise à jour partout pour avoir réellement une URL de photo.De plus, les utilisateurs n'accèdent pas à la liste d'informations utilisateur jusqu'à ce que quelqu'un leur attribue une sorte d'autorisation, donc tous les utilisateurs de votre domaine n'y figureront pas.

La manière simple de gérer cela est certainement le mécanisme de profil utilisateur est MOSS, mais si c'est une option, la question devrait vraiment être mise à jour pour poser des questions sur MOSS vs WSS.

Ah, vous devez utiliser la classe UserProfileManager.Plus d'informations ici : http://msdn.microsoft.com/en-us/library/microsoft.office.server.userprofiles.userprofilemanager.aspx

Exemple d'utilisation :

public override void ItemAdded(SPItemEventProperties properties)
{
    // Get list item on which the event occurred.
    SPListItem item = properties.ListItem;

    // Set the Author Image field to the user's PictureURL if it exists.
    using (SPWeb web = properties.OpenWeb())
    {
        // Author: {C32DB804-FF2D-4656-A38A-B0394BA5C931}
        SPFieldUserValue authorValue = new SPFieldUserValue(properties.OpenWeb(), item[new Guid("{C32DB804-FF2D-4656-A38A-B0394BA5C931}")].ToString());

        UserProfileManager profileManager = new UserProfileManager(ServerContext.GetContext(web.Site));
        UserProfile profile = profileManager.GetUserProfile(authorValue.LookupId);
        UserProfileValueCollection values = profile[PropertyConstants.PictureUrl];

        if (values.Count > 0)
        {
            // Author Image: {37A5CA4C-7621-44d7-BF3B-583F742CE52F}
            SPFieldUrlValue urlValue = new SPFieldUrlValue(values.Value.ToString());
            item[new Guid("{37A5CA4C-7621-44d7-BF3B-583F742CE52F}")] = urlValue.Url;
        }
    }

    item.Update();

    // News Text: {7F55A8F0-4555-46BC-B24C-222240B862AF}
    //

    // Author Image: {37A5CA4C-7621-44d7-BF3B-583F742CE52F}
    // 

    // Publish Date: {45E84B8B-E161-46C6-AD51-27A42E4992B5}
    //
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top