What i'm trying to do is to migrate my existing Application.cfm to
Application.cfc in order to use the OnSessionEnd method since i need to delete
records from my database when the user session end.
Here's my Application.cfm:
<cfapplication name="thermopak"
sessionmanagement="yes"
sessiontimeout="#CreateTimeSpan(0,0,30,0)#"
clientmanagement="yes">
<cflock timeout="10" scope="APPLICATION" type="EXCLUSIVE">
<cfif NOT isDefined("Application.UsersInfo")>
<cfset Application.UsersInfo = StructNew()>
</cfif>
</cflock>
<cflock name="#CreateUUID()#" timeout="15" type="EXCLUSIVE">
<cfset user_cfid = Evaluate(CFID)>
<cfset user_time = Now()>
</cflock>
<cflock scope="APPLICATION" type="EXCLUSIVE" timeout="15">
<cfif NOT StructKeyExists(Application.UsersInfo, user_cfid)>
<cfset temp = StructInsert(Application.UsersInfo, user_cfid, user_time)>
</cfif>
</cflock>
<cflock scope="APPLICATION" type="EXCLUSIVE" timeout="15">
<cfloop collection="#Application.UsersInfo#" item="itmUser">
<cfif Evaluate(DateDiff("n", StructFind(Application.UsersInfo, itmUser),
Now())) GT 10>
<cfset StructDelete(Application.UsersInfo, itmUser)>
</cfif>
</cfloop>
</cflock>
<cfif NOT IsDefined("session.visitor_id")>
<cfquery name="addvisitor" datasource="thermopak">
insert into
visitors(CFID, CFTOKEN)
values(#CFID#,'#CFTOKEN#')
</cfquery>
<cfquery name="getvisitorid" datasource="thermopak" maxrows="1">
select * from
visitors
order by visitor_id desc
</cfquery>
<cfset session.visitor_id = getvisitorid.visitor_id>
</cfif>
Here's my Application.cfc (not working):
<cfcomponent>
<cfscript>
this.name = "thermopak";
this.clientmanagement= "yes";
this.sessionmanagement = "yes";
this.sessiontimeout = createTimeSpan(0,0,30,0);
</cfscript>
<cffunction name="onApplicationStart" output="false">
<cfif NOT IsDefined("session.visitor_id")>
<cfquery name="addvisitor" datasource="thermopak">
insert into
visitors(CFID, CFTOKEN)
values(#CFID#,'#CFTOKEN#')
</cfquery>
<cfquery name="getvisitorid" datasource="thermopak" maxrows="1">
select * from
visitors
order by visitor_id desc
</cfquery>
<cfset session.visitor_id = getvisitorid.visitor_id>
</cfif>
</cffunction>
<cffunction name="onSessionEnd" output="false">
<cfargument name = "sessionScope" required=true/>
<cfargument name = "applicationScope" required=true/>
<cfquery name="DeleteCartItems" datasource="thermopak">
delete *
from webcart
where visitor_id = #session.visitor_id#
</cfquery>
<cfquery name="DeleteVisitors" datasource="thermopak">
delete *
from visitors
where visitor_id = #session.visitor_id#
</cfquery>
</cffunction>
</cfcomponent>
As you can see i added the OnSessionEnd method, i think the syntax is ok but if
not i would appreciate someone to let me know about it. The major problem is
that part of code:
<cffunction name="onApplicationStart" output="false">
<cfif NOT IsDefined("session.visitor_id")>
<cfquery name="addvisitor" datasource="thermopak">
insert into
visitors(CFID, CFTOKEN)
values(#CFID#,'#CFTOKEN#')
</cfquery>
<cfquery name="getvisitorid" datasource="thermopak" maxrows="1">
select * from
visitors
order by visitor_id desc
</cfquery>
<cfset session.visitor_id = getvisitorid.visitor_id>
</cfif>
</cffunction>
It doesn't seems to work at all, even if the session.visitor_id is undefined,
but in my Application.cfm it works may be i'm using the wrong method but i'm
not recieving any error or anything. Also i didn't include that part of code
found in my Application.cfm file since i don't know in wich method to put it or
if the syntax is correct:
<cflock timeout="10" scope="APPLICATION" type="EXCLUSIVE">
<cfif NOT isDefined("Application.UsersInfo")>
<cfset Application.UsersInfo = StructNew()>
</cfif>
</cflock>
<cflock name="#CreateUUID()#" timeout="15" type="EXCLUSIVE">
<cfset user_cfid = Evaluate(CFID)>
<cfset user_time = Now()>
</cflock>
<cflock scope="APPLICATION" type="EXCLUSIVE" timeout="15">
<cfif NOT StructKeyExists(Application.UsersInfo, user_cfid)>
<cfset temp = StructInsert(Application.UsersInfo, user_cfid, user_time)>
</cfif>
</cflock>
<cflock scope="APPLICATION" type="EXCLUSIVE" timeout="15">
<cfloop collection="#Application.UsersInfo#" item="itmUser">
<cfif Evaluate(DateDiff("n", StructFind(Application.UsersInfo, itmUser),
Now())) GT 10>
<cfset StructDelete(Application.UsersInfo, itmUser)>
</cfif>
</cfloop>
</cflock>
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|
Create robust enterprise, web RIAs.
Upgrade & integrate Adobe Coldfusion MX7 with Flex 2
http://ad.doubleclick.net/clk;56760587;14748456;a?http://www.adobe.com/products/coldfusion/flex2/?sdid=LVNU
Archive:
http://www.houseoffusion.com/groups/CF-Newbie/message.cfm/messageid:2366
Subscription: http://www.houseoffusion.com/groups/CF-Newbie/subscribe.cfm
Unsubscribe:
http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=11502.10531.15