Imports System Imports System.ComponentModel Imports System.Web.UI Imports System.Web.UI.WebControls Imports System.Xml.Serialization Imports Microsoft.SharePoint Imports Microsoft.SharePoint.Utilities Imports Microsoft.SharePoint.WebPartPages Imports System.DirectoryServices Imports System.Drawing Imports System.Security 'Description for UserPhoto. "), XmlRoot(Namespace:="WebParts")> _ Public Class UserPhoto Inherits Microsoft.SharePoint.WebPartPages.WebPart Implements System.Web.IHttpHandler Private Const _defaultText As String = "" Dim _name As String = _defaultText ' Dim imgCtrl As Image _ Property [UName]() As String Get Return _name End Get Set(ByVal Value As String) _name = Value End Set End Property 'Render this Web Part to the output parameter specified. Protected Overrides Sub RenderWebPart(ByVal output As System.Web.UI.HtmlTextWriter) EnsureChildControls() output.Write("
") End Sub Protected Overrides Sub EnsureChildControls() End Sub Public ReadOnly Property IsReusable() As Boolean Implements System.Web.IHttpHandler.IsReusable Get Return True End Get End Property Public Sub ProcessRequest(ByVal context As System.Web.HttpContext) Implements System.Web.IHttpHandler.ProcessRequest Dim response As System.Web.HttpResponse = context.Response Dim request As System.Web.HttpRequest = context.Request Dim who As String Dim outImg As System.Drawing.Image Try Dim AuthUser As String = Right(request.ServerVariables("AUTH_USER"), Len(request.ServerVariables("AUTH_USER")) - InStr(request.ServerVariables("AUTH_USER"), "\")) Dim ds As New DirectorySearcher("ldap://dc=example,dc=net") If Not (request.QueryString("user") Is Nothing) Then who = request.QueryString("user").ToString End If ds.Filter = "(&" If who <> "" Then ds.Filter &= "(name=" & who & ")" Else ds.Filter &= "(sAMAccountname=" & AuthUser & ")" End If ds.Filter &= "(jpegPhoto=*))" Dim res As SearchResult res = ds.FindOne Try If Not (res Is Nothing) Then 'Dim imgStr As String = res.Properties("jpegPhoto").Item(0) Dim imgByte() As Byte = res.Properties("jpegPhoto").Item(0) Dim ms As System.IO.MemoryStream ms = New System.IO.MemoryStream(imgByte) Dim newImage As System.Drawing.Image newImage = System.Drawing.Image.FromStream(ms, True) response.ContentType = "image/jpeg" newImage.Save(response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg) Else response.Clear() Dim msg As String = "No image for " If who = "" Then msg &= "you" Else msg &= who End If outImg = DoImage(msg) response.ContentType = "image/jpeg" outImg.Save(response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg) End If Catch ex As Exception response.Clear() outImg = DoImage(who & " : " & ex.Message) response.ContentType = "image/jpeg" outImg.Save(response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg) End Try Catch es As Exception response.Clear() outImg = DoImage(who & " : " & es.Message) response.ContentType = "image/jpeg" outImg.Save(response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg) End Try End Sub Public Function DoImage(ByVal msg As String, Optional ByVal w As Integer = 200, Optional ByVal h As Integer = 50) As System.Drawing.Image Dim img As System.Drawing.Image Dim g As Graphics img = New Bitmap(w, h, System.Drawing.Imaging.PixelFormat.Format32bppArgb) g = Graphics.FromImage(img) g.FillRectangle(New SolidBrush(Color.White), 0, 0, img.Width, img.Height) g.DrawString(msg, New Font("Verdana", 10.0F), New SolidBrush(Color.Black), 0, 0) Return img End Function Protected Overrides Sub OnInit(ByVal e As System.EventArgs) End Sub Protected Overrides Sub OnPreRender(ByVal e As System.EventArgs) MyBase.OnPreRender(e) If UName <> "" Then Me.Title = UName Else Try Dim AuthUser As String = Right(context.Request.ServerVariables("AUTH_USER"), Len(context.Request.ServerVariables("AUTH_USER")) - InStr(context.Request.ServerVariables("AUTH_USER"), "\")) Dim ds As New DirectorySearcher("ldap://dc=example,dc=net") ds.Filter = "(sAMAccountname=" & AuthUser & ")" Dim res As SearchResult res = ds.FindOne Me.Title = res.Properties("Display Name").Item(0) Catch Me.Title = "Your Photo" End Try End If End Sub End Class