remove objects from trash bin and all entries therefore every object needs a specific deleteObject() method
189 : void {
191
192 $ilLog =
$DIC[
"ilLog"];
193 $ilAppEventHandler =
$DIC[
"ilAppEventHandler"];
195 $logger =
$DIC->logger()->rep();
196
198
199 $affected_ids = [];
200
201
202 $a_ref_ids = array_map('intval', $a_ref_ids);
203 foreach ($a_ref_ids as
$id) {
204 $saved_tree = null;
205
206 if (!$a_from_recovery_folder) {
208 $tree_id = end($trees);
209
210 if ($tree_id) {
211 $saved_tree =
new ilTree($tree_id);
212 $node_data = $saved_tree->getNodeData(
$id);
213 $subtree_nodes = $saved_tree->getSubTree($node_data);
214 } else {
216 }
217 } else {
220 }
221
223
226
228 $node_data['obj_id'],
230 'purge',
231 null
232 );
233
234
235
236 if (!$a_from_recovery_folder) {
238 } else {
240 }
241
242
244
245 foreach ($subtree_nodes as $node) {
247 continue;
248 }
249
250 $logger->info(
251 'delete obj_id: ' . $node_obj->getId() .
252 ', ref_id: ' . $node_obj->getRefId() .
253 ', type: ' . $node_obj->getType() .
254 ', title: ' . $node_obj->getTitle()
255 );
256 $affected_ids[$node["ref_id"]] = [
257 "ref_id" => $node["ref_id"],
258 "obj_id" => $node_obj->getId(),
259 "type" => $node_obj->getType(),
260 "old_parent_ref_id" => $node["parent"]
261 ];
262
263
264
265
266
267 if (!$a_from_recovery_folder || $node_obj->getType() !== "fold") {
268 $node_obj->delete();
269 }
270 }
271
272
273 if (!$a_from_recovery_folder) {
274 if ($saved_tree) {
275 $saved_tree->deleteTree($node_data);
276 }
277 } else {
279 }
280
281 $logger->info(
282 'deleted tree, tree_id: ' . $node_data['tree'] .
283 ', child: ' . $node_data['child']
284 );
285 }
286
287
288 foreach ($affected_ids as $aid) {
289 $ilAppEventHandler->raise(
290 "Services/Object",
291 "delete",
292 [
293 "obj_id" => $aid["obj_id"],
294 "ref_id" => $aid["ref_id"],
295 "type" => $aid["type"],
296 "old_parent_ref_id" => $aid["old_parent_ref_id"]
297 ]
298 );
299 }
300 }
static _recordWriteEvent(int $obj_id, int $usr_id, string $action, ?int $parent_obj_id=null)
Records a write event.
static lookupTreesForNode(int $node_id)
deleteTree(array $a_node)
delete node and the whole subtree under this node