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