⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tools.cs

📁 YetAnotherForum.Net+ScrewTurnWiki中文完美汉化增强版
💻 CS
📖 第 1 页 / 共 2 页
字号:

		/// <summary>
		/// Gets the available Themes.
		/// </summary>
		public static string[] AvailableThemes {
			get {
				string[] dirs = Directory.GetDirectories(Settings.ThemesDirectory);
				string[] res = new string[dirs.Length];
				for(int i = 0; i < dirs.Length; i++) {
					if(dirs[i].EndsWith("\\")) dirs[i] = dirs[i].Substring(0, dirs[i].Length - 1);
					res[i] = dirs[i].Substring(dirs[i].LastIndexOf("\\") + 1);
				}
				return res;
			}
		}

		/// <summary>
		/// Gets the available Cultures.
		/// </summary>
		public static string[] AvailableCultures {
			get {
				List<string> c = new List<string>();
				c.Add("it-IT|Italiano (Italian)");
				c.Add("de-DE|Deutsch (German)");
				c.Add("fr-FR|Français (French)");
				c.Add("es-ES|Español (Spanish)");
				c.Add("ru-RU|Русский (Russian)");
				c.Add("pt-BR|Português, Brasil (Brazilian Portuguese)");
				c.Add("zh-CN|Chinese");
				c.Add("cs-CZ|Česky (Czech)");
				c.Add("sk-SK|Slovenčina (Slovak)");
				return c.ToArray();
			}
		}

		/// <summary>
		/// Aligns a Date and Time with the User's preferences (if any).
		/// </summary>
		/// <param name="dt">The Date and Time.</param>
		/// <param name="sh">The time shift in minutes respect to the Greenwich time.</param>
		/// <returns>The aligned Date and Time.</returns>
		public static DateTime AlignWithPreferences(DateTime dt, string sh) {
			int shift;
			if(sh== null || sh.Length == 0) {
				shift = int.Parse(Settings.DefaultTimezone);
			}
			else {
				shift = int.Parse(sh);
			}
			return dt.ToUniversalTime().AddMinutes(shift + (dt.IsDaylightSavingTime() ? 60 : 0));
		}

		/// <summary>
		/// Computes the Hash of a Username, mixing it with other data, in order to avoid illegal Account activations.
		/// </summary>
		/// <param name="username">The Username.</param>
		/// <returns>The secured Hash of the Username.</returns>
		public static string ComputeSecuredUsernameHash(string username) {
			return Hash.ComputeSecuredUsernameHash(username, Settings.MasterPassword);
		}

		/// <summary>
		/// Escapes bad characters in a string (pipes and \n).
		/// </summary>
		/// <param name="input">The input string.</param>
		/// <returns>The escaped string.</returns>
		public static string EscapeString(string input) {
			StringBuilder sb = new StringBuilder(input);
			sb.Replace("\r", "");
			sb.Replace("\n", "%0A");
			sb.Replace("|", "%7C");
			return sb.ToString();
		}

		/// <summary>
		/// Unescapes bad characters in a string (pipes and \n).
		/// </summary>
		/// <param name="input">The input string.</param>
		/// <returns>The unescaped string.</returns>
		public static string UnescapeString(string input) {
			StringBuilder sb = new StringBuilder(input);
			sb.Replace("%7C", "|");
			sb.Replace("%0A", "\n");
			return sb.ToString();
		}
		
		/// <summary>
		/// Generates a random 10-char Password.
		/// </summary>
		/// <returns>The Password.</returns>
		public static string GenerateRandomPassword() {
			Random r = new Random();
			string password = "";
			for(int i = 0; i < 10; i++) {
				if(i % 2 == 0)
					password += ((char)r.Next(65, 91)).ToString(); // Uppercase letter
				else password += ((char)r.Next(97, 123)).ToString(); // Lowercase letter
			}
			return password;
		}

		//private static bool negative = false;
		//private static int count = 0;

		/// <summary>
		/// Gets the System Uptime.
		/// </summary>
		public static TimeSpan SystemUptime {
			get {
				/*if(GetCurrentPermissionLevel() == AspNetHostingPermissionLevel.Unrestricted) {
					try {
						ManagementObjectSearcher q = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_OperatingSystem");
						foreach(ManagementObject result in q.Get()) {
							string s = Convert.ToString(result["LastBootUpTime"]);
							s = s.Substring(0, s.IndexOf("."));
							return DateTime.Now.Subtract(DateTime.ParseExact(s, "yyyyMMddHHmmss", CultureInfo.InvariantCulture));
						}
					}
					catch { }
					return new TimeSpan(0);
				}
				else {*/
					// Cannot use WMI because of unsufficient permissions
					// This code is experimental: TickCount counts up to 25 days, then goes to -25 and counts to 0, then restarts
					int t = Environment.TickCount;
					if(t < 0) t = t + int.MaxValue;
					//t = t + (count * int.MaxValue);
					t = t / 1000;
					return TimeSpan.FromSeconds(t);
				//}
			}
		}

		/*private static AspNetHostingPermissionLevel CurrentPermissionLevel = AspNetHostingPermissionLevel.None;

		private static AspNetHostingPermissionLevel GetCurrentPermissionLevel() {
			if(CurrentPermissionLevel == AspNetHostingPermissionLevel.None) {
				AspNetHostingPermissionLevel[] levels = new AspNetHostingPermissionLevel[] {
					AspNetHostingPermissionLevel.Unrestricted,
					AspNetHostingPermissionLevel.High,
					AspNetHostingPermissionLevel.Medium,
					AspNetHostingPermissionLevel.Low,
					AspNetHostingPermissionLevel.Minimal };
				for(int i = 0; i < levels.Length; i++) {
					try {
						new AspNetHostingPermission(levels[i]).Demand();
					}
					catch {
						continue;
					}
					return levels[i];
				}
				return AspNetHostingPermissionLevel.None;
			}
			else return CurrentPermissionLevel;
		}*/

		/// <summary>
		/// Converts a Time Span to string.
		/// </summary>
		/// <param name="span">The Time Span.</param>
		/// <returns>The string.</returns>
		public static string TimeSpanToString(TimeSpan span) {
			string result = span.Days.ToString() + "d ";
			result += span.Hours.ToString() + "h ";
			result += span.Minutes.ToString() + "m ";
			result += span.Seconds.ToString() + "s";
			return result;
		}

		/// <summary>
		/// Generates the Hash of an Image name.
		/// </summary>
		/// <param name="name">The image name.</param>
		/// <param name="big">True if the image is big.</param>
		/// <returns>The Hash.</returns>
		public static string GenerateImageNameHash(string name, bool big) {
			name = "Thumb-" + name.Replace("\\", "/").ToLower() + (big ? "-Big" : "");
			return Hash.Compute(name);
		}

		/// <summary>
		/// Clears all the thumbnails (if any) of a file.
		/// </summary>
		/// <param name="name">The File Name.</param>
		public static void DeleteThumbnails(string name) {
			string n1 = GenerateImageNameHash(name, false) + ".jpg";
			string n2 = GenerateImageNameHash(name, true) + ".jpg";
			try {
				File.Delete(Settings.TempDirectory + n1);
			}
			catch { }
			try {
				File.Delete(Settings.TempDirectory + n2);
			}
			catch { }
		}

		/// <summary>
		/// Executes URL-encoding, avoiding to use '+' for spaces.
		/// </summary>
		/// <remarks>This method uses internally Server.UrlEncode.</remarks>
		/// <param name="input">The input string.</param>
		/// <returns>The encoded string.</returns>
		public static string UrlEncode(string input) {
			return HttpContext.Current.Server.UrlEncode(input).Replace("+", "%20");
		}

	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -