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

Reply via email to