📄 dv_clsspace.asp
字号:
<%
'个性空间类模块
'Writen by Sunwin
Class Cls_Space
Public ScriptPath
Public Sid,Act,ReCache
Public XmlDoc,Space_Info,Forum_info,Forum_User,Space_User,Admin
Public Space_Skinpath
Private Forum_Skinpath
Private Sub Class_Initialize()
ScriptPath = MyDbPath & "Dv_plus/myspace/script/"
ReCache = 0 '是否首页缓存,0=是,1=否
Sid = Dvbbs.CheckNumeric(Request("sid"))
Act = Request("act")
Admin = false
Forum_Skinpath = Application(Dvbbs.CacheName & "_csslist").documentElement.selectSingleNode("@cssfilepath").text
Space_Skinpath = MyDbPath & Forum_Skinpath&"myspace/"
If Sid=0 and Dvbbs.Userid>0 Then
Sid = Dvbbs.Userid
End If
If Dvbbs.userid=0 Then
'Dvbbs.AddErrCode(6)
'Dvbbs.Showerr()
Else
If Dvbbs.UserId=Sid Or Dvbbs.Master Then
Admin = true
End If
End If
Set XmlDoc = Server.CreateObject("msxml2.FreeThreadedDOMDocument"& MsxmlVersion)
LoadData()
End Sub
Private Sub class_terminate()
Set XmlDoc = Nothing
End Sub
'获取数据
Public Sub LoadData()
If Act="" and ReCache = 0 Then
If LoadCache_Data Then
ReCache=0
Else
ReCache=1
End If
Else
ReCache=1
End If
If ReCache=0 Then
'读取文件缓存
'XmlDoc.Load Server.MapPath(MyDbPath &"space.xml")
'建立数据对象
Set Forum_info = XmlDoc.DocumentElement.selectSingleNode("forum_info")
Set Space_Info = XmlDoc.documentElement.selectSingleNode("space_info")
Set Space_User = XmlDoc.documentElement.selectSingleNode("space_user")
If Not (XmlDoc.DocumentElement.selectSingleNode("forum_user") is Nothing) Then
XmlDoc.DocumentElement.removeChild(XmlDoc.DocumentElement.selectSingleNode("forum_user"))
End If
Set Forum_User = XmlDoc.DocumentElement.appendChild(XmlDoc.createNode(1,"forum_user",""))
Forum_User.appendChild(Dvbbs.UserSession.documentElement.selectSingleNode("userinfo").cloneNode(True))
If Act<>"" Then
Space_Info.removeChild(Space_Info.selectSingleNode("//leftchannal"))
Space_Info.removeChild(Space_Info.selectSingleNode("//rightchannal"))
If Space_Info.getAttribute("s_style") <>"2" Then
SpaceChannal Space_Info,Space_Info.getAttribute("s_left"),"leftchannal"
End If
If Space_Info.getAttribute("s_style") ="2" Then
SpaceChannal Space_Info,Space_Info.getAttribute("s_right"),"rightchannal"
End If
End If
Else
XmlDoc.Loadxml("<?xml version=""1.0"" encoding=""gb2312""?><dv_space/>")
'加载论坛基本信息
SetupForum_Info()
'加载个人空间基本信息
LoadUserSpaceData()
'加载当前访问用户基本数据
Set Forum_User = XmlDoc.DocumentElement.appendChild(XmlDoc.createNode(1,"forum_user",""))
Forum_User.appendChild(Dvbbs.UserSession.documentElement.selectSingleNode("userinfo").cloneNode(True))
'加载空间用户数据
LoadSpaceUserData()
End If
If Act <> "modifyskin" Then
Space_Info.removeAttribute "s_css"
End If
Space_Info.setAttribute "s_stylevalue",Space_Info.getAttribute("s_style")
If Space_Info.getAttribute("s_style")="3" and Act<>"" Then
Space_Info.setAttribute "s_style","1"
End If
End Sub
Public Function LoadCache_Data()
Dim Rs,Sql,UpTime
LoadCache_Data = False
If Admin Then
Sql = "Select Top 1 id,Userid,ownercachedb From [Dv_Space_user] where Userid="&sid
Else
Sql = "Select Top 1 id,Userid,cachedb From [Dv_Space_user] where Userid="&sid
End If
Set Rs=Dvbbs.Execute(Sql)
If Rs.Eof Then
'该用户还没开通个性首页
Set Space_Info = GetDefaultData.cloneNode(True)
Else
If XmlDoc.LoadXml(Rs(2)&"") Then
'加放更新时间判断 set_5频道更新时间,单位分钟
Set Space_Info = XmlDoc.documentElement.selectSingleNode("space_info")
If Not (Space_Info is Nothing) Then
If IsDate(Space_Info.getAttribute("cacheuptime")) Then
UpTime = cdate(Space_Info.getAttribute("cacheuptime"))
Else
UpTime = cdate(Space_Info.getAttribute("updatetime"))
End If
If Datediff("n",UpTime,Now())<Int(Space_Info.getAttribute("set_5")) Then
LoadCache_Data = True
End If
End If
End If
End If
End Function
'保存首页缓存
Public Sub SaveCache_Data()
If Sid=0 Then Exit Sub
If ReCache=1 and Act="" Then
Space_Info.setAttribute "cacheuptime",now()
If Admin Then
Dvbbs.Execute("update [Dv_Space_user] Set ownercachedb='"&Dvbbs.Checkstr(XmlDoc.xml)&"',updatetime = "&SqlNowString&" where Userid="&sid)
Else
Dvbbs.Execute("update [Dv_Space_user] Set cachedb='"&Dvbbs.Checkstr(XmlDoc.xml)&"',updatetime = "&SqlNowString&" where Userid="&sid)
End If
'Response.Write "已更新"
End If
'XmlDoc.save Server.MapPath(MyDbPath &"space.xml")
End Sub
'个人空间基本信息
Public Sub LoadUserSpaceData()
Dim Rs,Sql,Node
Dim Setting,i
Sql = "Select Top 1 id,userid,username,title,intro,s_left,s_right,s_center,s_css,s_style,s_path,updatetime,lock,[set],plusdb from [Dv_Space_user] where"
Sql = Sql & " Userid=" & Sid
Set Rs=Dvbbs.Execute(Sql)
If Rs.Eof Then
Set Space_Info = GetDefaultData.cloneNode(True)
Else
Set Node = Dvbbs.RecordsetToxml(rs,"space_info","")
Set Space_Info = Node.documentElement.selectSingleNode("space_info")
End If
Rs.Close
Set Rs = Nothing
Setting = Split(Space_Info.getAttribute("set")&"",",")
If Ubound(Setting)=20 Then
For i=0 to Ubound(Setting)
Space_Info.setAttribute "set_"&i,Setting(i)
Next
Space_Info.removeAttribute "set"
End If
Dim TempXmlDoc
Set TempXmlDoc = Server.CreateObject("msxml2.FreeThreadedDOMDocument"& MsxmlVersion)
If TempXmlDoc.LoadXml(Space_Info.getAttribute("plusdb")) Then
Space_Info.appendChild(TempXmlDoc.DocumentElement.cloneNode(True))
Else
Space_Info.appendChild(TempXmlDoc.createNode(1,"modules",""))
End If
Space_Info.removeAttribute "plusdb"
Set TempXmlDoc = Nothing
SpaceChannal Space_Info,Space_Info.getAttribute("s_left"),"leftchannal"
SpaceChannal Space_Info,Space_Info.getAttribute("s_center"),"mainchannal"
SpaceChannal Space_Info,Space_Info.getAttribute("s_right"),"rightchannal"
Space_Info.setAttribute "skinpath",Space_Skinpath & Space_Info.getAttribute("s_path")
Space_Info.setAttribute "isadmin",Admin
XmlDoc.DocumentElement.appendChild(Space_Info)
End Sub
'建立频道列表
Private Sub SpaceChannal(Node,Arr,Name)
Dim S_channal,i,ChildNode,Childs
If Act<>"" Then
If name="mainchannal" Then
Arr = ""
End If
If (Space_Info.getAttribute("s_style") <>"2" and name="leftchannal") or (Space_Info.getAttribute("s_style") ="2" and name="rightchannal") Then
Arr = "userinfo"
Else
Arr = ""
End If
End If
S_channal = Split(Lcase(Arr),",")
Set ChildNode = XmlDoc.createNode(1,Name,"")
For i=0 to Ubound(S_channal)
Set Childs = XmlDoc.createNode(1,"channals","")
Childs.setAttribute "id",S_channal(i)
ChildNode.appendChild(Childs)
Next
Node.appendChild(ChildNode)
End Sub
Private Function GetDefaultData()
Dim TempXmlDoc,Node
Set TempXmlDoc = Server.CreateObject("msxml2.FreeThreadedDOMDocument"& MsxmlVersion)
If Not TempXmlDoc.Load(Server.MapPath(ScriptPath&"myspace.xml")) Then
Response.Write "Load MySpace default data failse!"
Response.End
End If
Set GetDefaultData = TempXmlDoc.documentElement.selectSingleNode("space_info")
Set TempXmlDoc = Nothing
End Function
'个人空间所属用户基本信息
Public Sub LoadSpaceUserData()
Dim Rs,Sql,Node,ChildNode
Dim Attribute,UserIM,i,UserInfo,UserFace
Sql="Select top 1 UserID,UserName,UserEmail,UserPost,UserTopic,UserFav,UserIsBest,UserSex,UserFace,UserWidth,UserHeight,JoinDate,LastLogin,UserLogins,Lockuser,Userclass,UserGroupID,UserGroup,userWealth,userEP,userCP,UserPower,UserBirthday,UserLastIP,UserDel,UserIsBest,UserHidden,UserMsg,IsChallenge,UserMobile,TitlePic,UserTitle,UserToday,UserMoney,UserTicket,FollowMsgID,Vip_StarTime,Vip_EndTime,Userim,Userinfo,UserSetting,Fav_Boards"
Sql = Sql & " From [Dv_User] Where UserID = " & Sid
Set Rs=Dvbbs.Execute(Sql)
If Rs.Eof Then
Set Space_User = XmlDoc.createNode(1,"space_user","")
Else
Set Node = Dvbbs.RecordsetToxml(rs,"space_user","")
Set Space_User = Node.documentElement.selectSingleNode("space_user")
End If
Rs.Close
Set Rs = Nothing
If Space_User.getAttribute("userface")<>"" Then
If Instr(Space_User.getAttribute("userface"),"|") Then
Space_User.setAttribute "userface",Split(Space_User.getAttribute("userface"),"|")(1)
End If
End If
If Space_User.getAttribute("userim")<>"" Then
UserIM = Split(Space_User.getAttribute("userim"),"|||")
If not IsArray(UserIM) Then ReDim UserIM(6)
Set ChildNode = Space_User.appendChild(XmlDoc.createNode(1,"homepage",""))
ChildNode.text = UserIM(0)
Set ChildNode = Space_User.appendChild(XmlDoc.createNode(1,"qq",""))
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -