zoukankan      html  css  js  c++  java
  • Moss2010更新用户配置信息

     

     最近有这样一个需求,需要将所有用户图片更新。Moss里的图片是存放的三张大小不同的jpg格式。在这里做下总结。

      更新用户图片首先要获取用户图片。读用户配置信息有二种方式:读AD实现,或读用户配置。

      先说读用户配置

               

    View Code
     1 mySites=newSPSite("http://moss2010/my");
     2 
     3             myWeb=mySites.OpenWeb();
     4 
     5             SPFolder subfolderForPictures=myWeb.GetFolder("User Photos\\Profile Pictures");
     6 
     7             UserProfileManageruserProfileManager=newUserProfileManager(SPServiceContext.GetContext(mySites));
     8 
     9     
    10 
    11 if (userProfileManager.UserExists(strAccountName))
    12 
    13             {
    14 
    15                 returnuserProfileManager.GetUserProfile(strAccountName);
    16 
    17             }
    18 
    19             else
    20 
    21             {
    22 
    23                 returnnull;
    24 
    25             }
    26 
    27         /// <summary>
    28         /// 获取用户属性
    29         /// </summary>
    30         /// <param name="accountName"></param>
    31         /// <param name="propertyDisplayName">属性显示名称</param>
    32         /// <returns></returns>
    33         public static object GetUserProperty(string accountName, string propertyDisplayName)
    34         {
    35             object userPropertyValue = null;
    36             UserProfile userProfile = GetUserProfile(accountName);
    37             if (userProfile != null)
    38             {
    39                 var profileSubtypeProperty = userProfile.Properties.First(propertyBase => propertyBase.DisplayName == propertyDisplayName);
    40                 if (profileSubtypeProperty != null)
    41                 {
    42                     userPropertyValue = userProfile.GetProfileValueCollection(profileSubtypeProperty.Name).Value;
    43                 }
    44                 else
    45                 {
    46                     Wicresoft.ITSG.Components.Utilities.LogUtility.CreateLogManager().Debug("用户【" + accountName + "】的属性【" + propertyDisplayName + "】不存在!");
    47                 }
    48             }
    49             return userPropertyValue;
    50         }

     这样就获取了所有的用户配置信息,根据用户配置信息读取所有用户图片并存在DataTable里面

    entity.ImageUrl =SPUserProfileUtility.GetUserProperty(accountName, "图片") == null || SPUserProfileUtility.GetUserProperty(accountName, "图片").ToString() == "" ?/people_small_10.gif" : SPUserProfileUtility.GetUserProperty(accountName, "图片").ToString();//图片URL

    再说读AD

     //得到网站集合
                SPSite mySites = new SPSite(MySiteHostUrl);
                //得到网站
                SPWeb myWeb = mySites.OpenWeb();
                SPFolder subfolderForPictures = myWeb.GetFolder("User Photos\\Profile Pictures");
    
                if (subfolderForPictures == null)
                {
                    return;
                }
    
                UserProfileManager userProfileManager = new UserProfileManager(SPServiceContext.GetContext(mySites));
                //***********************************读取AD照片信息
                DirectoryEntry de = new DirectoryEntry("LDAP://DC=contoso,DC=com", "contoso\\mossadmin", "Passw0rd!", AuthenticationTypes.Secure);
                //读取AD的配置信息
                
                DirectorySearcher search = new DirectorySearcher(); 
                search.SearchRoot = de;
                //contoso\\test7照片信息
                search.Filter = "(&(objectClass=user)(objectCategory=person)(sAMAccountName=test7))"; 
                search.PropertiesToLoad.Add("samaccountname");
                search.PropertiesToLoad.Add("thumbnailPhoto"); 
                SearchResult user;
                user = search.FindOne();
                if (user == null)
                {
                    return;
                }
                byte[] buffer = (byte[])user.Properties["thumbnailPhoto"][0];

    获取到用户图片信息后,将来源图片全部转为JPG文件

    View Code
     for (int i = 0; i < DT_NOPic.Rows.Count; i++)
                    {
                        try
                        {
                            MAccountName = DT_NOPic.Rows[i]["username"].ToString();
                            string fileNameWithoutExtension = GetFileNameFromAccountName(MAccountName);
                            accountName = fileNameWithoutExtension.Split(new char[] { '_' });
    
                            if (accountName[1].ToString() == oracle_Accountname)
                            {
                                byte[] buffer = oracle_byte_Phono; //图片流
                                try
                                {
                                    int largeThumbnailSize = 0X90;
                                    int mediumThumbnailSize = 0X60;
                                    int smallThumbnailSize = 0X20;
                                    try
                                    {
                                        using (MemoryStream stream = new MemoryStream(buffer))
                                        {
                                            using (Bitmap bitmap = new Bitmap(stream, true))
                                            {
                                                //判断下是否为gif
                                                //判断下是否为gif
                                                if (IsAllowedExtension(buffer, new FileExtension[] { FileExtension.GIF, FileExtension.PNG}))
                                                {
                                                    using (MemoryStream newstream = new MemoryStream())
                                                    {
                                                        bitmap.Save(newstream, System.Drawing.Imaging.ImageFormat.Jpeg);
                                                        //
                                                        using (Bitmap newbitmap = new Bitmap(newstream, true))
                                                        {
                                                            CreateThumbnail(newbitmap, largeThumbnailSize, largeThumbnailSize, subfolderForPictures, fileNameWithoutExtension + "_LThumb.jpg");
                                                            CreateThumbnail(newbitmap, mediumThumbnailSize, mediumThumbnailSize, subfolderForPictures, fileNameWithoutExtension + "_MThumb.jpg");
                                                            CreateThumbnail(newbitmap, smallThumbnailSize, smallThumbnailSize, subfolderForPictures, fileNameWithoutExtension + "_SThumb.jpg");
                                                        }
                                                    }
    
                                                }
                                                if (IsAllowedExtension(buffer, new FileExtension[] { FileExtension.JPG }))
                                                {
                                                    CreateThumbnail(bitmap, largeThumbnailSize, largeThumbnailSize, subfolderForPictures, fileNameWithoutExtension + "_LThumb.jpg");
                                                    CreateThumbnail(bitmap, mediumThumbnailSize, mediumThumbnailSize, subfolderForPictures, fileNameWithoutExtension + "_MThumb.jpg");
                                                    CreateThumbnail(bitmap, smallThumbnailSize, smallThumbnailSize, subfolderForPictures, fileNameWithoutExtension + "_SThumb.jpg");
                                                }
                                            }
                                        }
                                        SetPictureUrl(MAccountName, subfolderForPictures, userProfileManager, mySites.Url);
                                        writer.WriteLine("用户名为" + DT_NOPic.Rows[i]["name"].ToString() + "工号为" + accountName[1].ToString() + "" + System.DateTime.Now.ToString("F") + " 添加图片成功" + row);
                                        Console.WriteLine("用户名为" + DT_NOPic.Rows[i]["name"].ToString() + "工号为" + accountName[1].ToString() + "" + System.DateTime.Now.ToString("F") + " 添加图片成功" + row);
                                    }
                                    catch (Exception ex)
                                    {
                                        writer.WriteLine(ex.Message);
                                        writer.WriteLine("用户名为" + DT_NOPic.Rows[i]["name"].ToString() + "工号为" + accountName[1].ToString() + "" + System.DateTime.Now.ToString("F") + " 添加图片失败" + row);
                                        Console.WriteLine("用户名为" + DT_NOPic.Rows[i]["name"].ToString() + "工号为" + accountName[1].ToString() + "" + System.DateTime.Now.ToString("F") + " 添加图片失败" + row);
                                        continue;
                                    }
                                }
                                catch (Exception ex)
                                {
    
                                    writer.WriteLine(ex.Message);
                                    writer.WriteLine("用户名为" + DT_NOPic.Rows[i]["name"].ToString() + "工号为" + accountName[1].ToString() + "" + System.DateTime.Now.ToString("F") + " 添加图片失败");
                                    Console.WriteLine("用户名为" + DT_NOPic.Rows[i]["name"].ToString() + "工号为" + accountName[1].ToString() + "" + System.DateTime.Now.ToString("F") + " 添加图片失败");
    
                                    continue;
                                }
                            }
                        }
                        catch (Exception ex)
                        {
                            writer.WriteLine("用户名为" + DT_NOPic.Rows[i]["name"].ToString() + "未能更新图片,错误信息为" + ex.Message);
                            writer.WriteLine("用户名为" + DT_NOPic.Rows[i]["name"].ToString() + "" + System.DateTime.Now.ToString("F") + " 添加图片失败");
                            continue;
                        }
                        row++;
                    }
     private static SPFile CreateThumbnail(Bitmap original, int idealWidth, int idealHeight, SPFolder folder, string fileName)
            {
                SPFile file = null;
    
                // Workaround to get the Microsoft.Office.Server.UserProfiles assembly
                Assembly userProfilesAssembly = typeof(UserProfile).Assembly;
                // UserProfilePhotos is internal
                // so there is no visibility from Visual Studio             
                Type userProfilePhotosType = userProfilesAssembly.GetType("Microsoft.Office.Server.UserProfiles.UserProfilePhotos");
    
                MethodInfo mi_CreateThumbnail = userProfilePhotosType.GetMethod("CreateThumbnail", BindingFlags.NonPublic | BindingFlags.Static);
                if (mi_CreateThumbnail != null)
                {
                    try
                    {
                        file = (SPFile)mi_CreateThumbnail.Invoke(null, new object[] { original, idealWidth, idealHeight, folder, fileName });
                    }
                    catch (TargetInvocationException targetEx)
                    {
                        if (targetEx.InnerException != null)
                        {
                            throw targetEx.InnerException;
                        }
                    }
    
                }
    
                return file;
            }

    最后更新

    View Code
     1  private static void SetPictureUrl(string accountName, SPFolder subfolderForPictures, UserProfileManager userProfileManager, string siteUrl)
     2         {
     3 
     4 
     5             UserProfile userProfile = userProfileManager.GetUserProfile(accountName);
     6 
     7             string fileNameWithoutExtension = GetFileNameFromAccountName(accountName);
     8 
     9             string pictureUrl = String.Format("{0}/{1}/{2}_MThumb.jpg", siteUrl, subfolderForPictures.Url, fileNameWithoutExtension);
    10 
    11             userProfile["PictureUrl"].Value = pictureUrl;
    12             userProfile.Commit();
    13         }
  • 相关阅读:
    North North West
    HDU-5387 Clock
    HDU-1036 Average is not Fast Enough!
    Growling Gears
    HDU-5375 Gray code
    HDU-5373 The shortest problem
    hdu-5364 Distribution money
    UVA
    HDU-5363 Key Set
    HDU-5326 Work
  • 原文地址:https://www.cnblogs.com/haiwang/p/2663710.html
Copyright © 2011-2022 走看看