3 declare(strict_types=1);
42 $this->
logger = $DIC->logger()->sysc();
43 $this->db = $DIC->database();
44 $this->tree = $DIC->repositoryTree();
45 $this->admin = $DIC->rbac()->admin();
52 $this->limit_number = $a_limit;
62 $this->limit_age = $dt;
72 $this->limit_types = $a_types;
80 public function setMode(
int $a_mode): void
82 $this->mode = $a_mode;
92 $this->
logger->info(
'Handling delete');
94 case self::MODE_TRASH_RESTORE:
95 $this->
logger->info(
'Restore trash to recovery folder');
100 case self::MODE_TRASH_REMOVE:
101 $this->
logger->info(
'Remove selected from system.');
116 $this->
logger->info(
'Found deleted : ' . print_r($deleted,
true));
119 foreach ($deleted as $tmp_num => $deleted_info) {
120 $child_id = (
int) ($deleted_info[
'child'] ?? 0);
122 if (!$ref_obj instanceof
ilObject) {
126 $this->tree->deleteNode((
int) ($deleted_info[
'tree'] ?? 0), $child_id);
127 $this->
logger->info(
'Object tree entry deleted');
129 if ($ref_obj->getType() !==
'rolf') {
130 $this->admin->revokePermission($child_id);
133 $this->
logger->info(
'Object moved to recovery folder');
141 foreach ($deleted as $del_num => $deleted_info) {
142 $sub_nodes = $this->
readDeleted((
int) ($deleted_info[
'tree'] ?? 0));
144 foreach ($sub_nodes as $sub_num => $subnode_info) {
146 if (!$ref_obj instanceof
ilObject) {
173 if ($age_limit > 0) {
174 $and_age =
'AND r.deleted < ' . $this->db->quote(
184 $query =
'SELECT child,tree FROM tree t JOIN object_reference r ON child = r.ref_id ' .
185 'JOIN object_data o on r.obj_id = o.obj_id ' .
187 'AND child = -tree ';
191 $query .=
'ORDER BY depth desc ';
200 'tree' => $row->tree,
201 'child' => $row->child
209 $query =
'SELECT child,tree FROM tree t JOIN object_reference r ON child = r.ref_id ' .
210 'JOIN object_data o on r.obj_id = o.obj_id ';
212 if ($tree_id === null) {
213 $query .=
'WHERE tree < ' . $this->db->quote(0,
'integer') .
' ';
215 $query .=
'WHERE tree = ' . $this->db->quote($tree_id,
'integer') .
' ';
217 $query .=
'ORDER BY depth desc';
224 'tree' => $row->tree,
225 'child' => $row->child
setNumberLimit(int $a_limit)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
static getInstanceByRefId(int $ref_id, bool $stop_on_error=true)
get an instance of an Ilias object by reference id
readDeleted(?int $tree_id=null)
setAgeLimit(ilDateTime $dt)
removeSelectedFromSystem()
$id
plugin.php for ilComponentBuildPluginInfoObjectiveTest::testAddPlugins
setTypesLimit(array $a_types)
Class ilRbacAdmin Core functions for role based access control.
static _removeEntry(int $a_tree, int $a_child, string $a_db_table="tree")
STATIC METHOD Removes a single entry from a tree.