ILIAS  release_5-0 Revision 5.0.0-1144-gc4397b1f870
All Data Structures Namespaces Files Functions Variables Modules Pages
class.ilInternalLink.php
Go to the documentation of this file.
1 <?php
2 /* Copyright (c) 1998-2009 ILIAS open source, Extended GPL, see docs/LICENSE */
3 
15 {
23  function _deleteAllLinksOfSource($a_source_type, $a_source_id, $a_lang = "-")
24  {
25  global $ilias, $ilDB;
26 
27  $lang_where = "";
28  if ($a_lang != "")
29  {
30  $lang_where = " AND source_lang = ".$ilDB->quote($a_lang, "text");
31  }
32 
33  $q = "DELETE FROM int_link WHERE source_type = ".
34  $ilDB->quote($a_source_type, "text")." AND source_id=".
35  $ilDB->quote((int) $a_source_id, "integer").
36  $lang_where;
37  $ilDB->manipulate($q);
38  }
39 
47  function _deleteAllLinksToTarget($a_target_type, $a_target_id, $a_target_inst = 0)
48  {
49  global $ilias, $ilDB;
50 
51  $ilDB->manipulateF("DELETE FROM int_link WHERE target_type = %s ".
52  " AND target_id = %s AND target_inst = %s ",
53  array("text", "integer", "integer"),
54  array($a_target_type, (int) $a_target_id, (int) $a_target_inst));
55  }
56 
66  function _saveLink($a_source_type, $a_source_id, $a_target_type, $a_target_id, $a_target_inst = 0,
67  $a_source_lang = "-")
68  {
69  global $ilDB;
70 
71  $ilDB->replace("int_link",
72  array(
73  "source_type" => array("text", $a_source_type),
74  "source_id" => array("integer", (int) $a_source_id),
75  "source_lang" => array("text", $a_source_lang),
76  "target_type" => array("text", $a_target_type),
77  "target_id" => array("integer", (int) $a_target_id),
78  "target_inst" => array("integer", (int) $a_target_inst)
79  ),
80  array()
81  );
82  }
83 
93  function _getSourcesOfTarget($a_target_type, $a_target_id, $a_target_inst)
94  {
95  global $ilias, $ilDB;
96 
97  $q = "SELECT * FROM int_link WHERE ".
98  "target_type = ".$ilDB->quote($a_target_type, "text")." AND ".
99  "target_id = ".$ilDB->quote((int) $a_target_id, "integer")." AND ".
100  "target_inst = ".$ilDB->quote((int) $a_target_inst, "integer");
101  $source_set = $ilDB->query($q);
102  $sources = array();
103  while ($source_rec = $ilDB->fetchAssoc($source_set))
104  {
105  $sources[$source_rec["source_type"].":".$source_rec["source_id"].":".$source_rec["source_lang"]] =
106  array("type" => $source_rec["source_type"], "id" => $source_rec["source_id"],
107  "lang" => $source_rec["source_lang"]);
108  }
109 
110  return $sources;
111  }
112 
121  function _getTargetsOfSource($a_source_type, $a_source_id, $a_source_lang = "-")
122  {
123  global $ilDB;
124 
125  $lang_where = "";
126  if ($a_source_lang != "")
127  {
128  $lang_where = " AND source_lang = ".$ilDB->quote($a_source_lang, "text");
129  }
130 
131  $q = "SELECT * FROM int_link WHERE ".
132  "source_type = ".$ilDB->quote($a_source_type, "text")." AND ".
133  "source_id = ".$ilDB->quote((int) $a_source_id, "integer").
134  $lang_where;
135 
136  $target_set = $ilDB->query($q);
137  $targets = array();
138  while ($target_rec = $ilDB->fetchAssoc($target_set))
139  {
140  $targets[$target_rec["target_type"].":".$target_rec["target_id"].":".$target_rec["target_inst"]] =
141  array("type" => $target_rec["target_type"], "id" => $target_rec["target_id"],
142  "inst" => $target_rec["target_inst"]);
143  }
144 
145  return $targets;
146  }
147 
157  function _getIdForImportId($a_type, $a_target)
158  {
159  include_once("./Modules/LearningModule/classes/class.ilLMObject.php");
160  switch($a_type)
161  {
162  case "PageObject":
163  $id = ilLMObject::_getIdForImportId($a_target);
164  if($id > 0)
165  {
166  return "il__pg_".$id;
167  }
168  break;
169 
170  case "StructureObject":
171  $id = ilLMObject::_getIdForImportId($a_target);
172  if($id > 0)
173  {
174  return "il__st_".$id;
175  }
176  break;
177 
178  case "GlossaryItem":
179  $id = ilGlossaryTerm::_getIdForImportId($a_target);
180  if($id > 0)
181  {
182  return "il__git_".$id;
183  }
184  break;
185 
186  case "WikiPage":
187  // no import IDs for wiki pages (yet)
188  //$id = ilGlossaryTerm::_getIdForImportId($a_target);
189  $id = 0;
190  if($id > 0)
191  {
192  return "il__wpage_".$id;
193  }
194  break;
195 
196  case "MediaObject":
197  $id = ilObjMediaObject::_getIdForImportId($a_target);
198  if($id > 0)
199  {
200  return "il__mob_".$id;
201  }
202  break;
203 
204  case "RepositoryItem":
205 
206  $tarr = explode("_", $a_target);
207  $import_id = $a_target;
208 
209  // if a ref id part is given, strip this
210  // since this will not be part of an import id
211  if ($tarr[4] != "")
212  {
213  $import_id = $tarr[0]."_".$tarr[1]."_".$tarr[2]."_".$tarr[3];
214  }
215  if (ilInternalLink::_extractInstOfTarget($a_target) == IL_INST_ID
216  && IL_INST_ID > 0)
217  {
218  // does it have a ref id part?
219  if ($tarr[4] != "")
220  {
221  return "il__obj_".$tarr[4];
222  }
223  }
224 
225  $id = ilObject::_getIdForImportId($import_id);
226 //echo "-$a_target-$id-";
227  // get ref id for object id
228  // (see ilPageObject::insertInstIntoIDs for the export procedure)
229  if($id > 0)
230  {
231  $refs = ilObject::_getAllReferences($id);
232 //var_dump($refs);
233  foreach ($refs as $ref)
234  {
235  return "il__obj_".$ref;
236  }
237  }
238  break;
239 
240  }
241  return false;
242  }
243 
253  function _exists($a_type, $a_target)
254  {
255  global $tree;
256 
257  switch($a_type)
258  {
259  case "PageObject":
260  case "StructureObject":
261  return ilLMObject::_exists($a_target);
262  break;
263 
264  case "GlossaryItem":
265  return ilGlossaryTerm::_exists($a_target);
266  break;
267 
268  case "MediaObject":
269  return ilObjMediaObject::_exists($a_target);
270  break;
271 
272  case "WikiPage":
273  include_once("./Modules/Wiki/classes/class.ilWikiPage.php");
274  return ilWikiPage::_exists("wiki", (int)$a_target);
275  break;
276 
277  case "RepositoryItem":
278  if (is_int(strpos($a_target, "_")))
279  {
281  return $tree->isInTree($ref_id);
282  }
283  break;
284  }
285  return false;
286  }
287 
288 
294  function _extractInstOfTarget($a_target)
295  {
296  if (!is_int(strpos($a_target, "__")))
297  {
298  $target = explode("_", $a_target);
299  if ($target[1] > 0)
300  {
301  return $target[1];
302  }
303  }
304  return false;
305  }
306 
312  function _removeInstFromTarget($a_target)
313  {
314  if (!is_int(strpos($a_target, "__")))
315  {
316  $target = explode("_", $a_target);
317  if ($target[1] > 0)
318  {
319  return "il__".$target[2]."_".$target[3];
320  }
321  }
322  return false;
323  }
324 
330  function _extractObjIdOfTarget($a_target)
331  {
332  $target = explode("_", $a_target);
333  return $target[count($target) - 1];
334  }
335 
341  function _extractTypeOfTarget($a_target)
342  {
343  $target = explode("_", $a_target);
344  return $target[count($target) - 2];
345  }
346 }
347 ?>
_exists($a_id)
checks wether a glossary term with specified id exists or not
_exists($a_id)
checks wether a lm content object with specified id exists or not
_getIdForImportId($a_import_id)
get current object id for import id (static)
static _getAllReferences($a_id)
get all reference ids of object
_getIdForImportId($a_import_id)
get current term id for import id (static)
static _exists($a_parent_type, $a_id, $a_lang="")
Checks whether page exists.
static _exists($a_id)
checks wether a lm content object with specified id exists or not
_getIdForImportId($a_import_id)
get current object id for import id (static)
$ref_id
Definition: sahs_server.php:39
global $ilDB