Operacja na użytkowniku w Sharepoint [Sharepoint / C#]
Opublikowano: 2011-09-24 , wyświetlono: 15171
Przedstawiam kilka funkcji obsługujących odczyt użytkownika z pola listy, aktualnie zalogowanego i z innego site'a. Wszystkie cztery metody zostały obudowane klasą.
Pierwsze dwie pozwalają na pobranie użytkownika lub użytkowników z pola listy sharepoint'a.
GetUser dotyczy pola typu: Osoba lub grupa, Zezwalaj na wiele znaczeń: nie.
GetListUsers odczytuje pole typu: Osoba lub grupa, Zezwalaj na wiele znaczeń: tak.
Pierwsze dwie pozwalają na pobranie użytkownika lub użytkowników z pola listy sharepoint'a.
GetUser dotyczy pola typu: Osoba lub grupa, Zezwalaj na wiele znaczeń: nie.
GetListUsers odczytuje pole typu: Osoba lub grupa, Zezwalaj na wiele znaczeń: tak.
Przykład wywołania metod z własnego kodu
SPUser user = Chinasoft.Util.User.GetUser(item, "osoba");
List<SPUser> users = Chinasoft.Util.User.GetListUsers(item, "osoby");
SPUser user = Chinasoft.Util.User.GetCurrentUser();
SPUser user = Chinasoft.Util.User.GetUserSite("http://sharepoint/sites/name", "domain\jacek.murawski")
Właściwa klasa
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.SharePoint;
namespace Chinasoft.Util
{
public class User
{
/// <summary>
/// return value from User type field as single SPuser object
/// </summary>
/// <param name="item"></param>
/// <param name="fieldName"></param>
/// <returns></returns>
public static SPUser GetUser(SPListItem item, string fieldName)
{
SPUser user = null;
SPFieldUser field = item.Fields.GetField(fieldName) as SPFieldUser;
try
{
if (field != null)
{
SPFieldUserValue fieldValue = field.GetFieldValue(item[fieldName].ToString()) as SPFieldUserValue;
if (fieldValue != null)
user = fieldValue.User;
}
}
catch (Exception)
{
user = null;
}
return (user);
}
/// <summary>
/// return value from User type field as list SPuser's object
/// </summary>
/// <param name="item"></param>
/// <param name="fieldName"></param>
/// <returns></returns>
public static List<SPUser> GetListUsers(SPListItem item, string fieldName)
{
SPFieldUserValueCollection userVals;
List<SPUser> users = new List<SPUser>();
try
{
userVals = (SPFieldUserValueCollection)item[fieldName];
}
catch (Exception)
{
userVals = null;
}
if (userVals != null)
{
foreach (SPFieldUserValue userVal in userVals)
users.Add(userVal.User);
}
return (users);
}
/// <summary>
/// read and return current user object
/// </summary>
/// <returns></returns>
public static SPUser GetCurrentUser()
{
SPContext currentContext = SPContext.Current;
SPUser user;
if (currentContext != null)
{
SPWeb web = currentContext.Web;
user = web.CurrentUser;
}
else
{
user = null;
}
return (user);
}
/// <summary>
/// get user by login name for site (url as parameter)
/// </summary>
/// <param name="loginName"></param>
/// <returns></returns>
public static SPUser GetUserSite(string siteUrl, string loginName)
{
SPUser user = null;
SPSecurity.RunWithElevatedPrivileges(delegate()
{
using (SPSite site = new SPSite(siteUrl))
{
using (SPWeb web = site.OpenWeb())
{
user = web.SiteUsers[loginName];
}
}
});
return (user);
}
}
}