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 }
static getClassByType($a_obj_type)
Get class by type.
global $ilErr
Definition: raiseError.php:16
ObjectIdExists($a_obj_id)
check if obj_id exists.
Class ilObjectFactory.
global $DIC
Definition: saml.php:7
$location
Definition: buildRTE.php:44
getObjectsForOwner($object_type, $owner_id)
returns all objects of an owner, filtered by type, objects are not deleted!
catch(Exception $e) $message
foreach($_POST as $key=> $value) $res
static getTypeByRefId($a_ref_id, $stop_on_error=true)
get object type by reference id
$query
static getInstanceByObjId($a_obj_id, $stop_on_error=true)
get an instance of an Ilias object by object id
Create styles array
The data for the language used.
global $ilDB
static getInstanceByRefId($a_ref_id, $stop_on_error=true)
get an instance of an Ilias object by reference id