Great Review for TeamworkPM
I'm really delighted with a review of our software, Teamwork Project Manager from about.com!
<cffunction name="translate" returnType="string" output="No">
<cfargument name="ref" type="string" required="yes">
<cfargument name="englishDefault" type="string" required="Yes">
<cfargument name="updateNow" type="boolean" default="no">
<cfargument name="lang" type="string" default="#SESSION.lang#">
<cfset var getLangString = "">
<cfset var insLangString = "">
<!--- Ensure there is a structure for the currency language code --->
<cfif NOT StructKeyExists( APPLICATION.langStrings, ARGUMENTS.lang )>
<cfset APPLICATION.langStrings[ ARGUMENTS.lang ] = StructNew()>
</cfif>
<cfif NOT StructKeyExists( APPLICATION.langStrings[ ARGUMENTS.lang ], ref )>
<cfset ARGUMENTS.updateNow = true>
</cfif>
<cfif ARGUMENTS.updateNow>
<!--- Check to see if the value is in the database --->
<cfquery name="getLangString" datasource="teamworkpm_master">
SELECT languageString
FROM languagestrings
WHERE languageStringRef = <cfqueryparam value="#ref#" cfsqltype="CF_SQL_VARCHAR">
AND languageCode = <cfqueryparam value="#ARGUMENTS.lang#" cfsqltype="CF_SQL_VARCHAR">
</cfquery>
<cfif getLangString.recordCount>
<cfset APPLICATION.langStrings[ ARGUMENTS.lang ][ ref ] = getLangString.languageString>
<cfquery name="updateLangStringCount" datasource="teamworkpm_master">
UPDATE languagestrings
SET languageStringUsageCount = languageStringUsageCount + 1
WHERE languageStringRef = <cfqueryparam value="#Left(ref,80)#" cfsqltype="CF_SQL_VARCHAR">
AND languageCode = <cfqueryparam value="#ARGUMENTS.lang#" cfsqltype="CF_SQL_VARCHAR">
</cfquery>
<cfelse>
<!--- Store the value in the field --->
<cfset APPLICATION.langStrings[ ARGUMENTS.lang ][ ref ] = ARGUMENTS.englishDefault>
<!--- Insert the default english value into the database --->
<cfquery name="insLangString" datasource="teamworkpm_master">
INSERT INTO languagestrings( languageStringRef, languageCode,
languageString, languageStringUsageCount )
VALUES( <cfqueryparam value="#ARGUMENTS.ref#" cfsqltype="CF_SQL_VARCHAR">,
<cfqueryparam value="#ARGUMENTS.lang#" cfsqltype="CF_SQL_VARCHAR">,
<cfqueryparam value="#ARGUMENTS.englishDefault#" cfsqltype="CF_SQL_VARCHAR">, 1 )
ON DUPLICATE KEY UPDATE languageString =
<cfqueryparam value="#ARGUMENTS.englishDefault#" cfsqltype="CF_SQL_VARCHAR">
</cfquery>
</cfif>
</cfif>
<cfreturn TRIM(APPLICATION.langStrings[ ARGUMENTS.lang ][ ref ])>
</cffunction>

This is the latest CF9 prototype (codename MoHawk):
The topic is:
How we made it: Teamwork Project Manager - tips for development of highly-scalable web2.0 apps in ColdFusion.

-moz-border-radius: 1em;
border-radius: 1em;

Peter Coppinger aka Topper is a neurotic web monster who spends most of his chaotic life developing ColdFusion web applications when not drinking himself into a stupor and scheming his plans for world dominance.