Source
<?php
/*
** Copyright (C) 2001-2025 Zabbix SIA
**
** This program is free software: you can redistribute it and/or modify it under the terms of
** the GNU Affero General Public License as published by the Free Software Foundation, version 3.
**
** 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 Affero General Public License for more details.
**
** You should have received a copy of the GNU Affero General Public License along with this program.
** If not, see <https://www.gnu.org/licenses/>.
**/
/**
* Class to perform low level trigger related actions.
*/
class CTriggerManager {
/**
* Deletes triggers and related entities without permission check.
*
* @param array $triggerids
*/
public static function delete(array $triggerids) {
$del_triggerids = [];
// Selecting all inherited triggers.
$parent_triggerids = array_flip($triggerids);
do {
$db_triggers = DBselect(
'SELECT t.triggerid'.
' FROM triggers t'.
' WHERE '.dbConditionInt('t.templateid', array_keys($parent_triggerids))
);
$del_triggerids += $parent_triggerids;
$parent_triggerids = [];
while ($db_trigger = DBfetch($db_triggers)) {
if (!array_key_exists($db_trigger['triggerid'], $del_triggerids)) {
$parent_triggerids[$db_trigger['triggerid']] = true;
}
}
} while ($parent_triggerids);
$del_triggerids = array_keys($del_triggerids);
// Disable actions.
$actionids = [];
$conditionids = [];
$db_actions = DBselect(
'SELECT ac.conditionid,ac.actionid'.
' FROM conditions ac'.
' WHERE ac.conditiontype='.ZBX_CONDITION_TYPE_TRIGGER.
' AND '.dbConditionString('ac.value', $del_triggerids)
);
while ($db_action = DBfetch($db_actions)) {
$conditionids[] = $db_action['conditionid'];
$actionids[$db_action['actionid']] = true;