<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://mdminfo.ru/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Xor</id>
	<title>MajorDoMo инфо - Вклад [ru]</title>
	<link rel="self" type="application/atom+xml" href="https://mdminfo.ru/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Xor"/>
	<link rel="alternate" type="text/html" href="https://mdminfo.ru/wiki/%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%92%D0%BA%D0%BB%D0%B0%D0%B4/Xor"/>
	<updated>2026-06-02T16:18:59Z</updated>
	<subtitle>Вклад</subtitle>
	<generator>MediaWiki 1.38.4</generator>
	<entry>
		<id>https://mdminfo.ru/index.php?title=%D0%A2%D0%B5%D0%BB%D0%B5%D0%B3%D1%80%D0%B0%D0%BC_%D0%9E%D1%82%D0%BF%D1%80%D0%B0%D0%B2%D0%BA%D0%B0_%D0%B8%D0%B7%D0%BE%D0%B1%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F_%D1%81_IP_%D0%BA%D0%B0%D0%BC%D0%B5%D1%80%D1%8B_.&amp;diff=1893</id>
		<title>Телеграм Отправка изображения с IP камеры .</title>
		<link rel="alternate" type="text/html" href="https://mdminfo.ru/index.php?title=%D0%A2%D0%B5%D0%BB%D0%B5%D0%B3%D1%80%D0%B0%D0%BC_%D0%9E%D1%82%D0%BF%D1%80%D0%B0%D0%B2%D0%BA%D0%B0_%D0%B8%D0%B7%D0%BE%D0%B1%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F_%D1%81_IP_%D0%BA%D0%B0%D0%BC%D0%B5%D1%80%D1%8B_.&amp;diff=1893"/>
		<updated>2023-06-15T16:42:05Z</updated>

		<summary type="html">&lt;p&gt;Xor: /* Код */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Юзеркейсы]]&lt;br /&gt;
==Описание==&lt;br /&gt;
Телеграмм. Отправка изображения с IP камеры.&lt;br /&gt;
==Код==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
include_once(DIR_MODULES . 'telegram/telegram.class.php');&lt;br /&gt;
$telegram_module = new telegram();&lt;br /&gt;
&lt;br /&gt;
exec('sudo ffmpeg -i rtsp://IP:port/user=admin_password=imfzZCJe_channel=0_stream=0.sdp?real_stream -y -f mjpeg -t 0.110 -s 1280x720 mnt/Backup/Video/out.jpg');&lt;br /&gt;
$jpg=&amp;quot;/mnt/Backup/Video/out.jpg&amp;quot;;&lt;br /&gt;
$this-&amp;gt;sendImageToUser($chat_id,$jpg);&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
'''rtsp://IP:port''' - адрес и порт камеры.&lt;br /&gt;
 &lt;br /&gt;
'''mnt/Backup/Video/out.jpg''' - путь куда сохранять снимок, у вас он может быть другой.&lt;br /&gt;
&lt;br /&gt;
'''sudo''' =&amp;gt; для линукс&lt;br /&gt;
&lt;br /&gt;
'''rtsp://IP:port/user=admin_password=imfzZCJe_channel=0_stream=0.sdp?real_stream''' - ссылка на поток с камеры, естественно, индивидуально настраивается.&lt;/div&gt;</summary>
		<author><name>Xor</name></author>
	</entry>
	<entry>
		<id>https://mdminfo.ru/index.php?title=MQTT_%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8C&amp;diff=1821</id>
		<title>MQTT модуль</title>
		<link rel="alternate" type="text/html" href="https://mdminfo.ru/index.php?title=MQTT_%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8C&amp;diff=1821"/>
		<updated>2022-07-16T08:26:35Z</updated>

		<summary type="html">&lt;p&gt;Xor: /* Примеры кода */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:MQTT]]&lt;br /&gt;
[[Category:Модули]]&lt;br /&gt;
'''MQTT''' - (англ. message queuing telemetry transport) — упрощённый сетевой протокол, работающий поверх TCP/IP, ориентированный для обмена сообщениями между устройствами по принципу издатель-подписчик.&lt;br /&gt;
&lt;br /&gt;
Модуль выступает клиентом и способен отправлять и принимать сообщения через сервер, модуль умеет не только прямые подписки на ветки от других клиентов(устройств), но и разбивать данные в формате JSON на ветки и свойства. Вы можете привязывать каждое полученное сообщение в ветке к нужному свойству, ветки не привязанные к свойствам никуда не пишут свои данные.&lt;br /&gt;
&lt;br /&gt;
Для работы клиентов MQTT необходим сервер или еще его называют брокером (в предустановленном наборе и рекомендованный к использованию Mosquitto), данный сервер отвечает за пересылку сообщений от клиента к клиенту. Клиент MQTT может находится где угодно и для работы ему необходим только канал связи с сервером MQTT. Таким образом вы можете через интернет управлять устройствами поддерживающими MQTT протокол где угодно. Они в свою очередь сообщат вам о своем состоянии тем же образом. MajorDoMo может автоматизировать ваш гараж находясь у вас дома, для этого необходим только интернет канал и устройства с поддержкой MQTT.&lt;br /&gt;
&lt;br /&gt;
[[Файл:2019-12-12 08-44-27.jpg|мини|слева|Настройки mqtt]] [[Файл:2019-12-12 08-42-40.jpg|мини|центр|настройка топика mqtt]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Про retain.&lt;br /&gt;
Это &amp;quot;залипание&amp;quot; топика на MQTT брокере.&lt;br /&gt;
&lt;br /&gt;
При подписывании нового клиента к топику он первым делом получает текущее, &amp;quot;залипшее&amp;quot; значение - независимо от того как давно оно произошло (ну, с учетом настроек брокера).&lt;br /&gt;
&lt;br /&gt;
Логика простая: если в топике предполагается хранение текущего значения - лучше его сделать retained. Тогда он будет доступен всем клиентам в любой момент, им не нужно будет дожидаться повторной отправки значения источником.&lt;br /&gt;
&lt;br /&gt;
Если же топик предполагается использовать для какого-то события, которое важно именно в момент его возникновения - тогда флаг retained выставлять не следует.&lt;br /&gt;
&lt;br /&gt;
Соответственно, retained топик потребляет больше ресурсов брокера, и использовать его нужно только тогда когда необходимо.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Для фиксации положения осветителей (включены или выключены) при отключении света её можно использовать. В этом случае тот же MD будет знать текущее состояние освещения даже сразу после перезагрузки сервера а не тогда когда кто-то щелкнет выключателем.&lt;br /&gt;
&lt;br /&gt;
А, вот пример когда retained использовать точно не следует: например, в момент нажатия кнопки по MQTT отправляется топик (не важно, со значением или без значения). Просто для того чтобы оповестить подписчиков что произошло событие &amp;quot;нажатие кнопки&amp;quot;. Так вот, если его сделать retained, то каждый новый клиент при подписывании на топик сразу получит оповещение &amp;quot;кнопка была нажата&amp;quot;, даже если это произошло очень давно.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Несколько видео по настройке&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;gL3UM_HuXAM&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube&amp;gt;EwH6jY_scUU&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube&amp;gt;jFUPy1q3ze8&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube&amp;gt;4O-2dJwRQtg&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Примеры кода==&lt;br /&gt;
Отправка сообщения через модуль в топик&lt;br /&gt;
&amp;lt;pre&amp;gt;include_once(DIR_MODULES . 'mqtt/mqtt.class.php');&lt;br /&gt;
$mqtt = new mqtt();&lt;br /&gt;
$qos = 0;&lt;br /&gt;
$retain = 0;&lt;br /&gt;
$write_type = 0;&lt;br /&gt;
$rezult = $mqtt-&amp;gt;mqttPublish($topic, $value, $qos, $retain, $write_type);&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ошибки==&lt;br /&gt;
После перехода mosquitto на version 2.0.10 были по дефолту активировали секьюрити функции теперь запрещен доступ без пароля и запрещено подключение с любых систем не 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
Для начала проверим что версия новая стала &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;mosquitto -v&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
в консоли линя выведет вам версию, если она больше 2.0 то идем в конфиг&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;/etc/mosquitto/mosquitto.conf&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
правим файл, к тому что есть дописываем &lt;br /&gt;
&amp;lt;pre&amp;gt;listener 1883 0.0.0.0&amp;lt;/pre&amp;gt;  разрешает подключение к брокеру на любом интерфейсе.&lt;br /&gt;
&amp;lt;pre&amp;gt;allow_anonymous true&amp;lt;/pre&amp;gt; разрешает подключение без паролей.&lt;/div&gt;</summary>
		<author><name>Xor</name></author>
	</entry>
	<entry>
		<id>https://mdminfo.ru/index.php?title=NEW_VALUE_%D0%B8_OLD_VALUE&amp;diff=1705</id>
		<title>NEW VALUE и OLD VALUE</title>
		<link rel="alternate" type="text/html" href="https://mdminfo.ru/index.php?title=NEW_VALUE_%D0%B8_OLD_VALUE&amp;diff=1705"/>
		<updated>2021-01-08T08:50:16Z</updated>

		<summary type="html">&lt;p&gt;Xor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Примеры]]&lt;br /&gt;
&lt;br /&gt;
При выполнении связанного со свойством метода в него передаются параметры - текущее значение свойства (OLD_VALUE) и новое значение (NEW_VALUE)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;if ($params['NEW_VALUE'] == $params['OLD_VALUE']) return; //код сравнивает новое значение со старым и выходит из метода если они совпадают.&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
срабатывание по фронту для 0/1 значений&lt;br /&gt;
&amp;lt;pre&amp;gt;if ($params['NEW_VALUE'] == 1 &amp;amp;&amp;amp; $params['OLD_VALUE'] == 0) { // из 0 в 1 - &amp;quot;началось&amp;quot;}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;if ($params['NEW_VALUE'] == 0 &amp;amp;&amp;amp; $params['OLD_VALUE'] == 1) { // из 1 в 0  - &amp;quot;кончилось&amp;quot;}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Однако из топика MQTT приходит параметр не NEW_VALUE, а '''VALUE'''. При использовании привязки методов к топикам использовать его.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Так же можно использовать в различных условиях передаваемые данные (ниже пример вызова метода по изменению свойства класса)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//{&amp;quot;PROPERTY&amp;quot;:&amp;quot;temperatureDevices&amp;quot;, &amp;quot;NEW_VALUE&amp;quot;:&amp;quot;29.05&amp;quot;, &amp;quot;OLD_VALUE&amp;quot;:&amp;quot;29.05&amp;quot;, &amp;quot;no_session&amp;quot;:&amp;quot;1&amp;quot;, &amp;quot;ORIGINAL_OBJECT_TITLE&amp;quot;:&amp;quot;ZB_relay_03&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
if ($params['PROPERTY'] == &amp;quot;temperatureDevices&amp;quot;) $temp=$params['NEW_VALUE'];&lt;br /&gt;
else $temp=$this-&amp;gt;getProperty('temperatureDevices');&lt;br /&gt;
&lt;br /&gt;
if ($params['ORIGINAL_OBJECT_TITLE'] == &amp;quot;ZB_relay_03&amp;quot;) $ot=$params['ORIGINAL_OBJECT_TITLE'];&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
==Поисковые запросы==&lt;br /&gt;
олдвалуе, ньювалуе, Алиса постоянно говорит значения которые изменились, в чате постоянно пишет, повтор сообщения, повторы, многократное срабатывание метода при одном и том же значении свойства, срабатывание метода только при изменении значения, срабатывание по фронту, препроцессинг и постпроцессинг значений свойств объектов&lt;/div&gt;</summary>
		<author><name>Xor</name></author>
	</entry>
	<entry>
		<id>https://mdminfo.ru/index.php?title=%D0%A1%D0%BA%D0%BB%D0%BE%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5_%D1%81%D0%BB%D0%BE%D0%B2_%D0%B4%D0%BB%D1%8F_%22%D0%90%D0%BB%D0%B8%D1%81%D1%8B%22&amp;diff=1704</id>
		<title>Склонение слов для &quot;Алисы&quot;</title>
		<link rel="alternate" type="text/html" href="https://mdminfo.ru/index.php?title=%D0%A1%D0%BA%D0%BB%D0%BE%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5_%D1%81%D0%BB%D0%BE%D0%B2_%D0%B4%D0%BB%D1%8F_%22%D0%90%D0%BB%D0%B8%D1%81%D1%8B%22&amp;diff=1704"/>
		<updated>2021-01-08T08:19:12Z</updated>

		<summary type="html">&lt;p&gt;Xor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Юзеркейсы]]&lt;br /&gt;
==Описание==&lt;br /&gt;
Склонение слов для голосового движка &amp;quot;Алиса&amp;quot;. На основе данного кода можно сделать склонения для любых данных. В данном примере показано как склонять слово &amp;quot;проценты&amp;quot;.&lt;br /&gt;
==Код==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 $h = '22';&lt;br /&gt;
    $tempcels = GetNumberWord($h,array('процент','процента','процентов')); &lt;br /&gt;
    $status .= &amp;quot; Относительная влажность &amp;quot;.$h.&amp;quot; &amp;quot;.$tempcels;&lt;br /&gt;
echo $status;// выводим результат в браузер&lt;br /&gt;
sg('data.hum',$status);// или кидаем в свойство&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Xor</name></author>
	</entry>
	<entry>
		<id>https://mdminfo.ru/index.php?title=Cms/Texts&amp;diff=1294</id>
		<title>Cms/Texts</title>
		<link rel="alternate" type="text/html" href="https://mdminfo.ru/index.php?title=Cms/Texts&amp;diff=1294"/>
		<updated>2020-06-21T21:02:01Z</updated>

		<summary type="html">&lt;p&gt;Xor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Cms/Texts|/cms/texts]]&lt;br /&gt;
&lt;br /&gt;
В этой папке хранятся текстовые файлы созданные в разделе НАСТРОЙКИ =&amp;gt; Текстовые файлы. Так же можно закидывать созданные отдельно файлы и они будут видны в этом разделе.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Использовать можно например для вариативности ответов в шаблонах поведения.&amp;lt;br&amp;gt;&lt;br /&gt;
Допустим вы создали шаблон &amp;lt;pre&amp;gt;приветик|здравствуй&amp;lt;/pre&amp;gt; и код ответа у вас &amp;lt;pre&amp;gt;say('здравствуйте',2);&amp;lt;/pre&amp;gt;  но вам надоел однотипный ответ и вы хотите свободы в творчестве и фантазии.&lt;br /&gt;
Не проблема.&lt;br /&gt;
Создайте текстовый файл в блокноте с вариантами ответов, каждый с новой строчки с таким содержанием&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;Доброе утро.&lt;br /&gt;
Здравствуйте.&lt;br /&gt;
Приветик, как спалось?&lt;br /&gt;
Ну и зачем вы меня пробудили.&lt;br /&gt;
Приятного вам утра.&lt;br /&gt;
Привет, желаю жить и радоваться новому дню.&lt;br /&gt;
Чего ты хочешь от меня в такую рань?&lt;br /&gt;
Пусть это утро будет удачным стартом для твоего яркого и успешного дня.&lt;br /&gt;
Замечательного вам настроения на весь предстоящий день.&lt;br /&gt;
Давай-ка по кофейку и вперёд, навстречу счастью.&lt;br /&gt;
Желаю бодрого утра, перерастающего в грандиозно успешный день.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
сохраните файл присвоив ему ассоциативное имя чтобы потом не забыть что в вашем файле находится к примеру Dobroe_Utro.txt&lt;br /&gt;
Поместите файл или несколько в директорию /cms/texts в которой вы читаете это описание и тогда на него можно ссылаться в коде. Изменив немного код ответа в шаблоне, например, на&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;if(timeBetween(&amp;quot;06:00&amp;quot;, &amp;quot;10:00&amp;quot;)){&lt;br /&gt;
  sayReply(getRandomLine('Dobroe_Utro'),3);&lt;br /&gt;
}elseif(timeBetween(&amp;quot;10:00&amp;quot;, &amp;quot;17:00&amp;quot;)){&lt;br /&gt;
  sayReply(getRandomLine('Dobry_Den'),1);&lt;br /&gt;
}elseif(timeBetween(&amp;quot;17:00&amp;quot;, &amp;quot;22:22&amp;quot;)){&lt;br /&gt;
  sayReply(getRandomLine('Dobry_Vecher'),2);&lt;br /&gt;
}elseif(timeBetween(&amp;quot;22:22&amp;quot;, &amp;quot;02:00&amp;quot;)){&lt;br /&gt;
  sayReply(getRandomLine('Dobroy_nochi'),4);&lt;br /&gt;
}else{ //иначе напишет в чат&lt;br /&gt;
  sayReply('Я  уже устала от вас ложитесь спать а утром поговорим',0); &lt;br /&gt;
}&amp;lt;/pre&amp;gt; Творческая цель достигнута простым движением руки, теперь ваша &amp;quot;Алиса&amp;quot; будет рандомно брать строчки из текстового файла и каждый раз приветствовать вас так как вы ей описали в файле и радовать вас своей вариативностью.&lt;br /&gt;
&lt;br /&gt;
Применение текстовых файлов не ограничивается шаблонами.&lt;/div&gt;</summary>
		<author><name>Xor</name></author>
	</entry>
	<entry>
		<id>https://mdminfo.ru/index.php?title=Cms/Texts&amp;diff=1293</id>
		<title>Cms/Texts</title>
		<link rel="alternate" type="text/html" href="https://mdminfo.ru/index.php?title=Cms/Texts&amp;diff=1293"/>
		<updated>2020-06-21T21:00:54Z</updated>

		<summary type="html">&lt;p&gt;Xor: регистр в шаблоне не важен уже&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Cms/Texts|/cms/texts]]&lt;br /&gt;
&lt;br /&gt;
В этой папке хранятся текстовые файлы созданные в разделе НАСТРОЙКИ =&amp;gt; Текстовые файлы. Так же можно закидывать созданные отдельно файлы и они будут видны в этом разделе.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Использовать можно например для вариативности ответов в шаблонах поведения.&amp;lt;br&amp;gt;&lt;br /&gt;
Допустим вы создали шаблон &amp;lt;pre&amp;gt;приветик|здравствуй&amp;lt;/pre&amp;gt; и код ответа у вас &amp;lt;pre&amp;gt;say('здравствуйте',2);&amp;lt;/pre&amp;gt;  но вам надоел однотипный ответ и вы хотите свободы в творчестве и фантазии.&lt;br /&gt;
Не проблема.&lt;br /&gt;
Создайте текстовый файл в блокноте с вариантами ответов, каждый с новой строчки с таким содержанием&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;Доброе утро.&lt;br /&gt;
Здравствуйте.&lt;br /&gt;
Приветик, как спалось?&lt;br /&gt;
Ну и зачем вы меня пробудили.&lt;br /&gt;
Приятного вам утра.&lt;br /&gt;
Привет, желаю жить и радоваться новому дню.&lt;br /&gt;
Чего ты хочешь от меня в такую рань?&lt;br /&gt;
Пусть это утро будет удачным стартом для твоего яркого и успешного дня.&lt;br /&gt;
Замечательного вам настроения на весь предстоящий день.&lt;br /&gt;
Давай-ка по кофейку и вперёд, навстречу счастью.&lt;br /&gt;
Желаю бодрого утра, перерастающего в грандиозно успешный день.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
сохраните файл присвоив ему ассоциативное имя чтобы потом не забыть что в вашем файле находится к примеру Dobroe_Utro.txt&lt;br /&gt;
Поместите файл или несколько в директорию /cms/texts в которой вы читаете это описание и тогда на него можно ссылаться в коде. Изменив немного код ответа в шаблоне &amp;lt;pre&amp;gt;(П|п)ривет|ик|(З|з)дравствуй&amp;lt;/pre&amp;gt; например на&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;if(timeBetween(&amp;quot;06:00&amp;quot;, &amp;quot;10:00&amp;quot;)){&lt;br /&gt;
  sayReply(getRandomLine('Dobroe_Utro'),3);&lt;br /&gt;
}elseif(timeBetween(&amp;quot;10:00&amp;quot;, &amp;quot;17:00&amp;quot;)){&lt;br /&gt;
  sayReply(getRandomLine('Dobry_Den'),1);&lt;br /&gt;
}elseif(timeBetween(&amp;quot;17:00&amp;quot;, &amp;quot;22:22&amp;quot;)){&lt;br /&gt;
  sayReply(getRandomLine('Dobry_Vecher'),2);&lt;br /&gt;
}elseif(timeBetween(&amp;quot;22:22&amp;quot;, &amp;quot;02:00&amp;quot;)){&lt;br /&gt;
  sayReply(getRandomLine('Dobroy_nochi'),4);&lt;br /&gt;
}else{ //иначе напишет в чат&lt;br /&gt;
  sayReply('Я  уже устала от вас ложитесь спать а утром поговорим',0); &lt;br /&gt;
}&amp;lt;/pre&amp;gt; Творческая цель достигнута простым движением руки, теперь ваша &amp;quot;Алиса&amp;quot; будет рандомно брать строчки из текстового файла и каждый раз приветствовать вас так как вы ей описали в файле и радовать вас своей вариативностью.&lt;br /&gt;
&lt;br /&gt;
Применение текстовых файлов не ограничивается шаблонами.&lt;/div&gt;</summary>
		<author><name>Xor</name></author>
	</entry>
	<entry>
		<id>https://mdminfo.ru/index.php?title=ClearScheduledJob&amp;diff=937</id>
		<title>ClearScheduledJob</title>
		<link rel="alternate" type="text/html" href="https://mdminfo.ru/index.php?title=ClearScheduledJob&amp;diff=937"/>
		<updated>2020-04-26T22:43:16Z</updated>

		<summary type="html">&lt;p&gt;Xor: /* Описание */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Встроенные функции]]&lt;br /&gt;
==Описание==&lt;br /&gt;
'''ClearScheduledJob'''('title'); -- может использоваться маска типа &amp;quot;title%&amp;quot; (заявлено, но не может((( )&lt;br /&gt;
&lt;br /&gt;
==Примеры запросов==&lt;br /&gt;
&lt;br /&gt;
==Альтернативные названия функции (сленг)==&lt;br /&gt;
&lt;br /&gt;
==Просто для проверки появления разделов==&lt;/div&gt;</summary>
		<author><name>Xor</name></author>
	</entry>
	<entry>
		<id>https://mdminfo.ru/index.php?title=Phistory_to_archive&amp;diff=935</id>
		<title>Phistory to archive</title>
		<link rel="alternate" type="text/html" href="https://mdminfo.ru/index.php?title=Phistory_to_archive&amp;diff=935"/>
		<updated>2020-04-26T19:01:15Z</updated>

		<summary type="html">&lt;p&gt;Xor: /* Скрипт для запуска каждый месяц */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Из телеграмчата от пользователя XOR&lt;br /&gt;
&lt;br /&gt;
====Описание====&lt;br /&gt;
&lt;br /&gt;
Для ускорения работы MajorDoMo, есть смысл перенести таблицу phistory &amp;quot;боевой&amp;quot; (читай основной рабочей) базы в таблицу отдельно созданной базы, для истории или анализа сторонними методами. Приведенный ниже код переносит данные, старше 2-х месяцев, из таблицы phistory боевой базы в таблицу history базы archive. Тут приведен пример экспорта истории в базу рядом, что даёт некоторые преимущества по ср., например, с вариантом, когда экспорт идёт во внешний файл (что актуально для малины).&lt;br /&gt;
&lt;br /&gt;
Все работы проводим '''на свой страх и риск''' в phpmyadmin. Возможно позже появится что-то автоматизированное.&lt;br /&gt;
&lt;br /&gt;
'''Внимание!!!&lt;br /&gt;
лучше сначала не удаляйте из боя, убедитесь, что база создана, с нужной кодировкой и правами. создайте там таблицу, наполните данными, посмотрите, что всё в порядке. а потом можно и чистить бой.'''&lt;br /&gt;
&lt;br /&gt;
====Создаем &amp;quot;вьюху&amp;quot;====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// она у меня не только для этого) тут просто в очередной раз используется&lt;br /&gt;
// для того, чтобы от айди перейти к Объект.Свойство&lt;br /&gt;
// тут стандартная связь между классом, объектом, свойством и айди&lt;br /&gt;
// поддерживается иерархия классов глубиной в 3&lt;br /&gt;
CREATE OR REPLACE VIEW vw_clobjpr AS&lt;br /&gt;
select `v`.`ID` AS `value_id`,`v`.`PROPERTY_ID` AS `PROPERTY_ID`,`v`.`PROPERTY_NAME` AS `PROPERTY_NAME`,`v`.`UPDATED` AS `UPDATED`,&lt;br /&gt;
`v`.`VALUE` AS `VALUE`,`p`.`TITLE` AS `property`,&lt;br /&gt;
`o`.`TITLE` AS `object`,`c`.`TITLE` AS `class`,`cp`.`TITLE` AS `class_parent`,`cpp`.`TITLE` AS `class_pparent` &lt;br /&gt;
from (((((`pvalues` `v` join `properties` `p` on((`v`.`PROPERTY_ID` = `p`.`ID`))) &lt;br /&gt;
join `objects` `o` on((`v`.`OBJECT_ID` = `o`.`ID`))) &lt;br /&gt;
left join `classes` `c` on((`o`.`CLASS_ID` = `c`.`ID`))) &lt;br /&gt;
left join `classes` `cp` on((`c`.`PARENT_ID` = `cp`.`ID`))) &lt;br /&gt;
left join `classes` `cpp` on((`cp`.`PARENT_ID` = `cpp`.`ID`)))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Создаем базу====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//из php-скрипта, например, так. База создается с умолчаниями. &lt;br /&gt;
//При необходимости, подправить CHARACTER SET, COLLATE и права&lt;br /&gt;
sqlExec(&amp;quot;CREATE DATABASE IF NOT EXISTS archive&amp;quot;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Создаем таблицу====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
//создадим таблицу из скрипта (пустую) &lt;br /&gt;
$sql = &amp;quot;CREATE TABLE archive.history (&lt;br /&gt;
 `ADDED` datetime DEFAULT NULL,&lt;br /&gt;
 `VALUE` varchar(255) NOT NULL,&lt;br /&gt;
 `PROPERTY_NAME` varchar(100) NOT NULL DEFAULT ''&lt;br /&gt;
) ENGINE=MyISAM DEFAULT CHARSET=utf8&amp;quot;;&lt;br /&gt;
sqlExec($sql);&lt;br /&gt;
//или (запускать из db_terminal)&lt;br /&gt;
//создать таблицу history и напихать туда данные &lt;br /&gt;
create table archive.history as&lt;br /&gt;
SELECT p.`ADDED`,p.`VALUE`,t.property_name  &lt;br /&gt;
FROM `phistory` p&lt;br /&gt;
join vw_clobjpr t on p.`VALUE_ID`=t.value_id&lt;br /&gt;
WHERE p.ADDED &amp;lt; DATE_SUB( NOW( ) , INTERVAL 2&lt;br /&gt;
MONTH ) ;&lt;br /&gt;
&lt;br /&gt;
//желательно тут же удалить напиханные данные из пхистори&lt;br /&gt;
delete&lt;br /&gt;
FROM `phistory` &lt;br /&gt;
WHERE `ADDED` &amp;lt; DATE_SUB( NOW( ) , INTERVAL 2 MONTH ) ;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Скрипт для запуска каждый месяц====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$sql = &amp;quot;INSERT INTO archive_my.history&lt;br /&gt;
SELECT p.`ADDED` , p.`VALUE` , t.property_name&lt;br /&gt;
FROM `phistory` p&lt;br /&gt;
JOIN vw_clobjpr t ON p.`VALUE_ID` = t.value_id&lt;br /&gt;
WHERE p.ADDED &amp;lt; DATE_SUB( NOW( ) , INTERVAL 2 MONTH )&amp;quot; ;&lt;br /&gt;
sqlExec($sql);&lt;br /&gt;
&lt;br /&gt;
$sql = &amp;quot;DELETE FROM `phistory` WHERE `ADDED` &amp;lt; DATE_SUB( NOW( ) , INTERVAL 2 MONTH )&amp;quot; ;&lt;br /&gt;
sqlExec($sql);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Xor</name></author>
	</entry>
	<entry>
		<id>https://mdminfo.ru/index.php?title=Phistory_to_archive&amp;diff=934</id>
		<title>Phistory to archive</title>
		<link rel="alternate" type="text/html" href="https://mdminfo.ru/index.php?title=Phistory_to_archive&amp;diff=934"/>
		<updated>2020-04-26T19:00:43Z</updated>

		<summary type="html">&lt;p&gt;Xor: /* Скрипт для запуска каждый месяц */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Из телеграмчата от пользователя XOR&lt;br /&gt;
&lt;br /&gt;
====Описание====&lt;br /&gt;
&lt;br /&gt;
Для ускорения работы MajorDoMo, есть смысл перенести таблицу phistory &amp;quot;боевой&amp;quot; (читай основной рабочей) базы в таблицу отдельно созданной базы, для истории или анализа сторонними методами. Приведенный ниже код переносит данные, старше 2-х месяцев, из таблицы phistory боевой базы в таблицу history базы archive. Тут приведен пример экспорта истории в базу рядом, что даёт некоторые преимущества по ср., например, с вариантом, когда экспорт идёт во внешний файл (что актуально для малины).&lt;br /&gt;
&lt;br /&gt;
Все работы проводим '''на свой страх и риск''' в phpmyadmin. Возможно позже появится что-то автоматизированное.&lt;br /&gt;
&lt;br /&gt;
'''Внимание!!!&lt;br /&gt;
лучше сначала не удаляйте из боя, убедитесь, что база создана, с нужной кодировкой и правами. создайте там таблицу, наполните данными, посмотрите, что всё в порядке. а потом можно и чистить бой.'''&lt;br /&gt;
&lt;br /&gt;
====Создаем &amp;quot;вьюху&amp;quot;====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// она у меня не только для этого) тут просто в очередной раз используется&lt;br /&gt;
// для того, чтобы от айди перейти к Объект.Свойство&lt;br /&gt;
// тут стандартная связь между классом, объектом, свойством и айди&lt;br /&gt;
// поддерживается иерархия классов глубиной в 3&lt;br /&gt;
CREATE OR REPLACE VIEW vw_clobjpr AS&lt;br /&gt;
select `v`.`ID` AS `value_id`,`v`.`PROPERTY_ID` AS `PROPERTY_ID`,`v`.`PROPERTY_NAME` AS `PROPERTY_NAME`,`v`.`UPDATED` AS `UPDATED`,&lt;br /&gt;
`v`.`VALUE` AS `VALUE`,`p`.`TITLE` AS `property`,&lt;br /&gt;
`o`.`TITLE` AS `object`,`c`.`TITLE` AS `class`,`cp`.`TITLE` AS `class_parent`,`cpp`.`TITLE` AS `class_pparent` &lt;br /&gt;
from (((((`pvalues` `v` join `properties` `p` on((`v`.`PROPERTY_ID` = `p`.`ID`))) &lt;br /&gt;
join `objects` `o` on((`v`.`OBJECT_ID` = `o`.`ID`))) &lt;br /&gt;
left join `classes` `c` on((`o`.`CLASS_ID` = `c`.`ID`))) &lt;br /&gt;
left join `classes` `cp` on((`c`.`PARENT_ID` = `cp`.`ID`))) &lt;br /&gt;
left join `classes` `cpp` on((`cp`.`PARENT_ID` = `cpp`.`ID`)))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Создаем базу====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//из php-скрипта, например, так. База создается с умолчаниями. &lt;br /&gt;
//При необходимости, подправить CHARACTER SET, COLLATE и права&lt;br /&gt;
sqlExec(&amp;quot;CREATE DATABASE IF NOT EXISTS archive&amp;quot;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Создаем таблицу====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
//создадим таблицу из скрипта (пустую) &lt;br /&gt;
$sql = &amp;quot;CREATE TABLE archive.history (&lt;br /&gt;
 `ADDED` datetime DEFAULT NULL,&lt;br /&gt;
 `VALUE` varchar(255) NOT NULL,&lt;br /&gt;
 `PROPERTY_NAME` varchar(100) NOT NULL DEFAULT ''&lt;br /&gt;
) ENGINE=MyISAM DEFAULT CHARSET=utf8&amp;quot;;&lt;br /&gt;
sqlExec($sql);&lt;br /&gt;
//или (запускать из db_terminal)&lt;br /&gt;
//создать таблицу history и напихать туда данные &lt;br /&gt;
create table archive.history as&lt;br /&gt;
SELECT p.`ADDED`,p.`VALUE`,t.property_name  &lt;br /&gt;
FROM `phistory` p&lt;br /&gt;
join vw_clobjpr t on p.`VALUE_ID`=t.value_id&lt;br /&gt;
WHERE p.ADDED &amp;lt; DATE_SUB( NOW( ) , INTERVAL 2&lt;br /&gt;
MONTH ) ;&lt;br /&gt;
&lt;br /&gt;
//желательно тут же удалить напиханные данные из пхистори&lt;br /&gt;
delete&lt;br /&gt;
FROM `phistory` &lt;br /&gt;
WHERE `ADDED` &amp;lt; DATE_SUB( NOW( ) , INTERVAL 2 MONTH ) ;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Скрипт для запуска каждый месяц====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; &lt;br /&gt;
$sql = &amp;quot;INSERT INTO archive_my.history&lt;br /&gt;
SELECT p.`ADDED` , p.`VALUE` , t.property_name&lt;br /&gt;
FROM `phistory` p&lt;br /&gt;
JOIN vw_clobjpr t ON p.`VALUE_ID` = t.value_id&lt;br /&gt;
WHERE p.ADDED &amp;lt; DATE_SUB( NOW( ) , INTERVAL 2 MONTH )&amp;quot; ;&lt;br /&gt;
sqlExec($sql);&lt;br /&gt;
&lt;br /&gt;
$sql = &amp;quot;DELETE FROM `phistory` WHERE `ADDED` &amp;lt; DATE_SUB( NOW( ) , INTERVAL 2 MONTH )&amp;quot; ;&lt;br /&gt;
sqlExec($sql);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Xor</name></author>
	</entry>
	<entry>
		<id>https://mdminfo.ru/index.php?title=Phistory_to_archive&amp;diff=933</id>
		<title>Phistory to archive</title>
		<link rel="alternate" type="text/html" href="https://mdminfo.ru/index.php?title=Phistory_to_archive&amp;diff=933"/>
		<updated>2020-04-26T18:57:54Z</updated>

		<summary type="html">&lt;p&gt;Xor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Из телеграмчата от пользователя XOR&lt;br /&gt;
&lt;br /&gt;
====Описание====&lt;br /&gt;
&lt;br /&gt;
Для ускорения работы MajorDoMo, есть смысл перенести таблицу phistory &amp;quot;боевой&amp;quot; (читай основной рабочей) базы в таблицу отдельно созданной базы, для истории или анализа сторонними методами. Приведенный ниже код переносит данные, старше 2-х месяцев, из таблицы phistory боевой базы в таблицу history базы archive. Тут приведен пример экспорта истории в базу рядом, что даёт некоторые преимущества по ср., например, с вариантом, когда экспорт идёт во внешний файл (что актуально для малины).&lt;br /&gt;
&lt;br /&gt;
Все работы проводим '''на свой страх и риск''' в phpmyadmin. Возможно позже появится что-то автоматизированное.&lt;br /&gt;
&lt;br /&gt;
'''Внимание!!!&lt;br /&gt;
лучше сначала не удаляйте из боя, убедитесь, что база создана, с нужной кодировкой и правами. создайте там таблицу, наполните данными, посмотрите, что всё в порядке. а потом можно и чистить бой.'''&lt;br /&gt;
&lt;br /&gt;
====Создаем &amp;quot;вьюху&amp;quot;====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// она у меня не только для этого) тут просто в очередной раз используется&lt;br /&gt;
// для того, чтобы от айди перейти к Объект.Свойство&lt;br /&gt;
// тут стандартная связь между классом, объектом, свойством и айди&lt;br /&gt;
// поддерживается иерархия классов глубиной в 3&lt;br /&gt;
CREATE OR REPLACE VIEW vw_clobjpr AS&lt;br /&gt;
select `v`.`ID` AS `value_id`,`v`.`PROPERTY_ID` AS `PROPERTY_ID`,`v`.`PROPERTY_NAME` AS `PROPERTY_NAME`,`v`.`UPDATED` AS `UPDATED`,&lt;br /&gt;
`v`.`VALUE` AS `VALUE`,`p`.`TITLE` AS `property`,&lt;br /&gt;
`o`.`TITLE` AS `object`,`c`.`TITLE` AS `class`,`cp`.`TITLE` AS `class_parent`,`cpp`.`TITLE` AS `class_pparent` &lt;br /&gt;
from (((((`pvalues` `v` join `properties` `p` on((`v`.`PROPERTY_ID` = `p`.`ID`))) &lt;br /&gt;
join `objects` `o` on((`v`.`OBJECT_ID` = `o`.`ID`))) &lt;br /&gt;
left join `classes` `c` on((`o`.`CLASS_ID` = `c`.`ID`))) &lt;br /&gt;
left join `classes` `cp` on((`c`.`PARENT_ID` = `cp`.`ID`))) &lt;br /&gt;
left join `classes` `cpp` on((`cp`.`PARENT_ID` = `cpp`.`ID`)))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Создаем базу====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//из php-скрипта, например, так. База создается с умолчаниями. &lt;br /&gt;
//При необходимости, подправить CHARACTER SET, COLLATE и права&lt;br /&gt;
sqlExec(&amp;quot;CREATE DATABASE IF NOT EXISTS archive&amp;quot;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Создаем таблицу====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
//создадим таблицу из скрипта (пустую) &lt;br /&gt;
$sql = &amp;quot;CREATE TABLE archive.history (&lt;br /&gt;
 `ADDED` datetime DEFAULT NULL,&lt;br /&gt;
 `VALUE` varchar(255) NOT NULL,&lt;br /&gt;
 `PROPERTY_NAME` varchar(100) NOT NULL DEFAULT ''&lt;br /&gt;
) ENGINE=MyISAM DEFAULT CHARSET=utf8&amp;quot;;&lt;br /&gt;
sqlExec($sql);&lt;br /&gt;
//или (запускать из db_terminal)&lt;br /&gt;
//создать таблицу history и напихать туда данные &lt;br /&gt;
create table archive.history as&lt;br /&gt;
SELECT p.`ADDED`,p.`VALUE`,t.property_name  &lt;br /&gt;
FROM `phistory` p&lt;br /&gt;
join vw_clobjpr t on p.`VALUE_ID`=t.value_id&lt;br /&gt;
WHERE p.ADDED &amp;lt; DATE_SUB( NOW( ) , INTERVAL 2&lt;br /&gt;
MONTH ) ;&lt;br /&gt;
&lt;br /&gt;
//желательно тут же удалить напиханные данные из пхистори&lt;br /&gt;
delete&lt;br /&gt;
FROM `phistory` &lt;br /&gt;
WHERE `ADDED` &amp;lt; DATE_SUB( NOW( ) , INTERVAL 2 MONTH ) ;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Скрипт для запуска каждый месяц====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$sql = &amp;quot;INSERT INTO archive_my.history&lt;br /&gt;
SELECT p.`ADDED` , p.`VALUE` , t.property_name&lt;br /&gt;
FROM `phistory` p&lt;br /&gt;
JOIN vw_clobjpr t ON p.`VALUE_ID` = t.value_id&lt;br /&gt;
WHERE p.ADDED &amp;lt; DATE_SUB( NOW( ) , INTERVAL 2 MONTH )&amp;quot; ;&lt;br /&gt;
sqlExec($sql);&lt;br /&gt;
&lt;br /&gt;
$sql = &amp;quot;DELETE FROM `phistory` WHERE `ADDED` &amp;lt; DATE_SUB( NOW( ) , INTERVAL 2 MONTH )&amp;quot; ;&lt;br /&gt;
sqlExec($sql);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Xor</name></author>
	</entry>
	<entry>
		<id>https://mdminfo.ru/index.php?title=Phistory_to_archive&amp;diff=932</id>
		<title>Phistory to archive</title>
		<link rel="alternate" type="text/html" href="https://mdminfo.ru/index.php?title=Phistory_to_archive&amp;diff=932"/>
		<updated>2020-04-26T18:43:39Z</updated>

		<summary type="html">&lt;p&gt;Xor: /* Описание */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Из телеграмчата от пользователя XOR&lt;br /&gt;
&lt;br /&gt;
====Описание====&lt;br /&gt;
&lt;br /&gt;
Для ускорения работы MajorDoMo, есть смысл перенести таблицу phistory &amp;quot;боевой&amp;quot; (читай основной рабочей) базы в таблицу отдельно созданной базы, для истории или анализа сторонними методами. Приведенный ниже код переносит данные, старше 2-х месяцев, из таблицы phistory боевой базы в таблицу history базы archive. Тут приведен пример экспорта истории в базу рядом, что даёт некоторые преимущества по ср., например, с вариантом, когда экспорт идёт во внешний файл (что актуально для малины).&lt;br /&gt;
&lt;br /&gt;
Все работы проводим '''на свой страх и риск''' в phpmyadmin. Возможно позже появится что-то автоматизированное.&lt;br /&gt;
&lt;br /&gt;
'''Внимание!!!&lt;br /&gt;
лучше сначала не удаляйте из боя, убедитесь, что база создана, с нужной кодировкой и правами. создайте там таблицу, наполните данными, посмотрите, что всё в порядке. а потом можно и чистить бой.'''&lt;br /&gt;
&lt;br /&gt;
====Создаем &amp;quot;вьюху&amp;quot;====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// она у меня не только для этого) тут просто в очередной раз используется&lt;br /&gt;
// для того, чтобы от айди перейти к Объект.Свойство&lt;br /&gt;
// тут стандартная связь между классом, объектом, свойством и айди&lt;br /&gt;
// поддерживается иерархия классов глубиной в 3&lt;br /&gt;
CREATE OR REPLACE VIEW vw_clobjpr AS&lt;br /&gt;
select `v`.`ID` AS `value_id`,`v`.`PROPERTY_ID` AS `PROPERTY_ID`,`v`.`PROPERTY_NAME` AS `PROPERTY_NAME`,`v`.`UPDATED` AS `UPDATED`,&lt;br /&gt;
`v`.`VALUE` AS `VALUE`,`p`.`TITLE` AS `property`,&lt;br /&gt;
`o`.`TITLE` AS `object`,`c`.`TITLE` AS `class`,`cp`.`TITLE` AS `class_parent`,`cpp`.`TITLE` AS `class_pparent` &lt;br /&gt;
from (((((`pvalues` `v` join `properties` `p` on((`v`.`PROPERTY_ID` = `p`.`ID`))) &lt;br /&gt;
join `objects` `o` on((`v`.`OBJECT_ID` = `o`.`ID`))) &lt;br /&gt;
left join `classes` `c` on((`o`.`CLASS_ID` = `c`.`ID`))) &lt;br /&gt;
left join `classes` `cp` on((`c`.`PARENT_ID` = `cp`.`ID`))) &lt;br /&gt;
left join `classes` `cpp` on((`cp`.`PARENT_ID` = `cpp`.`ID`)))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Создаем базу====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//из php-скрипта, например, так. База создается с умолчаниями. &lt;br /&gt;
//При необходимости, подправить CHARACTER SET, COLLATE и права&lt;br /&gt;
sqlExec(&amp;quot;CREATE DATABASE IF NOT EXISTS archive&amp;quot;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Создаем таблицу====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
//создадим таблицу из скрипта (пустую) &lt;br /&gt;
$sql = &amp;quot;CREATE TABLE archive.history (&lt;br /&gt;
 `ADDED` datetime DEFAULT NULL,&lt;br /&gt;
 `VALUE` varchar(255) NOT NULL,&lt;br /&gt;
 `PROPERTY_NAME` varchar(100) NOT NULL DEFAULT ''&lt;br /&gt;
) ENGINE=MyISAM DEFAULT CHARSET=utf8&amp;quot;;&lt;br /&gt;
sqlExec($sql);&lt;br /&gt;
//или (запускать из db_terminal)&lt;br /&gt;
//создать таблицу history и напихать туда данные &lt;br /&gt;
create table archive.history as&lt;br /&gt;
SELECT p.`ADDED`,p.`VALUE`,t.property_name  &lt;br /&gt;
FROM `phistory` p&lt;br /&gt;
join vw_clobjpr t on p.`VALUE_ID`=t.value_id&lt;br /&gt;
WHERE p.ADDED &amp;lt; DATE_SUB( NOW( ) , INTERVAL 2&lt;br /&gt;
MONTH ) ;&lt;br /&gt;
&lt;br /&gt;
//желательно тут же удалить напиханные данные из пхистори&lt;br /&gt;
delete&lt;br /&gt;
FROM `phistory` &lt;br /&gt;
WHERE `ADDED` &amp;lt; DATE_SUB( NOW( ) , INTERVAL 2 MONTH ) ;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Xor</name></author>
	</entry>
	<entry>
		<id>https://mdminfo.ru/index.php?title=Phistory_to_archive&amp;diff=931</id>
		<title>Phistory to archive</title>
		<link rel="alternate" type="text/html" href="https://mdminfo.ru/index.php?title=Phistory_to_archive&amp;diff=931"/>
		<updated>2020-04-26T18:40:58Z</updated>

		<summary type="html">&lt;p&gt;Xor: /* Создаем таблицу */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Из телеграмчата от пользователя XOR&lt;br /&gt;
&lt;br /&gt;
====Описание====&lt;br /&gt;
&lt;br /&gt;
Для ускорения работы MajorDoMo, есть смысл перенести таблицу phistory &amp;quot;боевой&amp;quot; (читай основной рабочей) базы в таблицу отдельно созданной базы, для истории или анализа сторонними методами. Приведенный ниже код переносит данные, старше 2-х месяцев, из таблицы phistory боевой базы в таблицу history базы archive.&lt;br /&gt;
&lt;br /&gt;
Все работы проводим '''на свой страх и риск''' в phpmyadmin. Возможно позже появится что-то автоматизированное.&lt;br /&gt;
&lt;br /&gt;
'''Внимание!!!&lt;br /&gt;
лучше сначала не удаляйте из боя, убедитесь, что база создана, с нужной кодировкой и правами. создайте там таблицу, наполните данными, посмотрите, что всё в порядке. а потом можно и чистить бой.'''&lt;br /&gt;
&lt;br /&gt;
====Создаем &amp;quot;вьюху&amp;quot;====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// она у меня не только для этого) тут просто в очередной раз используется&lt;br /&gt;
// для того, чтобы от айди перейти к Объект.Свойство&lt;br /&gt;
// тут стандартная связь между классом, объектом, свойством и айди&lt;br /&gt;
// поддерживается иерархия классов глубиной в 3&lt;br /&gt;
CREATE OR REPLACE VIEW vw_clobjpr AS&lt;br /&gt;
select `v`.`ID` AS `value_id`,`v`.`PROPERTY_ID` AS `PROPERTY_ID`,`v`.`PROPERTY_NAME` AS `PROPERTY_NAME`,`v`.`UPDATED` AS `UPDATED`,&lt;br /&gt;
`v`.`VALUE` AS `VALUE`,`p`.`TITLE` AS `property`,&lt;br /&gt;
`o`.`TITLE` AS `object`,`c`.`TITLE` AS `class`,`cp`.`TITLE` AS `class_parent`,`cpp`.`TITLE` AS `class_pparent` &lt;br /&gt;
from (((((`pvalues` `v` join `properties` `p` on((`v`.`PROPERTY_ID` = `p`.`ID`))) &lt;br /&gt;
join `objects` `o` on((`v`.`OBJECT_ID` = `o`.`ID`))) &lt;br /&gt;
left join `classes` `c` on((`o`.`CLASS_ID` = `c`.`ID`))) &lt;br /&gt;
left join `classes` `cp` on((`c`.`PARENT_ID` = `cp`.`ID`))) &lt;br /&gt;
left join `classes` `cpp` on((`cp`.`PARENT_ID` = `cpp`.`ID`)))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Создаем базу====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//из php-скрипта, например, так. База создается с умолчаниями. &lt;br /&gt;
//При необходимости, подправить CHARACTER SET, COLLATE и права&lt;br /&gt;
sqlExec(&amp;quot;CREATE DATABASE IF NOT EXISTS archive&amp;quot;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Создаем таблицу====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
//создадим таблицу из скрипта (пустую) &lt;br /&gt;
$sql = &amp;quot;CREATE TABLE archive.history (&lt;br /&gt;
 `ADDED` datetime DEFAULT NULL,&lt;br /&gt;
 `VALUE` varchar(255) NOT NULL,&lt;br /&gt;
 `PROPERTY_NAME` varchar(100) NOT NULL DEFAULT ''&lt;br /&gt;
) ENGINE=MyISAM DEFAULT CHARSET=utf8&amp;quot;;&lt;br /&gt;
sqlExec($sql);&lt;br /&gt;
//или (запускать из db_terminal)&lt;br /&gt;
//создать таблицу history и напихать туда данные &lt;br /&gt;
create table archive.history as&lt;br /&gt;
SELECT p.`ADDED`,p.`VALUE`,t.property_name  &lt;br /&gt;
FROM `phistory` p&lt;br /&gt;
join vw_clobjpr t on p.`VALUE_ID`=t.value_id&lt;br /&gt;
WHERE p.ADDED &amp;lt; DATE_SUB( NOW( ) , INTERVAL 2&lt;br /&gt;
MONTH ) ;&lt;br /&gt;
&lt;br /&gt;
//желательно тут же удалить напиханные данные из пхистори&lt;br /&gt;
delete&lt;br /&gt;
FROM `phistory` &lt;br /&gt;
WHERE `ADDED` &amp;lt; DATE_SUB( NOW( ) , INTERVAL 2 MONTH ) ;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Xor</name></author>
	</entry>
	<entry>
		<id>https://mdminfo.ru/index.php?title=Phistory_to_archive&amp;diff=930</id>
		<title>Phistory to archive</title>
		<link rel="alternate" type="text/html" href="https://mdminfo.ru/index.php?title=Phistory_to_archive&amp;diff=930"/>
		<updated>2020-04-26T18:38:27Z</updated>

		<summary type="html">&lt;p&gt;Xor: /* Описание */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Из телеграмчата от пользователя XOR&lt;br /&gt;
&lt;br /&gt;
====Описание====&lt;br /&gt;
&lt;br /&gt;
Для ускорения работы MajorDoMo, есть смысл перенести таблицу phistory &amp;quot;боевой&amp;quot; (читай основной рабочей) базы в таблицу отдельно созданной базы, для истории или анализа сторонними методами. Приведенный ниже код переносит данные, старше 2-х месяцев, из таблицы phistory боевой базы в таблицу history базы archive.&lt;br /&gt;
&lt;br /&gt;
Все работы проводим '''на свой страх и риск''' в phpmyadmin. Возможно позже появится что-то автоматизированное.&lt;br /&gt;
&lt;br /&gt;
'''Внимание!!!&lt;br /&gt;
лучше сначала не удаляйте из боя, убедитесь, что база создана, с нужной кодировкой и правами. создайте там таблицу, наполните данными, посмотрите, что всё в порядке. а потом можно и чистить бой.'''&lt;br /&gt;
&lt;br /&gt;
====Создаем &amp;quot;вьюху&amp;quot;====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// она у меня не только для этого) тут просто в очередной раз используется&lt;br /&gt;
// для того, чтобы от айди перейти к Объект.Свойство&lt;br /&gt;
// тут стандартная связь между классом, объектом, свойством и айди&lt;br /&gt;
// поддерживается иерархия классов глубиной в 3&lt;br /&gt;
CREATE OR REPLACE VIEW vw_clobjpr AS&lt;br /&gt;
select `v`.`ID` AS `value_id`,`v`.`PROPERTY_ID` AS `PROPERTY_ID`,`v`.`PROPERTY_NAME` AS `PROPERTY_NAME`,`v`.`UPDATED` AS `UPDATED`,&lt;br /&gt;
`v`.`VALUE` AS `VALUE`,`p`.`TITLE` AS `property`,&lt;br /&gt;
`o`.`TITLE` AS `object`,`c`.`TITLE` AS `class`,`cp`.`TITLE` AS `class_parent`,`cpp`.`TITLE` AS `class_pparent` &lt;br /&gt;
from (((((`pvalues` `v` join `properties` `p` on((`v`.`PROPERTY_ID` = `p`.`ID`))) &lt;br /&gt;
join `objects` `o` on((`v`.`OBJECT_ID` = `o`.`ID`))) &lt;br /&gt;
left join `classes` `c` on((`o`.`CLASS_ID` = `c`.`ID`))) &lt;br /&gt;
left join `classes` `cp` on((`c`.`PARENT_ID` = `cp`.`ID`))) &lt;br /&gt;
left join `classes` `cpp` on((`cp`.`PARENT_ID` = `cpp`.`ID`)))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Создаем базу====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//из php-скрипта, например, так. База создается с умолчаниями. &lt;br /&gt;
//При необходимости, подправить CHARACTER SET, COLLATE и права&lt;br /&gt;
sqlExec(&amp;quot;CREATE DATABASE IF NOT EXISTS archive&amp;quot;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Создаем таблицу====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
//создадим таблицу из скрипта (пустую) &lt;br /&gt;
$sql = &amp;quot;CREATE TABLE archive.history (&lt;br /&gt;
 `ADDED` datetime DEFAULT NULL,&lt;br /&gt;
 `VALUE` varchar(255) NOT NULL,&lt;br /&gt;
 `PROPERTY_NAME` varchar(100) NOT NULL DEFAULT ''&lt;br /&gt;
) ENGINE=MyISAM DEFAULT CHARSET=utf8&amp;quot;;&lt;br /&gt;
sqlExec($sql);&lt;br /&gt;
//или (запускать из db_terminal)&lt;br /&gt;
//создать таблицу history и напихать туда данные &lt;br /&gt;
create table archive.history as&lt;br /&gt;
SELECT p.`ADDED`,p.`VALUE`,t.property_name  &lt;br /&gt;
FROM `phistory` p&lt;br /&gt;
join vw_clobjpr t on p.`VALUE_ID`=t.value_id&lt;br /&gt;
WHERE p.ADDED &amp;lt; DATE_SUB( NOW( ) , INTERVAL 2&lt;br /&gt;
MONTH ) ;&lt;br /&gt;
&lt;br /&gt;
//удалить напиханные данные из пхистори&lt;br /&gt;
delete&lt;br /&gt;
FROM `phistory` &lt;br /&gt;
WHERE `ADDED` &amp;lt; DATE_SUB( NOW( ) , INTERVAL 2 MONTH ) ;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Xor</name></author>
	</entry>
	<entry>
		<id>https://mdminfo.ru/index.php?title=Phistory_to_archive&amp;diff=929</id>
		<title>Phistory to archive</title>
		<link rel="alternate" type="text/html" href="https://mdminfo.ru/index.php?title=Phistory_to_archive&amp;diff=929"/>
		<updated>2020-04-26T15:44:26Z</updated>

		<summary type="html">&lt;p&gt;Xor: /* Создаем &amp;quot;вьюху&amp;quot; */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Из телеграмчата от пользователя XOR&lt;br /&gt;
&lt;br /&gt;
====Описание====&lt;br /&gt;
&lt;br /&gt;
Для ускорения работы MajorDoMo, есть смысл перенести таблицу phistory &amp;quot;боевой&amp;quot; (читай основной рабочей) базы в таблицу отдельно созданной базы, для истории или анализа сторонними методами. Приведенный ниже код переносит данные, старше 2-х месяцев, из таблицы phistory боевой базы в таблицу history таблицы archive.&lt;br /&gt;
&lt;br /&gt;
Все работы проводим '''на свой страх и риск''' в phpmyadmin. Возможно позже появится что-то автоматизированное.&lt;br /&gt;
&lt;br /&gt;
'''Внимание!!!&lt;br /&gt;
лучше сначала не удаляйте из боя, убедитесь, что база создана, с нужной кодировкой и правами. создайте там таблицу, наполните данными, посмотрите, что всё в порядке. а потом можно и чистить бой.'''&lt;br /&gt;
&lt;br /&gt;
====Создаем &amp;quot;вьюху&amp;quot;====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// она у меня не только для этого) тут просто в очередной раз используется&lt;br /&gt;
// для того, чтобы от айди перейти к Объект.Свойство&lt;br /&gt;
// тут стандартная связь между классом, объектом, свойством и айди&lt;br /&gt;
// поддерживается иерархия классов глубиной в 3&lt;br /&gt;
CREATE OR REPLACE VIEW vw_clobjpr AS&lt;br /&gt;
select `v`.`ID` AS `value_id`,`v`.`PROPERTY_ID` AS `PROPERTY_ID`,`v`.`PROPERTY_NAME` AS `PROPERTY_NAME`,`v`.`UPDATED` AS `UPDATED`,&lt;br /&gt;
`v`.`VALUE` AS `VALUE`,`p`.`TITLE` AS `property`,&lt;br /&gt;
`o`.`TITLE` AS `object`,`c`.`TITLE` AS `class`,`cp`.`TITLE` AS `class_parent`,`cpp`.`TITLE` AS `class_pparent` &lt;br /&gt;
from (((((`pvalues` `v` join `properties` `p` on((`v`.`PROPERTY_ID` = `p`.`ID`))) &lt;br /&gt;
join `objects` `o` on((`v`.`OBJECT_ID` = `o`.`ID`))) &lt;br /&gt;
left join `classes` `c` on((`o`.`CLASS_ID` = `c`.`ID`))) &lt;br /&gt;
left join `classes` `cp` on((`c`.`PARENT_ID` = `cp`.`ID`))) &lt;br /&gt;
left join `classes` `cpp` on((`cp`.`PARENT_ID` = `cpp`.`ID`)))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Создаем базу====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//из php-скрипта, например, так. База создается с умолчаниями. &lt;br /&gt;
//При необходимости, подправить CHARACTER SET, COLLATE и права&lt;br /&gt;
sqlExec(&amp;quot;CREATE DATABASE IF NOT EXISTS archive&amp;quot;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Создаем таблицу====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
//создадим таблицу из скрипта (пустую) &lt;br /&gt;
$sql = &amp;quot;CREATE TABLE archive.history (&lt;br /&gt;
 `ADDED` datetime DEFAULT NULL,&lt;br /&gt;
 `VALUE` varchar(255) NOT NULL,&lt;br /&gt;
 `PROPERTY_NAME` varchar(100) NOT NULL DEFAULT ''&lt;br /&gt;
) ENGINE=MyISAM DEFAULT CHARSET=utf8&amp;quot;;&lt;br /&gt;
sqlExec($sql);&lt;br /&gt;
//или (запускать из db_terminal)&lt;br /&gt;
//создать таблицу history и напихать туда данные &lt;br /&gt;
create table archive.history as&lt;br /&gt;
SELECT p.`ADDED`,p.`VALUE`,t.property_name  &lt;br /&gt;
FROM `phistory` p&lt;br /&gt;
join vw_clobjpr t on p.`VALUE_ID`=t.value_id&lt;br /&gt;
WHERE p.ADDED &amp;lt; DATE_SUB( NOW( ) , INTERVAL 2&lt;br /&gt;
MONTH ) ;&lt;br /&gt;
&lt;br /&gt;
//удалить напиханные данные из пхистори&lt;br /&gt;
delete&lt;br /&gt;
FROM `phistory` &lt;br /&gt;
WHERE `ADDED` &amp;lt; DATE_SUB( NOW( ) , INTERVAL 2 MONTH ) ;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Xor</name></author>
	</entry>
	<entry>
		<id>https://mdminfo.ru/index.php?title=Phistory_to_archive&amp;diff=928</id>
		<title>Phistory to archive</title>
		<link rel="alternate" type="text/html" href="https://mdminfo.ru/index.php?title=Phistory_to_archive&amp;diff=928"/>
		<updated>2020-04-26T15:43:10Z</updated>

		<summary type="html">&lt;p&gt;Xor: /* Создаем &amp;quot;вьюху&amp;quot; */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Из телеграмчата от пользователя XOR&lt;br /&gt;
&lt;br /&gt;
====Описание====&lt;br /&gt;
&lt;br /&gt;
Для ускорения работы MajorDoMo, есть смысл перенести таблицу phistory &amp;quot;боевой&amp;quot; (читай основной рабочей) базы в таблицу отдельно созданной базы, для истории или анализа сторонними методами. Приведенный ниже код переносит данные, старше 2-х месяцев, из таблицы phistory боевой базы в таблицу history таблицы archive.&lt;br /&gt;
&lt;br /&gt;
Все работы проводим '''на свой страх и риск''' в phpmyadmin. Возможно позже появится что-то автоматизированное.&lt;br /&gt;
&lt;br /&gt;
'''Внимание!!!&lt;br /&gt;
лучше сначала не удаляйте из боя, убедитесь, что база создана, с нужной кодировкой и правами. создайте там таблицу, наполните данными, посмотрите, что всё в порядке. а потом можно и чистить бой.'''&lt;br /&gt;
&lt;br /&gt;
====Создаем &amp;quot;вьюху&amp;quot;====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// она у меня не только для этого) тут просто в очередной раз используется&lt;br /&gt;
// тут стандартная связь между классом, объектом, свойством и айди&lt;br /&gt;
//поддерживается иерархия классов глубиной в 3&lt;br /&gt;
CREATE OR REPLACE VIEW vw_clobjpr AS&lt;br /&gt;
select `v`.`ID` AS `value_id`,`v`.`PROPERTY_ID` AS `PROPERTY_ID`,`v`.`PROPERTY_NAME` AS `PROPERTY_NAME`,`v`.`UPDATED` AS `UPDATED`,&lt;br /&gt;
`v`.`VALUE` AS `VALUE`,`p`.`TITLE` AS `property`,&lt;br /&gt;
`o`.`TITLE` AS `object`,`c`.`TITLE` AS `class`,`cp`.`TITLE` AS `class_parent`,`cpp`.`TITLE` AS `class_pparent` &lt;br /&gt;
from (((((`pvalues` `v` join `properties` `p` on((`v`.`PROPERTY_ID` = `p`.`ID`))) &lt;br /&gt;
join `objects` `o` on((`v`.`OBJECT_ID` = `o`.`ID`))) &lt;br /&gt;
left join `classes` `c` on((`o`.`CLASS_ID` = `c`.`ID`))) &lt;br /&gt;
left join `classes` `cp` on((`c`.`PARENT_ID` = `cp`.`ID`))) &lt;br /&gt;
left join `classes` `cpp` on((`cp`.`PARENT_ID` = `cpp`.`ID`)))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Создаем базу====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//из php-скрипта, например, так. База создается с умолчаниями. &lt;br /&gt;
//При необходимости, подправить CHARACTER SET, COLLATE и права&lt;br /&gt;
sqlExec(&amp;quot;CREATE DATABASE IF NOT EXISTS archive&amp;quot;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Создаем таблицу====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
//создадим таблицу из скрипта (пустую) &lt;br /&gt;
$sql = &amp;quot;CREATE TABLE archive.history (&lt;br /&gt;
 `ADDED` datetime DEFAULT NULL,&lt;br /&gt;
 `VALUE` varchar(255) NOT NULL,&lt;br /&gt;
 `PROPERTY_NAME` varchar(100) NOT NULL DEFAULT ''&lt;br /&gt;
) ENGINE=MyISAM DEFAULT CHARSET=utf8&amp;quot;;&lt;br /&gt;
sqlExec($sql);&lt;br /&gt;
//или (запускать из db_terminal)&lt;br /&gt;
//создать таблицу history и напихать туда данные &lt;br /&gt;
create table archive.history as&lt;br /&gt;
SELECT p.`ADDED`,p.`VALUE`,t.property_name  &lt;br /&gt;
FROM `phistory` p&lt;br /&gt;
join vw_clobjpr t on p.`VALUE_ID`=t.value_id&lt;br /&gt;
WHERE p.ADDED &amp;lt; DATE_SUB( NOW( ) , INTERVAL 2&lt;br /&gt;
MONTH ) ;&lt;br /&gt;
&lt;br /&gt;
//удалить напиханные данные из пхистори&lt;br /&gt;
delete&lt;br /&gt;
FROM `phistory` &lt;br /&gt;
WHERE `ADDED` &amp;lt; DATE_SUB( NOW( ) , INTERVAL 2 MONTH ) ;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Xor</name></author>
	</entry>
	<entry>
		<id>https://mdminfo.ru/index.php?title=Phistory_to_archive&amp;diff=927</id>
		<title>Phistory to archive</title>
		<link rel="alternate" type="text/html" href="https://mdminfo.ru/index.php?title=Phistory_to_archive&amp;diff=927"/>
		<updated>2020-04-26T13:06:02Z</updated>

		<summary type="html">&lt;p&gt;Xor: /* Создаем таблицу */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Из телеграмчата от пользователя XOR&lt;br /&gt;
&lt;br /&gt;
====Описание====&lt;br /&gt;
&lt;br /&gt;
Для ускорения работы MajorDoMo, есть смысл перенести таблицу phistory &amp;quot;боевой&amp;quot; (читай основной рабочей) базы в таблицу отдельно созданной базы, для истории или анализа сторонними методами. Приведенный ниже код переносит данные, старше 2-х месяцев, из таблицы phistory боевой базы в таблицу history таблицы archive.&lt;br /&gt;
&lt;br /&gt;
Все работы проводим '''на свой страх и риск''' в phpmyadmin. Возможно позже появится что-то автоматизированное.&lt;br /&gt;
&lt;br /&gt;
'''Внимание!!!&lt;br /&gt;
лучше сначала не удаляйте из боя, убедитесь, что база создана, с нужной кодировкой и правами. создайте там таблицу, наполните данными, посмотрите, что всё в порядке. а потом можно и чистить бой.'''&lt;br /&gt;
&lt;br /&gt;
====Создаем &amp;quot;вьюху&amp;quot;====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CREATE OR REPLACE VIEW vw_clobjpr AS&lt;br /&gt;
select `v`.`ID` AS `value_id`,`v`.`PROPERTY_ID` AS `PROPERTY_ID`,`v`.`PROPERTY_NAME` AS `PROPERTY_NAME`,`v`.`UPDATED` AS `UPDATED`,&lt;br /&gt;
`v`.`VALUE` AS `VALUE`,`p`.`TITLE` AS `property`,&lt;br /&gt;
`o`.`TITLE` AS `object`,`c`.`TITLE` AS `class`,`cp`.`TITLE` AS `class_parent`,`cpp`.`TITLE` AS `class_pparent` &lt;br /&gt;
from (((((`pvalues` `v` join `properties` `p` on((`v`.`PROPERTY_ID` = `p`.`ID`))) &lt;br /&gt;
join `objects` `o` on((`v`.`OBJECT_ID` = `o`.`ID`))) &lt;br /&gt;
left join `classes` `c` on((`o`.`CLASS_ID` = `c`.`ID`))) &lt;br /&gt;
left join `classes` `cp` on((`c`.`PARENT_ID` = `cp`.`ID`))) &lt;br /&gt;
left join `classes` `cpp` on((`cp`.`PARENT_ID` = `cpp`.`ID`)))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
====Создаем базу====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//из php-скрипта, например, так. База создается с умолчаниями. &lt;br /&gt;
//При необходимости, подправить CHARACTER SET, COLLATE и права&lt;br /&gt;
sqlExec(&amp;quot;CREATE DATABASE IF NOT EXISTS archive&amp;quot;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Создаем таблицу====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
//создадим таблицу из скрипта (пустую) &lt;br /&gt;
$sql = &amp;quot;CREATE TABLE archive.history (&lt;br /&gt;
 `ADDED` datetime DEFAULT NULL,&lt;br /&gt;
 `VALUE` varchar(255) NOT NULL,&lt;br /&gt;
 `PROPERTY_NAME` varchar(100) NOT NULL DEFAULT ''&lt;br /&gt;
) ENGINE=MyISAM DEFAULT CHARSET=utf8&amp;quot;;&lt;br /&gt;
sqlExec($sql);&lt;br /&gt;
//или (запускать из db_terminal)&lt;br /&gt;
//создать таблицу history и напихать туда данные &lt;br /&gt;
create table archive.history as&lt;br /&gt;
SELECT p.`ADDED`,p.`VALUE`,t.property_name  &lt;br /&gt;
FROM `phistory` p&lt;br /&gt;
join vw_clobjpr t on p.`VALUE_ID`=t.value_id&lt;br /&gt;
WHERE p.ADDED &amp;lt; DATE_SUB( NOW( ) , INTERVAL 2&lt;br /&gt;
MONTH ) ;&lt;br /&gt;
&lt;br /&gt;
//удалить напиханные данные из пхистори&lt;br /&gt;
delete&lt;br /&gt;
FROM `phistory` &lt;br /&gt;
WHERE `ADDED` &amp;lt; DATE_SUB( NOW( ) , INTERVAL 2 MONTH ) ;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Xor</name></author>
	</entry>
	<entry>
		<id>https://mdminfo.ru/index.php?title=Phistory_to_archive&amp;diff=926</id>
		<title>Phistory to archive</title>
		<link rel="alternate" type="text/html" href="https://mdminfo.ru/index.php?title=Phistory_to_archive&amp;diff=926"/>
		<updated>2020-04-26T10:09:27Z</updated>

		<summary type="html">&lt;p&gt;Xor: /* Создаем базу */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Из телеграмчата от пользователя XOR&lt;br /&gt;
&lt;br /&gt;
====Описание====&lt;br /&gt;
&lt;br /&gt;
Для ускорения работы MajorDoMo, есть смысл перенести таблицу phistory &amp;quot;боевой&amp;quot; (читай основной рабочей) базы в таблицу отдельно созданной базы, для истории или анализа сторонними методами. Приведенный ниже код переносит данные, старше 2-х месяцев, из таблицы phistory боевой базы в таблицу history таблицы archive.&lt;br /&gt;
&lt;br /&gt;
Все работы проводим '''на свой страх и риск''' в phpmyadmin. Возможно позже появится что-то автоматизированное.&lt;br /&gt;
&lt;br /&gt;
'''Внимание!!!&lt;br /&gt;
лучше сначала не удаляйте из боя, убедитесь, что база создана, с нужной кодировкой и правами. создайте там таблицу, наполните данными, посмотрите, что всё в порядке. а потом можно и чистить бой.'''&lt;br /&gt;
&lt;br /&gt;
====Создаем &amp;quot;вьюху&amp;quot;====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CREATE OR REPLACE VIEW vw_clobjpr AS&lt;br /&gt;
select `v`.`ID` AS `value_id`,`v`.`PROPERTY_ID` AS `PROPERTY_ID`,`v`.`PROPERTY_NAME` AS `PROPERTY_NAME`,`v`.`UPDATED` AS `UPDATED`,&lt;br /&gt;
`v`.`VALUE` AS `VALUE`,`p`.`TITLE` AS `property`,&lt;br /&gt;
`o`.`TITLE` AS `object`,`c`.`TITLE` AS `class`,`cp`.`TITLE` AS `class_parent`,`cpp`.`TITLE` AS `class_pparent` &lt;br /&gt;
from (((((`pvalues` `v` join `properties` `p` on((`v`.`PROPERTY_ID` = `p`.`ID`))) &lt;br /&gt;
join `objects` `o` on((`v`.`OBJECT_ID` = `o`.`ID`))) &lt;br /&gt;
left join `classes` `c` on((`o`.`CLASS_ID` = `c`.`ID`))) &lt;br /&gt;
left join `classes` `cp` on((`c`.`PARENT_ID` = `cp`.`ID`))) &lt;br /&gt;
left join `classes` `cpp` on((`cp`.`PARENT_ID` = `cpp`.`ID`)))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
====Создаем базу====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//из php-скрипта, например, так. База создается с умолчаниями. &lt;br /&gt;
//При необходимости, подправить CHARACTER SET, COLLATE и права&lt;br /&gt;
sqlExec(&amp;quot;CREATE DATABASE IF NOT EXISTS archive&amp;quot;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Создаем таблицу====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//создать таблицу history и напихать туда данные &lt;br /&gt;
create table archive.history as&lt;br /&gt;
SELECT p.`ADDED`,p.`VALUE`,t.property_name  &lt;br /&gt;
FROM `phistory` p&lt;br /&gt;
join vw_clobjpr t on p.`VALUE_ID`=t.value_id&lt;br /&gt;
WHERE p.ADDED &amp;lt; DATE_SUB( NOW( ) , INTERVAL 2&lt;br /&gt;
MONTH ) ;&lt;br /&gt;
&lt;br /&gt;
//удалить напиханные данные из пхистори&lt;br /&gt;
delete&lt;br /&gt;
FROM `phistory` &lt;br /&gt;
WHERE `ADDED` &amp;lt; DATE_SUB( NOW( ) , INTERVAL 2 MONTH ) ;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Xor</name></author>
	</entry>
	<entry>
		<id>https://mdminfo.ru/index.php?title=Phistory_to_archive&amp;diff=925</id>
		<title>Phistory to archive</title>
		<link rel="alternate" type="text/html" href="https://mdminfo.ru/index.php?title=Phistory_to_archive&amp;diff=925"/>
		<updated>2020-04-26T10:09:06Z</updated>

		<summary type="html">&lt;p&gt;Xor: /* Создаем базу */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Из телеграмчата от пользователя XOR&lt;br /&gt;
&lt;br /&gt;
====Описание====&lt;br /&gt;
&lt;br /&gt;
Для ускорения работы MajorDoMo, есть смысл перенести таблицу phistory &amp;quot;боевой&amp;quot; (читай основной рабочей) базы в таблицу отдельно созданной базы, для истории или анализа сторонними методами. Приведенный ниже код переносит данные, старше 2-х месяцев, из таблицы phistory боевой базы в таблицу history таблицы archive.&lt;br /&gt;
&lt;br /&gt;
Все работы проводим '''на свой страх и риск''' в phpmyadmin. Возможно позже появится что-то автоматизированное.&lt;br /&gt;
&lt;br /&gt;
'''Внимание!!!&lt;br /&gt;
лучше сначала не удаляйте из боя, убедитесь, что база создана, с нужной кодировкой и правами. создайте там таблицу, наполните данными, посмотрите, что всё в порядке. а потом можно и чистить бой.'''&lt;br /&gt;
&lt;br /&gt;
====Создаем &amp;quot;вьюху&amp;quot;====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CREATE OR REPLACE VIEW vw_clobjpr AS&lt;br /&gt;
select `v`.`ID` AS `value_id`,`v`.`PROPERTY_ID` AS `PROPERTY_ID`,`v`.`PROPERTY_NAME` AS `PROPERTY_NAME`,`v`.`UPDATED` AS `UPDATED`,&lt;br /&gt;
`v`.`VALUE` AS `VALUE`,`p`.`TITLE` AS `property`,&lt;br /&gt;
`o`.`TITLE` AS `object`,`c`.`TITLE` AS `class`,`cp`.`TITLE` AS `class_parent`,`cpp`.`TITLE` AS `class_pparent` &lt;br /&gt;
from (((((`pvalues` `v` join `properties` `p` on((`v`.`PROPERTY_ID` = `p`.`ID`))) &lt;br /&gt;
join `objects` `o` on((`v`.`OBJECT_ID` = `o`.`ID`))) &lt;br /&gt;
left join `classes` `c` on((`o`.`CLASS_ID` = `c`.`ID`))) &lt;br /&gt;
left join `classes` `cp` on((`c`.`PARENT_ID` = `cp`.`ID`))) &lt;br /&gt;
left join `classes` `cpp` on((`cp`.`PARENT_ID` = `cpp`.`ID`)))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
====Создаем базу====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//из php-скрипта, например, так. База создается с умолчаниями. &lt;br /&gt;
//При необходимости, подправить CHARACTER SET, COLLATE и права&lt;br /&gt;
sqlExec(&amp;quot;CREATE DATABASE IF NOT EXISTS archive_my&amp;quot;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Создаем таблицу====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//создать таблицу history и напихать туда данные &lt;br /&gt;
create table archive.history as&lt;br /&gt;
SELECT p.`ADDED`,p.`VALUE`,t.property_name  &lt;br /&gt;
FROM `phistory` p&lt;br /&gt;
join vw_clobjpr t on p.`VALUE_ID`=t.value_id&lt;br /&gt;
WHERE p.ADDED &amp;lt; DATE_SUB( NOW( ) , INTERVAL 2&lt;br /&gt;
MONTH ) ;&lt;br /&gt;
&lt;br /&gt;
//удалить напиханные данные из пхистори&lt;br /&gt;
delete&lt;br /&gt;
FROM `phistory` &lt;br /&gt;
WHERE `ADDED` &amp;lt; DATE_SUB( NOW( ) , INTERVAL 2 MONTH ) ;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Xor</name></author>
	</entry>
	<entry>
		<id>https://mdminfo.ru/index.php?title=Phistory_to_archive&amp;diff=924</id>
		<title>Phistory to archive</title>
		<link rel="alternate" type="text/html" href="https://mdminfo.ru/index.php?title=Phistory_to_archive&amp;diff=924"/>
		<updated>2020-04-26T10:07:52Z</updated>

		<summary type="html">&lt;p&gt;Xor: /* Создаем базу */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Из телеграмчата от пользователя XOR&lt;br /&gt;
&lt;br /&gt;
====Описание====&lt;br /&gt;
&lt;br /&gt;
Для ускорения работы MajorDoMo, есть смысл перенести таблицу phistory &amp;quot;боевой&amp;quot; (читай основной рабочей) базы в таблицу отдельно созданной базы, для истории или анализа сторонними методами. Приведенный ниже код переносит данные, старше 2-х месяцев, из таблицы phistory боевой базы в таблицу history таблицы archive.&lt;br /&gt;
&lt;br /&gt;
Все работы проводим '''на свой страх и риск''' в phpmyadmin. Возможно позже появится что-то автоматизированное.&lt;br /&gt;
&lt;br /&gt;
'''Внимание!!!&lt;br /&gt;
лучше сначала не удаляйте из боя, убедитесь, что база создана, с нужной кодировкой и правами. создайте там таблицу, наполните данными, посмотрите, что всё в порядке. а потом можно и чистить бой.'''&lt;br /&gt;
&lt;br /&gt;
====Создаем &amp;quot;вьюху&amp;quot;====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CREATE OR REPLACE VIEW vw_clobjpr AS&lt;br /&gt;
select `v`.`ID` AS `value_id`,`v`.`PROPERTY_ID` AS `PROPERTY_ID`,`v`.`PROPERTY_NAME` AS `PROPERTY_NAME`,`v`.`UPDATED` AS `UPDATED`,&lt;br /&gt;
`v`.`VALUE` AS `VALUE`,`p`.`TITLE` AS `property`,&lt;br /&gt;
`o`.`TITLE` AS `object`,`c`.`TITLE` AS `class`,`cp`.`TITLE` AS `class_parent`,`cpp`.`TITLE` AS `class_pparent` &lt;br /&gt;
from (((((`pvalues` `v` join `properties` `p` on((`v`.`PROPERTY_ID` = `p`.`ID`))) &lt;br /&gt;
join `objects` `o` on((`v`.`OBJECT_ID` = `o`.`ID`))) &lt;br /&gt;
left join `classes` `c` on((`o`.`CLASS_ID` = `c`.`ID`))) &lt;br /&gt;
left join `classes` `cp` on((`c`.`PARENT_ID` = `cp`.`ID`))) &lt;br /&gt;
left join `classes` `cpp` on((`cp`.`PARENT_ID` = `cpp`.`ID`)))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
====Создаем базу====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//из php-скрипта, например, так. База создается с умолчаниями. При необходимости, подправить &lt;br /&gt;
//CHARACTER SET, COLLATE и права&lt;br /&gt;
sqlExec(&amp;quot;CREATE DATABASE IF NOT EXISTS archive_my&amp;quot;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Создаем таблицу====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//создать таблицу history и напихать туда данные &lt;br /&gt;
create table archive.history as&lt;br /&gt;
SELECT p.`ADDED`,p.`VALUE`,t.property_name  &lt;br /&gt;
FROM `phistory` p&lt;br /&gt;
join vw_clobjpr t on p.`VALUE_ID`=t.value_id&lt;br /&gt;
WHERE p.ADDED &amp;lt; DATE_SUB( NOW( ) , INTERVAL 2&lt;br /&gt;
MONTH ) ;&lt;br /&gt;
&lt;br /&gt;
//удалить напиханные данные из пхистори&lt;br /&gt;
delete&lt;br /&gt;
FROM `phistory` &lt;br /&gt;
WHERE `ADDED` &amp;lt; DATE_SUB( NOW( ) , INTERVAL 2 MONTH ) ;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Xor</name></author>
	</entry>
	<entry>
		<id>https://mdminfo.ru/index.php?title=Phistory_to_archive&amp;diff=923</id>
		<title>Phistory to archive</title>
		<link rel="alternate" type="text/html" href="https://mdminfo.ru/index.php?title=Phistory_to_archive&amp;diff=923"/>
		<updated>2020-04-26T10:06:13Z</updated>

		<summary type="html">&lt;p&gt;Xor: /* Создаем базу */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Из телеграмчата от пользователя XOR&lt;br /&gt;
&lt;br /&gt;
====Описание====&lt;br /&gt;
&lt;br /&gt;
Для ускорения работы MajorDoMo, есть смысл перенести таблицу phistory &amp;quot;боевой&amp;quot; (читай основной рабочей) базы в таблицу отдельно созданной базы, для истории или анализа сторонними методами. Приведенный ниже код переносит данные, старше 2-х месяцев, из таблицы phistory боевой базы в таблицу history таблицы archive.&lt;br /&gt;
&lt;br /&gt;
Все работы проводим '''на свой страх и риск''' в phpmyadmin. Возможно позже появится что-то автоматизированное.&lt;br /&gt;
&lt;br /&gt;
'''Внимание!!!&lt;br /&gt;
лучше сначала не удаляйте из боя, убедитесь, что база создана, с нужной кодировкой и правами. создайте там таблицу, наполните данными, посмотрите, что всё в порядке. а потом можно и чистить бой.'''&lt;br /&gt;
&lt;br /&gt;
====Создаем &amp;quot;вьюху&amp;quot;====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CREATE OR REPLACE VIEW vw_clobjpr AS&lt;br /&gt;
select `v`.`ID` AS `value_id`,`v`.`PROPERTY_ID` AS `PROPERTY_ID`,`v`.`PROPERTY_NAME` AS `PROPERTY_NAME`,`v`.`UPDATED` AS `UPDATED`,&lt;br /&gt;
`v`.`VALUE` AS `VALUE`,`p`.`TITLE` AS `property`,&lt;br /&gt;
`o`.`TITLE` AS `object`,`c`.`TITLE` AS `class`,`cp`.`TITLE` AS `class_parent`,`cpp`.`TITLE` AS `class_pparent` &lt;br /&gt;
from (((((`pvalues` `v` join `properties` `p` on((`v`.`PROPERTY_ID` = `p`.`ID`))) &lt;br /&gt;
join `objects` `o` on((`v`.`OBJECT_ID` = `o`.`ID`))) &lt;br /&gt;
left join `classes` `c` on((`o`.`CLASS_ID` = `c`.`ID`))) &lt;br /&gt;
left join `classes` `cp` on((`c`.`PARENT_ID` = `cp`.`ID`))) &lt;br /&gt;
left join `classes` `cpp` on((`cp`.`PARENT_ID` = `cpp`.`ID`)))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
====Создаем базу====&lt;br /&gt;
//из php-скрипта, например, так. База создается с умолчаниями. При необходимости, подправить &lt;br /&gt;
//CHARACTER SET, COLLATE и права&lt;br /&gt;
sqlExec(&amp;quot;CREATE DATABASE IF NOT EXISTS archive_my&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
====Создаем таблицу====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//создать таблицу history и напихать туда данные &lt;br /&gt;
create table archive.history as&lt;br /&gt;
SELECT p.`ADDED`,p.`VALUE`,t.property_name  &lt;br /&gt;
FROM `phistory` p&lt;br /&gt;
join vw_clobjpr t on p.`VALUE_ID`=t.value_id&lt;br /&gt;
WHERE p.ADDED &amp;lt; DATE_SUB( NOW( ) , INTERVAL 2&lt;br /&gt;
MONTH ) ;&lt;br /&gt;
&lt;br /&gt;
//удалить напиханные данные из пхистори&lt;br /&gt;
delete&lt;br /&gt;
FROM `phistory` &lt;br /&gt;
WHERE `ADDED` &amp;lt; DATE_SUB( NOW( ) , INTERVAL 2 MONTH ) ;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Xor</name></author>
	</entry>
	<entry>
		<id>https://mdminfo.ru/index.php?title=%D0%98%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81%D1%8B_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B&amp;diff=520</id>
		<title>Интерфейсы системы</title>
		<link rel="alternate" type="text/html" href="https://mdminfo.ru/index.php?title=%D0%98%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81%D1%8B_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B&amp;diff=520"/>
		<updated>2019-12-12T18:54:11Z</updated>

		<summary type="html">&lt;p&gt;Xor: /* Сцены */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Первые шаги]][[Category:Интерфейс]][[Category:Структура]]&lt;br /&gt;
== Введение ==&lt;br /&gt;
Итак...вы установили систему. Скачали установщик для Windows, или готовый образ Linux - без разницы. Система запустилась и работает.&lt;br /&gt;
&lt;br /&gt;
Возникают вопросы - а что же делать дальше? Что сейчас может система? Что можно в ней поменять? Как что-то добавить?&lt;br /&gt;
&lt;br /&gt;
Данный цикл статей предназначен как раз чтобы ответить на них. А начнем мы, пожалуй, с интерфейсов системы. Ведь это то, с чем напрямую взаимодействует пользователь.&lt;br /&gt;
&lt;br /&gt;
Сперва посмотрим на то, что у нас имеется (все скрины и описания приведены для свежего (только что установленного) дистрибутива для Windows...в некоторых образах Linux интерфейс немного более наполненный демо-материалами, но сути это не меняет).&lt;br /&gt;
&lt;br /&gt;
Чтобы открыть основной интерфейс системы нужно ввести в браузере&lt;br /&gt;
&lt;br /&gt;
'''http://127.0.0.1''' (или '''http://localhost'''), если вы входите с того компьютера, где установлен MajorDomo&lt;br /&gt;
&lt;br /&gt;
'''http://&amp;lt;ip-адрес компьютера с MajorDomo в сети&amp;gt;''', т.е., с любого другого устройства в сети&lt;br /&gt;
&lt;br /&gt;
и у вас должна открыться главная страница.&lt;br /&gt;
&lt;br /&gt;
Если это ваш первый запуск, то должна открыться страница first_start.html. Если она не открылась (это может произойти, если вы установили готовый образ. Так же в последнем установщике под Windows она почему-то тоже не открывается) - можно сделать это вручную, зайдя в настройки (Control Panel-&amp;gt;SETTINGS-&amp;gt;General settings, и там ищем, к примеру, Time Zone, и нажимаем ссылку Update) или же вбив в браузере после адреса /popup/first_start.html.&lt;br /&gt;
[[Файл:Fs1.jpg|центр]]&lt;br /&gt;
С этой страницы и начнем. Она простая, с базовыми настройками. Тут нужно выбрать&lt;br /&gt;
Ваш часовой пояс&lt;br /&gt;
Язык системы&lt;br /&gt;
Цветовую тему интерфейса (Тёмная/Светлая)&lt;br /&gt;
Поменять эти настройки так же можно, зайдя повторно на данную страницу.&lt;br /&gt;
&lt;br /&gt;
Теперь взглянем на все доступные интерфейсы. Каждый из этих интерфейсов может быть выбран как приоритетный для управления системой...либо может быть несколько приоритетных, в зависимости от используемых устройств.&lt;br /&gt;
&lt;br /&gt;
[Category:Первые шаги]&lt;br /&gt;
&lt;br /&gt;
== Главный интерфейс системы ==&lt;br /&gt;
[[Файл:Fs2-1024x560.jpg|800px|Главный интерфейс системы|центр]]&lt;br /&gt;
Данный интерфейс открывается при вводе в браузере адреса системы. На самом деле это комбинация нескольких интерфейсов (а именно Меню и Домашние страницы). Интерфейс ознакомительный и удобный, на первое время использования, и на время отладки и настройки системы, но менее гибкий в плане оформления...совсем не обязательно использовать его в качестве основного.&lt;br /&gt;
&lt;br /&gt;
== Меню ==&lt;br /&gt;
[[Файл:Fs3.jpg|центр|Меню]]&lt;br /&gt;
Меню системы доступно по ссылке /menu.html. Этот интерфейс наиболее подходит для управления с мобильных браузеров. Элементы адаптированы для тачскринов, информативность высокая, степень кастомизации низкая (из стандартных элементов можно многое собрать, но сделать что-то за рамками стандарта - крайне проблематично). Интерфейс основан на движке [https://jquerymobile.com/ JQueryMobile], но часть элементов движка всё ещё не добавлена для системы. Тем не менее их можно использовать, создавая собственные html-элементы. [[Меню|Подробнее (Меню)]]&lt;br /&gt;
== Домашние страницы ==&lt;br /&gt;
[[Файл:Fs4.jpg|центр|Домашние страницы]]&lt;br /&gt;
Домашние страницы так же, как и меню, представлен, как часть основного интерфейса. Но он так же доступен в виде отдельной страницы. Более того - каждая страница доступна в виде отдельной страницы. Данный инструмент позволяет создавать почти полноценные html-страницы не выходя из панели управления. Страницы доступны в виде вкладок в основном интерфейсе домашних страниц, и в виде отдельных ссылок, увидеть которые можно так же в панели управления, нажав &amp;quot;Перейти&amp;quot; напротив нужной домашней страницы. &lt;br /&gt;
[[Домашние страницы|Подробнее (домашние страницы)]]&lt;br /&gt;
== Сцены ==&lt;br /&gt;
[[Файл:Fs scenes.jpg|центр]]&lt;br /&gt;
Наверное, самый гибкий в плане кастомизации и возможностей интерфейс. Открывается по ссылке /popup/scenes.html. Так же доступен в виде приложения из интерфейса приложений, и после установки по-умолчанию добавлен как одна из домашних страниц. Каждая сцена тоже может быть открыта по отдельной ссылке. Отлично подходит для работы в качестве основного интерфейса системы на устройствах, где немаловажен внешний вид управляющих элементов. Имеет большое разнообразие этих самых элементов. Для каждого элемента, для каждого состояния доступна кастомизация в виде дополнительных css стилей. Чтобы изменять стили надо обладать средним уровнем знаний css/html. Но даже без изменения css можно построить неплохие сцены в этом интерфейсе.&lt;br /&gt;
[[Сцены|Подробнее (Сцены)]]&lt;br /&gt;
&lt;br /&gt;
==Дашборд==&lt;br /&gt;
[[Файл:Fs dash-1024x646.jpg|800px|центр]]&lt;br /&gt;
Дашборд по факту является одним из типов домашних страниц (новые дашборды создавать надо именно там), но заслуживает отдельного внимания, как самостоятельный интерфейс. Сделан он на базе freeboard.io. Его уникальность в том, что с ним удобно работать как на больших устройствах, так и с мобильных версий браузеров. Интерфейс плиточный, и подстраивается под размер экрана, регулируя количество столбцов по ширине экрана. Степень кастомизации, как и у меню - довольно таки низкая. Допустимо использовать сторонние виджеты данного проекта, но чтобы их интегрировать - потребуются некоторые знания.&lt;br /&gt;
[[Дашборд|Подробнее (Дашборд)]]&lt;br /&gt;
&lt;br /&gt;
==Приложения==&lt;br /&gt;
[[Файл:Fs5.jpg|центр]]&lt;br /&gt;
Интерфейс приложений создавался как ещё одна альтернатива универсального интерфейса для разных устройств. Движок интерфейса тот же, что в панели управления - bootstrap 3. Степень кастомизации - нулевая. В этом интерфейсе вы практически ничего поменять не сможете (не капаясь в коде системы). Здесь доступны только те модули, которые помечены, как приложения (это делается разработчиками модулей). Интерфейсы самих приложений тоже формируются разработчиками модулей. Пока что мало модулей в полной мере поддерживающих интерфейс приложений.&lt;br /&gt;
[[Приложения|Подробнее (Приложения)]]&lt;br /&gt;
== Панель управления ==&lt;br /&gt;
[[Файл:Fs6-1024x500.jpg|800px|центр]]&lt;br /&gt;
Панель управления - административный интерфейс. Здесь доступны практически все настройки системы и модулей.&lt;br /&gt;
&lt;br /&gt;
==Заключение==&lt;br /&gt;
Теперь вы знакомы практически со всеми интерфейсами, которые у вас в распоряжении. Далее в этом цикле статей будет рассказано подробнее про каждый из них. Как создавать элементы, изменять оформление, каким уровнем знаний надо обладать для изменения того или иного элемента и т.д. и т.п..&lt;br /&gt;
&lt;br /&gt;
Спасибо за внимание.&lt;/div&gt;</summary>
		<author><name>Xor</name></author>
	</entry>
	<entry>
		<id>https://mdminfo.ru/index.php?title=%D0%98%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81%D1%8B_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B&amp;diff=519</id>
		<title>Интерфейсы системы</title>
		<link rel="alternate" type="text/html" href="https://mdminfo.ru/index.php?title=%D0%98%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81%D1%8B_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B&amp;diff=519"/>
		<updated>2019-12-12T18:52:12Z</updated>

		<summary type="html">&lt;p&gt;Xor: /* Дашборд */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Первые шаги]][[Category:Интерфейс]][[Category:Структура]]&lt;br /&gt;
== Введение ==&lt;br /&gt;
Итак...вы установили систему. Скачали установщик для Windows, или готовый образ Linux - без разницы. Система запустилась и работает.&lt;br /&gt;
&lt;br /&gt;
Возникают вопросы - а что же делать дальше? Что сейчас может система? Что можно в ней поменять? Как что-то добавить?&lt;br /&gt;
&lt;br /&gt;
Данный цикл статей предназначен как раз чтобы ответить на них. А начнем мы, пожалуй, с интерфейсов системы. Ведь это то, с чем напрямую взаимодействует пользователь.&lt;br /&gt;
&lt;br /&gt;
Сперва посмотрим на то, что у нас имеется (все скрины и описания приведены для свежего (только что установленного) дистрибутива для Windows...в некоторых образах Linux интерфейс немного более наполненный демо-материалами, но сути это не меняет).&lt;br /&gt;
&lt;br /&gt;
Чтобы открыть основной интерфейс системы нужно ввести в браузере&lt;br /&gt;
&lt;br /&gt;
'''http://127.0.0.1''' (или '''http://localhost'''), если вы входите с того компьютера, где установлен MajorDomo&lt;br /&gt;
&lt;br /&gt;
'''http://&amp;lt;ip-адрес компьютера с MajorDomo в сети&amp;gt;''', т.е., с любого другого устройства в сети&lt;br /&gt;
&lt;br /&gt;
и у вас должна открыться главная страница.&lt;br /&gt;
&lt;br /&gt;
Если это ваш первый запуск, то должна открыться страница first_start.html. Если она не открылась (это может произойти, если вы установили готовый образ. Так же в последнем установщике под Windows она почему-то тоже не открывается) - можно сделать это вручную, зайдя в настройки (Control Panel-&amp;gt;SETTINGS-&amp;gt;General settings, и там ищем, к примеру, Time Zone, и нажимаем ссылку Update) или же вбив в браузере после адреса /popup/first_start.html.&lt;br /&gt;
[[Файл:Fs1.jpg|центр]]&lt;br /&gt;
С этой страницы и начнем. Она простая, с базовыми настройками. Тут нужно выбрать&lt;br /&gt;
Ваш часовой пояс&lt;br /&gt;
Язык системы&lt;br /&gt;
Цветовую тему интерфейса (Тёмная/Светлая)&lt;br /&gt;
Поменять эти настройки так же можно, зайдя повторно на данную страницу.&lt;br /&gt;
&lt;br /&gt;
Теперь взглянем на все доступные интерфейсы. Каждый из этих интерфейсов может быть выбран как приоритетный для управления системой...либо может быть несколько приоритетных, в зависимости от используемых устройств.&lt;br /&gt;
&lt;br /&gt;
[Category:Первые шаги]&lt;br /&gt;
&lt;br /&gt;
== Главный интерфейс системы ==&lt;br /&gt;
[[Файл:Fs2-1024x560.jpg|800px|Главный интерфейс системы|центр]]&lt;br /&gt;
Данный интерфейс открывается при вводе в браузере адреса системы. На самом деле это комбинация нескольких интерфейсов (а именно Меню и Домашние страницы). Интерфейс ознакомительный и удобный, на первое время использования, и на время отладки и настройки системы, но менее гибкий в плане оформления...совсем не обязательно использовать его в качестве основного.&lt;br /&gt;
&lt;br /&gt;
== Меню ==&lt;br /&gt;
[[Файл:Fs3.jpg|центр|Меню]]&lt;br /&gt;
Меню системы доступно по ссылке /menu.html. Этот интерфейс наиболее подходит для управления с мобильных браузеров. Элементы адаптированы для тачскринов, информативность высокая, степень кастомизации низкая (из стандартных элементов можно многое собрать, но сделать что-то за рамками стандарта - крайне проблематично). Интерфейс основан на движке [https://jquerymobile.com/ JQueryMobile], но часть элементов движка всё ещё не добавлена для системы. Тем не менее их можно использовать, создавая собственные html-элементы. [[Меню|Подробнее (Меню)]]&lt;br /&gt;
== Домашние страницы ==&lt;br /&gt;
[[Файл:Fs4.jpg|центр|Домашние страницы]]&lt;br /&gt;
Домашние страницы так же, как и меню, представлен, как часть основного интерфейса. Но он так же доступен в виде отдельной страницы. Более того - каждая страница доступна в виде отдельной страницы. Данный инструмент позволяет создавать почти полноценные html-страницы не выходя из панели управления. Страницы доступны в виде вкладок в основном интерфейсе домашних страниц, и в виде отдельных ссылок, увидеть которые можно так же в панели управления, нажав &amp;quot;Перейти&amp;quot; напротив нужной домашней страницы. &lt;br /&gt;
[[Домашние страницы|Подробнее (домашние страницы)]]&lt;br /&gt;
== Сцены ==&lt;br /&gt;
[[Файл:Fs scenes.jpg|центр]]&lt;br /&gt;
Наверное самый гибкий в плане кастомизации и возможностей интерфейс. Открывается по ссылке /popup/scenes.html. Так же доступен в виде приложения из интерфейса приложений, и после установки по-умолчанию добавлен, как одна из домашних страниц. Каждая сцена тоже может быть открыта по отдельной ссылки. Отлично подходит для работы в качестве основного интерфейса системы на устройствах где немаловажен внешний вид управляющих элементах. Имеет большое разнообразие этих самых элементов. Для каждого элемента, для каждого состояния доступна кастомизация в виде дополнительных css стилей. Чтобы изменять стили надо обладать средним уровнем знаний css/html. Но даже без изменения css можно построить неплохие сцены в этом интерфейсе.&lt;br /&gt;
[[Сцены|Подробнее (Сцены)]]&lt;br /&gt;
==Дашборд==&lt;br /&gt;
[[Файл:Fs dash-1024x646.jpg|800px|центр]]&lt;br /&gt;
Дашборд по факту является одним из типов домашних страниц (новые дашборды создавать надо именно там), но заслуживает отдельного внимания, как самостоятельный интерфейс. Сделан он на базе freeboard.io. Его уникальность в том, что с ним удобно работать как на больших устройствах, так и с мобильных версий браузеров. Интерфейс плиточный, и подстраивается под размер экрана, регулируя количество столбцов по ширине экрана. Степень кастомизации, как и у меню - довольно таки низкая. Допустимо использовать сторонние виджеты данного проекта, но чтобы их интегрировать - потребуются некоторые знания.&lt;br /&gt;
[[Дашборд|Подробнее (Дашборд)]]&lt;br /&gt;
&lt;br /&gt;
==Приложения==&lt;br /&gt;
[[Файл:Fs5.jpg|центр]]&lt;br /&gt;
Интерфейс приложений создавался как ещё одна альтернатива универсального интерфейса для разных устройств. Движок интерфейса тот же, что в панели управления - bootstrap 3. Степень кастомизации - нулевая. В этом интерфейсе вы практически ничего поменять не сможете (не капаясь в коде системы). Здесь доступны только те модули, которые помечены, как приложения (это делается разработчиками модулей). Интерфейсы самих приложений тоже формируются разработчиками модулей. Пока что мало модулей в полной мере поддерживающих интерфейс приложений.&lt;br /&gt;
[[Приложения|Подробнее (Приложения)]]&lt;br /&gt;
== Панель управления ==&lt;br /&gt;
[[Файл:Fs6-1024x500.jpg|800px|центр]]&lt;br /&gt;
Панель управления - административный интерфейс. Здесь доступны практически все настройки системы и модулей.&lt;br /&gt;
&lt;br /&gt;
==Заключение==&lt;br /&gt;
Теперь вы знакомы практически со всеми интерфейсами, которые у вас в распоряжении. Далее в этом цикле статей будет рассказано подробнее про каждый из них. Как создавать элементы, изменять оформление, каким уровнем знаний надо обладать для изменения того или иного элемента и т.д. и т.п..&lt;br /&gt;
&lt;br /&gt;
Спасибо за внимание.&lt;/div&gt;</summary>
		<author><name>Xor</name></author>
	</entry>
	<entry>
		<id>https://mdminfo.ru/index.php?title=%D0%98%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81%D1%8B_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B&amp;diff=518</id>
		<title>Интерфейсы системы</title>
		<link rel="alternate" type="text/html" href="https://mdminfo.ru/index.php?title=%D0%98%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81%D1%8B_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B&amp;diff=518"/>
		<updated>2019-12-12T18:49:45Z</updated>

		<summary type="html">&lt;p&gt;Xor: /* Введение */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Первые шаги]][[Category:Интерфейс]][[Category:Структура]]&lt;br /&gt;
== Введение ==&lt;br /&gt;
Итак...вы установили систему. Скачали установщик для Windows, или готовый образ Linux - без разницы. Система запустилась и работает.&lt;br /&gt;
&lt;br /&gt;
Возникают вопросы - а что же делать дальше? Что сейчас может система? Что можно в ней поменять? Как что-то добавить?&lt;br /&gt;
&lt;br /&gt;
Данный цикл статей предназначен как раз чтобы ответить на них. А начнем мы, пожалуй, с интерфейсов системы. Ведь это то, с чем напрямую взаимодействует пользователь.&lt;br /&gt;
&lt;br /&gt;
Сперва посмотрим на то, что у нас имеется (все скрины и описания приведены для свежего (только что установленного) дистрибутива для Windows...в некоторых образах Linux интерфейс немного более наполненный демо-материалами, но сути это не меняет).&lt;br /&gt;
&lt;br /&gt;
Чтобы открыть основной интерфейс системы нужно ввести в браузере&lt;br /&gt;
&lt;br /&gt;
'''http://127.0.0.1''' (или '''http://localhost'''), если вы входите с того компьютера, где установлен MajorDomo&lt;br /&gt;
&lt;br /&gt;
'''http://&amp;lt;ip-адрес компьютера с MajorDomo в сети&amp;gt;''', т.е., с любого другого устройства в сети&lt;br /&gt;
&lt;br /&gt;
и у вас должна открыться главная страница.&lt;br /&gt;
&lt;br /&gt;
Если это ваш первый запуск, то должна открыться страница first_start.html. Если она не открылась (это может произойти, если вы установили готовый образ. Так же в последнем установщике под Windows она почему-то тоже не открывается) - можно сделать это вручную, зайдя в настройки (Control Panel-&amp;gt;SETTINGS-&amp;gt;General settings, и там ищем, к примеру, Time Zone, и нажимаем ссылку Update) или же вбив в браузере после адреса /popup/first_start.html.&lt;br /&gt;
[[Файл:Fs1.jpg|центр]]&lt;br /&gt;
С этой страницы и начнем. Она простая, с базовыми настройками. Тут нужно выбрать&lt;br /&gt;
Ваш часовой пояс&lt;br /&gt;
Язык системы&lt;br /&gt;
Цветовую тему интерфейса (Тёмная/Светлая)&lt;br /&gt;
Поменять эти настройки так же можно, зайдя повторно на данную страницу.&lt;br /&gt;
&lt;br /&gt;
Теперь взглянем на все доступные интерфейсы. Каждый из этих интерфейсов может быть выбран как приоритетный для управления системой...либо может быть несколько приоритетных, в зависимости от используемых устройств.&lt;br /&gt;
&lt;br /&gt;
[Category:Первые шаги]&lt;br /&gt;
&lt;br /&gt;
== Главный интерфейс системы ==&lt;br /&gt;
[[Файл:Fs2-1024x560.jpg|800px|Главный интерфейс системы|центр]]&lt;br /&gt;
Данный интерфейс открывается при вводе в браузере адреса системы. На самом деле это комбинация нескольких интерфейсов (а именно Меню и Домашние страницы). Интерфейс ознакомительный и удобный, на первое время использования, и на время отладки и настройки системы, но менее гибкий в плане оформления...совсем не обязательно использовать его в качестве основного.&lt;br /&gt;
&lt;br /&gt;
== Меню ==&lt;br /&gt;
[[Файл:Fs3.jpg|центр|Меню]]&lt;br /&gt;
Меню системы доступно по ссылке /menu.html. Этот интерфейс наиболее подходит для управления с мобильных браузеров. Элементы адаптированы для тачскринов, информативность высокая, степень кастомизации низкая (из стандартных элементов можно многое собрать, но сделать что-то за рамками стандарта - крайне проблематично). Интерфейс основан на движке [https://jquerymobile.com/ JQueryMobile], но часть элементов движка всё ещё не добавлена для системы. Тем не менее их можно использовать, создавая собственные html-элементы. [[Меню|Подробнее (Меню)]]&lt;br /&gt;
== Домашние страницы ==&lt;br /&gt;
[[Файл:Fs4.jpg|центр|Домашние страницы]]&lt;br /&gt;
Домашние страницы так же, как и меню, представлен, как часть основного интерфейса. Но он так же доступен в виде отдельной страницы. Более того - каждая страница доступна в виде отдельной страницы. Данный инструмент позволяет создавать почти полноценные html-страницы не выходя из панели управления. Страницы доступны в виде вкладок в основном интерфейсе домашних страниц, и в виде отдельных ссылок, увидеть которые можно так же в панели управления, нажав &amp;quot;Перейти&amp;quot; напротив нужной домашней страницы. &lt;br /&gt;
[[Домашние страницы|Подробнее (домашние страницы)]]&lt;br /&gt;
== Сцены ==&lt;br /&gt;
[[Файл:Fs scenes.jpg|центр]]&lt;br /&gt;
Наверное самый гибкий в плане кастомизации и возможностей интерфейс. Открывается по ссылке /popup/scenes.html. Так же доступен в виде приложения из интерфейса приложений, и после установки по-умолчанию добавлен, как одна из домашних страниц. Каждая сцена тоже может быть открыта по отдельной ссылки. Отлично подходит для работы в качестве основного интерфейса системы на устройствах где немаловажен внешний вид управляющих элементах. Имеет большое разнообразие этих самых элементов. Для каждого элемента, для каждого состояния доступна кастомизация в виде дополнительных css стилей. Чтобы изменять стили надо обладать средним уровнем знаний css/html. Но даже без изменения css можно построить неплохие сцены в этом интерфейсе.&lt;br /&gt;
[[Сцены|Подробнее (Сцены)]]&lt;br /&gt;
==Дашборд==&lt;br /&gt;
[[Файл:Fs dash-1024x646.jpg|800px|центр]]&lt;br /&gt;
Дашборд по факту является одним из типов домашних страниц (новые дашборды создавать надо именно там), но заслуживает отдельного внимания, как самостоятельный интерфейс. Сделан он на базе freeboard.io. Его уникальность в том, что с ним удобно работать как на больших устройствах, так и с мобильных версий браузеров. Интерфейс плиточный, и подстраивается под размер экрана регулируя количество столбцов по ширине экрана. Степень кастомизации, как и у меню - довольно таки низкая. Допустимо использовать сторонние виджеты данного проекта, но чтобы их интегрировать - потребуются некоторые знания.&lt;br /&gt;
[[Дашборд|Подробнее (Дашборд)]]&lt;br /&gt;
&lt;br /&gt;
==Приложения==&lt;br /&gt;
[[Файл:Fs5.jpg|центр]]&lt;br /&gt;
Интерфейс приложений создавался как ещё одна альтернатива универсального интерфейса для разных устройств. Движок интерфейса тот же, что в панели управления - bootstrap 3. Степень кастомизации - нулевая. В этом интерфейсе вы практически ничего поменять не сможете (не капаясь в коде системы). Здесь доступны только те модули, которые помечены, как приложения (это делается разработчиками модулей). Интерфейсы самих приложений тоже формируются разработчиками модулей. Пока что мало модулей в полной мере поддерживающих интерфейс приложений.&lt;br /&gt;
[[Приложения|Подробнее (Приложения)]]&lt;br /&gt;
== Панель управления ==&lt;br /&gt;
[[Файл:Fs6-1024x500.jpg|800px|центр]]&lt;br /&gt;
Панель управления - административный интерфейс. Здесь доступны практически все настройки системы и модулей.&lt;br /&gt;
&lt;br /&gt;
==Заключение==&lt;br /&gt;
Теперь вы знакомы практически со всеми интерфейсами, которые у вас в распоряжении. Далее в этом цикле статей будет рассказано подробнее про каждый из них. Как создавать элементы, изменять оформление, каким уровнем знаний надо обладать для изменения того или иного элемента и т.д. и т.п..&lt;br /&gt;
&lt;br /&gt;
Спасибо за внимание.&lt;/div&gt;</summary>
		<author><name>Xor</name></author>
	</entry>
</feed>