using System; using System.Text; using System.Text.RegularExpressions; using System.Web; using System.Web.Mail; using System.Web.UI; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls; using System.Web.Caching; using System.IO; using System.Xml; using System.Collections; namespace RedPlus.Library { /// /// RedPlus.Library.Board : 게시판/웹 애플리케이션 관련 주요 함수 모음 /// public class Board { #region CutString() 함수 /// /// 주어진 스트링을 주어진 길이만큼만 잘라서 돌려줌. 나머지 부분은 '...'을 붙임 (대상 문자열, 길이) /// /// /// /// public static string CutString(string strCut, int intChar) { if(strCut.Length > intChar - 3) { string strTemp = ""; strTemp = strCut.Substring(0, intChar - 3); strTemp += "..."; return strTemp; } else { return strCut; } } #endregion #region IsPhoto() 함수 /// /// 첨부된 파일이 이미지 파일인지 검사 /// /// /// public static bool IsPhoto(string strFileNameTemp) { string strFileExt = Path.GetExtension(strFileNameTemp).Replace(".","").ToLower(); bool blnResult = false; if(strFileExt == "gif" || strFileExt == "jpg" || strFileExt == "jpeg") { blnResult = true; } else { blnResult = false; } return blnResult; } #endregion #region IsImage() 함수 /// /// 첨부된 파일이 이미지 파일인지 검사 /// /// /// public static bool IsImage(string strFileExt) { bool blnResult = false; string[] arrImgExt = {".GIF", ".JPG", ".JPEG", ".PNG"}; foreach (string strExt in arrImgExt) { if (strFileExt.Trim().ToUpper().Equals(strExt)) { blnResult = true; break; } } return blnResult; } #endregion #region IsMovie() 함수 /// /// 첨부파일이 동영상 파일인지 검사 /// /// /// public static bool IsMovie(string strFileNameTemp) { string strFileExt = Path.GetExtension(strFileNameTemp).Replace(".","").ToLower(); bool blnResult = false; if(strFileExt == "asf" || strFileExt == "wmv") { blnResult = true; } else { blnResult = false; } return blnResult; } #endregion #region DownloadType() 함수 /// /// 다운로드할 파일의 확장자를 통해 아이콘을 결정. (파일 이름, alt 메세지로 넣을 문자열) /// /// /// /// public static string DownloadType(string strFileName, string altString) { string strFileExt = Path.GetExtension(strFileName).Replace(".",""); string strResult = ""; switch(strFileExt) { case "ace": strResult = "" + altString + "";break; case "ai": strResult = "" + altString + "";break; case "alz": strResult = "" + altString + "";break; case "arj": strResult = "" + altString + "";break; case "asa": strResult = "" + altString + "";break; case "asax": strResult = "" + altString + "";break; case "ascx": strResult = "" + altString + "";break; case "asf": strResult = "" + altString + "";break; case "asmx": strResult = "" + altString + "";break; case "asp": strResult = "" + altString + "";break; case "aspx": strResult = "" + altString + "";break; case "asx": strResult = "" + altString + "";break; case "au": strResult = "" + altString + "";break; case "avi": strResult = "" + altString + "";break; case "bat": strResult = "" + altString + "";break; case "bmp": strResult = "" + altString + "";break; case "c": strResult = "" + altString + "";break; case "cs": strResult = "" + altString + "";break; case "csproj": strResult = "" + altString + "";break; case "cab": strResult = "" + altString + "";break; case "chm": strResult = "" + altString + "";break; case "com": strResult = "" + altString + "";break; case "config": strResult = "" + altString + "";break; case "cpp": strResult = "" + altString + "";break; case "css": strResult = "" + altString + "";break; case "csv": strResult = "" + altString + "";break; case "disco": strResult = "" + altString + "";break; case "dll": strResult = "" + altString + "";break; case "doc": strResult = "" + altString + "";break; case "eml": strResult = "" + altString + "";break; case "exe": strResult = "" + altString + "";break; case "gif": strResult = "" + altString + "";break; case "gz": strResult = "" + altString + "";break; case "h": strResult = "" + altString + "";break; case "hlp": strResult = "" + altString + "";break; case "htm": strResult = "" + altString + "";break; case "html": strResult = "" + altString + "";break; case "hwp": strResult = "" + altString + "";break; case "hwt": strResult = "" + altString + "";break; case "inc": strResult = "" + altString + "";break; case "ini": strResult = "" + altString + "";break; case "jpg": strResult = "" + altString + "";break; case "jpeg": strResult = "" + altString + "";break; case "js": strResult = "" + altString + "";break; case "lzh": strResult = "" + altString + "";break; case "m3u": strResult = "" + altString + "";break; case "max": strResult = "" + altString + "";break; case "mdb": strResult = "" + altString + "";break; case "mid": strResult = "" + altString + "";break; case "mov": strResult = "" + altString + "";break; case "mp2": strResult = "" + altString + "";break; case "mp3": strResult = "" + altString + "";break; case "mpe": strResult = "" + altString + "";break; case "mpeg": strResult = "" + altString + "";break; case "mpg": strResult = "" + altString + "";break; case "msi": strResult = "" + altString + "";break; case "": strResult = "" + altString + "";break; case "pcx": strResult = "" + altString + "";break; case "pdb": strResult = "" + altString + "";break; case "pdf": strResult = "" + altString + "";break; case "pls": strResult = "" + altString + "";break; case "png": strResult = "" + altString + "";break; case "ppt": strResult = "" + altString + "";break; case "psd": strResult = "" + altString + "";break; case "ra": strResult = "" + altString + "";break; case "ram": strResult = "" + altString + "";break; case "rar": strResult = "" + altString + "";break; case "reg": strResult = "" + altString + "";break; case "resx": strResult = "" + altString + "";break; case "rm": strResult = "" + altString + "";break; case "rmi": strResult = "" + altString + "";break; case "rtf": strResult = "" + altString + "";break; case "sql": strResult = "" + altString + "";break; case "swf": strResult = "" + altString + "";break; case "sys": strResult = "" + altString + "";break; case "tar": strResult = "" + altString + "";break; case "tga": strResult = "" + altString + "";break; case "tif": strResult = "" + altString + "";break; case "ttf": strResult = "" + altString + "";break; case "txt": strResult = "" + altString + "";break; case "vb": strResult = "" + altString + "";break; case "vbs": strResult = "" + altString + "";break; case "vbdisco": strResult = "" + altString + "";break; case "wav": strResult = "" + altString + "";break; case "wax": strResult = "" + altString + "";break; case "webinfo": strResult = "" + altString + "";break; case "wma": strResult = "" + altString + "";break; case "wmv": strResult = "" + altString + "";break; case "wmx": strResult = "" + altString + "";break; case "wri": strResult = "" + altString + "";break; case "wvx": strResult = "" + altString + "";break; case "xls": strResult = "" + altString + "";break; case "xml": strResult = "" + altString + "";break; case "zip": strResult = "" + altString + "";break; default: strResult = "" + altString + "";break; } return strResult; } #endregion #region ConvertToFileSize() 함수 /// /// 파일 크기를 계산해서 알맞은 단위로 변환해줌. (바이트 수) /// /// /// public static string ConvertToFileSize(int intByte) { int intFileSize = Convert.ToInt32(intByte); string strResult = ""; if(intFileSize >= 1048576) { strResult = string.Format("{0:F} MB", (intByte / 1048576)); } else { if(intFileSize >= 1024) { strResult = string.Format("{0} KB", (intByte / 1024)); } else { strResult = intByte + " Byte(s)"; } } return strResult; } #endregion #region ConvertToHtml() 함수 /// /// 주어진 문자열을 HTML코드로 바꿈. 특히 탭이나 공백도 처리함. (바꿀 문자열) /// /// /// public static string ConvertToHtml(string strContent) { //Function ConvertToHTML(ByVal strContent) // // Dim strTemp // // If Len(strContent) = 0 Or IsNull(Len(strContent)) = True Then // strTemp = "" // Else // strTemp = strContent // strTemp = Replace(strTemp, "&", "&") // strTemp = Replace(strTemp, ">", ">") // strTemp = Replace(strTemp, "<", "<") // strTemp = Replace(strTemp, chr(13), "
") // strTemp = Replace(strTemp, chr(34), """) // strTemp = Replace(strTemp, chr(9), "     ") // strTemp = Replace(strTemp, chr(32) & chr(32), "  ") // End If // // ConvertToHTML = strTemp // //End Function string strTemp = ""; if(strContent.Length == 0 || strContent == null) { strTemp = ""; } else { strTemp = strContent; strTemp = strTemp.Replace("&", "&"); strTemp = strTemp.Replace(">", ">"); strTemp = strTemp.Replace("<", "<"); strTemp = strTemp.Replace("\r\n", "
"); strTemp = strTemp.Replace("\"", """); strTemp = strTemp.Replace("\t", "    "); strTemp = strTemp.Replace(" "+" ", "  "); } return strTemp; } #endregion #region ConvertToHtml2() 함수 /// /// 주어진 문자열을 HTML코드로 바꿈. (바꿀 문자열) /// /// /// public static string ConvertToHtml2(string strContent) { string strTemp = ""; if(strContent.Length == 0 || strContent == null) { strTemp = ""; } else { strTemp = strContent; strTemp = strTemp.Replace("&", "&"); strTemp = strTemp.Replace(">", ">"); strTemp = strTemp.Replace("<", "<"); strTemp = strTemp.Replace("\r\n", "
"); strTemp = strTemp.Replace("\"", """); } return strTemp; } #endregion #region ConvertToSql() 함수 /// /// 주어진 문자열에 있는 SQL 특수 문자를 바꿈. (바꿀 문자열) /// /// /// public static string ConvertToSql(string strContent) { //'주어진 문자열에 있는 SQL 특수 문자를 바꿈. (바꿀 문자열) //Function ConvertToSQL(strContent) // // strTemp = strContent // strTemp = Replace(strTemp, "%", "[%]") // strTemp = Replace(strTemp, "_", "[_]") // 'strTemp = Replace(strTemp, "@", "[@]") // strTemp = Replace(strTemp, "'", "''") // // ConvertToSQL = strTemp // //End Function string strTemp = strContent; strTemp = strTemp.Replace("%", "[%]"); strTemp = strTemp.Replace("_", "[_]"); strTemp = strTemp.Replace("@", "[@]"); strTemp = strTemp.Replace("'", "''"); return strTemp; } #endregion #region GetDirectorySize() 함수 /// /// 디렉터리 크기 구하기 메서드 /// /// /// public long GetDirectorySize(string path) { long dirSize = 0; DirectoryInfo dir = new DirectoryInfo(path); //section 1. 현재 디렉터리내의 파일들의 크기를 더함 FileInfo [] files = dir.GetFiles(); foreach(FileInfo file in files) { dirSize += file.Length; } //section 2. 하위 폴더의 파일들의 크기를 더함 foreach(DirectoryInfo subdir in dir.GetDirectories()) { dirSize += GetDirectorySize(subdir.FullName); } return dirSize; } #endregion #region GetUniqueFileNameWithPath() 함수 /// /// 파일명 뒤에 번호 붙이는 메서드 /// /// /// /// public string GetUniqueFileNameWithPath(string dirPath, string fileNameTemp) { string fileName = fileNameTemp; //파일이름에서 . 의 위치를 알아낸다. int indexOfDot = fileName.LastIndexOf("."); //파일명만을 떼어낸다 string strName = fileName.Substring(0, indexOfDot); //파일의 확장자만을 떼어낸다. string strExt = fileName.Substring(++indexOfDot); //같은 이름의 파일의 존재여부, 우선 있다고 가정. bool bExist = true; int fileCount = 0; while(bExist) { if(File.Exists(Path.Combine(dirPath, fileName))) { fileCount++; fileName = strName + "(" + fileCount + ")." + strExt; } else { bExist = false; } } return Path.Combine(dirPath, fileName); }//end function #endregion #region IsSqlReserved() 함수 /// /// SQL 예약어 검사 /// /// /// public static bool IsSqlReserved(string strKeyword) { string [] arrReserved = new string[100]; arrReserved[0] = "ABSOLUTE"; arrReserved[1] = "ACTION"; arrReserved[2] = "ALLOCATE"; arrReserved[3] = "ARE"; arrReserved[4] = "ASSERTION"; arrReserved[5] = "AT"; arrReserved[6] = "AUTHORIZATION"; arrReserved[7] = "BOTH"; arrReserved[8] = "CASCADE"; arrReserved[9] = "CASCADED"; arrReserved[10] = "CAST"; arrReserved[11] = "CATALOG"; arrReserved[12] = "CHAR_LENGTH"; arrReserved[13] = "CHARACTER"; arrReserved[14] = "CHARACTER_LENGTH"; arrReserved[15] = "COLLATE"; arrReserved[16] = "COLLATION"; arrReserved[17] = "COLUMN"; arrReserved[18] = "CONNECTION"; arrReserved[19] = "CONNECT"; arrReserved[20] = "CONSTRAINTS"; arrReserved[21] = "CORRESPONDING"; arrReserved[22] = "DATE"; arrReserved[23] = "DAY"; arrReserved[24] = "DEFERRABLE"; arrReserved[25] = "DEFERRED"; arrReserved[26] = "DESCRIBE"; arrReserved[27] = "DESCRIPTOR"; arrReserved[28] = "DIAGNOSTICS"; arrReserved[29] = "DISCONNECT"; arrReserved[30] = "Domains"; arrReserved[31] = "END_EXEC"; arrReserved[32] = "ESCAPE"; arrReserved[33] = "EXCEPTION"; arrReserved[34] = "EXPIREDATE"; arrReserved[35] = "EXTERNAL"; arrReserved[36] = "EXTRACT"; arrReserved[37] = "FALSE"; arrReserved[38] = "FILE"; arrReserved[39] = "FIRST"; arrReserved[40] = "FULL"; arrReserved[41] = "GET"; arrReserved[42] = "GLOBAL"; arrReserved[43] = "HOUR"; arrReserved[44] = "IMMEDIATE"; arrReserved[45] = "INITIALLY"; arrReserved[46] = "INNER"; arrReserved[47] = "INPUT"; arrReserved[48] = "INTERVAL"; arrReserved[49] = "JOIN"; arrReserved[50] = "LAST"; arrReserved[51] = "LEADING"; arrReserved[52] = "LEFT"; arrReserved[53] = "LOCAL"; arrReserved[54] = "MATCH"; arrReserved[55] = "MINUTE"; arrReserved[56] = "MONTH"; arrReserved[57] = "NATIONAL"; arrReserved[58] = "NAMES"; arrReserved[59] = "NATURAL"; arrReserved[60] = "NCHAR"; arrReserved[61] = "NEXT"; arrReserved[62] = "NO"; arrReserved[63] = "OCTET_LENGTH"; arrReserved[64] = "OUTER"; arrReserved[65] = "OUTPUT"; arrReserved[66] = "OVERLAPS"; arrReserved[67] = "PAD"; arrReserved[68] = "PARTIAL"; arrReserved[69] = "POSITION"; arrReserved[70] = "PRESERVE"; arrReserved[71] = "PRIOR"; arrReserved[72] = "PRIVILEGES"; arrReserved[73] = "RELATIVE"; arrReserved[74] = "RESTRICT"; arrReserved[75] = "RETAINDAYS"; arrReserved[76] = "RIGHT"; arrReserved[77] = "ROWS"; arrReserved[78] = "SCHEMA"; arrReserved[79] = "SECOND"; arrReserved[80] = "SESSION"; arrReserved[81] = "SIZE"; arrReserved[82] = "SPACE"; arrReserved[83] = "SQLSTATE"; arrReserved[84] = "TIME"; arrReserved[85] = "TIMESTAMP"; arrReserved[86] = "TIMEZONE_HOUR"; arrReserved[87] = "TIMEZONE_MINUTE"; arrReserved[88] = "TRAILING"; arrReserved[89] = "TRANSLATE"; arrReserved[90] = "TRANSLATION"; arrReserved[91] = "TRUE"; arrReserved[92] = "UNKNOWN"; arrReserved[93] = "USAGE"; arrReserved[94] = "USING"; arrReserved[95] = "VALUE"; arrReserved[96] = "VOLUME"; arrReserved[97] = "WORK"; arrReserved[98] = "WRITE"; arrReserved[99] = "YEAR"; arrReserved[100] = "ZONE"; bool strTemp = false; foreach(string strItem in arrReserved) { if(strKeyword == strItem) { strTemp = true; break; } } return strTemp; } #endregion #region GetUniqName() 함수 /// /// 중복파일명 체크 /// /// 체크할 디렉토리 /// 파일명 /// 확장자 public string GetUniqName(string DirName, string fn, string fe) { FileInfo info = new FileInfo(DirName+"\\"+fn+fe); int i = 1; while(true) { if(info.Exists) { info = new FileInfo(DirName+"\\"+fn+"("+i+")"+fe); i++; continue; } else { break; } } return info.Name; } #endregion #region strCut() 함수 /// /// 한글*영문 Word길이 제어 /// /// /// /// /// public string strCut(string str, int max, string suffix) { string strResult=""; string s = str.ToString(); if (s == "") return strResult; int count = 0; string tmpStr = str.Trim().ToString(); char [] chrarr = tmpStr.ToCharArray(); if (tmpStr.Length != 0) { for (int i=0; i< chrarr.Length; i++) { int temp = Convert.ToInt32(chrarr[i]); if (temp < 0 || temp >= 128 ) { //한글 2byte count = count+2; } else { count = count+1; } if (count <= max) { strResult = strResult + tmpStr.Substring(i,1); } else { strResult = strResult + suffix; break; } } } return strResult; } #endregion #region PrintMsg() 함수 /// /// MsgBox 출력 /// /// 메세지 박스에 출력할 문자열 public void PrintMsg(string strMessage) { string strHTML; strHTML = "\n"; HttpContext.Current.Response.Write(strHTML); } #endregion #region PrintMsgAndClose() 함수 /// /// MsgBox 출력 후 브라우져 창을 닫는다. /// /// 메세지 박스에 출력할 문자열 public void PrintMsgAndClose(string strMessage) { string strHTML; strHTML = "\n"; HttpContext.Current.Response.Write(strHTML); HttpContext.Current.Response.End(); } #endregion #region PrintMsgAndRedir() 함수 /// /// MsgBox 출력 후 리 디렉션 /// /// 메세지 박스에 출력할 문자열 /// 리디렉션 주소 public void PrintMsgAndRedir(string strMessage, string redirUri) { string strHTML; strHTML = "\n"; HttpContext.Current.Response.Write(strHTML); HttpContext.Current.Response.End(); } #endregion #region PrintMsgAndCloseAndOpenerRedir() 함수 /// /// MsgBox 출력 후 opener를 리 디렉션 /// /// 클라이언트로 출력될 문자열 /// 부모창의 주소 public void PrintMsgAndCloseAndOpenerRedir(string strMessage, string redirUri) { string strHTML; strHTML = "\n"; HttpContext.Current.Response.Write(strHTML); HttpContext.Current.Response.End(); } #endregion #region PrintMsgBack() 함수 /// /// MsgBox 출력후 이전화면으로 이동 /// /// 클라이언트로 출력될 문자열 public void PrintMsgBack(string strMessage) { string strHTML; strHTML = "\n"; HttpContext.Current.Response.Write(strHTML); HttpContext.Current.Response.End(); } #endregion #region PrintMsgRedirectTarget() 함수 /// /// 메세지박스 출력 후 지정된 타겟에 해당 url 로 이동 /// /// 출력 문자열 /// 이동할 URI /// 페이지가 열릴 프래임 명 public void PrintMsgRedirectTarget(string message, string url, string target) { string strHTML; strHTML = "\n" + "\n" + "
\n" + "\n" + "
\n" + "\n" + "\n"; HttpContext.Current.Response.Write(strHTML); HttpContext.Current.Response.End(); } #endregion #region RedirectTarget() 함수 /// /// 지정된 타겟에 해당 url 로 이동 /// /// 이동할 URI /// 페이지가 열릴 프래임 명 public void RedirectTarget(string url, string target) { string strHTML; strHTML = "\n" + "\n" + "
\n" + "\n" + "
\n" + "\n" + "\n"; HttpContext.Current.Response.Write(strHTML); HttpContext.Current.Response.End(); } #endregion #region 기타 함수 #region FindControlAll() 함수 /// /// 컨트롤안에 속한 모든 자식컨트롤을 검색한다. /// 기존의 FindControl메소드는 자신의 네이밍스코프 안에서만 검색한다. /// /// /// /// public Control FindControlAll(Control o, string sName) { foreach(Control oChild in o.Controls) { if (oChild.ID == sName) return oChild; if (oChild.HasControls()) { Control oFind = FindControlAll(oChild, sName); if (oFind != null) return oFind; } } return null; } #endregion #region GetForm() 함수 /// /// Page 클레스에서 폼객체의 인스턴스를 찾아 리턴 /// /// 검색할 Page 클레스 /// 검색되 HomlForm 객채의 인스탄스 public HtmlForm GetForm(Page op) { foreach(Control oc in op.Controls) { if(oc is HtmlForm) return (HtmlForm)oc; } throw new Exception("Find Not Form!!!!!"); } #endregion #region ReplaceBR() 함수 public string ReplaceBR(string str) { return str.Replace("\n", "
"); } #endregion #region SetFocus() 함수 /// /// 인자로 넘어온 컨트롤이 초기 포커스를 같도록 지정한다. /// 페이지의 다른곳에서 이 함수가 호출되었다면 등록에 실페한다 /// /// 포커스를 줄 컨트롤 /// 포커스 지정 성공 : true, 이미 포커스가 지정된 컨트롤이 있음 : false public bool SetFocus(Control oc) { if (oc.Page == null) throw new Exception("SetFocus 메소드의 인자는 페이지에 추가된 컨트롤만 사용하실 수 있습니다."); string ClientFocusScript = @" "; if (!oc.Page.IsStartupScriptRegistered("_ClientFocusScript")) { ClientFocusScript = String.Format(ClientFocusScript, GetForm(oc.Page).ClientID, oc.ClientID); oc.Page.RegisterStartupScript("_ClientFocusScript", ClientFocusScript); RegisterOnloadFunction(oc.Page, "_StartupFocus()"); return true; } else return false; } #endregion #region RegisterOnloadFunction() 함수 /// /// 클라이언트의 Onload이벤트에서 실행할 함수를 등록한다. /// /// Page 클레스 /// 등록할 함수명 public void RegisterOnloadFunction(Page page, string functionName) { if (!page.IsClientScriptBlockRegistered("_ClientOnloadOnScript")) { string ClientOnloadOnScript = @" "; page.RegisterClientScriptBlock("_ClientOnloadOnScript", ClientOnloadOnScript); } page.RegisterArrayDeclaration("__onloadFunctionArray", "'"+ functionName + "'"); } #endregion #region SetObjectToCache() 함수 //다른 페이지에서도 접근 가능한 키로 오브젝트를 저장한다. public void SetObjectToCache(string key, object toCache, int lifeMinute) { HttpContext.Current.Cache.Insert("__Obj"+key, toCache, null, DateTime.Now.AddMinutes(lifeMinute), TimeSpan.Zero, CacheItemPriority.High, null); } #endregion #region GetObjectFromCache() 함수 //다른 페이지에서도 접근 가능한 키의 오브젝트를 가져온다. public object GetObjectFromCache(string key) { return HttpContext.Current.Cache["__Obj"+key]; } #endregion #region RemoveObjectCache() 함수 //다른 페이지에서도 접근 가능한 키의 오브젝트를 케시에서 삭제한다. public void RemoveObjectCache(string key) { HttpContext.Current.Cache.Remove("__Obj"+key); } #endregion #endregion } }