📄 sitestatistics.cs
字号:
//------------------------------------------------------------------------------
// <copyright company="Telligent Systems">
// Copyright (c) Telligent Systems Corporation. All rights reserved.
// </copyright>
//------------------------------------------------------------------------------
using System;
using System.Web;
using System.Web.Caching;
using System.Collections;
using System.Xml;
namespace CommunityServer.Components {
// *********************************************************************
// Statistics
//
/// <summary>
/// This class contains is used to get statistics about the running ASP.NET Forum
/// </summary>
// ***********************************************************************/
public class SiteStatistics {
int currentAnonymousUsers;
ArrayList activeUsers = new ArrayList();
ArrayList activeModerators = new ArrayList();
ArrayList moderationActions = new ArrayList();
int totalUsers;
int totalPosts;
int totalThreads;
int totalModerators;
int totalModeratedPosts;
int totalAnonymousUsers;
int newPostsInPast24Hours;
int newThreadsInPast24Hours;
int newUsersInPast24Hours;
int mostViewsPostId;
string mostViewsSubject = "";
int mostActivePostId;
string mostActiveSubject = "";
int mostReadPostId;
string mostReadPostSubject = "";
string mostActiveUser = "";
int mostActiveUserID;
string newestUser = "";
int newestUserID;
static Version version;
public static void CalculateSiteStatistics(int cacheTimeInHours)
{
Hashtable sites = SiteSettingsManager.GetActiveSiteSettings();
SiteSettings site = null;
CommonDataProvider dp = CommonDataProvider.Instance();
foreach(string key in sites.Keys)
{
site = sites[key] as SiteSettings;
if(site != null)
dp.CalculateSiteStatistics(site.SettingsID,cacheTimeInHours);
}
}
// /// <summary>
// /// Loads all of the Available site settigns into the cache.
// /// </summary>
// /// <param name="cacheTimeInHours"></param>
// public static void LoadSiteStatistics(int cacheTimeInHours)
// {
//
// Hashtable ht = new Hashtable();
//
// Hashtable sites = SiteSettingsManager.GetActiveSiteSettings();
// SiteSettings site = null;
// CommonDataProvider dp = CommonDataProvider.Instance();
// foreach(string key in sites.Keys)
// {
// site = sites[key] as SiteSettings;
// if(site != null)
// ht[site.SettingsID] = dp.LoadSiteStatistics(site.SettingsID,cacheTimeInHours);
// }
//
// //over write the existing cached items
// CSCache.Insert("SiteStatistics",ht,10*CSCache.MinuteFactor);
//
// }
// public static SiteStatistics LoadSiteStatistics(HttpContext context, bool cacheable, int cacheTimeInHours)
// {
// return LoadSiteStatistics(SiteSettingsManager.GetSiteSettings(context).SettingsID,cacheable,cacheTimeInHours);
// }
public static SiteStatistics LoadSiteStatistics(int settingsID, bool cacheable, int cacheTimeInHours) {
#if DEBUG_NOCACHE
cacheable = false;
#endif
// Cached lookup
//
Hashtable ht = CSCache.Get("SiteStatistics") as Hashtable;
if(ht == null)
{
ht = new Hashtable();
CSCache.Insert("SiteStatistics",ht,10*CSCache.MinuteFactor);
}
SiteStatistics stats = ht[settingsID] as SiteStatistics;
if ( stats == null) {
lock(ht.SyncRoot)
{
CommonDataProvider dp = CommonDataProvider.Instance();
stats = dp.LoadSiteStatistics(settingsID);
if (cacheable)
ht[settingsID] = stats;
}
}
return stats;
}
public static string CommunityServerVersionVersionInfo
{
get{ return string.Format("CommunityServer 1.1 (Build: {0})", CommunityServerVersion);}
}
public static Version CommunityServerVersion {
get {
if (version == null) {
Type t = Type.GetType("CommunityServer.Components.CommonDataProvider");
version = t.Assembly.GetName().Version;
}
return version;
}
}
public static bool NewVersionAvailable (Version versionToCompare) {
string[] runningVersion = SiteStatistics.CommunityServerVersion.ToString(3).Split('.');
string[] compareVersion = versionToCompare.ToString(3).Split('.');
if (( int.Parse(compareVersion[0]) > int.Parse(runningVersion[0]) ) ||
(
int.Parse(compareVersion[0]) == int.Parse(runningVersion[0]) &&
int.Parse(compareVersion[1]) > int.Parse(runningVersion[1]) ) ||
(
int.Parse(compareVersion[0]) == int.Parse(runningVersion[0]) &&
int.Parse(compareVersion[1]) == int.Parse(runningVersion[1]) &&
int.Parse(compareVersion[2]) > int.Parse(runningVersion[2]) ) )
return true;
return false;
}
public static bool RunningModedVersion (Version versionToCompare) {
string[] runningVersion = SiteStatistics.CommunityServerVersion.ToString(3).Split('.');
string[] compareVersion = versionToCompare.ToString(3).Split('.');
if (!NewVersionAvailable(versionToCompare)) {
if ( int.Parse(compareVersion[2]) < int.Parse(runningVersion[2]) )
return true;
}
return false;
}
public ArrayList ActiveUsers {
get { return activeUsers; }
set { activeUsers = value; }
}
public ArrayList ActiveModerators {
get { return activeModerators; }
set { activeModerators = value; }
}
public ArrayList ModerationActions {
get { return moderationActions; }
set { moderationActions = value; }
}
public int CurrentAnonymousUsers {
get { return currentAnonymousUsers; }
set { currentAnonymousUsers = value; }
}
public int TotalUsers {
get { return totalUsers; }
set {
if (value < 0)
totalUsers = 0;
else
totalUsers = value;
}
}
public int TotalAnonymousUsers {
get { return totalAnonymousUsers; }
set { totalAnonymousUsers = value; }
}
public int TotalModerators {
get { return totalModerators; }
set {
if (value < 0)
totalModerators = 0;
else
totalModerators = value;
}
}
public int TotalModeratedPosts {
get { return totalModeratedPosts; }
set {
if (value < 0)
totalModeratedPosts = 0;
else
totalModeratedPosts = value;
}
}
public double AverageModeratedPostsPerModerator {
get {
return (double) totalModeratedPosts / (double) totalModerators;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -