ILIAS  release_5-0 Revision 5.0.0-1144-gc4397b1f870
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":
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?>
_getIdForImportId($a_import_id)
get current term id for import id (static)
_exists($a_id)
checks wether a glossary term with specified id exists or not
_getIdForImportId($a_import_id)
get current object id for import id (static)
_exists($a_id)
checks wether a lm content object with specified id exists or not
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)
static _getAllReferences($a_id)
get all reference ids of object
static _exists($a_parent_type, $a_id, $a_lang="")
Checks whether page exists.
$ref_id
Definition: sahs_server.php:39
global $ilDB