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/CItemManager.php')
-rw-r--r--ui/include/classes/api/managers/CItemManager.php262
1 files changed, 0 insertions, 262 deletions
diff --git a/ui/include/classes/api/managers/CItemManager.php b/ui/include/classes/api/managers/CItemManager.php
deleted file mode 100644
index 959b60d8bde..00000000000
--- a/ui/include/classes/api/managers/CItemManager.php
+++ /dev/null
@@ -1,262 +0,0 @@
-<?php
-/*
-** Zabbix
-** Copyright (C) 2001-2022 Zabbix SIA
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU General Public License for more details.
-**
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-**/
-
-
-/**
- * Class to perform low level item related actions.
- */
-class CItemManager {
-
- /**
- * Deletes items and related entities without permission check.
- *
- * @param array $itemids
- */
- public static function delete(array $itemids) {
- global $DB;
-
- $del_itemids = [];
- $del_ruleids = [];
- $del_item_prototypeids = [];
-
- // Selecting all inherited items.
- $parent_itemids = array_flip($itemids);
- do {
- $db_items = DBselect(
- 'SELECT i.itemid FROM items i WHERE '.dbConditionInt('i.templateid', array_keys($parent_itemids))
- );
-
- $del_itemids += $parent_itemids;
- $parent_itemids = [];
-
- while ($db_item = DBfetch($db_items)) {
- if (!array_key_exists($db_item['itemid'], $del_itemids)) {
- $parent_itemids[$db_item['itemid']] = true;
- }
- }
- } while ($parent_itemids);
-
- // Selecting all dependent items.
- // Note: We are not separating normal from discovered items at this point.
- $dep_itemids = [
- ZBX_FLAG_DISCOVERY_NORMAL => $del_itemids,
- ZBX_FLAG_DISCOVERY_RULE => [],
- ZBX_FLAG_DISCOVERY_CREATED => [],
- ZBX_FLAG_DISCOVERY_PROTOTYPE => []
- ];
-
- do {
- $db_items = DBselect(
- 'SELECT i.itemid,i.flags'.
- ' FROM items i'.
- ' WHERE i.type='.ITEM_TYPE_DEPENDENT.
- ' AND '.dbConditionInt('i.master_itemid',
- array_keys($dep_itemids[ZBX_FLAG_DISCOVERY_NORMAL]
- + $dep_itemids[ZBX_FLAG_DISCOVERY_CREATED]
- + $dep_itemids[ZBX_FLAG_DISCOVERY_PROTOTYPE]
- )
- )
- );
-
- $dep_itemids = [
- ZBX_FLAG_DISCOVERY_NORMAL => [],
- ZBX_FLAG_DISCOVERY_RULE => [],
- ZBX_FLAG_DISCOVERY_CREATED => [],
- ZBX_FLAG_DISCOVERY_PROTOTYPE => []
- ];
-
- while ($db_item = DBfetch($db_items)) {
- switch ($db_item['flags']) {
- case ZBX_FLAG_DISCOVERY_NORMAL:
- if (!array_key_exists($db_item['itemid'], $del_itemids)) {
- $dep_itemids[ZBX_FLAG_DISCOVERY_NORMAL][$db_item['itemid']] = true;
- }
- break;
-
- case ZBX_FLAG_DISCOVERY_RULE:
- $dep_itemids[ZBX_FLAG_DISCOVERY_RULE][$db_item['itemid']] = true;
- break;
-
- case ZBX_FLAG_DISCOVERY_CREATED:
- if (!array_key_exists($db_item['itemid'], $del_itemids)) {
- $dep_itemids[ZBX_FLAG_DISCOVERY_CREATED][$db_item['itemid']] = true;
- }
- break;
-
- case ZBX_FLAG_DISCOVERY_PROTOTYPE:
- $dep_itemids[ZBX_FLAG_DISCOVERY_PROTOTYPE][$db_item['itemid']] = true;
- break;
- }
- }
-
- $del_itemids += $dep_itemids[ZBX_FLAG_DISCOVERY_NORMAL];
- $del_itemids += $dep_itemids[ZBX_FLAG_DISCOVERY_CREATED];
- $del_ruleids += $dep_itemids[ZBX_FLAG_DISCOVERY_RULE];
- $del_item_prototypeids += $dep_itemids[ZBX_FLAG_DISCOVERY_PROTOTYPE];
-
- } while ($dep_itemids[ZBX_FLAG_DISCOVERY_NORMAL]
- || $dep_itemids[ZBX_FLAG_DISCOVERY_CREATED]
- || $dep_itemids[ZBX_FLAG_DISCOVERY_PROTOTYPE]
- );
-
- $del_itemids = array_keys($del_itemids);
-
- if ($del_ruleids) {
- CDiscoveryRuleManager::delete(array_keys($del_ruleids));
- }
-
- if ($del_item_prototypeids) {
- CItemPrototypeManager::delete(array_keys($del_item_prototypeids));
- }
-
- // Deleting graphs and graph prototypes, which will remain without items.
- $db_graphs = DBselect(
- 'SELECT DISTINCT gi.graphid'.
- ' FROM graphs_items gi'.
- ' WHERE '.dbConditionInt('gi.itemid', $del_itemids).
- ' AND NOT EXISTS ('.
- 'SELECT NULL'.
- ' FROM graphs_items gii'.
- ' WHERE gii.graphid=gi.graphid'.
- ' AND '.dbConditionInt('gii.itemid', $del_itemids, true).
- ')'
- );
-
- $del_graphids = [];
-
- while ($db_graph = DBfetch($db_graphs)) {
- $del_graphids[] = $db_graph['graphid'];
- }
-
- if ($del_graphids) {
- CGraphManager::delete($del_graphids);
- }
-
- // Cleanup ymin_itemid and ymax_itemid fields for graphs and graph prototypes.
- DB::update('graphs', [
- 'values' => [
- 'ymin_type' => GRAPH_YAXIS_TYPE_CALCULATED,
- 'ymin_itemid' => null
- ],
- 'where' => ['ymin_itemid' => $del_itemids]
- ]);
-
- DB::update('graphs', [
- 'values' => [
- 'ymax_type' => GRAPH_YAXIS_TYPE_CALCULATED,
- 'ymax_itemid' => null
- ],
- 'where' => ['ymax_itemid' => $del_itemids]
- ]);
-
- // Deleting triggers and trigger prototypes.
- $db_triggers = DBselect(
- 'SELECT DISTINCT t.triggerid,t.flags'.
- ' FROM triggers t,functions f'.
- ' WHERE t.triggerid=f.triggerid'.
- ' AND '.dbConditionInt('f.itemid', $del_itemids)
- );
-
- $del_triggerids = [
- ZBX_FLAG_DISCOVERY_NORMAL => [],
- ZBX_FLAG_DISCOVERY_CREATED => [],
- ZBX_FLAG_DISCOVERY_PROTOTYPE => []
- ];
-
- while ($db_trigger = DBfetch($db_triggers)) {
- $del_triggerids[$db_trigger['flags']][] = $db_trigger['triggerid'];
- }
-
- if ($del_triggerids[ZBX_FLAG_DISCOVERY_NORMAL] || $del_triggerids[ZBX_FLAG_DISCOVERY_CREATED]) {
- CTriggerManager::delete(array_merge(
- $del_triggerids[ZBX_FLAG_DISCOVERY_NORMAL],
- $del_triggerids[ZBX_FLAG_DISCOVERY_CREATED]
- ));
- }
-
- if ($del_triggerids[ZBX_FLAG_DISCOVERY_PROTOTYPE]) {
- CTriggerPrototypeManager::delete($del_triggerids[ZBX_FLAG_DISCOVERY_PROTOTYPE]);
- }
-
- DB::delete('profiles', [
- 'idx' => 'web.favorite.graphids',
- 'source' => 'itemid',
- 'value_id' => $del_itemids
- ]);
-
- $table_names = ['events'];
-
- if (CHousekeepingHelper::get(CHousekeepingHelper::HK_HISTORY_MODE) != 0) {
- array_push($table_names, 'history', 'history_str', 'history_uint', 'history_log', 'history_text');
- }
-
- if (CHousekeepingHelper::get(CHousekeepingHelper::HK_TRENDS_MODE) != 0) {
- array_push($table_names,'trends', 'trends_uint');
- }
-
- if ($DB['TYPE'] === ZBX_DB_POSTGRESQL) {
- if (CHousekeepingHelper::get(CHousekeepingHelper::DB_EXTENSION) === ZBX_DB_EXTENSION_TIMESCALEDB) {
- if (CHousekeepingHelper::get(CHousekeepingHelper::HK_HISTORY_MODE) != 0
- && CHousekeepingHelper::get(CHousekeepingHelper::HK_HISTORY_GLOBAL) == 1) {
- $table_names = array_diff($table_names,
- ['history', 'history_str', 'history_uint', 'history_log', 'history_text']
- );
- }
-
- if (CHousekeepingHelper::get(CHousekeepingHelper::HK_TRENDS_MODE) != 0
- && CHousekeepingHelper::get(CHousekeepingHelper::HK_TRENDS_GLOBAL) == 1) {
- $table_names = array_diff($table_names, ['trends', 'trends_uint']);
- }
- }
- }
-
- $ins_housekeeper = [];
-
- foreach ($del_itemids as $del_itemid) {
- foreach ($table_names as $table_name) {
- $ins_housekeeper[] = [
- 'tablename' => $table_name,
- 'field' => 'itemid',
- 'value' => $del_itemid
- ];
-
- if (count($ins_housekeeper) == ZBX_DB_MAX_INSERTS) {
- DB::insertBatch('housekeeper', $ins_housekeeper);
- $ins_housekeeper = [];
- }
- }
- }
-
- if ($ins_housekeeper) {
- DB::insertBatch('housekeeper', $ins_housekeeper);
- }
-
- DB::delete('httpstepitem', ['itemid' => $del_itemids]);
- DB::delete('httptestitem', ['itemid' => $del_itemids]);
-
- DB::delete('item_tag', ['itemid' => $del_itemids]);
- DB::delete('item_preproc', ['itemid' => $del_itemids]);
- DB::update('items', [
- 'values' => ['templateid' => 0, 'master_itemid' => 0],
- 'where' => ['itemid' => $del_itemids]
- ]);
- DB::delete('items', ['itemid' => $del_itemids]);
- }
-}