ILIAS  Release_4_2_x_branch Revision 61807
 All Data Structures Namespaces Files Functions Variables Groups Pages
class.ilSettingsTemplate.php
Go to the documentation of this file.
1 <?php
2 /* Copyright (c) 1998-2010 ILIAS open source, Extended GPL, see docs/LICENSE */
3 
12 {
13  private $id;
14  private $type;
15  private $title;
16  private $description;
17  private $setting = array();
18  private $hidden_tab = array();
19 
24  private $config;
25 
31  function __construct($a_id = 0, $config = null)
32  {
33  if ($a_id > 0)
34  {
35  if ($config)
36  $this->setConfig($config);
37  $this->setId($a_id);
38  $this->read();
39  }
40  }
41 
47  function setId($a_val)
48  {
49  $this->id = $a_val;
50  }
51 
57  function getId()
58  {
59  return $this->id;
60  }
61 
67  function setTitle($a_val)
68  {
69  $this->title = $a_val;
70  }
71 
77  function getTitle()
78  {
79  return $this->title;
80  }
81 
87  public function setType($a_val)
88  {
89  $this->type = $a_val;
90  }
91 
97  public function getType()
98  {
99  return $this->type;
100  }
101 
107  public function setDescription($a_val)
108  {
109  $this->description = $a_val;
110  }
111 
117  public function getDescription()
118  {
119  return $this->description;
120  }
121 
129  function setSetting($a_setting, $a_value, $a_hide = false)
130  {
131  if ($this->getConfig()) {
132  $settings = $this->getConfig()->getSettings();
133 
134  if ($settings[$a_setting]['type'] == ilSettingsTemplateConfig::CHECKBOX) {
135  if (is_array($a_value))
136  $a_value = serialize($a_value);
137  else
138  $a_value = unserialize($a_value);
139  }
140  }
141 
142  $this->setting[$a_setting] = array(
143  "value" => $a_value,
144  "hide" => $a_hide
145  );
146  }
147 
153  function removeSetting($a_setting)
154  {
155  unset($this->setting[$a_setting]);
156  }
157 
161  function removeAllSettings()
162  {
163  $this->setting = array();
164  }
165 
169  function getSettings()
170  {
171  return $this->setting;
172  }
173 
180  function addHiddenTab($a_tab_id)
181  {
182  $this->hidden_tab[$a_tab_id] = $a_tab_id;
183  }
184 
189  {
190  $this->hidden_tab = array();
191  }
192 
196  function getHiddenTabs()
197  {
198  return $this->hidden_tab;
199  }
200 
207  public function getConfig() {
208  return $this->config;
209  }
210 
217  $this->config = $config;
218  }
219 
220 
227  function read()
228  {
229  global $ilDB;
230 
231  // read template
232  $set = $ilDB->query("SELECT * FROM adm_settings_template WHERE ".
233  " id = ".$ilDB->quote($this->getId(), "integer")
234  );
235  $rec = $ilDB->fetchAssoc($set);
236  $this->setTitle($rec["title"]);
237  $this->setType($rec["type"]);
238  $this->setDescription($rec["description"]);
239 
240  // read template setttings
241  $set = $ilDB->query("SELECT * FROM adm_set_templ_value WHERE ".
242  " template_id = ".$ilDB->quote($this->getId(), "integer")
243  );
244  while ($rec = $ilDB->fetchAssoc($set))
245  {
246  $this->setSetting($rec["setting"],
247  $rec["value"], $rec["hide"]);
248  }
249 
250  // read hidden tabs
251  $set = $ilDB->query("SELECT * FROM adm_set_templ_hide_tab WHERE ".
252  " template_id = ".$ilDB->quote($this->getId(), "integer")
253  );
254  while ($rec = $ilDB->fetchAssoc($set))
255  {
256  $this->addHiddenTab($rec["tab_id"]);
257  }
258  }
259 
263  function create()
264  {
265  global $ilDB;
266 
267  $this->setId($ilDB->nextId("adm_settings_template"));
268 
269  // write template
270  $ilDB->insert("adm_settings_template", array(
271  "id" => array("integer", $this->getId()),
272  "title" => array("text", $this->getTitle()),
273  "type" => array("text", $this->getType()),
274  "description" => array("clob", $this->getDescription())
275  ));
276 
277  // write settings
278  $this->insertSettings();
279 
280  // write hidden tabs
281  $this->insertHiddenTabs();
282  }
283 
287  public function update()
288  {
289  global $ilDB;
290 
291  // update template
292  $ilDB->update("adm_settings_template", array(
293  "title" => array("text", $this->getTitle()),
294  "type" => array("text", $this->getType()),
295  "description" => array("clob", $this->getDescription())
296  ), array(
297  "id" => array("integer", $this->getId()),
298  ));
299 
300  // delete settings and hidden tabs
301  $ilDB->manipulate("DELETE FROM adm_set_templ_value WHERE "
302  ." template_id = ".$ilDB->quote($this->getId(), "integer")
303  );
304  $ilDB->manipulate("DELETE FROM adm_set_templ_hide_tab WHERE "
305  ." template_id = ".$ilDB->quote($this->getId(), "integer")
306  );
307 
308  // insert settings and hidden tabs
309  $this->insertSettings();
310  $this->insertHiddenTabs();
311 
312  }
313 
317  private function insertSettings()
318  {
319  global $ilDB;
320 
321  foreach ($this->getSettings() as $s => $set)
322  {
323  $ilDB->manipulate("INSERT INTO adm_set_templ_value ".
324  "(template_id, setting, value, hide) VALUES (".
325  $ilDB->quote($this->getId(), "integer").",".
326  $ilDB->quote($s, "text").",".
327  $ilDB->quote($set["value"], "text").",".
328  $ilDB->quote($set["hide"], "integer").
329  ")");
330  }
331  }
332 
336  function insertHiddenTabs()
337  {
338  global $ilDB;
339 
340  foreach ($this->getHiddenTabs() as $tab_id)
341  {
342  $ilDB->manipulate("INSERT INTO adm_set_templ_hide_tab ".
343  "(template_id, tab_id) VALUES (".
344  $ilDB->quote($this->getId(), "integer").",".
345  $ilDB->quote($tab_id, "text").
346  ")");
347  }
348  }
349 
353  function delete()
354  {
355  global $ilDB;
356 
357  $ilDB->manipulate("DELETE FROM adm_settings_template WHERE "
358  ." id = ".$ilDB->quote($this->getId(), "integer")
359  );
360  $ilDB->manipulate("DELETE FROM adm_set_templ_value WHERE "
361  ." template_id = ".$ilDB->quote($this->getId(), "integer")
362  );
363  $ilDB->manipulate("DELETE FROM adm_set_templ_hide_tab WHERE "
364  ." template_id = ".$ilDB->quote($this->getId(), "integer")
365  );
366  }
367 
373  static function getAllSettingsTemplates($a_type)
374  {
375  global $ilDB;
376 
377  $set = $ilDB->query("SELECT * FROM adm_settings_template ".
378  " WHERE type = ".$ilDB->quote($a_type, "text").
379  " ORDER BY title");
380 
381  $settings_template = array();
382  while ($rec = $ilDB->fetchAssoc($set))
383  {
384  $settings_template[] = $rec;
385  }
386 
387  return $settings_template;
388  }
389 
396  protected static function lookupProperty($a_id, $a_prop)
397  {
398  global $ilDB;
399 
400  $set = $ilDB->query("SELECT $a_prop FROM adm_settings_template WHERE ".
401  " id = ".$ilDB->quote($a_id, "integer")
402  );
403  $rec = $ilDB->fetchAssoc($set);
404  return $rec[$a_prop];
405  }
406 
413  static function lookupTitle($a_id)
414  {
415  return ilSettingsTemplate::lookupProperty($a_id, "title");
416  }
417 
418 }
419 
420 ?>