%PDF- %PDF-
| Direktori : /www/varak.net/nextcloud.varak.net/apps_old/apps/passwords/lib/Migration/ |
| Current File : /www/varak.net/nextcloud.varak.net/apps_old/apps/passwords/lib/Migration/CheckAppSettings.php |
<?php
/*
* @copyright 2020 Passwords App
*
* @author Marius David Wieschollek
* @license AGPL-3.0
*
* This file is part of the Passwords App
* created by Marius David Wieschollek.
*/
namespace OCA\Passwords\Migration;
use Exception;
use OCA\Passwords\AppInfo\SystemRequirements;
use OCA\Passwords\Helper\AppSettings\ServiceSettingsHelper;
use OCA\Passwords\Helper\User\AdminUserHelper;
use OCA\Passwords\Services\BackgroundJobService;
use OCA\Passwords\Services\ConfigurationService;
use OCA\Passwords\Services\HelperService;
use OCA\Passwords\Services\NotificationService;
use OCP\Migration\IOutput;
use OCP\Migration\IRepairStep;
/**
* Class CheckAppSettings
*
* @package OCA\Passwords\Migration
*/
class CheckAppSettings implements IRepairStep {
/**
* @var ConfigurationService
*/
protected ConfigurationService $config;
/**
* @var AdminUserHelper
*/
protected AdminUserHelper $adminHelper;
/**
* @var NotificationService
*/
protected NotificationService $notifications;
/**
* @var ServiceSettingsHelper
*/
protected ServiceSettingsHelper $serviceSettings;
/**
* @var BackgroundJobService
*/
protected BackgroundJobService $backgroundJobService;
/**
* CheckAppSettings constructor.
*
* @param AdminUserHelper $adminHelper
* @param ConfigurationService $config
* @param NotificationService $notifications
* @param ServiceSettingsHelper $serviceSettings
* @param BackgroundJobService $backgroundJobService
*/
public function __construct(
AdminUserHelper $adminHelper,
ConfigurationService $config,
NotificationService $notifications,
ServiceSettingsHelper $serviceSettings,
BackgroundJobService $backgroundJobService
) {
$this->config = $config;
$this->adminHelper = $adminHelper;
$this->notifications = $notifications;
$this->serviceSettings = $serviceSettings;
$this->backgroundJobService = $backgroundJobService;
}
/**
* Returns the step's name
*
* @return string
* @since 9.1.0
*/
public function getName() {
return 'Check app settings';
}
/**
* Run repair step.
* Must throw exception on error.
*
* @param IOutput $output
*
* @throws Exception in case of failure
* @since 9.1.0
*/
public function run(IOutput $output) {
$faviconSetting = $this->serviceSettings->get('favicon');
$faviconApiSetting = $this->serviceSettings->get('favicon.api');
if($faviconSetting['value'] === HelperService::FAVICON_BESTICON) {
if(str_contains($faviconApiSetting['value'], 'passwords-app-favicons.herokuapp.com')) {
$this->serviceSettings->reset('favicon.api');
}
}
$previewSetting = $this->serviceSettings->get('preview');
$previewApiSetting = $this->serviceSettings->get('preview.api');
if(empty($previewApiSetting['value']) && in_array($previewSetting['value'], $previewApiSetting['depends']['service.preview'])) {
$this->sendEmptySettingNotification('preview');
}
$ncVersion = \OC_Util::getVersion()[0];
if($ncVersion < SystemRequirements::NC_NOTIFICATION_ID || PHP_VERSION_ID < SystemRequirements::PHP_NOTIFICATION_ID) {
$this->sendDeprecatedPlatformNotification($ncVersion, PHP_VERSION_ID);
}
if($this->config->getAppValue('nightly/enabled', '0') === '1') {
$this->backgroundJobService->addNightlyUpdates();
}
}
/**
* @param string $setting
*/
protected function sendEmptySettingNotification(string $setting): void {
foreach($this->adminHelper->getAdmins() as $admin) {
$this->notifications->sendEmptyRequiredSettingNotification($admin->getUID(), $setting);
}
}
/**
*
*/
protected function sendDeprecatedPlatformNotification(int $ncVersion, int $phpVersion): void {
$appVersion = $this->config->getAppValue('installed_version');
foreach($this->adminHelper->getAdmins() as $admin) {
$this->notifications->sendUpgradeRequiredNotification(
$admin->getUID(),
$ncVersion,
$phpVersion,
$appVersion
);
}
}
}