mirror of
https://github.com/OpenXE-org/OpenXE.git
synced 2024-12-25 22:20:29 +01:00
98 lines
3.1 KiB
PHP
98 lines
3.1 KiB
PHP
<?php
|
|
|
|
namespace Xentral\Modules\Backup;
|
|
|
|
use Xentral\Modules\Backup\Exception\BackupNotificationServiceException;
|
|
use Xentral\Modules\SystemNotification\Service\NotificationService;
|
|
|
|
final class BackupNotificationService
|
|
{
|
|
/** @var string login sperre Konfiguration */
|
|
const BACKUP_CONF_MODE = 'login_lock_mode';
|
|
|
|
/** @var NotificationService $notificationService */
|
|
private $notificationService;
|
|
/**
|
|
* @var BackupSystemConfigurationService
|
|
*/
|
|
private $configurationService;
|
|
|
|
public function __construct(
|
|
BackupSystemConfigurationService $configurationService,
|
|
NotificationService $notificationService
|
|
) {
|
|
$this->configurationService = $configurationService;
|
|
$this->notificationService = $notificationService;
|
|
}
|
|
|
|
/**
|
|
* @param string $name
|
|
* @param string $message
|
|
* @param array $tags
|
|
* @param string $title
|
|
* @param string $level
|
|
*/
|
|
public function addNotification($name, $message, $tags = [], $title = '', $level = 'warning')
|
|
{
|
|
|
|
if (!is_string($name) || empty(trim($name))) {
|
|
throw new BackupNotificationServiceException('Name cannot be empty');
|
|
}
|
|
|
|
if (!is_string($message) || empty(trim($message))) {
|
|
throw new BackupNotificationServiceException('Message cannot be empty');
|
|
}
|
|
|
|
if (empty($tags)) {
|
|
throw new BackupNotificationServiceException('Tags cannot be empty');
|
|
}
|
|
|
|
if (!is_array($tags)) {
|
|
throw new BackupNotificationServiceException('Tags should be an array');
|
|
}
|
|
|
|
if (empty(trim($title))) {
|
|
$title = 'Laufender Backupprozess';
|
|
}
|
|
|
|
$this->notificationService->createPushNotificationForConnectedUsers($level, $title, $message, true, [], $tags);
|
|
|
|
$this->configurationService->trySetConfiguration($name, '1');
|
|
if ($name === static::BACKUP_CONF_MODE) {
|
|
$this->configurationService->trySetConfiguration('login_lock_mode_time', time());
|
|
$this->configurationService->trySetConfiguration('login_lock_mode_timeout', '900');
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @param string $name
|
|
* @param array $tags
|
|
*/
|
|
public function removeNotification($name, $tags = [])
|
|
{
|
|
|
|
if (!is_string($name) || empty(trim($name))) {
|
|
throw new BackupNotificationServiceException('Name cannot be empty');
|
|
}
|
|
|
|
if (empty($tags)) {
|
|
throw new BackupNotificationServiceException('Tags cannot be empty');
|
|
}
|
|
|
|
if (!is_array($tags)) {
|
|
throw new BackupNotificationServiceException('Tags should be an array');
|
|
}
|
|
|
|
if ($this->configurationService->getConfiguration($name)) {
|
|
$this->configurationService->trySetConfiguration($name, '0');
|
|
if ($name === static::BACKUP_CONF_MODE) {
|
|
$this->configurationService->trySetConfiguration('login_lock_mode_time', '');
|
|
$this->configurationService->trySetConfiguration('login_lock_mode_timeout', '0');
|
|
}
|
|
|
|
$this->notificationService->deleteByTags($tags, null, false);
|
|
}
|
|
}
|
|
|
|
}
|