2008-09-14 8 views
4

WSS 3.0オブジェクトモデルを通じてSharepointのユーザーフォトでユーザーを取得しようとしています。私はソリューションのためにウェブをブラウズしてきましたが、これまでのところ私はそれを行う方法を見つけることができませんでした。それは可能なのか、それではどうすればよいのでしょうか?WSSオブジェクトモデルを使用してSPUserからユーザーの写真を取得する

答えて

5

はあなたのために仕事を得るのを助ける必要があるコードスニペットです。あなたは(...など、画像のURLが実際に存在を確認して、実際に存在するプロファイルを確保する)任意の例外を回避するためにいくつかの追加検証を行う必要がある場合があります。

//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 
+1

profile [PropertyContants.PictureURL]はコレクションを返します。コレクションから値を取得する必要があるため、文字列に直接キャストすることはできません。 –

+1

これはMOSSでのみ機能します.WSS自体には、プロファイルマネージャサービスまたはクラスが含まれていません。 –

2

ああ、UserProfileManagerクラスを使用する必要があります。ここ 詳細情報:http://msdn.microsoft.com/en-us/library/microsoft.office.server.userprofiles.userprofilemanager.aspx

使用例:ここでは

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} 
    // 
} 
3

あなたは厳密にWSS 3.0の話(とされていない場合MOSS)では、実際にグローバルユーザープロファイル自体は持っていませんが、各サイトコレクションのユーザー情報リストは隠されています。つまり、Microsoft.Office.Serverの名前空間に含まれるものはどれも使用できません。

ただし、ユーザーの画像のURLを知っている限り、ユーザー情報リストをプログラムで更新することはできます。何らかの昇格された権限で実行している限り、ほかのSharePointリストと同様にmanipulate this listにアクセスできるはずです。このリストはサイトコレクションの範囲にのみ適しているので、写真URLを実際に作成するには、ユーザーがこの場所を同じ場所に更新する必要があります。 Plusユーザーは、あるユーザーが何らかの権限をユーザーに割り当てるまでユーザー情報リストには入っていないので、ドメイン内のすべてのユーザーがそこにいるわけではありません。

これを処理する明確な方法は間違いなくユーザープロファイルメカニズムがMOSSですが、これがオプションの場合は、MOSS VS WSSについて質問するために質問を実際に更新する必要があります。

関連する問題