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
00024
00041 class ilObjectFactory
00042 {
00049 function ObjectIdExists($a_obj_id)
00050 {
00051 global $ilias;
00052
00053 $query = "SELECT * FROM object_data ".
00054 "WHERE obj_id = '".$a_obj_id."'";
00055
00056 $res = $ilias->db->query($query);
00057
00058 return $res->numRows() ? true : false;
00059 }
00060
00067 function getInstanceByObjId($a_obj_id,$stop_on_error = true)
00068 {
00069 global $ilias, $objDefinition;
00070
00071
00072 if (!isset($a_obj_id))
00073 {
00074 $message = "ilObjectFactory::getInstanceByObjId(): No obj_id given!";
00075 if ($stop_on_error === true)
00076 {
00077 $ilias->raiseError($message,$ilias->error_obj->WARNING);
00078 exit();
00079 }
00080 #var_dump("<pre>",$message,"<pre>");
00081
00082 return false;
00083 }
00084
00085
00086 $q = "SELECT * FROM object_data ".
00087 "WHERE obj_id = '".$a_obj_id."'";
00088 $object_set = $ilias->db->query($q);
00089
00090 if ($object_set->numRows() == 0)
00091 {
00092 $message = "ilObjectFactory::getInstanceByObjId(): Object with obj_id: ".$a_obj_id." not found!";
00093 if ($stop_on_error === true)
00094 {
00095 $ilias->raiseError($message,$ilias->error_obj->WARNING);
00096 exit();
00097 }
00098 #var_dump("<pre>",$message,"<pre>");
00099 return false;
00100 }
00101
00102 $object_rec = $object_set->fetchRow(DB_FETCHMODE_ASSOC);
00103 $class_name = "ilObj".$objDefinition->getClassName($object_rec["type"]);
00104
00105
00106 if ($class_name == "ilObj")
00107 {
00108 $message = "ilObjectFactory::getInstanceByObjId(): Not able to determine object ".
00109 "class for type".$object_rec["type"].".";
00110 if ($stop_on_error === true)
00111 {
00112 $ilias->raiseError($message,$ilias->error_obj->WARNING);
00113 exit();
00114 }
00115 return false;
00116 }
00117
00118
00119 $module = $objDefinition->getModule($object_rec["type"]);
00120 $module_dir = ($module == "")
00121 ? ""
00122 : $module."/";
00123
00124
00125 include_once($module_dir."classes/class.".$class_name.".php");
00126 $obj =& new $class_name(0, false);
00127 $obj->setId($a_obj_id);
00128 $obj->setObjDataRecord($object_rec);
00129 $obj->read();
00130
00131 return $obj;
00132 }
00133
00134
00141 function getInstanceByRefId($a_ref_id,$stop_on_error = true)
00142 {
00143 global $ilias, $objDefinition;
00144
00145
00146 if (!isset($a_ref_id))
00147 {
00148 if ($stop_on_error === true)
00149 {
00150 $message = "ilObjectFactory::getInstanceByRefId(): No ref_id given!";
00151 $ilias->raiseError($message,$ilias->error_obj->WARNING);
00152 exit();
00153 }
00154
00155 return false;
00156 }
00157
00158
00159
00160
00161 #$q = "SELECT * FROM object_data ".
00162 # "LEFT JOIN object_reference ON object_data.obj_id=object_reference.obj_id ".
00163 # "WHERE object_reference.ref_id='".$a_ref_id."'";
00164 $q = "SELECT * FROM object_data,object_reference ".
00165 "WHERE object_reference.obj_id = object_data.obj_id ".
00166 "AND object_reference.ref_id = '".$a_ref_id."'";
00167
00168 $object_set = $ilias->db->query($q);
00169
00170
00171 if ($object_set->numRows() == 0)
00172 {
00173 if ($stop_on_error === true)
00174 {
00175 $message = "ilObjectFactory::getInstanceByRefId(): Object with ref_id ".$a_ref_id." not found!";
00176 $ilias->raiseError($message,$ilias->error_obj->WARNING);
00177 exit();
00178 }
00179
00180 return false;
00181 }
00182
00183 $object_rec = $object_set->fetchRow(DB_FETCHMODE_ASSOC);
00184 $class_name = "ilObj".$objDefinition->getClassName($object_rec["type"]);
00185
00186
00187 if ($class_name == "ilObj")
00188 {
00189 if ($stop_on_error === true)
00190 {
00191 $message = "ilObjectFactory::getInstanceByRefId(): Not able to determine object ".
00192 "class for type".$object_rec["type"].".";
00193 $ilias->raiseError($message,$ilias->error_obj->WARNING);
00194 exit();
00195 }
00196
00197 return false;
00198 }
00199
00200
00201 $module = $objDefinition->getModule($object_rec["type"]);
00202 $module_dir = ($module == "")
00203 ? ""
00204 : $module."/";
00205
00206
00207 include_once($module_dir."classes/class.".$class_name.".php");
00208 $obj =& new $class_name(0, false);
00209 $obj->setId($object_rec["obj_id"]);
00210 $obj->setRefId($a_ref_id);
00211 $obj->setObjDataRecord($object_rec);
00212 $obj->read();
00213 return $obj;
00214 }
00215
00222 function getTypeByRefId($a_ref_id,$stop_on_error = true)
00223 {
00224 global $ilias, $objDefinition;
00225
00226
00227 if (!isset($a_ref_id))
00228 {
00229 if ($stop_on_error === true)
00230 {
00231 $message = "ilObjectFactory::getTypeByRefId(): No ref_id given!";
00232 $ilias->raiseError($message,$ilias->error_obj->WARNING);
00233 exit();
00234 }
00235
00236 return false;
00237 }
00238
00239
00240 $q = "SELECT * FROM object_data ".
00241 "LEFT JOIN object_reference ON object_data.obj_id=object_reference.obj_id ".
00242 "WHERE object_reference.ref_id='".$a_ref_id."'";
00243 $object_set = $ilias->db->query($q);
00244
00245 if ($object_set->numRows() == 0)
00246 {
00247 if ($stop_on_error === true)
00248 {
00249 $message = "ilObjectFactory::getTypeByRefId(): Object with ref_id ".$a_ref_id." not found!";
00250 $ilias->raiseError($message,$ilias->error_obj->WARNING);
00251 exit();
00252 }
00253
00254 return false;
00255 }
00256
00257 $object_rec = $object_set->fetchRow(DB_FETCHMODE_ASSOC);
00258 return $object_rec["type"];
00259 }
00260 }
00261 ?>