Private objAPI
Private objCore
Private objXML
Private objUser
Private objStaple
Private objMapping

Private Sub Class_Initialize()
    Set objAPI = New WAPmoAPI
    Set objCore = objAPI.Core
    Set objXML = objCore.XMLParser
    Set objUser = objCore.User
End Sub

Private Sub Class_Terminate()
    Set objUser = Nothing
    Set objXML = Nothing
    Set objCore = Nothing
    Set objAPI = Nothing
End Sub

Public Sub main()
    If Request.ServerVariables("REQUEST_METHOD") = "POST" Then
        Call doPost
    Else
        Call doGet
    End If
End Sub

Private Sub doGet()
    If objCore.CheckStaple() = False Then
        objCore.Redirect "index.asp"
    ElseIf objCore.CheckMapping() = False Then
        objCore.Redirect "index.asp"
    Else
        Set objStaple = objCore.Staple
        Set objMapping = objCore.Mapping
        If objStaple.Item("Category") = STAPLE_LINKING Then
            Call StapleRecord(objStaple)
            objCore.Redirect objStaple.Item("Content")
        ElseIf objMapping.Item("Category") = STAPLE_LINKING Then
            Call StapleRecord(objMapping)
            objCore.Redirect objMapping.Item("Content")
        Else
            objCore.BackColor = objStaple.Item("BackColor")
            If objStaple.Item("BackImage") <> "" Then
                objCore.BackImage = "backimage." & objStaple.Item("BackImage")
            End If
            If objStaple.Item("BackSound") <> "" Then
                objCore.BackSound = "backsound." & objStaple.Item("BackSound")
            End If
            Dim strName
            Dim blnParse
            strName = objStaple.Item("Templet")
            If strName = "" Then strName = objStaple.Item("StapleTemplet")
            If strName = "" Then strName = getIndexTemplet(IIf(objStaple.Item("Follow") = 0, 2, 3))
            If strName = "" Then
                blnParse = False
            Else
                blnParse = objAPI.Parse(strName)
            End If
            If blnParse = False Then
                If objStaple.Item("Follow") = 0 Then
                    objAPI.ParseString "left@@@StapleLogoOrTitle##0||0||0###000000$$$left@@@Staples##|$$$left@@@Contents##3##1##[$(Hit)/$(Time(MM-DD HH24:MI))]##0##|##0$$$left@@@BackHome##1##$(SiteName)"
                Else
                    objAPI.ParseString "left@@@StapleLogoOrTitle##0||0||0###000000$$$left@@@Staples##|$$$left@@@Contents##3##1##[$(Hit)/$(Time(MM-DD HH24:MI))]##0##|##0$$$left@@@MarkerEntry##1$$$left@@@BackTheme##1##$(ThemeName)$$$left@@@BackHome##1##$(SiteName)"
                End If
            End If
            If atol(MyKernel.Config("CacheStaple")) <= 0 Then
                MyKernel.Config("CacheStaple") = 1440
            End If
            objCore.SetExpires "staple", MyKernel.Config("CacheStaple"), False, objStaple.Item("SeqId")
        End If
        Set objMapping = Nothing
        Set objStaple = Nothing
    End If
End Sub

Private Sub doPost()
End Sub

Private Sub StapleRecord(objIn)
    Dim strSQL
    Dim lngId
    strSQL = getLimitSQL(1, "SeqId", T_STAPLE_LOG, "StapleId=$(StapleId) AND Intime>=$(Timeval)", "", "")
    strSQL = Replace(strSQL, "$(StapleId)", objIn.Item("SeqId"))
    strSQL = Replace(strSQL, "$(Timeval)", getTime(Date()))
    lngId = atol(getRecord(strSQL))
    If lngId > 0 Then
        strSQL = "UPDATE $(Table) SET Hit=Hit+1,Outime=$(Timeval) WHERE SeqId=$(SeqId)"
        strSQL = Replace(strSQL, "$(SeqId)", lngId)
    Else
        strSQL = "INSERT INTO $(Table)(StapleId,Title,Hit,Intime,Outime) SELECT SeqId,Title,1,$(Timeval),$(Timeval) FROM $(TableInner) WHERE SeqId=$(SeqId)"
        strSQL = Replace(strSQL, "$(TableInner)", T_STAPLE)
        strSQL = Replace(strSQL, "$(SeqId)", objIn.Item("SeqId"))
    End If
    strSQL = Replace(strSQL, "$(Table)", T_STAPLE_LOG)
    strSQL = Replace(strSQL, "$(Timeval)", getTime(Now()))
    SafeExecute strSQL
    strSQL = "UPDATE $(Table) SET Hit=Hit+1 WHERE SeqId=$(SeqId)"
    strSQL = Replace(strSQL, "$(Table)", T_STAPLE)
    strSQL = Replace(strSQL, "$(SeqId)", objIn.Item("SeqId"))
    SafeExecute strSQL
    UserRecordX "S"
End Sub

Public Sub UserRecordX(ByVal c)
    Dim strSQL
    Dim lngId
    strSQL = getLimitSQL(1, "SeqId", T_USER_LOG, "UserId=$(UserId) AND Intime>=$(Timeval)", "", "")
    strSQL = Replace(strSQL, "$(UserId)", objUser.Item("UserId"))
    strSQL = Replace(strSQL, "$(Timeval)", getTime(Date()))
    lngId = atol(getRecord(strSQL))
    If lngId > 0 Then
        strSQL = "UPDATE $(Table) SET $(Char)Hit=$(Char)Hit+1,Outime=$(Timeval) WHERE SeqId=$(SeqId)"
        strSQL = Replace(strSQL, "$(Char)", c)
        strSQL = Replace(strSQL, "$(SeqId)", lngId)
    Else
        strSQL = "INSERT INTO $(Table) (UserId,SHit,CHit,VHit,DHit,Intime,Outime) VALUES ($(UserId),$(SHit),$(CHit),$(VHit),$(DHit),$(Timeval),$(Timeval))"
        strSQL = Replace(strSQL, "$(UserId)", objUser.Item("UserId"))
        strSQL = Replace(strSQL, "$(SHit)", IIf(c = "S", 1, 0))
        strSQL = Replace(strSQL, "$(CHit)", IIf(c = "C", 1, 0))
        strSQL = Replace(strSQL, "$(VHit)", IIf(c = "V", 1, 0))
        strSQL = Replace(strSQL, "$(DHit)", IIf(c = "D", 1, 0))
    End If
    strSQL = Replace(strSQL, "$(Table)", T_USER_LOG)
    strSQL = Replace(strSQL, "$(Timeval)", getTime(Now()))
    SafeExecute strSQL
End Sub
