summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorBenjamin Brahmer <info@b-brahmer.de>2023-03-05 12:02:38 +0100
committerBenjamin Brahmer <info@b-brahmer.de>2023-03-13 14:39:15 +0100
commitea8002e2d9a4ea82d01987741aefcae275379ad9 (patch)
tree9fb781fc1705c7a224ed9d22a648461527de00f8 /lib
parent0d31caac83378abe369602b87e5e55e7cccb673d (diff)
add cron status badge to admin setting
Display a info card in the settings, indicating when the last news update job ran. Signed-off-by: Benjamin Brahmer <info@b-brahmer.de>
Diffstat (limited to 'lib')
-rw-r--r--lib/Service/StatusService.php27
-rw-r--r--lib/Settings/AdminSettings.php14
2 files changed, 39 insertions, 2 deletions
diff --git a/lib/Service/StatusService.php b/lib/Service/StatusService.php
index a15f30c76..69a621e3c 100644
--- a/lib/Service/StatusService.php
+++ b/lib/Service/StatusService.php
@@ -16,6 +16,9 @@ namespace OCA\News\Service;
use OCA\News\AppInfo\Application;
use OCP\IConfig;
use OCP\IDBConnection;
+use OCP\BackgroundJob\IJobList;
+use OCP\Util;
+use OCA\News\Cron\UpdaterJob;
class StatusService
{
@@ -25,14 +28,18 @@ class StatusService
private $appName;
/** @var IDBConnection */
private $connection;
+ /** @var IJobList */
+ private $jobList;
public function __construct(
IConfig $settings,
- IDBConnection $connection
+ IDBConnection $connection,
+ IJobList $jobList
) {
$this->settings = $settings;
$this->connection = $connection;
$this->appName = Application::NAME;
+ $this->jobList = $jobList;
}
/**
@@ -76,4 +83,22 @@ class StatusService
]
];
}
+
+ /**
+ * Get last update time
+ */
+ public function getUpdateTime(): int
+ {
+
+ $time = 0;
+
+ [$major, $minor, $micro] = Util::getVersion();
+
+ if ($major >= 26) {
+ $myJobList = $this->jobList->getJobsIterator(UpdaterJob::class, 1, 0);
+ $time = $myJobList->current()->getLastRun();
+ }
+
+ return $time;
+ }
}
diff --git a/lib/Settings/AdminSettings.php b/lib/Settings/AdminSettings.php
index c29b5d46c..5e4e83920 100644
--- a/lib/Settings/AdminSettings.php
+++ b/lib/Settings/AdminSettings.php
@@ -3,6 +3,7 @@
namespace OCA\News\Settings;
use OCA\News\AppInfo\Application;
+use OCA\News\Service\StatusService;
use OCP\AppFramework\Http\TemplateResponse;
use OCP\IConfig;
use OCP\Settings\ISettings;
@@ -17,11 +18,14 @@ class AdminSettings implements ISettings
private $config;
/** @var IInitialState */
private $initialState;
+ /** @var StatusService */
+ private $service;
- public function __construct(IConfig $config, IInitialState $initialState)
+ public function __construct(IConfig $config, IInitialState $initialState, StatusService $service)
{
$this->config = $config;
$this->initialState = $initialState;
+ $this->service = $service;
}
public function getForm()
@@ -33,6 +37,14 @@ class AdminSettings implements ISettings
(string)Application::DEFAULT_SETTINGS[$setting]
));
}
+
+ if ($this->service->isCronProperlyConfigured()) {
+ $lastUpdate = $this->service->getUpdateTime();
+ } else {
+ $lastUpdate = 0;
+ }
+
+ $this->initialState->provideInitialState("lastCron", $lastUpdate);
return new TemplateResponse(Application::NAME, 'admin', []);
}