Go to the documentation of this file.00001 <?php
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00034 class ilInternalLink
00035 {
00042 function _deleteAllLinksOfSource($a_source_type, $a_source_id)
00043 {
00044 global $ilias, $ilDB;
00045
00046 $q = "DELETE FROM int_link WHERE source_type=".$ilDB->quote($a_source_type).
00047 " AND source_id=".$ilDB->quote($a_source_id);
00048 $ilias->db->query($q);
00049 }
00050
00060 function _saveLink($a_source_type, $a_source_id, $a_target_type, $a_target_id, $a_target_inst = 0)
00061 {
00062 global $ilias, $ilDB;
00063
00064 $q = "REPLACE INTO int_link (source_type, source_id, target_type, target_id, target_inst) VALUES".
00065 " (".$ilDB->quote($a_source_type).
00066 ",".$ilDB->quote($a_source_id).
00067 ",".$ilDB->quote($a_target_type).
00068 ",".$ilDB->quote($a_target_id).
00069 ",".$ilDB->quote($a_target_inst).")";
00070 $ilias->db->query($q);
00071 }
00072
00082 function _getSourcesOfTarget($a_target_type, $a_target_id, $a_target_inst)
00083 {
00084 global $ilias, $ilDB;
00085
00086 $q = "SELECT * FROM int_link WHERE ".
00087 "target_type = ".$ilDB->quote($a_target_type)." AND ".
00088 "target_id = ".$ilDB->quote($a_target_id)." AND ".
00089 "target_inst = ".$ilDB->quote($a_target_inst);
00090 $source_set = $ilias->db->query($q);
00091 $sources = array();
00092 while ($source_rec = $source_set->fetchRow(DB_FETCHMODE_ASSOC))
00093 {
00094 $sources[$source_rec["source_type"].":".$source_rec["source_id"]] =
00095 array("type" => $source_rec["source_type"], "id" => $source_rec["source_id"]);
00096 }
00097
00098 return $sources;
00099 }
00100
00109 function _getTargetsOfSource($a_source_type, $a_source_id)
00110 {
00111 global $ilDB;
00112
00113 $q = "SELECT * FROM int_link WHERE ".
00114 "source_type = ".$ilDB->quote($a_source_type)." AND ".
00115 "source_id = ".$ilDB->quote($a_source_id);
00116
00117 $target_set = $ilDB->query($q);
00118 $targets = array();
00119 while ($target_rec = $target_set->fetchRow(DB_FETCHMODE_ASSOC))
00120 {
00121 $targets[$target_rec["target_type"].":".$target_rec["target_id"].":".$target_rec["target_inst"]] =
00122 array("type" => $target_rec["target_type"], "id" => $target_rec["target_id"],
00123 "inst" => $target_rec["target_inst"]);
00124 }
00125
00126 return $targets;
00127 }
00128
00138 function _getIdForImportId($a_type, $a_target)
00139 {
00140 switch($a_type)
00141 {
00142 case "PageObject":
00143 $id = ilLMObject::_getIdForImportId($a_target);
00144 if($id > 0)
00145 {
00146 return "il__pg_".$id;
00147 }
00148 break;
00149
00150 case "StructureObject":
00151 $id = ilLMObject::_getIdForImportId($a_target);
00152 if($id > 0)
00153 {
00154 return "il__st_".$id;
00155 }
00156 break;
00157
00158 case "GlossaryItem":
00159 $id = ilGlossaryTerm::_getIdForImportId($a_target);
00160 if($id > 0)
00161 {
00162 return "il__git_".$id;
00163 }
00164 break;
00165
00166 case "MediaObject":
00167 $id = ilObjMediaObject::_getIdForImportId($a_target);
00168 if($id > 0)
00169 {
00170 return "il__mob_".$id;
00171 }
00172 break;
00173
00174 case "RepositoryItem":
00175 $id = ilObject::_getIdForImportId($a_target);
00176
00177
00178
00179 if($id > 0)
00180 {
00181 $refs = ilObject::_getAllReferences($id);
00182
00183 foreach ($refs as $ref)
00184 {
00185 return "il__obj_".$ref;
00186 }
00187 }
00188 break;
00189
00190 }
00191 return false;
00192 }
00193
00203 function _exists($a_type, $a_target)
00204 {
00205 global $tree;
00206
00207 switch($a_type)
00208 {
00209 case "PageObject":
00210 case "StructureObject":
00211 return ilLMObject::_exists($a_target);
00212 break;
00213
00214 case "GlossaryItem":
00215 return ilGlossaryTerm::_exists($a_target);
00216 break;
00217
00218 case "MediaObject":
00219 return ilObjMediaObject::_exists($a_target);
00220 break;
00221
00222 case "RepositoryItem":
00223 if (is_int(strpos($a_target, "_")))
00224 {
00225 $ref_id = ilInternalLink::_extractObjIdOfTarget($a_target);
00226 return $tree->isInTree($ref_id);
00227 }
00228 break;
00229 }
00230 return false;
00231 }
00232
00233
00239 function _extractInstOfTarget($a_target)
00240 {
00241 if (!is_int(strpos($a_target, "__")))
00242 {
00243 $target = explode("_", $a_target);
00244 if ($target[1] > 0)
00245 {
00246 return $target[1];
00247 }
00248 }
00249 return false;
00250 }
00251
00257 function _removeInstFromTarget($a_target)
00258 {
00259 if (!is_int(strpos($a_target, "__")))
00260 {
00261 $target = explode("_", $a_target);
00262 if ($target[1] > 0)
00263 {
00264 return "il__".$target[2]."_".$target[3];
00265 }
00266 }
00267 return false;
00268 }
00269
00275 function _extractObjIdOfTarget($a_target)
00276 {
00277 $target = explode("_", $a_target);
00278 return $target[count($target) - 1];
00279 }
00280
00286 function _extractTypeOfTarget($a_target)
00287 {
00288 $target = explode("_", $a_target);
00289 return $target[count($target) - 2];
00290 }
00291 }
00292 ?>