4include_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]
 
  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";
 
  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;
 
  387                        catch (Exception $e) {
 
  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);
 
  438                catch (Exception $e) {
 
  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"));
 
  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"));
 
  502                return $row[
"obj_id"];
 
  511                $ref_ids_in_tree = $tree->getSubTree($tree->getNodeData(ROOT_FOLDER_ID), 
false, $a_type);
 
  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"));                   
 
  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";
 
_recordWriteEvent($obj_id, $usr_id, $action, $parent_obj_id=null)
Records a write event.
_catchupWriteEvents($obj_id, $usr_id, $timestamp=null)
Catches up with all write events which occured before the specified timestamp.
static _handleDelete(array $a_subbtree_nodes)
static getLogger($a_component_id)
Get component logger.
static deleteObjectType($a_type)
getInstanceByObjId($a_obj_id, $stop_on_error=true)
get an instance of an Ilias object by object id
getInstanceByRefId($a_ref_id, $stop_on_error=true)
get an instance of an Ilias object by reference id
Class ilObject Basic functions for all objects.
static _lookupObjId($a_id)
static _lookupTitle($a_id)
lookup object title
static _isBuyable($a_ref_id, $a_subtype='')
Repository Utilities (application layer, put GUI related stuff into ilRepUtilGUI)
static deleteObjects($a_cur_ref_id, $a_ids)
Delete objects.
restoreObjects($a_cur_ref_id, $a_ref_ids)
Move objects from trash back to repository.
removeObjectsFromSystem($a_ref_ids, $a_from_recovery_folder=false)
remove objects from trash bin and all entries therefore every object needs a specific deleteObject() ...
deleteObjectType($a_type)
removeDeletedNodes($a_node_id, $a_checked, $a_delete_objects, &$a_affected_ids)
Remove already deleted objects within the objects in trash.
insertSavedNodes($a_source_id, $a_dest_id, $a_tree_id, &$a_affected_ids)
Recursive method to insert all saved nodes of the clipboard.
static clear($a_var)
Unset a value.
Tree class data representation in hierachical trees using the Nested Set Model with Gaps by Joe Celco...
static removeItemFromDesktops($a_id)
removes object from all user's desktops @access public
$GLOBALS['PHPCAS_CLIENT']
This global variable is used by the interface class phpCAS.