ILIAS  release_4-3 Revision
 All Data Structures Namespaces Files Functions Variables Groups Pages
class.ilDataCollectionRecordViewViewdefinition.php
Go to the documentation of this file.
1 <?php
2 
3 /* Copyright (c) 1998-2009 ILIAS open source, Extended GPL, see docs/LICENSE */
4 
5 include_once("./Services/COPage/classes/class.ilPageObject.php");
6 
19 {
20  protected $table_id; // [int]
21  protected $type; // [int] 0 = recordview
22  protected $formtype; // [int] 0 = copage
23 
27  protected static $recordViewCache = array();
28 
29  /*
30  * __construct
31  */
32  public function __construct($a_view_id = 0, $a_table_id = 0)
33  {
34  parent::__construct("dclf", $a_view_id, 0, true);
35 
36  if ($a_table_id != 0)
37  {
38  $this->setTableId($a_table_id);
39  }
40  if($a_view_id != 0)
41  {
42  $this->setId($a_view_id);
43  $this->doRead();
44  }
45 
46  //Default-Values
47  $this->type = 0; // recordview
48  $this->formtype = 0; // copage
49  }
50 
56  public function setId($a_id)
57  {
58  $this->id = $a_id;
59  }
60 
66  public function getId()
67  {
68  return $this->id;
69  }
70 
76  public function setTableId($a_id)
77  {
78  $this->table_id = $a_id;
79  }
80 
86  public function getTableId()
87  {
88  return $this->table_id;
89  }
90 
96  public function getType()
97  {
98  return $this->type;
99  }
100 
106  public function getFormtype()
107  {
108  return $this->formtype;
109  }
110 
111 
115  public function doRead()
116  {
117  global $ilDB;
118 
119  $query = "SELECT * FROM il_dcl_view WHERE table_id = ".$ilDB->quote($this->getId(),"integer");
120  $set = $ilDB->query($query);
121  $rec = $ilDB->fetchAssoc($set);
122 
123  $this->setTableId($rec["table_id"]);
124  $this->type = $rec["type"];
125  $this->formtype = $rec["formtype"];
126  }
127 
128 
132  public function create()
133  {
134  global $ilDB;
135 
136  $id = $ilDB->nextId("il_dcl_view");
137  $this->setId($id);
138 
139  $query = "INSERT INTO il_dcl_view (".
140  "id".
141  ", table_id".
142  ", type".
143  ", formtype".
144  " ) VALUES (".
145  $ilDB->quote($this->getId(), "integer")
146  .",".$ilDB->quote($this->getTableId(), "integer")
147  .",".$ilDB->quote($this->getType(), "integer")
148  .",".$ilDB->quote($this->getFormtype(), "integer")
149  .")";
150  $ilDB->manipulate($query);
151 
152  parent::create();
153  }
154 
161  public function update($a_validate = true, $a_no_history = false)
162  {
163  //TODO
164  //Page-Object updaten
165  //Es wäre auch möglich direkt in der GUI-Klasse ilPageObject aufzurufen. Falls wir aber bei doCreate,
166  //das Page-Object anlegen, fänd ich es sinnvoll, wenn wir auch hier das PageObject updaten würden.
167  //Andernfalls sämtliche Page-Object-Methoden in der GUI-Klasse aufrufen.
168 
169  parent::update($a_validate, $a_no_history);
170 
171  return true;
172  }
173 
182  public static function getIdByTableId($a_table_id)
183  {
184  if (!isset(self::$recordViewCache[$a_table_id])) {
185  global $ilDB;
186  //FIXME die werte bei type und formtype sollten vom constructor genommen werden
187  $set = $ilDB->query("SELECT id FROM il_dcl_view".
188  " WHERE table_id = ".$ilDB->quote($a_table_id, "integer")." AND type = ".$ilDB->quote(0, "integer")." and formtype = ".$ilDB->quote(0, "integer"));
189  $row = $ilDB->fetchAssoc($set);
190  self::$recordViewCache[$a_table_id] = $row['id'];
191  return $row['id'];
192  } else {
193  return self::$recordViewCache[$a_table_id];
194  }
195  }
196 
203  public static function getAvailablePlaceholders($a_table_id, $a_verbose = false)
204  {
205  $all = array();
206 
207  require_once("./Modules/DataCollection/classes/class.ilDataCollectionTable.php");
208  $objTable = ilDataCollectionCache::getTableCache($a_table_id);
209  $fields = $objTable->getFields($a_table_id);
210 
211  foreach($fields as $field)
212  {
213 
214  if(!$a_verbose)
215  {
216  $all[] = "[".$field->getTitle()."]";
217 
218  if($field->getDatatypeId() == ilDataCollectionDatatype::INPUTFORMAT_REFERENCE) {
219  $all[] = '[dclrefln field="'.$field->getTitle().'"][/dclrefln]';
220  }
221 
222  if($field->getDatatypeId() == ilDataCollectionDatatype::INPUTFORMAT_ILIAS_REF) {
223  $all[] = '[dcliln field="'.$field->getTitle().'"][/dcliln]';
224  }
225  }
226  else
227  {
228  $all["[".$field->getTitle()."]"] = $field;
229 
230  if($field->getDatatypeId() == ilDataCollectionDatatype::INPUTFORMAT_REFERENCE) {
231  $all['[dclrefln field="'.$field->getTitle().'"][/dclrefln]'] = $field;
232  }
233 
234  if($field->getDatatypeId() == ilDataCollectionDatatype::INPUTFORMAT_ILIAS_REF) {
235  $all['[dcliln field="'.$field->getTitle().'"][/dcliln]'] = $field;
236  }
237  }
238  }
239 
240  return $all;
241  }
242 }
243 
244 ?>