%PDF- %PDF-
| Direktori : /www/varak.net/nextcloud.varak.net/apps_old/apps/passwords/lib/Cron/ |
| Current File : /www/varak.net/nextcloud.varak.net/apps_old/apps/passwords/lib/Cron/SendServerSurvey.php |
<?php
/*
* @copyright 2023 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\Cron;
use Exception;
use OCA\Passwords\Helper\Survey\ServerReportHelper;
use OCA\Passwords\Helper\User\AdminUserHelper;
use OCA\Passwords\Services\ConfigurationService;
use OCA\Passwords\Services\EnvironmentService;
use OCA\Passwords\Services\LoggingService;
use OCA\Passwords\Services\NotificationService;
use OCP\AppFramework\Utility\ITimeFactory;
/**
* Class SendServerSurvey
*
* @package OCA\Passwords\Cron
*/
class SendServerSurvey extends AbstractTimedJob {
/**
* SendServerSurvey constructor.
*
* @param ITimeFactory $time
* @param LoggingService $logger
* @param ConfigurationService $config
* @param AdminUserHelper $adminHelper
* @param EnvironmentService $environment
* @param ServerReportHelper $serverReport
* @param NotificationService $notifications
*/
public function __construct(
ITimeFactory $time,
LoggingService $logger,
ConfigurationService $config,
protected AdminUserHelper $adminHelper,
EnvironmentService $environment,
protected ServerReportHelper $serverReport,
protected NotificationService $notifications
) {
parent::__construct($time, $logger, $config, $environment);
$this->setInterval(3 * 24 * 60 * 60);
$this->setTimeSensitivity(self::TIME_INSENSITIVE);
}
/**
* @param $argument
*
* @throws Exception
*/
protected function runJob($argument): void {
$mode = $this->getReportMode();
if($mode !== 0) $this->sendReport($mode > 1);
}
/**
* @param bool $enhanced
*
* @return void
*/
protected function sendReport(bool $enhanced): void {
$this->serverReport->sendReport($enhanced);
}
/**
* @return int
*/
protected function getReportMode(): int {
$mode = intval($this->config->getAppValue('survey/server/mode', -1));
if($mode === -1) {
if($this->serverReport->hasData()) $this->sendNotifications();
return 0;
}
return $mode;
}
/**
*
*/
protected function sendNotifications(): void {
$time = intval($this->config->getAppValue('survey/server/notification', 0));
if($time > strtotime('-6 months')) return;
foreach($this->adminHelper->getAdmins() as $admin) {
$this->notifications->sendSurveyNotification($admin->getUID());
}
$this->config->setAppValue('survey/server/notification', time());
}
}