1. <!--- readSearch() --->
  2. <cffunction name="readSearch" returntype="struct" output="false" access="package" hint="Returns data that match the specified criteria">
  3. <cfargument name="SearchCrit" type="struct" required="true" hint="A structure representing the search criteria" />
  4. <cfargument name="StartRow" type="numeric" required="true" hint="First row of results" />
  5. <cfargument name="EndRow" type="numeric" required="true" hint="Last row of results" />
  6. <cfset var returnStruct = StructNew() />
  7. <cfset var SqlCols = '' />
  8. <cfset var SqlTableClause = '' />
  9. <cfset var SqlWhere = '' />
  10. <cfset var SqlOrderBy = '' />
  11. <!--- columns --->
  12. <cfsavecontent variable="SqlCols">
  13. ID, Name, Active, Caption, Testimony, StampReceived, Stamp </cfsavecontent>
  14. <!--- tables --->
  15. <cfsavecontent variable="SqlTableClause">
  16. Testimonials
  17. </cfsavecontent>
  18. <!--- conditions --->
  19. <cfoutput>
  20. <cfsavecontent variable="SqlWhere">
  21. ID > 0
  22. <cfif Len(Arguments.SearchCrit.Name)>
  23. AND name LIKE '%#Arguments.SearchCrit.Name#%'
  24. </cfif>
  25. <cfif Len(Arguments.SearchCrit.Testimony)>
  26. AND Testimony LIKE '%#Arguments.SearchCrit.Testimony#%'
  27. </cfif>
  28. AND active = #Arguments.SearchCrit.Active#
  29. </cfsavecontent>
  30. </cfoutput>
  31. <!--- order --->
  32. <!--- TODO: update to support multiple ORDER BY columns --->
  33. <cfoutput>
  34. <cfsavecontent variable="SqlOrderBy">
  35. <cfif Len(Arguments.SearchCrit.OrderBy)>
  36. #Arguments.SearchCrit.OrderBy#
  37. <cfif Len(Arguments.SearchCrit.OrderDirection)>
  38. #Arguments.SearchCrit.OrderDirection#
  39. </cfif>
  40. </cfif>
  41. </cfsavecontent>
  42. </cfoutput>
  43. <cfstoredproc procedure="sproc_paging" datasource="#Application.DSN.LDC#">
  44. <cfprocparam type="In" cfsqltype="CF_SQL_VARCHAR" dbvarname="Columns" value="#Trim(SqlCols)#">
  45. <cfprocparam type="In" cfsqltype="CF_SQL_VARCHAR" dbvarname="TableClause" value="#Trim(SqlTableClause)#">
  46. <cfprocparam type="In" cfsqltype="CF_SQL_INTEGER" dbvarname="StartRow" value="#Arguments.StartRow#">
  47. <cfprocparam type="In" cfsqltype="CF_SQL_INTEGER" dbvarname="EndRow" value="#Arguments.EndRow#">
  48. <cfprocparam type="In" cfsqltype="CF_SQL_VARCHAR" dbvarname="SqlWhere" value="#Trim(SqlWhere)#">
  49. <cfprocparam type="In" cfsqltype="CF_SQL_VARCHAR" dbvarname="SqlOrderBy" value="#Trim(SqlOrderBy)#">
  50. <!--- return data + count --->
  51. <cfprocresult name="rs" resultset="1">
  52. <cfprocresult name="recordcount" resultset="2">
  53. </cfstoredproc>
  54. <cfset returnStruct.rs = rs />
  55. <cfset returnStruct.rc = recordcount.countAll />
  56. <cfreturn returnStruct />
  57. </cffunction>