private void Page_Load(System.Object sender, System.EventArgs e) { //Read the querystring params to determine the image to create a thumbnail string ImageId = Request.QueryString["id"]; string ModuleId = Request.QueryString["mid"]; int imageHeight = int.TryParse(Request.QueryString["h"], out imageHeight) ? imageHeight : 0; int imageWidth = int.TryParse(Request.QueryString["w"], out imageWidth) ? imageWidth : 0; string strPathToImage = ""; string strExtension = ""; bool b_UseIcon = false; string sNoImage = null; bool bIsURL = false; PortalSettings _portalSettings = (PortalSettings)HttpContext.Current.Items["PortalSettings"]; ModuleController _moduleController = new ModuleController(); RepositoryController repository = new RepositoryController(); RepositoryInfo objRepository = null; objRepository = repository.GetSingleRepositoryObject(Convert.ToInt32(ImageId)); if (!string.IsNullOrEmpty(ImageId)) { if ((objRepository != null)) { if (string.IsNullOrEmpty(objRepository.Image)) { // no image, display an icon or generic image based on module settings var moduleController = new ModuleController(); var moduleInfo = moduleController.GetModule(int.Parse(ModuleId)); var settings = moduleInfo.ModuleSettings; if (!string.IsNullOrEmpty(Convert.ToString(settings["noimage"]))) { strPathToImage = _portalSettings.HomeDirectory + Convert.ToString(settings["noimage"]); } else { if (!string.IsNullOrEmpty(Convert.ToString(settings["useicon"]))) { if (Convert.ToString(settings["useicon"]) == "Yes") { // get the file type if ((objRepository != null)) { strExtension = Strings.Replace(Path.GetExtension(objRepository.FileName), ".", ""); if (File.Exists(MapPath(_portalSettings.HomeDirectory + strExtension + ".jpg"))) { strPathToImage = _portalSettings.HomeDirectory + strExtension + ".jpg"; b_UseIcon = true; } if (File.Exists(MapPath(_portalSettings.HomeDirectory + strExtension + ".gif"))) { strPathToImage = _portalSettings.HomeDirectory + strExtension + ".gif"; b_UseIcon = true; } if (File.Exists(MapPath(_portalSettings.HomeDirectory + strExtension + ".png"))) { strPathToImage = _portalSettings.HomeDirectory + strExtension + ".png"; b_UseIcon = true; } } else { strPathToImage = _portalSettings.HomeDirectory + "Repository\\noImage.jpg"; } if (b_UseIcon == false) { strPathToImage = _portalSettings.HomeDirectory + "Repository\\noImage.jpg"; } } else { strPathToImage = _portalSettings.HomeDirectory + "Repository\\noImage.jpg"; } } else { strPathToImage = _portalSettings.HomeDirectory + "Repository\\noImage.jpg"; } } strPathToImage = Request.MapPath(strPathToImage); } else { // we have an image, display it if (objRepository.Image.ToLower().StartsWith("fileid=")) { strPathToImage = oRepositoryBusinessController.ConvertFileIDtoPath(_portalSettings.PortalId, int.Parse(objRepository.Image.Substring(7))); } else { oRepositoryBusinessController.SetRepositoryFolders(objRepository.ModuleId); if (objRepository.Approved == oRepositoryBusinessController.IS_APPROVED) { if (string.IsNullOrEmpty(objRepository.CreatedByUser)) { strPathToImage = oRepositoryBusinessController.g_AnonymousFolder + "\\" + objRepository.Image; } else { if (oRepositoryBusinessController.g_UserFolders) { strPathToImage = oRepositoryBusinessController.g_ApprovedFolder + "\\" + objRepository.CreatedByUser.ToString() + "\\" + objRepository.Image; } else { strPathToImage = oRepositoryBusinessController.g_ApprovedFolder + "\\" + objRepository.Image; } } } else { strPathToImage = oRepositoryBusinessController.g_UnApprovedFolder + "\\" + objRepository.Image; } } } } } else { // no image id, then we display the "No Image" image for this module var moduleController = new ModuleController(); var moduleInfo = moduleController.GetModule(int.Parse(ModuleId)); var settings = moduleInfo.ModuleSettings; string noImageURL = Convert.ToString(settings["noimage"]); if (System.Text.RegularExpressions.Regex.IsMatch(noImageURL.ToLower(), "(http|https|ftp|gopher)://([\\w-]+\\.)+[\\w-]+(/[\\w- ./?%&=]*)?")) { strPathToImage = noImageURL; bIsURL = true; } else { strPathToImage = Server.MapPath(_portalSettings.HomeDirectory + noImageURL); } } // determine the image type string imageType = strPathToImage.Substring(strPathToImage.LastIndexOf(".")).ToUpper(); System.Drawing.Image fullSizeImg = null; if (bIsURL) { System.Net.WebClient wc = new System.Net.WebClient(); Stream wStream = null; wStream = wc.OpenRead(strPathToImage); fullSizeImg = System.Drawing.Image.FromStream(wStream); wStream.Close(); } else { fullSizeImg = System.Drawing.Image.FromFile(strPathToImage); } int fullHeight = fullSizeImg.Height; int fullWidth = fullSizeImg.Width; if (imageWidth > 0 & imageHeight == 0) { // calc the height based on the width ratio imageHeight = (imageWidth * fullHeight) / fullWidth; } if (imageHeight > 0 & imageWidth == 0) { // calc the width based on the height ratio imageWidth = (imageHeight * fullWidth) / fullHeight; } if ((imageHeight == 0 & imageWidth == 0) | b_UseIcon) { imageHeight = fullHeight; imageWidth = fullWidth; } Response.Clear(); Response.Cache.SetCacheability(HttpCacheability.NoCache); System.Drawing.Image thumbNailImg = null; if (imageWidth < fullWidth | imageHeight < fullHeight) { // we are producing a resized image, most probably a thumbnail System.Drawing.Image.GetThumbnailImageAbort dummyCallBack = null; dummyCallBack = new System.Drawing.Image.GetThumbnailImageAbort(ThumbnailCallback); thumbNailImg = fullSizeImg.GetThumbnailImage(imageWidth, imageHeight, dummyCallBack, IntPtr.Zero); switch (imageType) { case ".JPG": Response.ContentType = "image/jpeg"; thumbNailImg.Save(Response.OutputStream, ImageFormat.Jpeg); break; case ".GIF": Response.ContentType = "image/gif"; thumbNailImg.Save(Response.OutputStream, ImageFormat.Gif); break; case ".PNG": MemoryStream stmMemory = new MemoryStream(); Response.ContentType = "image/png"; thumbNailImg.Save(stmMemory, System.Drawing.Imaging.ImageFormat.Png); stmMemory.WriteTo(Response.OutputStream); break; } } else { // we are serving out the full size image // if the settings indicate to use a watermark, add the watermark to the image var moduleController = new ModuleController(); var moduleInfo = moduleController.GetModule(int.Parse(ModuleId)); var settings = moduleInfo.ModuleSettings; string watermarkText = ""; // to avoid GIF image issues, create a new blank canvas and copy the image. Bitmap newImage = new Bitmap(fullSizeImg.Width, fullSizeImg.Height, System.Drawing.Imaging.PixelFormat.Format24bppRgb); Graphics canvas = Graphics.FromImage(newImage); canvas.DrawImage(fullSizeImg, new Rectangle(new Point(0, 0), fullSizeImg.Size)); // check to see if we need to overlay a watermark if (!string.IsNullOrEmpty(Convert.ToString(settings["watermark"]))) { watermarkText = Convert.ToString(settings["watermark"]); SizeF StringSizeF = default(SizeF); float DesiredWidth = 0; Font wmFont = null; float RequiredFontSize = 0; float Ratio = 0; wmFont = new Font("Verdana", 6, FontStyle.Bold); DesiredWidth = fullSizeImg.Width * 0.75f; StringSizeF = canvas.MeasureString(watermarkText, wmFont); Ratio = StringSizeF.Width / wmFont.SizeInPoints; RequiredFontSize = DesiredWidth / Ratio; wmFont = new Font("Verdana", RequiredFontSize, FontStyle.Bold); int wmLeft = (newImage.Width - canvas.MeasureString(watermarkText, wmFont).ToSize().Width) / 2; int wmTop = (newImage.Height - canvas.MeasureString(watermarkText, wmFont).ToSize().Height) / 2; canvas.DrawString(watermarkText, wmFont, new SolidBrush(Color.FromArgb(128, 255, 255, 255)), wmLeft, wmTop); } switch (imageType) { case ".JPG": Response.ContentType = "image/jpeg"; newImage.Save(Response.OutputStream, ImageFormat.Jpeg); break; case ".GIF": Response.ContentType = "image/gif"; newImage.Save(Response.OutputStream, ImageFormat.Gif); break; case ".PNG": MemoryStream stmMemory = new MemoryStream(); Response.ContentType = "image/png"; newImage.Save(stmMemory, System.Drawing.Imaging.ImageFormat.Png); stmMemory.WriteTo(Response.OutputStream); break; } } }
private void lstObjects_ItemCommand1(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e) { Table objTable = null; Table objRejectionTable = null; Label objLabel = null; ImageButton objImageButton = null; DataList objDataList = null; bool bMovedFile = false; bool bMovedImage = false; objTable = (Table)e.Item.Cells[0].FindControl("ItemDetailsTable"); objRejectionTable = (Table)objTable.Rows[0].Cells[0].FindControl("tblReject"); RepositoryController repository = new RepositoryController(); RepositoryCommentController repositoryComments = new RepositoryCommentController(); RepositoryInfo objRepository = repository.GetSingleRepositoryObject(int.Parse(e.CommandArgument.ToString())); string sFileName = null; string sImageName = null; try { sFileName = objRepository.FileName; sImageName = objRepository.Image; } catch (Exception ex) { sFileName = string.Empty; sImageName = string.Empty; } if (sFileName.ToLower().StartsWith("fileid=")) { sFileName = oRepositoryBusinessController.ConvertFileIDtoFileName(PortalId, int.Parse(objRepository.FileName.Substring(7))); } if (sImageName.ToLower().StartsWith("fileid=")) { sImageName = oRepositoryBusinessController.ConvertFileIDtoFileName(PortalId, int.Parse(objRepository.Image.Substring(7))); } switch (e.CommandName) { case "ViewFile": // admin wants to view the file oRepositoryBusinessController.DownloadFile(e.CommandArgument.ToString()); break; case "Approve": repository.ApproveRepositoryObject(objRepository.ItemId); string strSourceFilename = ""; string strImageFilename = ""; string strTargetFilename = ""; oRepositoryBusinessController.SetRepositoryFolders(ModuleId); bMovedFile = false; bMovedImage = false; // if this is an anonymous upload, move the file to the Anonymous folder, // otherwise, move it to the user's folder if (!objRepository.FileName.ToLower().StartsWith("fileid=")) { try { strSourceFilename = oRepositoryBusinessController.g_UnApprovedFolder + "\\" + objRepository.FileName.ToString(); if (string.IsNullOrEmpty(objRepository.CreatedByUser)) { strTargetFilename = oRepositoryBusinessController.g_AnonymousFolder + "\\" + objRepository.FileName.ToString(); } else { if (oRepositoryBusinessController.g_UserFolders) { if (!Directory.Exists(oRepositoryBusinessController.g_ApprovedFolder + "\\" + objRepository.CreatedByUser)) { Directory.CreateDirectory(oRepositoryBusinessController.g_ApprovedFolder + "\\" + objRepository.CreatedByUser); } strTargetFilename = oRepositoryBusinessController.g_ApprovedFolder + "\\" + objRepository.CreatedByUser + "\\" + objRepository.FileName.ToString(); } else { strTargetFilename = oRepositoryBusinessController.g_ApprovedFolder + "\\" + objRepository.FileName.ToString(); } } if (strSourceFilename != strTargetFilename) { File.Copy(strSourceFilename, strTargetFilename, true); File.SetAttributes(strSourceFilename, FileAttributes.Normal); File.Delete(strSourceFilename); bMovedFile = true; } } catch (Exception ex) { } } if (!objRepository.Image.ToLower().StartsWith("fileid=")) { // move the image file from the Pending folder to the Users folder try { strImageFilename = oRepositoryBusinessController.g_UnApprovedFolder + "\\" + objRepository.Image.ToString(); if (string.IsNullOrEmpty(objRepository.CreatedByUser)) { strTargetFilename = oRepositoryBusinessController.g_AnonymousFolder + "\\" + objRepository.Image.ToString(); } else { if (oRepositoryBusinessController.g_UserFolders) { if (!Directory.Exists(oRepositoryBusinessController.g_ApprovedFolder + "\\" + objRepository.CreatedByUser)) { Directory.CreateDirectory(oRepositoryBusinessController.g_ApprovedFolder + "\\" + objRepository.CreatedByUser); } strTargetFilename = oRepositoryBusinessController.g_ApprovedFolder + "\\" + objRepository.CreatedByUser + "\\" + objRepository.Image.ToString(); } else { strTargetFilename = oRepositoryBusinessController.g_ApprovedFolder + "\\" + objRepository.Image.ToString(); } } if (strImageFilename != strTargetFilename) { File.Copy(strImageFilename, strTargetFilename, true); File.SetAttributes(strImageFilename, FileAttributes.Normal); File.Delete(strImageFilename); bMovedImage = true; } } catch (Exception ex) { } } UserInfo objModerator = UserController.Instance.GetCurrentUserInfo(); string strBody = ""; if (((objRepository != null)) & ((objModerator != null))) { if (!string.IsNullOrEmpty(objRepository.AuthorEMail.ToString())) { strBody = objRepository.Author.ToString() + "," + Constants.vbCrLf + Constants.vbCrLf; strBody = strBody + Localization.GetString("TheFile", LocalResourceFile) + " (" + sFileName + ") " + Localization.GetString("ThatYouUploadedTo", LocalResourceFile) + " " + PortalSettings.PortalName + " " + Localization.GetString("HasBeenApprovedShort", LocalResourceFile) + Constants.vbCrLf + Constants.vbCrLf; strBody = strBody + Localization.GetString("PortalAddress", LocalResourceFile) + ": " + DotNetNuke.Common.Globals.GetPortalDomainName(PortalAlias.HTTPAlias, Request, false) + Constants.vbCrLf + Constants.vbCrLf; strBody = strBody + Localization.GetString("ThankYou", LocalResourceFile) + Constants.vbCrLf; DotNetNuke.Services.Mail.Mail.SendMail(objModerator.Email, objRepository.AuthorEMail, "", PortalSettings.PortalName + ": " + Localization.GetString("HasBeenApprovedLong", LocalResourceFile), strBody, "", "html", "", "", "", ""); } } BindObjectList(); // sometimes IIS doesn't release a file immediately. So, if we get here and the original // source file still exits, try to delete it one more time before we leave. if (bMovedFile) { try { File.SetAttributes(strSourceFilename, FileAttributes.Normal); File.Delete(strSourceFilename); } catch (Exception ex) { } } if (bMovedImage) { try { File.SetAttributes(strImageFilename, FileAttributes.Normal); File.Delete(strImageFilename); } catch (Exception ex) { } } break; case "Reject": if (objRejectionTable.Visible == false) { objRejectionTable.Visible = true; } else { objRejectionTable.Visible = false; } break; case "SendRejection": UserInfo objSendRejectionModerator = UserController.Instance.GetCurrentUserInfo(); strBody = ""; TextBox txtComment = null; string strFileName = null; string strImageFileName = null; txtComment = (TextBox)objRejectionTable.Rows[1].Cells[0].FindControl("txtReason"); if (((objRepository != null)) & ((objSendRejectionModerator != null))) { if (!string.IsNullOrEmpty(objRepository.AuthorEMail.ToString())) { strBody = objRepository.Author.ToString() + "," + Constants.vbCrLf + Constants.vbCrLf; strBody = strBody + Localization.GetString("TheFile", LocalResourceFile) + " (" + sFileName + ") " + Localization.GetString("ThatYouUploadedTo", LocalResourceFile) + " " + PortalSettings.PortalName + " " + Localization.GetString("HasBeenRejectedShort", LocalResourceFile) + Constants.vbCrLf + Constants.vbCrLf; strBody = strBody + Localization.GetString("PortalAddress", LocalResourceFile) + ": " + DotNetNuke.Common.Globals.GetPortalDomainName(PortalAlias.HTTPAlias, Request, false) + Constants.vbCrLf + Constants.vbCrLf; strBody = strBody + txtComment.Text + Constants.vbCrLf + Constants.vbCrLf; DotNetNuke.Services.Mail.Mail.SendMail(objSendRejectionModerator.Email, objRepository.AuthorEMail, "", PortalSettings.PortalName + ": " + Localization.GetString("HasBeenRejectedLong", LocalResourceFile), strBody, "", "html", "", "", "", ""); } } // delete the files if (!objRepository.FileName.ToLower().StartsWith("fileid=")) { try { strTargetFilename = ""; oRepositoryBusinessController.SetRepositoryFolders(ModuleId); if (!string.IsNullOrEmpty(objRepository.FileName)) { strFileName = oRepositoryBusinessController.g_UnApprovedFolder + "\\" + objRepository.FileName.ToString(); if (File.Exists(strFileName)) { File.SetAttributes(strFileName, FileAttributes.Normal); File.Delete(strFileName); } } } catch (Exception ex) { } } if (!objRepository.Image.ToLower().StartsWith("fileid=")) { try { if (!string.IsNullOrEmpty(objRepository.Image)) { strFileName = oRepositoryBusinessController.g_UnApprovedFolder + "\\" + objRepository.Image.ToString(); if (File.Exists(strFileName)) { File.SetAttributes(strFileName, FileAttributes.Normal); File.Delete(strFileName); } } } catch (Exception ex) { } } repository.DeleteRepositoryObject(objRepository.ItemId); BindObjectList(); break; } }