<cffunction
name="OutputChildren"
access="public"
returntype="void"
output="true"
hint="Outputs the children of a given parent.">
<cfargument
name="Data"
type="query"
required="true"
hint="Family tree data query."
/>
<cfargument
name="ParentID"
type="numeric"
required="false"
default="0"
hint="The ID of the parent who's children we want to output."
/>
<cfset var LOCAL = StructNew() />
<cfquery name="LOCAL.Children" dbtype="query">
SELECT
id,
name
FROM
ARGUMENTS.Data
WHERE
parent_id = <cfqueryparam value="#ARGUMENTS.ParentID#" cfsqltype="cf_sql_integer" />
ORDER BY
name ASC
</cfquery>
<cfif LOCAL.Children.RecordCount>
<ul>
<cfloop query="LOCAL.Children">
<li>
#LOCAL.Children.name#
<cfset OutputChildren(
Data = ARGUMENTS.Data,
ParentID = LOCAL.Children.id
) />
</li>
</cfloop>
</ul>
</cfif>
<cfreturn />
</cffunction>