Listing 1
<CFCOMPONENT>

<!--- Initialize variables --->
<CFSET THIS.initialized=FALSE>

<!--- Init user --->
<CFFUNCTION NAME="init"
RETURNTYPE="boolean">
<CFARGUMENT NAME="userid"
TYPE="numeric"
REQUIRED="true">

<!--- Get user --->
<CFQUERY DATASOURCE="dsn"
NAME="userRec">
SELECT *
FROM users
WHERE userid=#userid#
</CFQUERY>

<!--- Check got a user --->
<CFIF userRec.RecordCount IS 1>
<!--- Save user record --->
<CFSET THIS.userRec=userRec>
<!--- Set init flag --->
<CFSET THIS.initialized=TRUE>
</CFIF>

<CFRETURN THIS.initialized>
</CFFUNCTION>


<!--- Get user name --->
<CFFUNCTION NAME="GetFullName"
RETURNTYPE="string">

<!--- Init return variable --->
<CFSET result="">

<!--- Check initialized --->
<CFIF THIS.initialized>
<CFSET result="#Trim(THIS.UserRec.NameFirst#)# 

#Trim(THIS.UserRec.NameLast#)#">
</CFIF>

<CFRETURN result>
</CFFUNCTION>


<!--- Get user email --->
<CFFUNCTION NAME="GetEMail"
RETURNTYPE="string">

<!--- Init return variable --->
<CFSET result="">

<!--- Check initialized --->
<CFIF THIS.initialized>
<CFSET result=Trim(THIS.UserRec.email)>
</CFIF>

<CFRETURN result>
</CFFUNCTION>

</CFCOMPONENT>