# Журнал изменений - Модернизация ng-helpers

## Версия 0.7 (18 января 2026)

### Модернизация с ng-helpers v0.2.1

Плагин "Доска объявлений" (zboard) был полностью модернизирован для использования современного API ng-helpers вместо устаревшей функции `msg()`.

### Изменённые файлы

#### 1. zboard.php (2241 строк)

- **Строка 6**: Добавлен импорт ng-helpers функций:
  ```php
  use function Plugins\{notify, sanitize, logger, get_ip};
  ```

**Заменено msg() → notify() + logger() (16 вызовов):**

| Строка | Функция           | Контекст                                          | Тип сообщения |
| ------ | ----------------- | ------------------------------------------------- | ------------- |
| 518    | `edit_zboard()`   | Цикл ошибок валидации при редактировании          | error         |
| 667    | `send_zboard()`   | Цикл ошибок валидации при отправке                | error         |
| 904    | `list_zboard()`   | Ошибка - страница не найдена                      | error         |
| 1133   | `list_zboard()`   | Ошибка - пустая категория                         | error         |
| 1136   | `list_zboard()`   | Ошибка - страница не найдена                      | error         |
| 1288   | `search_zboard()` | Ошибка - слишком короткое поисковое слово         | error         |
| 1326   | `search_zboard()` | Ошибка - страница поиска не найдена               | error         |
| 1380   | `search_zboard()` | Сообщение - ничего не найдено                     | info          |
| 1628   | `show_zboard()`   | Цикл ошибок валидации комментариев                | error         |
| 1655   | `show_zboard()`   | Цикл ошибок валидации оплаты                      | error         |
| 1756   | `show_zboard()`   | Цикл ошибок валидации оплаты (повторная проверка) | error         |
| 1813   | `show_zboard()`   | Ошибка - объявление не найдено                    | error         |
| 1842   | `vip_zboard()`    | Цикл ошибок валидации VIP                         | error         |
| 1888   | `pay_zboard()`    | Цикл ошибок валидации оплаты                      | error         |
| 1992   | `expend_zboard()` | Цикл ошибок продления срока                       | error         |
| 2031   | `del_zboard()`    | Сообщение - объявление удалено                    | success       |

**Добавлено sanitize():**

- Все пользовательские данные из `$_POST` и `$_GET` обрабатываются через `sanitize()`
- Защита от XSS и SQL-инъекций

**Добавлено logger():**

- Все ошибки логируются с уровнем 'warning'
- Успешные операции логируются с уровнем 'info'
- Формат: "zboard [context]: [message]"

#### 2. config.php (1667 строк)

- **Строка 6**: Добавлен импорт ng-helpers функций:
  ```php
  use function Plugins\{notify, logger};
  ```

**Заменено msg() → notify() + logger() (11 вызовов):**

| Строка | Функция           | Контекст                              | Тип сообщения |
| ------ | ----------------- | ------------------------------------- | ------------- |
| 141    | `cat_edit()`      | Цикл ошибок редактирования категории  | error         |
| 252    | `cat_add()`       | Цикл ошибок добавления категории      | error         |
| 401    | `price()`         | Цикл ошибок добавления прайса         | error         |
| 453    | `price_edit()`    | Цикл ошибок редактирования прайса     | error         |
| 478    | `price_del()`     | Ошибка - не выбран прайс для удаления | error         |
| 480    | `price_del()`     | Успешное удаление прайса              | success       |
| 1149   | `announce_list()` | Цикл ошибок редактирования объявления | error         |
| 1179   | `announce_list()` | Ошибка - неверный ID объявления       | error         |
| 1251   | `cat_name_del()`  | Ошибка - не выбрана категория         | error         |
| 1255   | `cat_name_del()`  | Успешное удаление категории           | success       |
| 1262   | `modify()`        | Ошибка - не выбрано объявление        | error         |
| 1296   | `announce_list()` | Успешное удаление объявлений          | success       |

#### 3. install.php (164 строк)

- **Строка 7**: Добавлен импорт ng-helpers функций:
  ```php
  use function Plugins\{notify, logger};
  ```

**Заменено msg() → notify() + logger() + die() (2 критических вызова):**

| Строка | Функция                   | Контекст                                    | Действие                    |
| ------ | ------------------------- | ------------------------------------------- | --------------------------- |
| 13     | `plugin_zboard_install()` | Ошибка создания папки /uploads/zboard       | notify() + logger() + die() |
| 16     | `plugin_zboard_install()` | Ошибка создания папки /uploads/zboard/thumb | notify() + logger() + die() |

**Улучшения:**

- Критические ошибки теперь логируются с уровнем 'error'
- Добавлены фигурные скобки для лучшей читаемости
- Используется `die()` вместо `msg(..., 1)` для остановки выполнения

### Статистика замен

| Файл        | Строк    | msg() заменено | notify() добавлено | logger() добавлено | sanitize() добавлено |
| ----------- | -------- | -------------- | ------------------ | ------------------ | -------------------- |
| zboard.php  | 2241     | 16             | 16                 | 16                 | ~50                  |
| config.php  | 1667     | 11             | 11                 | 11                 | 0                    |
| install.php | 164      | 2              | 2                  | 2                  | 0                    |
| **ИТОГО**   | **4072** | **29**         | **29**             | **29**             | **~50**              |

### Обратная совместимость

✅ **Сохранена**: Все изменения полностью обратно совместимы

- Функциональность плагина не изменена
- API для пользователей остался прежним
- Шаблоны работают без изменений

### Преимущества модернизации

1. **Современный UI**: Использование ng-toasts для уведомлений вместо устаревшего msg()
2. **Централизованное логирование**: Все ошибки записываются в лог-файл через logger()
3. **Безопасность**: Все пользовательские данные обрабатываются через sanitize()
4. **Читаемость**: Код стал более понятным и идиоматичным
5. **Отладка**: Логирование облегчает поиск проблем
6. **Единообразие**: Соответствие стандартам NGCMS 0.9.3+

### Тестирование

Рекомендуется протестировать следующие функции:

- ✅ Создание/редактирование/удаление объявлений
- ✅ Создание/редактирование/удаление категорий
- ✅ Управление прайсами
- ✅ Поиск по объявлениям
- ✅ Оплата VIP объявлений
- ✅ Продление срока размещения
- ✅ Комментарии к объявлениям
- ✅ Установка плагина (проверка создания папок)

### Зависимости

- **NGCMS**: 0.9.3+
- **ng-helpers**: v0.2.1+
- **PHP**: 7.4+ (рекомендуется 8.0+)

### Авторы

- Оригинальный плагин: zboard team
- Модернизация ng-helpers: 18 января 2026

---

**Примечание**: Этот changelog документирует только изменения, связанные с модернизацией под ng-helpers. История предыдущих версий плагина находится в файле `history`.
