4 include_once(
"./Services/Object/classes/class.ilObjectFactory.php");
24 global $ilAppEventHandler, $rbacsystem, $rbacadmin,
$log,
$ilUser, $tree,
$lng,
27 include_once
'./Services/Payment/classes/class.ilPaymentObject.php';
28 include_once(
"./Services/Repository/exceptions/class.ilRepositoryException.php");
31 $a_ids = array_unique((array) $a_ids);
34 foreach ($a_ids as $id)
36 if ($tree->isDeleted($id))
38 $log->write(__METHOD__.
': Object with ref_id: '.$id.
' already deleted.');
43 $node_data = $tree->getNodeData($id);
44 $subtree_nodes = $tree->getSubTree($node_data);
46 $all_node_data[] = $node_data;
47 $all_subtree_nodes[] = $subtree_nodes;
50 foreach ($subtree_nodes as $node)
52 if($node[
'type'] ==
'rolf')
56 if (!$rbacsystem->checkAccess(
'delete',$node[
"child"]))
58 $not_deletable[] = $node[
"child"];
59 $perform_delete =
false;
63 $buyable[] = $node[
'child'];
64 $perform_delete =
false;
70 if (count($not_deletable))
72 $not_deletable = implode(
',',$not_deletable);
75 $lng->txt(
"msg_no_perm_delete").
" ".$not_deletable.
"<br/>".$lng->txt(
"msg_cancel"));
80 foreach($buyable as $id)
84 $titles[] = $tmp_object->getTitle();
86 $title_str = implode(
',',$titles);
89 $lng->txt(
'msg_obj_not_deletable_sold').
' '.$title_str);
93 if (!$all_node_data[0][
"type"])
99 if ($rbacsystem->checkAccess(
'delete', $a_cur_ref_id))
101 foreach($a_ids as $id)
107 $log->write(
"ilObjectGUI::confirmedDeleteObject(), deleted obj_id ".$obj->getId().
108 ", type: ".$obj->getType().
", title: ".$obj->getTitle());
114 $lng->txt(
"no_perm_delete").
"<br/>".$lng->txt(
"msg_cancel"));
120 $affected_ids = array();
121 $affected_parents = array();
122 foreach ($a_ids as $id)
124 if($tree->isDeleted($id))
126 $log->write(__METHOD__.
': Object with ref_id: '.$id.
' already deleted.');
131 $subnodes = $tree->getSubtree($tree->getNodeData($id));
133 foreach ($subnodes as $subnode)
135 $rbacadmin->revokePermission($subnode[
"child"]);
139 $affected_ids[$subnode[
"child"]] = $subnode[
"child"];
140 $affected_parents[$subnode[
"child"]] = $subnode[
"parent"];
149 include_once(
'./Services/WebServices/ECS/classes/class.ilECSObjectSettings.php');
152 if(!$tree->saveSubTree($id,
true))
154 $log->write(__METHOD__.
': Object with ref_id: '.$id.
' already deleted.');
159 $log->write(
"ilObjectGUI::confirmedDeleteObject(), moved ref_id ".$id.
165 $affected_ids[$id] = $id;
172 foreach ($affected_ids as $aid)
174 $ilAppEventHandler->raise(
"Services/Object",
"toTrash",
177 "old_parent_ref_id" => $affected_parents[$aid]
184 if (!$ilSetting->get(
'enable_trash'))
197 global $rbacsystem,
$log, $ilAppEventHandler, $tree;
199 $affected_ids = array();
202 foreach ($a_ref_ids as $id)
205 if (!$a_from_recovery_folder)
207 $saved_tree =
new ilTree(-(
int)$id);
208 $node_data = $saved_tree->getNodeData($id);
209 $subtree_nodes = $saved_tree->getSubTree($node_data);
213 $node_data = $tree->getNodeData($id);
214 $subtree_nodes = $tree->getSubTree($node_data);
218 require_once(
'Services/Tracking/classes/class.ilChangeEvent.php');
221 $parent_data = $tree->getParentNodeData($node_data[
'ref_id']);
223 $parent_data[
'obj_id']);
227 if (!$a_from_recovery_folder)
229 $checked[] = -(int) $id;
239 foreach ($subtree_nodes as $node)
247 $log->write(
"ilObjectGUI::removeFromSystemObject(), delete obj_id: ".$node_obj->getId().
248 ", ref_id: ".$node_obj->getRefId().
", type: ".$node_obj->getType().
", ".
249 "title: ".$node_obj->getTitle());
250 $affected_ids[$node[
"ref_id"]] = array(
251 "ref_id" => $node[
"ref_id"],
252 "obj_id" => $node_obj->getId(),
253 "type" => $node_obj->getType(),
254 "old_parent_ref_id" => $node[
"parent"]);
260 if (!$a_from_recovery_folder || $node_obj->getType() !=
"fold")
267 if (!$a_from_recovery_folder)
269 $saved_tree->deleteTree($node_data);
273 $tree->deleteTree($node_data);
277 $log->write(
"ilObjectGUI::removeFromSystemObject(), deleted tree, tree_id: ".$node_data[
"tree"].
278 ", child: ".$node_data[
"child"]);
283 foreach ($affected_ids as $aid)
285 $ilAppEventHandler->raise(
"Services/Object",
"delete",
286 array(
"obj_id" => $aid[
"obj_id"],
287 "ref_id" => $aid[
"ref_id"],
288 "type" => $aid[
"type"],
289 "old_parent_ref_id" => $aid[
"old_parent_ref_id"]));
301 $q =
"SELECT tree FROM tree WHERE parent= ".
302 $ilDB->quote($a_node_id,
"integer").
" AND tree < 0";
304 $r = $ilDB->query($q);
306 while(
$row = $ilDB->fetchObject(
$r))
309 if (!in_array(
$row->tree,$a_checked))
312 $a_checked[] =
$row->tree;
315 $del_node_data = $deleted_tree->getNodeData(
$row->tree);
316 $del_subtree_nodes = $deleted_tree->getSubTree($del_node_data);
320 if ($a_delete_objects)
322 foreach ($del_subtree_nodes as $node)
327 $log->write(
"ilObjectGUI::removeDeletedNodes(), delete obj_id: ".$node_obj->getId().
328 ", ref_id: ".$node_obj->getRefId().
", type: ".$node_obj->getType().
", ".
329 "title: ".$node_obj->getTitle());
330 $a_affected_ids[$node[
"ref_id"]] = array(
331 "ref_id" => $node[
"ref_id"],
332 "obj_id" => $node_obj->getId(),
333 "type" => $node_obj->getType(),
334 "old_parent_ref_id" => $node[
"parent"]);
341 $tree->deleteTree($del_node_data);
344 $log->write(
"ilObjectGUI::removeDeletedNodes(), deleted tree, tree_id: ".$del_node_data[
"tree"].
345 ", child: ".$del_node_data[
"child"]);
357 global $rbacsystem,
$log, $ilAppEventHandler,
$lng, $tree;
361 foreach ($a_ref_ids as $id)
365 if (!$rbacsystem->checkAccess(
'create', $a_cur_ref_id, $obj_data->getType()))
371 if (count($no_create))
373 include_once(
"./Services/Repository/exceptions/class.ilRepositoryException.php");
377 $affected_ids = array();
379 foreach ($a_ref_ids as $id)
381 $affected_ids[$id] = $id;
388 include_once(
"./Services/Repository/exceptions/class.ilRepositoryException.php");
394 require_once(
'Services/Tracking/classes/class.ilChangeEvent.php');
412 foreach ($affected_ids as $id)
415 $ilAppEventHandler->raise(
"Services/Object",
"undelete",
425 global $rbacadmin, $rbacreview,
$log, $tree;
427 ilLoggerFactory::getLogger(
'rep')->debug(
'Restoring from trash: source_id: '. $a_source_id.
', dest_id: '. $a_dest_id.
', tree_id:'. $a_tree_id);
431 $saved_tree =
new ilTree($a_tree_id);
432 $childs = $saved_tree->getChilds($a_source_id);
436 $tree->insertNodeFromTrash($a_source_id, $a_dest_id, $a_tree_id,
IL_LAST_NODE,
true);
443 include_once
'./Services/Object/classes/class.ilObjectFactory.php';
445 $ref_obj = $factory->getInstanceByRefId($a_source_id,FALSE);
448 $lroles =
$GLOBALS[
'rbacreview']->getRolesOfRoleFolder($a_source_id,
true);
449 foreach($lroles as $role_id)
451 include_once
'./Services/AccessControl/classes/class.ilObjRole.php';
453 $role->setParent($a_source_id);
458 $ref_obj->setPermissions($a_dest_id);
461 foreach ($childs as $child)
479 $set = $ilDB->query(
"SELECT child".
481 " JOIN object_reference ref ON (tree.child = ref.ref_id)".
482 " JOIN object_data od ON (od.obj_id = ref.obj_id)".
483 " WHERE tree.tree < ".$ilDB->quote(0,
"integer").
484 " AND od.type = ".$ilDB->quote($a_type,
"text"));
485 while(
$row = $ilDB->fetchAssoc($set))
497 $set = $ilDB->query(
"SELECT obj_id".
498 " FROM object_data ".
499 " WHERE type = ".$ilDB->quote(
"typ",
"text").
500 " AND title = ".$ilDB->quote($a_type,
"text"));
501 $row = $ilDB->fetchAssoc($set);
502 return $row[
"obj_id"];
511 $ref_ids_in_tree = $tree->getSubTree($tree->getNodeData(ROOT_FOLDER_ID),
false, $a_type);
517 if($ilSetting->get(
'enable_trash'))
520 if($ref_ids_in_trash)
532 $ilDB->manipulate(
"DELETE FROM object_data".
533 " WHERE obj_id = ".$ilDB->quote($type_id,
"integer"));
538 $ilDB->manipulate(
"DELETE FROM rbac_ta".
539 " WHERE typ_id = ".$ilDB->quote($type_id,
"integer")
543 $set = $ilDB->query(
"SELECT ops_id".
544 " FROM rbac_operations ".
545 " WHERE class = ".$ilDB->quote(
"create",
"text").
546 " AND operation = ".$ilDB->quote(
"create_".$a_type,
"text"));
547 $row = $ilDB->fetchAssoc($set);
548 $create_ops_id =
$row[
"ops_id"];
551 $ilDB->manipulate(
"DELETE FROM rbac_operations".
552 " WHERE ops_id = ".$ilDB->quote($create_ops_id,
"integer"));
554 $ilDB->manipulate(
"DELETE FROM rbac_templates".
555 " WHERE ops_id = ".$ilDB->quote($create_ops_id,
"integer"));
558 foreach(array(
"root",
"cat",
"crs",
"grp",
"fold") as $parent_type)
563 $ilDB->manipulate(
"DELETE FROM rbac_ta".
564 " WHERE typ_id = ".$ilDB->quote($parent_type_id,
"integer").
565 " AND ops_id = ".$ilDB->quote($create_ops_id,
"integer"));
572 include_once
"Services/Repository/classes/class.ilObjRepositorySettings.php";
static removeItemFromDesktops($a_id)
removes object from all user's desktops public
removeDeletedNodes($a_node_id, $a_checked, $a_delete_objects, &$a_affected_ids)
Remove already deleted objects within the objects in trash.
getInstanceByRefId($a_ref_id, $stop_on_error=true)
get an instance of an Ilias object by reference id
Repository Utilities (application layer, put GUI related stuff into ilRepUtilGUI) ...
static _handleDelete(array $a_subbtree_nodes)
handle delete Objects that are moved to the trash call ECS-Remove
Class ilObject Basic functions for all objects.
static _lookupTitle($a_id)
lookup object title
deleteObjectType($a_type)
static _isBuyable($a_ref_id, $a_subtype='')
static _lookupObjId($a_id)
removeObjectsFromSystem($a_ref_ids, $a_from_recovery_folder=false)
remove objects from trash bin and all entries therefore every object needs a specific deleteObject() ...
static deleteObjectType($a_type)
static clear($a_var)
Unset a value.
getInstanceByObjId($a_obj_id, $stop_on_error=true)
get an instance of an Ilias object by object id
Tree class data representation in hierachical trees using the Nested Set Model with Gaps by Joe Celco...
restoreObjects($a_cur_ref_id, $a_ref_ids)
Move objects from trash back to repository.
insertSavedNodes($a_source_id, $a_dest_id, $a_tree_id, &$a_affected_ids)
Recursive method to insert all saved nodes of the clipboard.
static getLogger($a_component_id)
Get component logger.
$GLOBALS['PHPCAS_CLIENT']
This global variable is used by the interface class phpCAS.
_catchupWriteEvents($obj_id, $usr_id, $timestamp=null)
Catches up with all write events which occured before the specified timestamp.
_recordWriteEvent($obj_id, $usr_id, $action, $parent_obj_id=null)
Records a write event.
static deleteObjects($a_cur_ref_id, $a_ids)
Delete objects.