mirror of
https://github.com/torrentpier/torrentpier
synced 2025-08-21 05:43:55 -07:00
Compare commits
No commits in common. "master" and "v2.8.2" have entirely different histories.
15 changed files with 52 additions and 105 deletions
29
.github/workflows/ci.yml
vendored
29
.github/workflows/ci.yml
vendored
|
@ -43,3 +43,32 @@ jobs:
|
|||
with:
|
||||
name: TorrentPier-master
|
||||
path: ${{ steps.create-zip.outputs.ZIP_NAME }}
|
||||
|
||||
deploy:
|
||||
name: 🎉 Deploy
|
||||
runs-on: ubuntu-22.04
|
||||
steps:
|
||||
- name: 🚚 Get latest code
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: 🔩 Setup PHP
|
||||
uses: shivammathur/setup-php@v2
|
||||
with:
|
||||
php-version: '8.2'
|
||||
|
||||
- name: 🖇 Install Composer dependencies
|
||||
run: composer install --no-dev --no-progress --prefer-dist --optimize-autoloader
|
||||
|
||||
- name: 📂 Sync files
|
||||
uses: SamKirkland/FTP-Deploy-Action@v4.3.5
|
||||
with:
|
||||
server: ${{ secrets.FTP_SERVER }}
|
||||
username: ${{ secrets.FTP_USERNAME }}
|
||||
password: ${{ secrets.FTP_PASSWORD }}
|
||||
server-dir: ${{ secrets.FTP_DIR }}
|
||||
protocol: ${{ secrets.FTP_PROTOCOL }}
|
||||
port: ${{ secrets.FTP_PORT }}
|
||||
exclude: |
|
||||
**/.git*
|
||||
**/.git*/**
|
||||
.env
|
||||
|
|
12
CHANGELOG.md
12
CHANGELOG.md
|
@ -2,18 +2,6 @@
|
|||
|
||||
# 📖 Change Log
|
||||
|
||||
## [v2.8.3](https://github.com/torrentpier/torrentpier/compare/v2.8.2..v2.8.3) (2025-07-03)
|
||||
|
||||
### 🚀 Features
|
||||
|
||||
- *(lang)* Added `RTL` languages support ([#2031](https://github.com/torrentpier/torrentpier/pull/2031)) - ([fd46d3d](https://github.com/torrentpier/torrentpier/commit/fd46d3d04ad3ab1453256b2ab620508e2ba33586))
|
||||
- *(updater)* Added exceptions logging ([#2026](https://github.com/torrentpier/torrentpier/pull/2026)) - ([51f2c70](https://github.com/torrentpier/torrentpier/commit/51f2c70d81b910012cdecd111b5b92c1dfd0d6f6))
|
||||
|
||||
### 🚜 Refactor
|
||||
|
||||
- *(TorrentFileList)* Reduce duplication in root directory unset logic ([#2027](https://github.com/torrentpier/torrentpier/pull/2027)) - ([d4d8210](https://github.com/torrentpier/torrentpier/commit/d4d82101dd67c9f4cd86e0f6f909495696974354))
|
||||
|
||||
|
||||
## [v2.8.2](https://github.com/torrentpier/torrentpier/compare/v2.8.1..v2.8.2) (2025-06-30)
|
||||
|
||||
### 🐛 Bug Fixes
|
||||
|
|
|
@ -90,7 +90,7 @@ if (isset($_GET['pane']) && $_GET['pane'] == 'left') {
|
|||
'NEW_VERSION_SIZE' => $update_data['latest_version_size'],
|
||||
'NEW_VERSION_DL_LINK' => $update_data['latest_version_dl_link'],
|
||||
'NEW_VERSION_LINK' => $update_data['latest_version_link'],
|
||||
'NEW_VERSION_HASH' => $update_data['latest_version_checksum']
|
||||
'NEW_VERSION_MD5' => $update_data['latest_version_checksum']
|
||||
]);
|
||||
}
|
||||
|
||||
|
|
|
@ -18,8 +18,8 @@ $reserved_port = env('TP_PORT', 80);
|
|||
$bb_cfg = [];
|
||||
|
||||
// Version info
|
||||
$bb_cfg['tp_version'] = 'v2.8.3';
|
||||
$bb_cfg['tp_release_date'] = '03-07-2025';
|
||||
$bb_cfg['tp_version'] = 'v2.8.2';
|
||||
$bb_cfg['tp_release_date'] = '30-06-2025';
|
||||
$bb_cfg['tp_release_codename'] = 'Cattle';
|
||||
|
||||
// Increase version number after changing JS or CSS
|
||||
|
@ -204,7 +204,6 @@ $bb_cfg['lang'] = [
|
|||
'ar' => [
|
||||
'name' => 'Arabic',
|
||||
'locale' => 'ar_SA.UTF-8',
|
||||
'rtl' => true,
|
||||
],
|
||||
'hy' => [
|
||||
'name' => 'Armenian',
|
||||
|
@ -281,7 +280,6 @@ $bb_cfg['lang'] = [
|
|||
'he' => [
|
||||
'name' => 'Hebrew',
|
||||
'locale' => 'he_IL.UTF-8',
|
||||
'rtl' => true,
|
||||
],
|
||||
'hi' => [
|
||||
'name' => 'Hindi',
|
||||
|
|
|
@ -16,16 +16,9 @@ if (!config()->get('tp_updater_settings.enabled')) {
|
|||
}
|
||||
|
||||
$data = [];
|
||||
$data[] = ['latest_check_timestamp' => TIMENOW];
|
||||
|
||||
try {
|
||||
$updaterDownloader = new \TorrentPier\Updater();
|
||||
$updaterDownloader = $updaterDownloader->getLastVersion(config()->get('tp_updater_settings.allow_pre_releases'));
|
||||
} catch (Exception $exception) {
|
||||
bb_log('[Updater] Exception: ' . $exception->getMessage() . LOG_LF);
|
||||
$this->store('check_updates', $data);
|
||||
return;
|
||||
}
|
||||
$updaterDownloader = new \TorrentPier\Updater();
|
||||
$updaterDownloader = $updaterDownloader->getLastVersion(config()->get('tp_updater_settings.allow_pre_releases'));
|
||||
|
||||
$getVersion = \TorrentPier\Helpers\VersionHelper::removerPrefix($updaterDownloader['tag_name']);
|
||||
$currentVersion = \TorrentPier\Helpers\VersionHelper::removerPrefix(config()->get('tp_version'));
|
||||
|
@ -33,7 +26,6 @@ $currentVersion = \TorrentPier\Helpers\VersionHelper::removerPrefix(config()->ge
|
|||
// Has update!
|
||||
if (\z4kn4fein\SemVer\Version::greaterThan($getVersion, $currentVersion)) {
|
||||
$latestBuildFileLink = $updaterDownloader['assets'][0]['browser_download_url'];
|
||||
$SHAFileHash = $updaterDownloader['assets'][0]['digest'] ?? '';
|
||||
|
||||
// Check updater file
|
||||
$updaterFile = readUpdaterFile();
|
||||
|
@ -47,12 +39,10 @@ if (\z4kn4fein\SemVer\Version::greaterThan($getVersion, $currentVersion)) {
|
|||
]), UPDATER_FILE, replace_content: true);
|
||||
}
|
||||
|
||||
// Get MD5 / sha256 checksum
|
||||
// Get MD5 checksum
|
||||
$buildFileChecksum = '';
|
||||
if (!empty($SHAFileHash)) {
|
||||
$buildFileChecksum = $SHAFileHash;
|
||||
} else {
|
||||
$buildFileChecksum = 'MD5: ' . strtoupper(md5_file($latestBuildFileLink));
|
||||
if (isset($latestBuildFileLink)) {
|
||||
$buildFileChecksum = strtoupper(md5_file($latestBuildFileLink));
|
||||
}
|
||||
|
||||
// Build data array
|
||||
|
@ -66,4 +56,5 @@ if (\z4kn4fein\SemVer\Version::greaterThan($getVersion, $currentVersion)) {
|
|||
];
|
||||
}
|
||||
|
||||
$data[] = ['latest_check_timestamp' => TIMENOW];
|
||||
$this->store('check_updates', $data);
|
||||
|
|
|
@ -2212,10 +2212,10 @@ function infoByIP(string $ipAddress, int $port = 0): array
|
|||
];
|
||||
}
|
||||
} else {
|
||||
bb_log("[FreeIPAPI] Failed to get IP info for: $ipAddress" . LOG_LF);
|
||||
bb_log("[FreeIPAPI] Failed to get IP info for: $ipAddress");
|
||||
}
|
||||
} catch (Exception $e) {
|
||||
bb_log("[FreeIPAPI] " . $e->getMessage() . LOG_LF);
|
||||
bb_log("[FreeIPAPI] " . $e->getMessage());
|
||||
}
|
||||
|
||||
if (empty($data)) {
|
||||
|
|
|
@ -117,7 +117,6 @@ $template->assign_vars([
|
|||
'USER_HIDE_CAT' => (BB_SCRIPT == 'index'),
|
||||
|
||||
'USER_LANG' => $userdata['user_lang'],
|
||||
'USER_LANG_DIRECTION' => (isset($bb_cfg['lang'][$userdata['user_lang']]['rtl']) && $bb_cfg['lang'][$userdata['user_lang']]['rtl'] === true) ? 'rtl' : 'ltr',
|
||||
|
||||
'INCLUDE_BBCODE_JS' => !empty($page_cfg['include_bbcode_js']),
|
||||
'USER_OPTIONS_JS' => IS_GUEST ? '{}' : json_encode($user->opt_js, JSON_THROW_ON_ERROR),
|
||||
|
|
|
@ -142,7 +142,6 @@ switch ($mode) {
|
|||
if (!$pr_data = DB()->fetch_row($sql)) {
|
||||
bb_die($lang['PROFILE_NOT_FOUND']);
|
||||
}
|
||||
$pr_data['user_birthday'] = $pr_data['user_birthday']->format('Y-m-d');
|
||||
if (IN_DEMO_MODE && isset($_COOKIE['user_lang'])) {
|
||||
$pr_data['user_lang'] = $_COOKIE['user_lang'];
|
||||
}
|
||||
|
|
|
@ -30,8 +30,6 @@ if (!$profiledata = get_userdata($_GET[POST_USERS_URL], profile_view: true)) {
|
|||
bb_die($lang['NO_USER_ID_SPECIFIED']);
|
||||
}
|
||||
|
||||
$profiledata['user_birthday'] = $profiledata['user_birthday']->format('Y-m-d');
|
||||
|
||||
if (!$ranks = $datastore->get('ranks')) {
|
||||
$datastore->update('ranks');
|
||||
$ranks = $datastore->get('ranks');
|
||||
|
|
|
@ -232,7 +232,6 @@ class User
|
|||
}
|
||||
}
|
||||
|
||||
$this->data['user_birthday'] = $this->data['user_birthday']->format('Y-m-d');
|
||||
return $this->data;
|
||||
}
|
||||
|
||||
|
|
|
@ -53,10 +53,8 @@ class TorrentFileList
|
|||
$this->build_filelist_array();
|
||||
|
||||
if ($this->multiple) {
|
||||
if (isset($this->files_ary['/'])) {
|
||||
if (!empty($this->files_ary['/'])) {
|
||||
$this->files_ary = $this->files_ary + $this->files_ary['/'];
|
||||
}
|
||||
unset($this->files_ary['/']);
|
||||
}
|
||||
$filelist = $html->array2html($this->files_ary);
|
||||
|
|
|
@ -38,13 +38,6 @@ class Updater
|
|||
*/
|
||||
public string $savePath;
|
||||
|
||||
/**
|
||||
* LTS version pattern (v2.8.*)
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
private const LTS_VERSION_PATTERN = '/^v2\.8\.\d+$/';
|
||||
|
||||
/**
|
||||
* Stream context
|
||||
*
|
||||
|
@ -137,67 +130,23 @@ class Updater
|
|||
}
|
||||
|
||||
/**
|
||||
* Returns information of latest TorrentPier LTS version (v2.8.*) available
|
||||
* Returns information of latest TorrentPier version available
|
||||
*
|
||||
* @param bool $allowPreReleases
|
||||
* @return array
|
||||
* @throws Exception
|
||||
*/
|
||||
public function getLastVersion(bool $allowPreReleases = true): array
|
||||
{
|
||||
// Filter releases to get only LTS versions (v2.8.*)
|
||||
$ltsVersions = array_filter($this->jsonResponse, function ($release) {
|
||||
return preg_match(self::LTS_VERSION_PATTERN, $release['tag_name']);
|
||||
});
|
||||
|
||||
if (empty($ltsVersions)) {
|
||||
throw new Exception('No LTS versions (v2.8.*) found');
|
||||
}
|
||||
|
||||
// Sort LTS versions by version number (descending)
|
||||
usort($ltsVersions, function ($a, $b) {
|
||||
return version_compare($b['tag_name'], $a['tag_name']);
|
||||
});
|
||||
|
||||
if (!$allowPreReleases) {
|
||||
foreach ($ltsVersions as $release) {
|
||||
if (isset($release['prerelease']) && $release['prerelease']) {
|
||||
foreach ($this->jsonResponse as $index) {
|
||||
if (isset($index['prerelease']) && $index['prerelease']) {
|
||||
continue;
|
||||
}
|
||||
return $release;
|
||||
|
||||
return $index;
|
||||
}
|
||||
}
|
||||
|
||||
// If no stable LTS versions found
|
||||
throw new Exception('No stable LTS versions (v2.8.*) found');
|
||||
}
|
||||
|
||||
return $ltsVersions[0];
|
||||
}
|
||||
|
||||
/**
|
||||
* Get all available LTS versions (v2.8.*)
|
||||
*
|
||||
* @param bool $allowPreReleases
|
||||
* @return array
|
||||
*/
|
||||
public function getAllLTSVersions(bool $allowPreReleases = true): array
|
||||
{
|
||||
// Filter releases to get only LTS versions (v2.8.*)
|
||||
$ltsVersions = array_filter($this->jsonResponse, function ($release) use ($allowPreReleases) {
|
||||
$isLTSVersion = preg_match(self::LTS_VERSION_PATTERN, $release['tag_name']);
|
||||
|
||||
if (!$allowPreReleases && isset($release['prerelease']) && $release['prerelease']) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return $isLTSVersion;
|
||||
});
|
||||
|
||||
// Sort LTS versions by version number (descending)
|
||||
usort($ltsVersions, function ($a, $b) {
|
||||
return version_compare($b['tag_name'], $a['tag_name']);
|
||||
});
|
||||
|
||||
return array_values($ltsVersions);
|
||||
return $this->jsonResponse[0];
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<!-- IF TPL_ADMIN_FRAMESET -->
|
||||
<!--========================================================================-->
|
||||
<!DOCTYPE html>
|
||||
<html dir="{USER_LANG_DIRECTION}" lang="{USER_LANG}">
|
||||
<html lang="{$bb_cfg['default_lang']}">
|
||||
<head>
|
||||
<meta charset="{CONTENT_ENCODING}">
|
||||
<link rel="shortcut icon" href="{SITE_URL}favicon.png" type="image/x-icon">
|
||||
|
@ -160,7 +160,7 @@
|
|||
<!-- IF updater.UPDATE_AVAILABLE -->
|
||||
<tr>
|
||||
<td class="row1" nowrap="nowrap" width="25%"><b>{L_UPDATE_AVAILABLE}:</b></td>
|
||||
<td class="row2"><b>{updater.NEW_VERSION_NUMBER}</b><!-- IF updater.NEW_VERSION_SIZE --> ({L_SIZE}: {updater.NEW_VERSION_SIZE})<!-- ENDIF --> · <a target="_blank" href="{updater.NEW_VERSION_DL_LINK}">{L_DOWNLOAD}</a> · <a target="_blank" href="{updater.NEW_VERSION_LINK}">{L_CHANGELOG}</a><!-- IF updater.NEW_VERSION_HASH --> · <span class="copyElement" data-clipboard-text="{updater.NEW_VERSION_HASH}" title="{L_COPY_TO_CLIPBOARD}">{updater.NEW_VERSION_HASH}</span><!-- ENDIF --></td>
|
||||
<td class="row2"><b>{updater.NEW_VERSION_NUMBER}</b><!-- IF updater.NEW_VERSION_SIZE --> ({L_SIZE}: {updater.NEW_VERSION_SIZE})<!-- ENDIF --> · <a target="_blank" href="{updater.NEW_VERSION_DL_LINK}">{L_DOWNLOAD}</a> · <a target="_blank" href="{updater.NEW_VERSION_LINK}">{L_CHANGELOG}</a><!-- IF updater.NEW_VERSION_MD5 --> · <span class="copyElement" data-clipboard-text="{updater.NEW_VERSION_MD5}" title="{L_COPY_TO_CLIPBOARD}">MD5: {updater.NEW_VERSION_MD5}</span><!-- ENDIF --></td>
|
||||
</tr>
|
||||
<!-- ENDIF -->
|
||||
<!-- END updater -->
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<!DOCTYPE html>
|
||||
<html dir="{USER_LANG_DIRECTION}" lang="{USER_LANG}">
|
||||
<html lang="{$bb_cfg['default_lang']}">
|
||||
<head>
|
||||
<meta charset="{CONTENT_ENCODING}">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=Edge">
|
||||
|
|
|
@ -565,7 +565,6 @@ for ($i = 0; $i < $total_posts; $i++) {
|
|||
$poster_from = ($postrow[$i]['user_from'] && !$poster_guest) ? $postrow[$i]['user_from'] : '';
|
||||
$poster_joined = !$poster_guest ? $lang['JOINED'] . ': ' . bb_date($postrow[$i]['user_regdate'], 'Y-m-d H:i') : '';
|
||||
$poster_longevity = !$poster_guest ? delta_time($postrow[$i]['user_regdate']) : '';
|
||||
$poster_birthday = $postrow[$i]['user_birthday']->format('Y-m-d');
|
||||
$post_id = $postrow[$i]['post_id'];
|
||||
$mc_type = (int)$postrow[$i]['mc_type'];
|
||||
$mc_comment = $postrow[$i]['mc_comment'];
|
||||
|
@ -716,7 +715,7 @@ for ($i = 0; $i < $total_posts; $i++) {
|
|||
'DELETE' => $delpost_btn,
|
||||
'IP' => $ip_btn,
|
||||
|
||||
'POSTER_BIRTHDAY' => user_birthday_icon($poster_birthday, $postrow[$i]['user_id']),
|
||||
'POSTER_BIRTHDAY' => user_birthday_icon($postrow[$i]['user_birthday'], $postrow[$i]['user_id']),
|
||||
|
||||
'MC_COMMENT' => $mc_type ? bbcode2html($mc_comment) : '',
|
||||
'MC_BBCODE' => $mc_type ? $mc_comment : '',
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue