ILIAS  release_4-3 Revision
 All Data Structures Namespaces Files Functions Variables Groups Pages
class.ilTaxNodeAssignment.php
Go to the documentation of this file.
1 <?php
2 
3 /* Copyright (c) 1998-2012 ILIAS open source, Extended GPL, see docs/LICENSE */
4 
5 include_once("./Services/Taxonomy/exceptions/class.ilTaxonomyException.php");
6 
18 {
26  function __construct($a_component_id, $a_item_type, $a_tax_id)
27  {
28  if ($a_component_id == "")
29  {
30  throw new ilTaxonomyException('No component ID passed to ilTaxNodeAssignment.');
31  }
32 
33  if ($a_item_type == "")
34  {
35  throw new ilTaxonomyException('No item type passed to ilTaxNodeAssignment.');
36  }
37 
38  if ((int) $a_tax_id == 0)
39  {
40  throw new ilTaxonomyException('No taxonomy ID passed to ilTaxNodeAssignment.');
41  }
42 
43  $this->setComponentId($a_component_id);
44  $this->setItemType($a_item_type);
45  $this->setTaxonomyId($a_tax_id);
46  }
47 
53  protected function setComponentId($a_val)
54  {
55  $this->component_id = $a_val;
56  }
57 
63  public function getComponentId()
64  {
65  return $this->component_id;
66  }
67 
73  protected function setItemType($a_val)
74  {
75  $this->item_type = $a_val;
76  }
77 
83  public function getItemType()
84  {
85  return $this->item_type;
86  }
87 
93  protected function setTaxonomyId($a_val)
94  {
95  $this->taxonomy_id = $a_val;
96  }
97 
103  public function getTaxonomyId()
104  {
105  return $this->taxonomy_id;
106  }
107 
114  final public function getAssignmentsOfNode($a_node_id)
115  {
116  global $ilDB;
117 
118  if (is_array($a_node_id))
119  {
120  $set = $ilDB->query("SELECT * FROM tax_node_assignment ".
121  " WHERE ".$ilDB->in("node_id", $a_node_id, false, "integer")
122  );
123  }
124  else
125  {
126  $set = $ilDB->query("SELECT * FROM tax_node_assignment ".
127  " WHERE node_id = ".$ilDB->quote($a_node_id, "integer")
128  );
129  }
130  $ass = array();
131  while ($rec = $ilDB->fetchAssoc($set))
132  {
133  $ass[] = $rec;
134  }
135 
136  return $ass;
137  }
138 
145  final public function getAssignmentsOfItem($a_item_id)
146  {
147  global $ilDB;
148 
149  $set = $ilDB->query("SELECT * FROM tax_node_assignment ".
150  " WHERE component = ".$ilDB->quote($this->getComponentId(), "text").
151  " AND item_type = ".$ilDB->quote($this->getItemType(), "text").
152  " AND item_id = ".$ilDB->quote($a_item_id, "integer")
153  );
154  $ass = array();
155  while ($rec = $ilDB->fetchAssoc($set))
156  {
157  $ass[] = $rec;
158  }
159  return $ass;
160  }
161 
168  function addAssignment($a_node_id, $a_item_id)
169  {
170  global $ilDB;
171 
172  // nothing to do, if not both IDs are greater 0
173  if ((int) $a_node_id == 0 || (int) $a_item_id == 0)
174  {
175  return;
176  }
177 
178  // sanity check: does the node belong to the given taxonomy?
179  $set = $ilDB->query("SELECT tax_tree_id FROM tax_tree ".
180  " WHERE child = ".$ilDB->quote($a_node_id, "integer")
181  );
182  $rec = $ilDB->fetchAssoc($set);
183  if ($rec["tax_tree_id"] != $this->getTaxonomyId())
184  {
185  throw new ilTaxonomyException('addAssignment: Node ID does not belong to current taxonomy.');
186  }
187 
188  $ilDB->replace("tax_node_assignment",
189  array(
190  "node_id" => array("integer", $a_node_id),
191  "component" => array("text", $this->getComponentId()),
192  "item_type" => array("text", $this->getItemType()),
193  "item_id" => array("integer", $a_item_id)
194  ),
195  array()
196  );
197  }
198 
204  function deleteAssignmentsOfItem($a_item_id)
205  {
206  global $ilDB;
207 
208  $ilDB->manipulate("DELETE FROM tax_node_assignment WHERE ".
209  " component = ".$ilDB->quote($this->getComponentId(), "text").
210  " AND item_type = ".$ilDB->quote($this->getItemType(), "text").
211  " AND item_id = ".$ilDB->quote($a_item_id, "integer")
212  );
213  }
214 
220  static function deleteAssignmentsOfNode($a_node_id)
221  {
222  global $ilDB;
223 
224  $ilDB->manipulate("DELETE FROM tax_node_assignment WHERE ".
225  " node_id = ".$ilDB->quote($a_node_id, "integer"));
226  }
227 
228 }
229 
230 ?>