<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://mdminfo.ru/index.php?action=history&amp;feed=atom&amp;title=Modules%2Fdevices%2Fdevices_manage_groups_inc_php</id>
	<title>Modules/devices/devices manage groups inc php - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://mdminfo.ru/index.php?action=history&amp;feed=atom&amp;title=Modules%2Fdevices%2Fdevices_manage_groups_inc_php"/>
	<link rel="alternate" type="text/html" href="https://mdminfo.ru/index.php?title=Modules/devices/devices_manage_groups_inc_php&amp;action=history"/>
	<updated>2026-06-02T11:03:19Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.38.4</generator>
	<entry>
		<id>https://mdminfo.ru/index.php?title=Modules/devices/devices_manage_groups_inc_php&amp;diff=1965&amp;oldid=prev</id>
		<title>Elmax: + devices_manage_groups.inc.php</title>
		<link rel="alternate" type="text/html" href="https://mdminfo.ru/index.php?title=Modules/devices/devices_manage_groups_inc_php&amp;diff=1965&amp;oldid=prev"/>
		<updated>2024-03-30T21:41:58Z</updated>

		<summary type="html">&lt;p&gt;+ devices_manage_groups.inc.php&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[Category:Modules/devices/devices_manage_groups_inc_php | devices_manage_groups.inc.php]]&lt;br /&gt;
&lt;br /&gt;
[[Папки и файлы|ᐂ В корневой раздел]]  [[Modules/devices|ᐃ В директорию расположения файла]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
// Получение значения параметра 'id' из запроса&lt;br /&gt;
$id = gr('id');&lt;br /&gt;
&lt;br /&gt;
// Получение значения параметра 'delete_id' из запроса, преобразование его в целое число&lt;br /&gt;
$delete_id = gr('delete_id','int');&lt;br /&gt;
// Если 'delete_id' не пусто, выполняем удаление группы устройств&lt;br /&gt;
if ($delete_id) {&lt;br /&gt;
    // Выборка группы устройств по ID&lt;br /&gt;
    $rec=SQLSelectOne(&amp;quot;SELECT * FROM devices_groups WHERE ID=&amp;quot;.(int)$delete_id);&lt;br /&gt;
    // Формирование названия свойства для объектов группы&lt;br /&gt;
    $property_title='group'.$rec['SYS_NAME'];&lt;br /&gt;
    // Получение объектов, имеющих свойство с названием 'property_title'&lt;br /&gt;
    $objects = getObjectsByProperty($property_title);&lt;br /&gt;
    // Подсчет количества объектов&lt;br /&gt;
    $total = count($objects);&lt;br /&gt;
    // Цикл по объектам для удаления связанных свойств и значений&lt;br /&gt;
    for($i=0;$i&amp;lt;$total;$i++) {&lt;br /&gt;
        // Получение ID объекта&lt;br /&gt;
        $object_id=gg($objects[$i].'.object_id');&lt;br /&gt;
        // Выборка ID свойства объекта&lt;br /&gt;
        $property_id=current(SQLSelectOne(&amp;quot;SELECT ID FROM properties WHERE OBJECT_ID=&amp;quot;.(int)$object_id.&amp;quot; AND TITLE='&amp;quot;.DBSafe($property_title).&amp;quot;'&amp;quot;));&lt;br /&gt;
        // Если свойство найдено, удаляем его значения и само свойство&lt;br /&gt;
        if ($property_id) {&lt;br /&gt;
            SQLExec(&amp;quot;DELETE FROM pvalues WHERE PROPERTY_ID=&amp;quot;.$property_id.&amp;quot; AND OBJECT_ID=&amp;quot;.$object_id);&lt;br /&gt;
            SQLExec(&amp;quot;DELETE FROM properties WHERE ID=&amp;quot;.$property_id);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    // Удаление группы устройств&lt;br /&gt;
    SQLExec(&amp;quot;DELETE FROM devices_groups WHERE ID=&amp;quot;.$rec['ID']);&lt;br /&gt;
    // Очистка кэша значений&lt;br /&gt;
    SQLTruncateTable('cached_values');&lt;br /&gt;
    // Обновление объектов группы&lt;br /&gt;
    $this-&amp;gt;updateGroupObjects();&lt;br /&gt;
    // Перенаправление на страницу с текущим режимом просмотра&lt;br /&gt;
    $this-&amp;gt;redirect(&amp;quot;?view_mode=&amp;quot;.$this-&amp;gt;view_mode);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Проверяем, не пусто ли значение 'id', чтобы определить, нужно ли выполнять обновление или отображение информации о группе устройств&lt;br /&gt;
if ($id) {&lt;br /&gt;
    // Выполняем SQL-запрос для выбора группы устройств по ID, преобразуя ID в целое число для безопасности&lt;br /&gt;
    $rec=SQLSelectOne(&amp;quot;SELECT * FROM devices_groups WHERE ID=&amp;quot;.(int)$id);&lt;br /&gt;
    // Проверяем, является ли текущий режим обновлением, чтобы выполнить обновление группы&lt;br /&gt;
    if ($this-&amp;gt;mode=='update') {&lt;br /&gt;
        // Инициализируем переменную $ok значением 1, предполагая, что все данные корректны&lt;br /&gt;
        $ok=1;&lt;br /&gt;
        // Получаем новое значение названия группы из запроса&lt;br /&gt;
        $rec['TITLE']=gr('title');&lt;br /&gt;
        // Проверяем, не пусто ли новое значение названия группы&lt;br /&gt;
        if (!$rec['TITLE']) {&lt;br /&gt;
            // Если название пустое, устанавливаем $ok в 0 и добавляем ошибку в вывод&lt;br /&gt;
            $ok=0;&lt;br /&gt;
            $out['ERR_TITLE']=1;&lt;br /&gt;
        }&lt;br /&gt;
        // Очищаем системное имя группы от недопустимых символов и преобразуем его в формат, подходящий для использования в качестве имени&lt;br /&gt;
        $rec['SYS_NAME']=trim(preg_replace('/\W/','',gr('sys_name')));&lt;br /&gt;
        &lt;br /&gt;
// Обрабатываем типы устройств, применяемых к группе, преобразуя массив типов в строку, разделенную запятыми&lt;br /&gt;
// Объявляем глобальную переменную $types, которая содержит типы устройств&lt;br /&gt;
global $types;&lt;br /&gt;
// Проверяем, является ли переменная $types массивом&lt;br /&gt;
if (is_array($types)) {&lt;br /&gt;
    // Если да, то преобразуем массив в строку, разделяя элементы запятыми&lt;br /&gt;
    $rec['APPLY_TYPES']=implode(',',$types);&lt;br /&gt;
} else {&lt;br /&gt;
    // Если переменная $types не является массивом, устанавливаем значение 'APPLY_TYPES' как пустую строку&lt;br /&gt;
    $rec['APPLY_TYPES']='';&lt;br /&gt;
}&lt;br /&gt;
        // Проверяем, все ли данные корректны, и если да, то обновляем или добавляем группу&lt;br /&gt;
        if ($ok) {&lt;br /&gt;
            // Если ID группы уже существует, обновляем группу&lt;br /&gt;
            if ($rec['ID']) {&lt;br /&gt;
                SQLUpdate('devices_groups',$rec);&lt;br /&gt;
            } else {&lt;br /&gt;
                // Если ID группы не существует, добавляем новую группу и получаем ее ID&lt;br /&gt;
                $rec['ID']=SQLInsert('devices_groups',$rec);&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            // Если системное имя группы не задано, генерируем его на основе ID группы&lt;br /&gt;
            if (!$rec['SYS_NAME']) {&lt;br /&gt;
                $rec['SYS_NAME']='Num'.$rec['ID'];&lt;br /&gt;
                SQLUpdate('devices_groups',$rec);&lt;br /&gt;
            }&lt;br /&gt;
            // Вызываем метод для обновления объектов группы&lt;br /&gt;
            $this-&amp;gt;updateGroupObjects();&lt;br /&gt;
            // Перенаправляем пользователя на страницу с текущим режимом просмотра&lt;br /&gt;
            $this-&amp;gt;redirect(&amp;quot;?view_mode=&amp;quot;.$this-&amp;gt;view_mode);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // Если группа существует (т.е. ID группы не пусто), выводим ее данные&lt;br /&gt;
    if ($rec['ID']) {&lt;br /&gt;
        // Выводим данные группы в формате хеша&lt;br /&gt;
        outHash($rec,$out);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // Инициализируем массив для типов устройств, применяемых к группе&lt;br /&gt;
    $types=array();&lt;br /&gt;
&lt;br /&gt;
    // Проверяем, не пусто ли значение типов устройств, применяемых к группе&lt;br /&gt;
    if ($rec['APPLY_TYPES']!='') {&lt;br /&gt;
        // Если значение не пусто, разбиваем строку на массив типов&lt;br /&gt;
        $applied=explode(',',$rec['APPLY_TYPES']);&lt;br /&gt;
    } else {&lt;br /&gt;
        // Если значение пусто, инициализируем массив как пустой&lt;br /&gt;
        $applied=array();&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    // Проходим по всем типам устройств, определенным в системе&lt;br /&gt;
    foreach($this-&amp;gt;device_types as $k=&amp;gt;$v) {&lt;br /&gt;
        // Пропускаем типы устройств без названия&lt;br /&gt;
        if (!$v['TITLE']) continue;&lt;br /&gt;
        // Создаем массив с информацией о типе устройства&lt;br /&gt;
        $type_rec=array('NAME'=&amp;gt;$k,'TITLE'=&amp;gt;$v['TITLE']);&lt;br /&gt;
        // Проверяем, применяется ли текущий тип устройства к группе&lt;br /&gt;
        if (in_array($k,$applied)) {&lt;br /&gt;
            // Если тип применяется, устанавливаем флаг SELECTED&lt;br /&gt;
            $type_rec['SELECTED']=1;&lt;br /&gt;
        }&lt;br /&gt;
        // Добавляем массив с информацией о типе устройства в массив типов&lt;br /&gt;
        $types[]=$type_rec;&lt;br /&gt;
    }&lt;br /&gt;
    // Добавляем массив типов устройств в вывод&lt;br /&gt;
    $out['TYPES']=$types;&lt;br /&gt;
    &lt;br /&gt;
} else {&lt;br /&gt;
    // Если 'id' пусто, выводим список всех групп устройств&lt;br /&gt;
    $groups=SQLSelect(&amp;quot;SELECT * FROM devices_groups ORDER BY TITLE&amp;quot;);&lt;br /&gt;
    // Проходим по каждой группе в списке&lt;br /&gt;
    foreach($groups as &amp;amp;$group) {&lt;br /&gt;
        // Получаем объект группы по системному имени&lt;br /&gt;
        $object_rec=getObject('group'.$group['SYS_NAME']);&lt;br /&gt;
        // Проверяем, существует ли объект группы&lt;br /&gt;
        if ($object_rec-&amp;gt;object_title) {&lt;br /&gt;
            // Если объект существует, добавляем его название в данные группы&lt;br /&gt;
            $group['OBJECT_TITLE']=$object_rec-&amp;gt;object_title;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    // Добавляем список групп устройств в вывод&lt;br /&gt;
    $out['GROUPS']=$groups;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Добавляем ID группы в вывод&lt;br /&gt;
$out['ID']=$id;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Elmax</name></author>
	</entry>
</feed>