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);
self::checkUsedInActions($del_triggerids);
// Remove trigger sysmap elements.
$selement_triggerids = [];
$selementids = [];
$db_selement_triggers = DBselect(
'SELECT st.selement_triggerid,st.selementid'.
' FROM sysmap_element_trigger st'.
' WHERE '.dbConditionInt('st.triggerid', $del_triggerids)
);
while ($db_selement_trigger = DBfetch($db_selement_triggers)) {