Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <cfset variables['instance'] = structNew()>
- <cfset variables.instance["dirdelim"] = "\">
- <cfset variables.instance["RootPath"] = ExpandPath("/")>
- <cffunction name="getMyDirectoryList" output="false" returnType="query">
- <cfargument name="directory" type="string" required="true">
- <cfargument name="filter" type="string" required="false" default="">
- <cfargument name="sort" type="string" required="false" default="">
- <cfargument name="recurse" type="boolean" required="false" default="false">
- <!--- temp vars --->
- <cfargument name="dirInfo" type="query" required="false">
- <cfargument name="thisDir" type="query" required="false" hint="This argument is no longer in use.">
- <!--- more vars --->
- <cfargument name="exclude" type="string" default="">
- <cfset var delim = variables.instance["dirdelim"]>
- <cfset var result = 0>
- <cfset var ScriptName = 0>
- <cfset var isExcluded = false>
- <cfset var exdir = false>
- <cfset var qDir = 0>
- <cfif Right(arguments.directory,1) NEQ delim>
- <cfset arguments.directory = "#arguments.directory##delim#">
- </cfif>
- <cfif NOT StructKeyExists(arguments,"dirInfo")>
- <cfset arguments.dirInfo = QueryNew("attributes,datelastmodified,mode,name,size,type,directory")>
- </cfif>
- <cfdirectory name="qDir" directory="#arguments.directory#" sort="#sort#">
- <cfoutput query="qDir">
- <cfset ScriptName = "/" & ReplaceNoCase(ReplaceNoCase("#arguments.directory##name#",variables.instance.RootPath,""),"\","/","ALL")>
- <cfset isExcluded = false>
- <cfif Len(arguments.exclude) AND type IS "dir">
- <cfloop list="#arguments.exclude#" index="exdir">
- <cfif
- ( ListLen(exdir,"/") EQ 1 AND exdir EQ ListFindNoCase("#ScriptName#/",exdir,"/") )
- OR ( Len(exdir) AND Left(ScriptName,Len(exdir)) EQ exdir )
- OR ( Len(exdir) AND Left(exdir,Len(ScriptName)) EQ ScriptName )
- OR ( exdir EQ name )
- >
- <cfset isExcluded = true>
- </cfif>
- </cfloop>
- </cfif>
- <cfif
- ( Len(filter) EQ 0 OR name CONTAINS filter OR type IS "dir" )
- AND NOT isExcluded
- >
- <cfif Len(filter) EQ 0 OR name CONTAINS filter>
- <cfset QueryAddRow(arguments.dirInfo)>
- <cfset QuerySetCell(arguments.dirInfo,"attributes",attributes)>
- <cfset QuerySetCell(arguments.dirInfo,"datelastmodified",datelastmodified)>
- <cfset QuerySetCell(arguments.dirInfo,"mode",mode)>
- <cfset QuerySetCell(arguments.dirInfo,"name",name)>
- <cfset QuerySetCell(arguments.dirInfo,"size",size)>
- <cfset QuerySetCell(arguments.dirInfo,"type",type)>
- <cfset QuerySetCell(arguments.dirInfo,"directory",Arguments.directory)>
- </cfif>
- <cfif recurse AND type IS "dir">
- <!--- go deep! --->
- <cfset getMyDirectoryList(directory=directory & name,filter=filter,sort=sort,recurse=true,dirInfo=arguments.dirInfo,exclude=exclude)>
- </cfif>
- </cfif>
- </cfoutput>
- <cfreturn arguments.dirInfo>
- </cffunction>
- <cfdump var="#getMyDirectoryList(directory=ExpandPath('/admin/'),filter='.cfm',recurse=true)#">
- <cfabort>
Add Comment
Please, Sign In to add comment