<?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_quick_edit_inc_php</id>
	<title>Modules/devices/devices quick edit 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_quick_edit_inc_php"/>
	<link rel="alternate" type="text/html" href="https://mdminfo.ru/index.php?title=Modules/devices/devices_quick_edit_inc_php&amp;action=history"/>
	<updated>2026-06-02T14:09:52Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.38.4</generator>
	<entry>
		<id>https://mdminfo.ru/index.php?title=Modules/devices/devices_quick_edit_inc_php&amp;diff=2083&amp;oldid=prev</id>
		<title>Elmax: Elmax переименовал страницу Devices quick edit inc php в Modules/devices/devices quick edit inc php: Так же пропустил путь Modules/devices/</title>
		<link rel="alternate" type="text/html" href="https://mdminfo.ru/index.php?title=Modules/devices/devices_quick_edit_inc_php&amp;diff=2083&amp;oldid=prev"/>
		<updated>2024-04-02T09:33:18Z</updated>

		<summary type="html">&lt;p&gt;Elmax переименовал страницу &lt;a href=&quot;/wiki/Devices_quick_edit_inc_php&quot; class=&quot;mw-redirect&quot; title=&quot;Devices quick edit inc php&quot;&gt;Devices quick edit inc php&lt;/a&gt; в &lt;a href=&quot;/wiki/Modules/devices/devices_quick_edit_inc_php&quot; title=&quot;Modules/devices/devices quick edit inc php&quot;&gt;Modules/devices/devices quick edit inc php&lt;/a&gt;: Так же пропустил путь Modules/devices/&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Предыдущая версия&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Версия от 12:33, 2 апреля 2024&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Elmax</name></author>
	</entry>
	<entry>
		<id>https://mdminfo.ru/index.php?title=Modules/devices/devices_quick_edit_inc_php&amp;diff=1970&amp;oldid=prev</id>
		<title>Elmax: +файл devices_quick_edit_inc_php</title>
		<link rel="alternate" type="text/html" href="https://mdminfo.ru/index.php?title=Modules/devices/devices_quick_edit_inc_php&amp;diff=1970&amp;oldid=prev"/>
		<updated>2024-03-31T17:04:28Z</updated>

		<summary type="html">&lt;p&gt;+файл devices_quick_edit_inc_php&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[Category:Modules/devices/devices_quick_edit_inc_php | devices_quick_edit.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;
// Если текущий режим обновления&lt;br /&gt;
if ($this-&amp;gt;mode=='update') {&lt;br /&gt;
    //dprint($_REQUEST);&lt;br /&gt;
    $location_ids=array();&lt;br /&gt;
    // Проходим по всем запросам&lt;br /&gt;
    foreach($_REQUEST as $k=&amp;gt;$v) {&lt;br /&gt;
        // Если ключ соответствует шаблону location с числом&lt;br /&gt;
        if (preg_match('/location(\d+)/',$k,$m)) {&lt;br /&gt;
            // Получаем запись о локации по ID&lt;br /&gt;
            $location_rec=SQLSelectOne(&amp;quot;SELECT * FROM locations WHERE ID=&amp;quot;.$m[1]);&lt;br /&gt;
            // Если запись найдена&lt;br /&gt;
            if ($location_rec['ID']) {&lt;br /&gt;
                // Обновляем название локации&lt;br /&gt;
                $location_rec['TITLE']=gr($k);&lt;br /&gt;
                // Обновляем запись в базе данных&lt;br /&gt;
                SQLUpdate('locations',$location_rec);&lt;br /&gt;
            } else {&lt;br /&gt;
                // Создаем новую запись о локации&lt;br /&gt;
                $location_rec=array();&lt;br /&gt;
                $location_rec['TITLE']=gr($k);&lt;br /&gt;
                $location_rec['ID']=SQLInsert('locations',$location_rec);&lt;br /&gt;
            }&lt;br /&gt;
            // Добавляем ID локация в массив&lt;br /&gt;
            $location_ids[$m[1]]=$location_rec['ID'];&lt;br /&gt;
        }&lt;br /&gt;
        // Если ключ соответствует шаблону device с числом&lt;br /&gt;
        if (preg_match('/device(\d+)/',$k,$m)) {&lt;br /&gt;
            // Получаем запись о устройстве по ID&lt;br /&gt;
            $device=SQLSelectOne(&amp;quot;SELECT * FROM devices WHERE ID=&amp;quot;.$m[1]);&lt;br /&gt;
            // Если запись найдена и название устройства изменилось&lt;br /&gt;
            if ($device['ID'] &amp;amp;&amp;amp; $device['TITLE']!=gr($k)) {&lt;br /&gt;
                // Обновляем название устройства&lt;br /&gt;
                $device['TITLE']=gr($k);&lt;br /&gt;
                // Обновляем запись в базе данных&lt;br /&gt;
                SQLUpdate('devices',$device);&lt;br /&gt;
                // Получаем запись о связанном объекте&lt;br /&gt;
                $object_rec = SQLSelectOne(&amp;quot;SELECT * FROM objects WHERE TITLE='&amp;quot; . DBSafe($device['LINKED_OBJECT']).&amp;quot;'&amp;quot;);&lt;br /&gt;
                // Если запись о связанном объекте найдена&lt;br /&gt;
                if ($object_rec['ID']) {&lt;br /&gt;
                    // Обновляем описание связанного объекта&lt;br /&gt;
                    $object_rec['DESCRIPTION'] = $device['TITLE'];&lt;br /&gt;
                    // Обновляем запись в базе данных&lt;br /&gt;
                    SQLUpdate('objects',$object_rec);&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    //dprint($_REQUEST);&lt;br /&gt;
    $devices_added=0;&lt;br /&gt;
    // Проходим по всем запросам еще раз&lt;br /&gt;
    foreach($_REQUEST as $k=&amp;gt;$v) {&lt;br /&gt;
        // Если ключ соответствует шаблону newdevice с числами&lt;br /&gt;
        if (preg_match('/newdevice(\d+)_l(\d+)/',$k,$m)) {&lt;br /&gt;
            // Получаем название нового устройства и его тип&lt;br /&gt;
            $device_title = gr('newdevice'.$m[1].'_l'.$m[2]);&lt;br /&gt;
            $device_type= gr('newtype'.$m[1].'_l'.$m[2]);&lt;br /&gt;
            // Получаем ID локация&lt;br /&gt;
            $location_id=$location_ids[$m[2]];&lt;br /&gt;
            // Если все данные предоставлены&lt;br /&gt;
            if ($device_title &amp;amp;&amp;amp; $device_type &amp;amp;&amp;amp; $location_id) {&lt;br /&gt;
                // Создаем новую запись о устройстве&lt;br /&gt;
                $rec=array();&lt;br /&gt;
                $rec['TITLE']=$device_title;&lt;br /&gt;
                $rec['LOCATION_ID']=$location_id;&lt;br /&gt;
                $rec['TYPE']=$device_type;&lt;br /&gt;
                $rec['ID']=SQLInsert('devices',$rec);&lt;br /&gt;
&lt;br /&gt;
                // Получаем название комнаты по ID локации&lt;br /&gt;
                $location_title = getRoomObjectByLocation($rec['LOCATION_ID'], 1);&lt;br /&gt;
&lt;br /&gt;
                // Получаем детали типа устройства&lt;br /&gt;
                $type_details = $this-&amp;gt;getTypeDetails($rec['TYPE']);&lt;br /&gt;
                // Формируем префикс для нового объекта&lt;br /&gt;
                $prefix = ucfirst($rec['TYPE']);&lt;br /&gt;
                // Получаем новое название объекта&lt;br /&gt;
                $new_object_title = $prefix . $this-&amp;gt;getNewObjectIndex($type_details['CLASS'], $prefix);&lt;br /&gt;
                // Добавляем новый объект&lt;br /&gt;
                $object_id = addClassObject($type_details['CLASS'], $new_object_title, 'sdevice' . $rec['ID']);&lt;br /&gt;
                // Обновляем связанный объект устройства&lt;br /&gt;
                $rec['LINKED_OBJECT'] = $new_object_title;&lt;br /&gt;
                SQLUpdate('devices', $rec);&lt;br /&gt;
&lt;br /&gt;
                // Добавляем новый объект еще раз (похоже, дублирование кода)&lt;br /&gt;
                $object_id = addClassObject($type_details['CLASS'], $rec['LINKED_OBJECT'], 'sdevice' . $rec['ID']);&lt;br /&gt;
                // Получаем ID класса&lt;br /&gt;
                $class_id = current(SQLSelectOne(&amp;quot;SELECT ID FROM classes WHERE TITLE LIKE '&amp;quot; . DBSafe($type_details['CLASS']) . &amp;quot;'&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
                // Получаем запись о новом объекте&lt;br /&gt;
                $object_rec = SQLSelectOne(&amp;quot;SELECT * FROM objects WHERE ID=&amp;quot; . $object_id);&lt;br /&gt;
                // Обновляем описание и локацие объекта&lt;br /&gt;
                $object_rec['DESCRIPTION'] = $rec['TITLE'];&lt;br /&gt;
                $object_rec['LOCATION_ID'] = $rec['LOCATION_ID'];&lt;br /&gt;
                SQLUpdate('objects', $object_rec);&lt;br /&gt;
&lt;br /&gt;
                // Если название комнаты предоставлено&lt;br /&gt;
                if ($location_title) {&lt;br /&gt;
                    // Устанавливаем глобальную переменную для связи объекта с комнатой&lt;br /&gt;
                    setGlobal($object_rec['TITLE'] . '.linkedRoom', $location_title);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                // Устанавливаем минимальное и максимальное значения для датчиков температуры&lt;br /&gt;
                if ($rec['TYPE'] == 'sensor_temp') {&lt;br /&gt;
                    setGlobal($object_rec['TITLE'] . '.minValue', 16);&lt;br /&gt;
                    setGlobal($object_rec['TITLE'] . '.maxValue', 25);&lt;br /&gt;
                }&lt;br /&gt;
                // Устанавливаем минимальное и максимальное значения для датчиков влажности&lt;br /&gt;
                if ($rec['TYPE'] == 'sensor_humidity') {&lt;br /&gt;
                    setGlobal($object_rec['TITLE'] . '.minValue', 30);&lt;br /&gt;
                    setGlobal($object_rec['TITLE'] . '.maxValue', 60);&lt;br /&gt;
                }&lt;br /&gt;
                // Увеличиваем счетчик добавленных устройств&lt;br /&gt;
                $devices_added++;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    // Добавляем задачу в очередь синхронизации устройств&lt;br /&gt;
    addToOperationsQueue('connect_sync_devices', 'required');&lt;br /&gt;
    // Выполняем синхронизацию с Homebridge&lt;br /&gt;
    $this-&amp;gt;homebridgeSync();&lt;br /&gt;
&lt;br /&gt;
    // Перенаправляем пользователя на главную страницу&lt;br /&gt;
    $this-&amp;gt;redirect(&amp;quot;?&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Получаем список всех локаций&lt;br /&gt;
$locations = SQLSelect(&amp;quot;SELECT * FROM locations ORDER BY TITLE&amp;quot;);&lt;br /&gt;
$total = count($locations);&lt;br /&gt;
// Проходим по всем локациям&lt;br /&gt;
for($i=0;$i&amp;lt;$total;$i++) {&lt;br /&gt;
    // Получаем список устройств для каждой комнаты&lt;br /&gt;
    $devices=SQLSelect(&amp;quot;SELECT * FROM devices WHERE LOCATION_ID=&amp;quot;.$locations[$i]['ID'].&amp;quot; ORDER BY TITLE&amp;quot;);&lt;br /&gt;
    // Добавляем список устройств в массив локаций&lt;br /&gt;
    $locations[$i]['DEVICES']=$devices;&lt;br /&gt;
}&lt;br /&gt;
$out['LOCATIONS'] = $locations;&lt;br /&gt;
&lt;br /&gt;
// Получаем список всех типов устройств&lt;br /&gt;
$types = array();&lt;br /&gt;
foreach ($this-&amp;gt;device_types as $k =&amp;gt; $v) {&lt;br /&gt;
    // Если тип устройства имеет название&lt;br /&gt;
    if ($v['TITLE']) {&lt;br /&gt;
        // Добавляем тип устройства в массив&lt;br /&gt;
        $types[] = array('NAME' =&amp;gt; $k, 'TITLE' =&amp;gt; $v['TITLE']);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Сортируем типы устройств по названию&lt;br /&gt;
usort($types, function ($a, $b) {&lt;br /&gt;
    return strcmp($a['TITLE'], $b['TITLE']);&lt;br /&gt;
});&lt;br /&gt;
$out['TYPES'] = $types;&lt;br /&gt;
&lt;br /&gt;
// Формируем HTML-код для выпадающего списка типов устройств&lt;br /&gt;
$types_options='&amp;lt;option value=&amp;quot;&amp;quot;&amp;gt;'.LANG_TYPE;&lt;br /&gt;
foreach($out['TYPES'] as $type) {&lt;br /&gt;
    $types_options.='&amp;lt;option value=&amp;quot;'.$type['NAME'].'&amp;quot;&amp;gt;'.$type['TITLE'];&lt;br /&gt;
}&lt;br /&gt;
$out['TYPES_OPTIONS']=$types_options;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Elmax</name></author>
	</entry>
</feed>