File:
0.00.1a/core/Configuration.php (
View as Code)
1: 2: /* -------------------------------------------------------------
3: This file is part of FreeDESK
4:
5: FreeDESK is (C) Copyright 2012 David Cutting
6:
7: FreeDESK is free software: you can redistribute it and/or modify
8: it under the terms of the GNU General Public License as published by
9: the Free Software Foundation, either version 3 of the License, or
10: (at your option) any later version.
11:
12: FreeDESK is distributed in the hope that it will be useful,
13: but WITHOUT ANY WARRANTY; without even the implied warranty of
14: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15: GNU General Public License for more details.
16:
17: You should have received a copy of the GNU General Public License
18: along with FreeDESK. If not, see www.gnu.org/licenses
19:
20: For more information see www.purplepixie.org/freedesk/
21: -------------------------------------------------------------- */
22:
23: /**
24: * Main System-Wide Configuration Class (uses sysconfig table)
25: **/
26: class Configuration
27: {
28: /**
29: * Configuration items
30: **/
31: private $items = array();
32: /**
33: * FreeDESK instance
34: **/
35: private $DESK = null;
36:
37: /**
38: * Constructor
39: **/
40: function Configuration(&$freeDESK)
41: {
42: $this->DESK = &$freeDESK;
43: $this->DESK->PluginManager->Register(new Plugin(
44: "System-Wide Configuration Engine","0.01","Core" ));
45: }
46:
47: /**
48: * Load Configuration
49: * @return bool Returns a true on success or a false on failure
50: **/
51: function Load()
52: {
53: $q = "SELECT * FROM ".$this->DESK->Database->Table("sysconfig");
54: $r = $this->DESK->Database->Query($q);
55: while ($i = $this->DESK->Database->FetchAssoc($r))
56: {
57: $this->items[$i['sc_option']] = $i['sc_value'];
58: }
59: $error = $this->DESK->Database->Error();
60: $this->DESK->Database->Free($r);
61:
62: if (!$error) return true;
63: return false;
64: }
65:
66: /**
67: * Get a configuration item
68: * @param string $name Configuration option
69: * @param string $default Default return if not found (optional, default "")
70: * @return string Option value or default if not found
71: **/
72: function Get($name, $default="")
73: {
74: if (!isset($this->items[$name]))
75: return $default;
76: else
77: return $this->items[$name];
78: }
79:
80: /**
81: * Get all configuration items
82: * @return array Array of all CIs
83: **/
84: function GetAll()
85: {
86: return $this->items;
87: }
88:
89: /**
90: * Set a configuration item (no security check in here)
91: * @param string $name Configuration option
92: * @param string $value Option value
93: * @param bool $persist Persistant (saved to database), optional default=true
94: * @return bool Returns flag to show if successfully set (or database error)
95: **/
96: function Set($name, $value, $persist=true)
97: {
98: $items[$name]=$value;
99:
100: if ($persist)
101: {
102: $q="SELECT * FROM ".$this->DESK->Database->Table("sysconfig")." WHERE ";
103: $q.=$this->DESK->Database->Field("sc_option")."=\"".$this->DESK->Database->Safe($name)."\"";
104: $r=$this->DESK->Database->Query($q);
105: $count=$this->DESK->Database->NumRows($r);
106: $this->DESK->Database->Free($r);
107: if ($count>0)
108: {
109: // Already exists in database
110: $q="UPDATE ".$this->DESK->Database->Table("sysconfig")." SET ";
111: $q.=$this->DESK->Database->Field("sc_value")."=\"";
112: $q.=$this->DESK->Database->Safe($value)."\" WHERE ".$this->DESK->Database->Field("sc_option")."=";
113: $q.="\"".$this->DESK->Database->Safe($name)."\"";
114: }
115: else
116: {
117: // New Entry
118: $q="INSERT INTO ".$this->DESK->Database->Table("sysconfig")."(".$this->DESK->Database->Field("sc_option").",";
119: $q.=$this->DESK->Database->Field("sc_value").") VALUES(\"".$this->DESK->Database->Safe($name)."\",";
120: $q.="\"".$this->DESK->Database->Safe($value)."\")";
121: }
122: $this->DESK->Database->Query($q);
123: if ($this->DESK->Database->Error()) return false;
124: }
125: return true;
126: }
127:
128: /**
129: * Delete a configuration item (no security check in here)
130: * @param string $name Configuration option
131: **/
132: function Delete($name)
133: {
134: $q="DELETE FROM ".$this->DESK->Database->Table("sysconfig")." WHERE ".$this->DESK->Database->Field("sc_option")."=\"";
135: $q.=$this->DESK->Database->Safe($name)."\"";
136: $this->DESK->Database->Query($q);
137: unset($this->items[$name]);
138: }
139:
140:
141: }
142:
143: ?>
144: