Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/zabbix/zabbix.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'ui/include/classes/api/managers/CDiscoveryRuleManager.php')
-rw-r--r--ui/include/classes/api/managers/CDiscoveryRuleManager.php25
1 files changed, 12 insertions, 13 deletions
diff --git a/ui/include/classes/api/managers/CDiscoveryRuleManager.php b/ui/include/classes/api/managers/CDiscoveryRuleManager.php
index ccce03b65e5..b75efff2f5c 100644
--- a/ui/include/classes/api/managers/CDiscoveryRuleManager.php
+++ b/ui/include/classes/api/managers/CDiscoveryRuleManager.php
@@ -34,7 +34,7 @@ class CDiscoveryRuleManager {
$parent_itemids = $ruleids;
$child_ruleids = [];
do {
- $db_items = DBselect('SELECT i.itemid FROM items i WHERE '.dbConditionInt('i.templateid', $parent_itemids));
+ $db_items = DBselect('SELECT i.itemid FROM items i WHERE '.dbConditionId('i.templateid', $parent_itemids));
$parent_itemids = [];
while ($db_item = DBfetch($db_items)) {
$parent_itemids[$db_item['itemid']] = $db_item['itemid'];
@@ -45,18 +45,15 @@ class CDiscoveryRuleManager {
$ruleids = array_merge($ruleids, $child_ruleids);
// Delete item prototypes.
- $iprototypeids = [];
- $db_items = DBselect(
- 'SELECT i.itemid'.
+ $db_items = DBfetchArrayAssoc(DBselect(
+ 'SELECT id.itemid,i.name'.
' FROM item_discovery id,items i'.
- ' WHERE i.itemid=id.itemid'.
- ' AND '.dbConditionInt('parent_itemid', $ruleids)
- );
- while ($item = DBfetch($db_items)) {
- $iprototypeids[$item['itemid']] = $item['itemid'];
- }
- if ($iprototypeids) {
- CItemPrototypeManager::delete($iprototypeids);
+ ' WHERE id.itemid=i.itemid'.
+ ' AND '.dbConditionId('parent_itemid', $ruleids)
+ ), 'itemid');
+
+ if ($db_items) {
+ CItemPrototype::deleteForce($db_items);
}
// Delete host prototypes.
@@ -64,7 +61,7 @@ class CDiscoveryRuleManager {
'SELECT hd.hostid,h.host'.
' FROM host_discovery hd,hosts h'.
' WHERE hd.hostid=h.hostid'.
- ' AND '.dbConditionInt('hd.parent_itemid', $ruleids)
+ ' AND '.dbConditionId('hd.parent_itemid', $ruleids)
), 'hostid');
if ($db_host_prototypes) {
@@ -81,6 +78,7 @@ class CDiscoveryRuleManager {
DB::delete('items', ['itemid' => $ruleids]);
$insert = [];
+
foreach ($ruleids as $ruleid) {
$insert[] = [
'tablename' => 'events',
@@ -88,6 +86,7 @@ class CDiscoveryRuleManager {
'value' => $ruleid
];
}
+
DB::insertBatch('housekeeper', $insert);
}
}