1: <?php defined('_JOOS_CORE') or exit();
2:
3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
16: class joosParams extends joosModel
17: {
18: 19: 20:
21: public $id;
22:
23: 24: 25:
26: public $group;
27:
28: 29: 30:
31: public $subgroup;
32:
33: 34: 35:
36: public $object;
37:
38: 39: 40:
41: public $data;
42: private static $_params;
43:
44: 45: 46:
47:
48: public function __construct()
49: {
50: parent::__construct('#__params', 'id');
51: }
52:
53: public function check()
54: {
55: $this->filter();
56:
57: return true;
58: }
59:
60: public function before_insert()
61: {
62: return true;
63: }
64:
65: public function after_insert()
66: {
67: return true;
68: }
69:
70: public function before_update()
71: {
72: return true;
73: }
74:
75: public function after_update()
76: {
77: return true;
78: }
79:
80: public function before_store()
81: {
82: return true;
83: }
84:
85: public function after_store()
86: {
87: return true;
88: }
89:
90: public function before_delete()
91: {
92: return true;
93: }
94:
95: public function get_fieldinfo()
96: {
97: return array('id' => array('name' => 'id', 'editable' => true, 'in_admintable' => true, 'html_table_element' => 'value', 'html_table_element_param' => array(), 'html_edit_element' => 'hidden', 'html_edit_element_param' => array(),), 'group' => array('name' => 'group', 'editable' => true, 'in_admintable' => true, 'html_table_element' => 'value', 'html_table_element_param' => array(), 'html_edit_element' => 'hidden', 'html_edit_element_param' => array(),), 'subgroup' => array('name' => 'subgroup', 'editable' => true, 'in_admintable' => true, 'html_table_element' => 'value', 'html_table_element_param' => array(), 'html_edit_element' => 'hidden', 'html_edit_element_param' => array(),), 'object' => array('name' => 'object', 'editable' => true, 'in_admintable' => true, 'html_table_element' => 'value', 'html_table_element_param' => array(), 'html_edit_element' => 'hidden', 'html_edit_element_param' => array(),), 'data' => array('name' => 'data', 'editable' => true, 'in_admintable' => true, 'html_table_element' => 'value', 'html_table_element_param' => array(), 'html_edit_element' => 'json', 'html_edit_element_param' => array('call_from' => 'joosParams::get_defaults'),),);
98: }
99:
100: public function get_tableinfo()
101: {
102: return array('header_list' => 'Параметры', 'header_new' => 'Создание параметров', 'header_edit' => 'Редактирование параметров');
103: }
104:
105: public static function get_defaults($item)
106: {
107: $file = JPATH_BASE . DS . 'app' . DS . 'components' . DS . $item->group . DS . 'params.' . $item->group . '.php';
108:
109: $model = 'params' . ucfirst($item->group);
110:
111: if (joosFile::exists($file)) {
112: require_once($file);
113:
114: return $model::get_params_scheme('default');
115: } else {
116: return false;
117: }
118: }
119:
120: public static function get_scheme($item)
121: {
122: $group = isset($item->params_group) ? $item->params_group : joosRequest::request('option');
123:
124: $file = 'app' . DS . 'components' . DS . $group . DS . 'params.' . $group . '.php';
125: $file = JPATH_BASE . DS . $file;
126:
127: $model = 'params' . ucfirst($group);
128:
129: if (joosFile::exists($file)) {
130: require_once($file);
131:
132: $params = array('notdefault' => array('name' => 'Использовать уникальные параметры', 'editable' => true, 'html_edit_element' => 'checkbox', 'html_edit_element_param' => array('text' => 'Использовать уникальные параметры',)));
133:
134: $add_params = $model::get_params_scheme($item->params['subgroup']);
135: if ($add_params) {
136: $params += $model::get_params_scheme($item->params['subgroup']);
137:
138: return $params;
139: }
140:
141: return false;
142: } else {
143: return false;
144: }
145: }
146:
147: public static function get_params($group, $subgroup, $object = '')
148: {
149: $params = new self;
150:
151: $params->group = self::$_params['group'] = $group;
152: $params->subgroup = self::$_params['subgroup'] = $subgroup;
153: $params->object = self::$_params['object'] = $object;
154:
155: if ($params->find()) {
156: self::$_params['notdefault'] = 1;
157: self::$_params += json_decode($params->data, true);
158: }
159:
160: return self::$_params;
161: }
162:
163: public function load_params($group, $subgroup, $object = '')
164: {
165: $this->group = self::$_params['group'] = $group;
166: $this->subgroup = self::$_params['subgroup'] = $subgroup;
167: $this->object = self::$_params['object'] = $object;
168:
169: if ($this->find()) {
170: self::$_params['notdefault'] = 1;
171: self::$_params += json_decode($this->data, true);
172: }
173: }
174:
175: public function save_params(array $params, $group, $subgroup, $object = '')
176: {
177: $this->group = $group;
178: $this->subgroup = $subgroup;
179: $this->object = $object;
180:
181: $this->find();
182:
183: if ($_POST['params']['notdefault'] == 1) {
184: array_shift($params);
185: $this->data = json_encode($params);
186: $this->store();
187: } else {
188: $this->delete($this->id);
189: }
190: }
191:
192: public function get($key, $default = false)
193: {
194: return isset(self::$_params[$key]) ? self::$_params[$key] : $default;
195: }
196:
197: }
198: