/
kev
/
Nextcloud_File-Changes-Tracker
Обзор
Документация
Войти
/
kev
/
Nextcloud_File-Changes-Tracker
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
lib/Db/NotificationSettingsMapper.php
69 строк
2 KB
Evgeny Konovalov
first_commit
16 фев 2026, 17:45
16 фев 2026, 17:45
476f06c
Код
Авторство
О чём код?
<?php declare(strict_types=1); namespace OCA\FileChangesTracker\Db; use OCP\AppFramework\Db\DoesNotExistException; use OCP\AppFramework\Db\QBMapper; use OCP\DB\QueryBuilder\IQueryBuilder; use OCP\IDBConnection; /** * Маппер для настроек уведомлений */ class NotificationSettingsMapper extends QBMapper { public function __construct(IDBConnection $db) { parent::__construct($db, 'fct_notification_settings', NotificationSettings::class); } /** * Найти настройки по ID папки */ public function findByFolderConfigId(int $folderConfigId): ?NotificationSettings { $qb = $this->db->getQueryBuilder(); $qb->select('*') ->from($this->getTableName()) ->where($qb->expr()->eq('folder_config_id', $qb->createNamedParameter($folderConfigId, IQueryBuilder::PARAM_INT))); try { return $this->findEntity($qb); } catch (DoesNotExistException $e) { return null; } } /** * Найти все папки с включенной ежедневной сводкой */ public function findAllWithDailyDigest(): array { $qb = $this->db->getQueryBuilder(); $qb->select('*') ->from($this->getTableName()) ->where($qb->expr()->eq('daily_digest_enabled', $qb->createNamedParameter(true, IQueryBuilder::PARAM_BOOL))); return $this->findEntities($qb); } /** * Создать настройки по умолчанию для папки */ public function createDefault(int $folderConfigId): NotificationSettings { $settings = new NotificationSettings(); $settings->setFolderConfigId($folderConfigId); $settings->setInstantNotifications(true); $settings->setNotifyOnCreate(true); $settings->setNotifyOnModify(true); $settings->setNotifyOnDelete(true); $settings->setNotifyOnRename(true); $settings->setDailyDigestEnabled(false); $settings->setDigestTime('09:00'); $settings->setDigestEmail(null); $now = date('Y-m-d H:i:s'); $settings->setCreatedAt($now); $settings->setUpdatedAt($now); return $this->insert($settings); } }