diff --git a/CHANGELOG.md b/CHANGELOG.md
index 0b460c2fb..4c69bd53d 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -6,6 +6,7 @@
**Merged pull requests:**
- Release 2.4.3 🐎 ([belomaxorka](https://github.com/belomaxorka))
+- Added updates checker ⚙️ [\#1451](https://github.com/torrentpier/torrentpier/pull/1451) ([belomaxorka](https://github.com/belomaxorka))
- Added preview for country flags while editing [\#1448](https://github.com/torrentpier/torrentpier/pull/1448) ([belomaxorka](https://github.com/belomaxorka))
- Added support for APCu caching method [\#1442](https://github.com/torrentpier/torrentpier/pull/1442) ([belomaxorka](https://github.com/belomaxorka))
- Some enhancements [\#1445](https://github.com/torrentpier/torrentpier/pull/1445) ([belomaxorka](https://github.com/belomaxorka))
diff --git a/admin/index.php b/admin/index.php
index 19927a800..6945202c3 100644
--- a/admin/index.php
+++ b/admin/index.php
@@ -76,6 +76,29 @@ if (isset($_GET['pane']) && $_GET['pane'] == 'left') {
'ADMIN_LOCK_CRON' => is_file(BB_DISABLED),
]);
+ // Check for updates
+ if (!$json_response = CACHE('bb_cache')->get('check_for_updates')) {
+ $json_response = false;
+ $context = stream_context_create(['http' => ['header' => 'User-Agent: TorrentPier Updater. With love!']]);
+ $updater_content = file_get_contents(UPDATER_URL, context: $context);
+ if ($updater_content !== false) {
+ $json_response = json_decode(utf8_encode($updater_content), true);
+ CACHE('bb_cache')->set('check_for_updates', $json_response, 1200);
+ }
+ }
+ if (is_array($json_response)) {
+ $get_version = $json_response['tag_name'];
+ $version_code = (int)trim(str_replace(['.', 'v', ','], '', strstr($bb_cfg['tp_version'], '-', true)));
+ $version_code_actual = (int)trim(str_replace(['.', 'v', ','], '', $get_version));
+
+ $template->assign_block_vars('updater', [
+ 'UPDATE_AVAILABLE' => $version_code < $version_code_actual,
+ 'NEW_VERSION_NUMBER' => $get_version,
+ 'NEW_VERSION_SIZE' => isset($json_response['assets'][0]['size']) ? humn_size($json_response['assets'][0]['size']) : false,
+ 'NEW_VERSION_DL_LINK' => $json_response['assets'][0]['browser_download_url'] ?? $json_response['html_url']
+ ]);
+ }
+
// Get forum statistics
$total_posts = $stats['postcount'];
$total_topics = $stats['topiccount'];
diff --git a/library/defines.php b/library/defines.php
index ef165abbe..994ee543f 100644
--- a/library/defines.php
+++ b/library/defines.php
@@ -13,6 +13,7 @@ if (!defined('BB_ROOT')) {
// System
define('APP_NAME', 'TorrentPier');
+define('UPDATER_URL', 'https://api.github.com/repos/torrentpier/torrentpier/releases/latest');
// Path (trailing slash '/' at the end: XX_PATH - without, XX_DIR - with)
define('ADMIN_DIR', BB_PATH . '/admin');
diff --git a/library/language/source/main.php b/library/language/source/main.php
index 31e45a37a..4ff368aec 100644
--- a/library/language/source/main.php
+++ b/library/language/source/main.php
@@ -2280,6 +2280,7 @@ $lang['CLICK_RETURN_DISALLOWADMIN'] = 'Click %sHere%s to return to Disallow User
// Version Check
$lang['VERSION_INFORMATION'] = 'Version Information';
+$lang['UPDATE_AVAILABLE'] = 'Update available';
// Login attempts configuration
$lang['MAX_LOGIN_ATTEMPTS'] = 'Allowed login attempts';
diff --git a/styles/templates/admin/index.tpl b/styles/templates/admin/index.tpl
index 21ad092ce..120f68234 100644
--- a/styles/templates/admin/index.tpl
+++ b/styles/templates/admin/index.tpl
@@ -146,17 +146,25 @@
{L_VERSION_INFORMATION} | -|
---|---|
{L_TP_VERSION}: | -{$bb_cfg['tp_release_codename']} ({$bb_cfg['tp_version']}) | -
{L_TP_RELEASE_DATE}: | -{$bb_cfg['tp_release_date']} | -
{L_VERSION_INFORMATION} | +|
{L_TP_VERSION}: | +{$bb_cfg['tp_release_codename']} ({$bb_cfg['tp_version']}) | +
{L_TP_RELEASE_DATE}: | +{$bb_cfg['tp_release_date']} | +
{L_UPDATE_AVAILABLE}: | +{updater.NEW_VERSION_NUMBER} ({L_SIZE}: {updater.NEW_VERSION_SIZE}) · {L_DOWNLOAD} | +