blob: f61af3f1d2948e4fe6c09959780b10d0f13bf8da (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
|
<?php
namespace Civi\Api4\Generic;
use Civi\Api4\Generic\Result;
/**
* Delete one or more items, based on criteria specified in Where param (required).
*/
class DAODeleteAction extends AbstractBatchAction {
use Traits\DAOActionTrait;
/**
* Batch delete function
*/
public function _run(Result $result) {
$defaults = $this->getParamDefaults();
if ($defaults['where'] && !array_diff_key($this->where, $defaults['where'])) {
throw new \API_Exception('Cannot delete with no "where" parameter specified');
}
$items = $this->getObjects();
$ids = $this->deleteObjects($items);
$result->exchangeArray($ids);
}
/**
* @param $items
* @return array
* @throws \API_Exception
*/
protected function deleteObjects($items) {
$ids = [];
$baoName = $this->getBaoName();
if ($this->getCheckPermissions()) {
foreach ($items as $item) {
$this->checkContactPermissions($baoName, $item);
}
}
if ($this->getEntityName() !== 'EntityTag' && method_exists($baoName, 'del')) {
foreach ($items as $item) {
$args = [$item['id']];
$bao = call_user_func_array([$baoName, 'del'], $args);
if ($bao !== FALSE) {
$ids[] = $item['id'];
}
else {
throw new \API_Exception("Could not delete {$this->getEntityName()} id {$item['id']}");
}
}
}
else {
foreach ($items as $item) {
$bao = new $baoName();
$bao->id = $item['id'];
// delete it
$action_result = $bao->delete();
if ($action_result) {
$ids[] = $item['id'];
}
else {
throw new \API_Exception("Could not delete {$this->getEntityName()} id {$item['id']}");
}
}
}
return $ids;
}
}
|