Pregunta

Estoy tratando de recuperar un usuario en Sharepoint foto de usuario a través de la WSS 3.0 modelo de objetos.He estado navegando por la web de soluciones, pero hasta ahora he sido incapaz de encontrar una manera de hacerlo.Es posible, y si es así ¿cómo?

¿Fue útil?

Solución

Aquí es un fragmento de código que debe ayudar a hacer el trabajo para usted.Puede que necesite hacer algunos validación adicional para evitar cualquier excepciones (asegurarse de que el perfil que realmente existe, asegurando la URL de la imagen en realidad existe, 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

Otros consejos

Si usted está estrictamente hablando sobre WSS 3.0 (y no MOSS), entonces usted realmente no tiene global de los perfiles de usuario en sí, sino un hiddenh Lista de Información del Usuario en cada colección de sitios.Que significa que ninguna de las cosas que en la de Microsoft.De la oficina.Servidor de espacios de nombres está disponible para usted.

Sin embargo, puede actualizar la Lista de Información de Usuario a través de programación siempre y cuando usted sabe la dirección URL a una imagen de un usuario.Mientras usted está funcionando con algún tipo de privilegios, usted debería ser capaz de manipular esta lista al igual que con cualquier otro de la lista de SharePoint.Tenga en cuenta que esta lista es sólo bueno para el alcance de una colección de sitios, así que los usuarios tienen que hacer esta misma actualización de todo el lugar para tener realmente una URL de la fotografía.Además los usuarios no entran en la Lista de Información del Usuario hasta que a alguien se le asigna algún tipo de permiso, de modo que no todos los usuarios de tu dominio va a estar ahí.

La manera limpia para manejar este es definitivamente el Perfil de Usuario es el mecanismo de MUSGO, pero si eso es una opción, la pregunta que realmente debe ser actualizado para preguntar acerca de MOSS vs WSS.

Ah, Usted tiene que utilizar el UserProfileManager clase.Más información aquí: http://msdn.microsoft.com/en-us/library/microsoft.office.server.userprofiles.userprofilemanager.aspx

Ejemplo de uso:

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}
    //
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top