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