Guest User

Untitled

a guest
Sep 15th, 2018
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <cfset variables['instance'] = structNew()>
  2. <cfset variables.instance["dirdelim"] = "\">
  3. <cfset variables.instance["RootPath"] = ExpandPath("/")>
  4.  
  5. <cffunction name="getMyDirectoryList" output="false" returnType="query">
  6.     <cfargument name="directory" type="string" required="true">
  7.     <cfargument name="filter" type="string" required="false" default="">
  8.     <cfargument name="sort" type="string" required="false" default="">
  9.     <cfargument name="recurse" type="boolean" required="false" default="false">
  10.     <!--- temp vars --->
  11.     <cfargument name="dirInfo" type="query" required="false">
  12.     <cfargument name="thisDir" type="query" required="false" hint="This argument is no longer in use.">
  13.     <!--- more vars --->
  14.     <cfargument name="exclude" type="string" default="">
  15.    
  16.    
  17.     <cfset var delim = variables.instance["dirdelim"]>
  18.     <cfset var result = 0>
  19.     <cfset var ScriptName = 0>
  20.     <cfset var isExcluded = false>
  21.     <cfset var exdir = false>
  22.     <cfset var qDir = 0>
  23.    
  24.     <cfif Right(arguments.directory,1) NEQ delim>
  25.         <cfset arguments.directory = "#arguments.directory##delim#">
  26.     </cfif>
  27.    
  28.     <cfif NOT StructKeyExists(arguments,"dirInfo")>
  29.         <cfset arguments.dirInfo = QueryNew("attributes,datelastmodified,mode,name,size,type,directory")>
  30.     </cfif>
  31.    
  32.     <cfdirectory name="qDir" directory="#arguments.directory#" sort="#sort#">
  33.    
  34.     <cfoutput query="qDir">
  35.         <cfset ScriptName = "/" & ReplaceNoCase(ReplaceNoCase("#arguments.directory##name#",variables.instance.RootPath,""),"\","/","ALL")>
  36.         <cfset isExcluded = false>
  37.        
  38.         <cfif Len(arguments.exclude) AND type IS "dir">
  39.             <cfloop list="#arguments.exclude#" index="exdir">
  40.                 <cfif
  41.                         ( ListLen(exdir,"/") EQ 1 AND exdir EQ ListFindNoCase("#ScriptName#/",exdir,"/") )
  42.                     OR  ( Len(exdir) AND Left(ScriptName,Len(exdir)) EQ exdir )
  43.                     OR  ( Len(exdir) AND Left(exdir,Len(ScriptName)) EQ ScriptName )
  44.                     OR  ( exdir EQ name )
  45.                 >
  46.                     <cfset isExcluded = true>
  47.                 </cfif>
  48.             </cfloop>
  49.         </cfif>
  50.         <cfif
  51.                 ( Len(filter) EQ 0 OR name CONTAINS filter OR type IS "dir" )
  52.             AND NOT isExcluded
  53.         >
  54.             <cfif Len(filter) EQ 0 OR name CONTAINS filter>
  55.                 <cfset QueryAddRow(arguments.dirInfo)>
  56.                 <cfset QuerySetCell(arguments.dirInfo,"attributes",attributes)>
  57.                 <cfset QuerySetCell(arguments.dirInfo,"datelastmodified",datelastmodified)>
  58.                 <cfset QuerySetCell(arguments.dirInfo,"mode",mode)>
  59.                 <cfset QuerySetCell(arguments.dirInfo,"name",name)>
  60.                 <cfset QuerySetCell(arguments.dirInfo,"size",size)>
  61.                 <cfset QuerySetCell(arguments.dirInfo,"type",type)>
  62.                 <cfset QuerySetCell(arguments.dirInfo,"directory",Arguments.directory)>
  63.             </cfif>
  64.             <cfif recurse AND type IS "dir">
  65.                 <!--- go deep! --->
  66.                 <cfset getMyDirectoryList(directory=directory & name,filter=filter,sort=sort,recurse=true,dirInfo=arguments.dirInfo,exclude=exclude)>
  67.             </cfif>
  68.         </cfif>
  69.     </cfoutput>
  70.    
  71.     <cfreturn arguments.dirInfo>
  72. </cffunction>
  73. <cfdump var="#getMyDirectoryList(directory=ExpandPath('/admin/'),filter='.cfm',recurse=true)#">
  74. <cfabort>
Add Comment
Please, Sign In to add comment