- qpscanner/cfcs/settings.cfc
- v0.7.3.1
- 3 KB
- 90
1<cfcomponent output="false">
2
3
4 <cffunction name="init" returntype="any" output="false" access="public">
5 <cfargument name="jre" type="jre-utils"/>
6 <cfargument name="ConfigDirectory" type="String"/>
7
8 <cfset Variables.jre = Arguments.jre/>
9
10 <cfset This.ConfigDirectory = Arguments.ConfigDirectory/>
11
12 <cfreturn This/>
13 </cffunction>
14
15
16 <cffunction name="read" returntype="any" output="false" access="public">
17 <cfargument name="ConfigId" type="String"/>
18 <cfargument name="Format" type="String" default="default" />
19 <cfset var Setting = QueryNew("id,label,type,options,value,hint")/>
20 <cfset var Sections = -1/>
21 <cfset var SectionList = -1/>
22 <cfset var CurSection = -1/>
23 <cfset var CurSetting = -1/>
24 <cfset var X = -1/>
25 <cfset var Result = -1/>
26 <cfset var RootConfigFile = This.ConfigDirectory&'/../config.ini' />
27 <cfset var ThisConfigFile = lcase( REreplace( Arguments.ConfigId , '\W+' , '' , 'all' ) ) />
28 <cfset ThisConfigFile = This.ConfigDirectory & '/#Arguments.ConfigId#.ini'/>
29
30 <cfif FileExists( ThisConfigFile )>
31
32 <cfset Sections = getProfileSections( RootConfigFile )/>
33 <cfset SectionList = getProfileString( RootConfigFile ,'Config' , 'keys' )/>
34
35 <cfloop index="CurSection" list="#SectionList#">
36 <cfset X = QueryAddRow(Setting)/>
37 <cfset Setting['Id'][X] = CurSection />
38 <cfloop index="CurSetting" list="#Sections[CurSection]#">
39 <cfset Setting[CurSetting][X] = getProfileString( RootConfigFile , CurSection , CurSetting )/>
40 </cfloop>
41 </cfloop>
42
43 <cfloop query="Setting">
44 <cfset Setting['Value'][CurrentRow] = getProfileString( ThisConfigFile , 'Settings' , Id )/>
45 </cfloop>
46
47
48 <cfswitch expression="#Arguments.Format#">
49 <cfcase value="Struct">
50 <cfset Result = StructNew()/>
51 <cfloop query="Setting">
52 <cfset Result[Id] = Value />
53 </cfloop>
54 <cfreturn Result/>
55 </cfcase>
56 <cfdefaultcase>
57 <cfreturn Setting/>
58 </cfdefaultcase>
59 </cfswitch>
60 <cfelse>
61 <cfthrow
62 message="Invalid Value '#Arguments.ConfigId#' for Argument ConfigId."
63 detail="Cannot find configuration file at '#ConfigFile#'."
64 type="qpscanner.Settings.Read.InvalidArgument.ConfigId"
65 />
66 </cfif>
67 </cffunction>
68
69
70
71 <cffunction name="findHomeDirectory" returntype="String" output="false">
72 <cfset var Result = ""/>
73 <cfset var CurDir = -1/>
74 <cfset var DirList = "{home-directory},/,."/>
75 <cfset var jre = Variables.jre/>
76
77 <cfloop index="CurDir" list="#DirList#">
78 <cfif DirectoryExists( expandPath(CurDir) )>
79 <cfset Result = expandPath( CurDir )/>
80 <cfbreak/>
81 </cfif>
82 </cfloop>
83
84 <cfset Result = jre.replace( Result , '[\\/]+' , '/' , 'all' )/>
85 <cfset Result = jre.replace( Result , '(<!(:))/$' , '' )/>
86
87 <cfreturn Result/>
88 </cffunction>
89
90
91</cfcomponent>