ILIAS  release_5-3 Revision v5.3.23-19-g915713cf615
class.ilObjectFactory.php
Go to the documentation of this file.
1<?php
2/* Copyright (c) 1998-2009 ILIAS open source, Extended GPL, see docs/LICENSE */
3
4
21{
28 public function ObjectIdExists($a_obj_id)
29 {
30 global $DIC;
31
32 $ilDB = $DIC->database();
33
34 $query = "SELECT * FROM object_data " .
35 "WHERE obj_id = " . $ilDB->quote($a_obj_id, 'integer');
36
37 $res = $ilDB->query($query);
38
39 return $res->numRows() ? true : false;
40 }
41
49 public function getObjectsForOwner($object_type, $owner_id)
50 {
51 global $DIC;
52
53 $ilDB = $DIC->database();
54
55 $query = "SELECT * FROM object_data,object_reference " .
56 "WHERE object_reference.obj_id = object_data.obj_id " .
57 " AND object_data.type=" . $ilDB->quote($object_type, 'text') .
58 " AND object_data.owner = " . $ilDB->quote($owner_id, 'integer');
59 $res = $ilDB->query($query);
60
61 $obj_ids = array();
62 while ($object_rec = $res->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) {
63 $obj_ids [] = $object_rec["obj_id"];
64 }
65
66 return $obj_ids;
67 }
68
75 public static function getInstanceByObjId($a_obj_id, $stop_on_error = true)
76 {
77 global $DIC;
78
79 $objDefinition = $DIC["objDefinition"];
80 $ilDB = $DIC->database();
81 $ilErr = $DIC["ilErr"];
82
83 // check object id
84 if (!isset($a_obj_id)) {
85 $message = "ilObjectFactory::getInstanceByObjId(): No obj_id given!";
86 if ($stop_on_error === true) {
87 $ilErr->raiseError($message, $ilErr->WARNING);
88 exit();
89 }
90
91 return false;
92 }
93
94 // read object data
95 $q = "SELECT * FROM object_data " .
96 "WHERE obj_id = " . $ilDB->quote($a_obj_id, 'integer');
97 $object_set = $ilDB->query($q);
98 // check number of records
99 if ($object_set->numRows() == 0) {
100 $message = "ilObjectFactory::getInstanceByObjId(): Object with obj_id: " . $a_obj_id . " not found!";
101 if ($stop_on_error === true) {
102 $ilErr->raiseError($message, $ilErr->WARNING);
103 exit();
104 }
105 return false;
106 }
107
108 $object_rec = $object_set->fetchRow(ilDBConstants::FETCHMODE_ASSOC);
109 $class_name = "ilObj" . $objDefinition->getClassName($object_rec["type"]);
110
111 // check class
112 if ($class_name == "ilObj") {
113 $message = "ilObjectFactory::getInstanceByObjId(): Not able to determine object " .
114 "class for type" . $object_rec["type"] . ".";
115 if ($stop_on_error === true) {
116 $ilErr->raiseError($message, $ilErr->WARNING);
117 exit();
118 }
119 return false;
120 }
121
122 // get location
123 $location = $objDefinition->getLocation($object_rec["type"]);
124
125 // create instance
126 include_once($location . "/class." . $class_name . ".php");
127 $obj = new $class_name(0, false); // this avoids reading of data
128 $obj->setId($a_obj_id);
129 $obj->read();
130
131 return $obj;
132 }
133
134
141 public static function getInstanceByRefId($a_ref_id, $stop_on_error = true)
142 {
143 global $DIC;
144
145 $objDefinition = $DIC["objDefinition"];
146 $ilDB = $DIC->database();
147 $ilErr = $DIC["ilErr"];
148
149 // check reference id
150 if (!isset($a_ref_id)) {
151 if ($stop_on_error === true) {
152 $message = "ilObjectFactory::getInstanceByRefId(): No ref_id given!";
153 $ilErr->raiseError($message, $ilErr->WARNING);
154 exit();
155 }
156
157 return false;
158 }
159
160 // read object data
161
162 $query = "SELECT * FROM object_data,object_reference " .
163 "WHERE object_reference.obj_id = object_data.obj_id " .
164 "AND object_reference.ref_id = " . $ilDB->quote($a_ref_id, 'integer');
165 $object_set = $ilDB->query($query);
166
167 // check number of records
168 if ($object_set->numRows() == 0) {
169 if ($stop_on_error === true) {
170 $message = "ilObjectFactory::getInstanceByRefId(): Object with ref_id " . $a_ref_id . " not found!";
171 $ilErr->raiseError($message, $ilErr->WARNING);
172 exit();
173 }
174
175 return false;
176 }
177
178 $object_rec = $object_set->fetchRow(ilDBConstants::FETCHMODE_ASSOC);
179 $class_name = "ilObj" . $objDefinition->getClassName($object_rec["type"]);
180
181 // check class
182 if ($class_name == "ilObj") {
183 if ($stop_on_error === true) {
184 $message = "ilObjectFactory::getInstanceByRefId(): Not able to determine object " .
185 "class for type" . $object_rec["type"] . ".";
186 $ilErr->raiseError($message, $ilErr->WARNING);
187 exit();
188 }
189
190 return false;
191 }
192
193 // get location
194 $location = $objDefinition->getLocation($object_rec["type"]);
195
196 // create instance
197 include_once($location . "/class." . $class_name . ".php");
198 $obj = new $class_name(0, false); // this avoids reading of data
199 $obj->setId($object_rec["obj_id"]);
200 $obj->setRefId($a_ref_id);
201 $obj->read();
202 return $obj;
203 }
204
213 public static function getTypeByRefId($a_ref_id, $stop_on_error = true)
214 {
215 global $DIC;
216
217 $ilErr = $DIC["ilErr"];
218 $ilDB = $DIC->database();
219
220 // check reference id
221 if (!isset($a_ref_id)) {
222 if ($stop_on_error === true) {
223 $message = "ilObjectFactory::getTypeByRefId(): No ref_id given!";
224 $ilErr->raiseError($message, $ilErr->WARNING);
225 exit();
226 }
227
228 return false;
229 }
230
231 // read object data
232 $q = "SELECT * FROM object_data " .
233 "LEFT JOIN object_reference ON object_data.obj_id=object_reference.obj_id " .
234 "WHERE object_reference.ref_id=" . $ilDB->quote($a_ref_id, 'integer');
235 $object_set = $ilDB->query($q);
236
237 if ($object_set->numRows() == 0) {
238 if ($stop_on_error === true) {
239 $message = "ilObjectFactory::getTypeByRefId(): Object with ref_id " . $a_ref_id . " not found!";
240 $ilErr->raiseError($message, $ilErr->WARNING);
241 exit();
242 }
243
244 return false;
245 }
246
247 $object_rec = $object_set->fetchRow(ilDBConstants::FETCHMODE_ASSOC);
248 return $object_rec["type"];
249 }
250
256 public static function getClassByType($a_obj_type)
257 {
258 global $DIC;
259
260 $objDefinition = $DIC["objDefinition"];
261
262 $location = $objDefinition->getLocation($a_obj_type);
263 $class_name = "ilObj" . $objDefinition->getClassName($a_obj_type);
264
265 // create instance
266 include_once($location . "/class." . $class_name . ".php");
267 return $class_name;
268 }
269}
$location
Definition: buildRTE.php:44
An exception for terminatinating execution or to throw for unit testing.
Class ilObjectFactory.
static getInstanceByObjId($a_obj_id, $stop_on_error=true)
get an instance of an Ilias object by object id
static getInstanceByRefId($a_ref_id, $stop_on_error=true)
get an instance of an Ilias object by reference id
ObjectIdExists($a_obj_id)
check if obj_id exists.
getObjectsForOwner($object_type, $owner_id)
returns all objects of an owner, filtered by type, objects are not deleted!
static getTypeByRefId($a_ref_id, $stop_on_error=true)
get object type by reference id
static getClassByType($a_obj_type)
Get class by type.
catch(Exception $e) $message
$query
global $ilErr
Definition: raiseError.php:16
global $DIC
Definition: saml.php:7
foreach($_POST as $key=> $value) $res
global $ilDB