# =========================================================================== #
# NG CMS // Плагины // Новости по расписанию                                  #
# =========================================================================== #
Плагин позволяет задавать для каждой новости дату+время, когда эта новости
будет добавлена/снята с публикации.
ВАЖНО: ИЗВЕСТНЫЕ ПРОБЛЕМЫ И ИХ РЕШЕНИЕ
======================================
ПРОБЛЕМА 1: Ошибка datetime при установке
При установке плагина на системах с MySQL 5.7+ может возникать ошибка:
"SQLSTATE[22007]: Invalid datetime format: 1292 Incorrect datetime value:
'0000-00-00 00:00:00' for column 'nsched_activate/nsched_deactivate'"
ПРОБЛЕМА 2: Ошибка "Column not found" при установке
"SQLSTATE[42S22]: Column not found: 1054 Unknown column 'nsched_activate'
in 'where clause'"
УНИВЕРСАЛЬНОЕ РЕШЕНИЕ:
1. Автоматическое (встроено в install.php v2.0):
   - Плагин проверяет существование полей перед их очисткой
   - Безопасно работает как с новыми, так и существующими установками
2. Ручное (если нужно):
   Выполните универсальный SQL скрипт fix_datetime_issue.sql из папки плагина:
   -- Добавляет поля если их нет
   ALTER TABLE `ng_news` ADD COLUMN IF NOT EXISTS `nsched_activate` INT(10) NOT NULL DEFAULT 0;
   ALTER TABLE `ng_news` ADD COLUMN IF NOT EXISTS `nsched_deactivate` INT(10) NOT NULL DEFAULT 0;
   -- Очищает проблемные значения и приводит к правильному типу
   UPDATE `ng_news` SET `nsched_activate` = 0 WHERE `nsched_activate` IN ('0000-00-00 00:00:00', '0');
   ALTER TABLE `ng_news` MODIFY COLUMN `nsched_activate` INT(10) NOT NULL DEFAULT 0;
ПРИЧИНЫ ПРОБЛЕМ:
- Старые версии MySQL позволяли недопустимые datetime значения '0000-00-00 00:00:00'
- Попытка очистки несуществующих полей при первой установке
- Конфликты типов данных при обновлении с предыдущих версийПри активации плагина, в интерфейсе добавления/редактирования новостей появятся
дополнительные поля.
Плагин предоставляет возможность автоматической синхронизации дат
создания/редактирования/публикации новости.
Подробная инструкция по плагину NSched для управления публикацией новостей
1. Установка плагина
Загрузите архив с плагином в папку /engine/plugins/
Распакуйте архив (должна появиться папка nsched)
В админ-панели перейдите: "Система" → "Управление плагинами"
Найдите плагин NSched и нажмите "Установить"
После установки нажмите "Включить"
2. Настройка плагина
После установки перейдите в "Плагины" → "NSched" → "Настройки":
3. В "Настройки Системы" → "Основные настройки" → "Временная зона" → "Значение timezone для вашего сайта"
Выберите значение, соответствующее вашему часовому поясу.
4. Использование в админ-панели
При создании/редактировании новости:
В форме редактирования появится блок "Управление публикацией новостей"
Для установки даты:
Активация: поле Дата включения (формат: ДД.ММ.ГГГГ ЧЧ:ММ)
Деактивация: поле Дата отключения (требуются права unpublish)
Используйте встроенный datetimepicker (календарь с выбором времени)
Усли вам надо активировать новость то сохраняете ее на модерацию ,можно сразу настроить и деактивацию , но если просто деактивацию то новость должна быть опубликована
Важные особенности:
Дата деактивации не может быть раньше даты активации
При пустом значении даты соответствующее действие не выполняется
При сохранении даты конвертируются в UNIX-временную метку
5. CRON-обработчик
Плагин требует настройки CRON-задачи для автоматической публикации/деактивации.
Команда для cron (выполнять каждые 5-10 минут)
6. Безопасность
Все даты проходят валидацию через DateTime::createFromFormat()
SQL-запросы используют встроенную защиту от инъекций
Обязательная проверка прав доступа перед сохранением
Обратите внимание, что когда вы создаете/редактируете новость, то независимо от
настроек плагин будет автоматически сбрасывать значения полей с датами
включения/отключения, если в них указаны даты прошедшего времени.
Плагин может принести пользу в следующих случаях:
* Администратор уезжает в отпуск, но хочет, чтобы сайт "замораживался".
  В этом случае достаточно насоздавать новостей "впрок" и указать в плагине
  какая и когда новость будет активироваться.
  Посетители будут видеть появление новых новостей и у них не будет создаваться
  впечатления, что о сайте забыли.
* Размещение новостей имеющих ограниченную по сроку актуальность.
  Вместо постоянного удаления старых новостей достаточно один раз задать дату,
  когда новость будет автоматически сниматься с публикации.
* Размещение рекламных материалов-новостей.
  Вы можете задать "срок жизни" для рекламной новости в зависимости от того,
  на какой срок новость проплачена.
  Теперь Вам не надо будет вести огромный каталог рекламных новостей и каждый
  день заглядывать в него для поиска новостей, у которых истёк "срок жизни".
