diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 89a420a..4dfedd9 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -5,7 +5,7 @@ on: push: branches: - main - - 'ci-*' + - "ci-*" env: APP_NAME: gpoddersync @@ -18,9 +18,9 @@ jobs: # do not stop on another job's failure fail-fast: false matrix: - php-versions: ['8.1', '8.2'] - databases: ['sqlite'] - server-versions: ['stable27', 'stable28', 'stable29'] + php-versions: ["8.1", "8.2"] + databases: ["sqlite"] + server-versions: ["stable27", "stable28", "stable29", "stable30"] name: php${{ matrix.php-versions }}-${{ matrix.databases }}-${{ matrix.server-versions }} @@ -75,9 +75,9 @@ jobs: # do not stop on another job's failure fail-fast: false matrix: - php-versions: ['8.1', '8.2'] - databases: ['mysql'] - server-versions: ['stable27', 'stable28', 'stable29'] + php-versions: ["8.1", "8.2"] + databases: ["mysql"] + server-versions: ["stable27", "stable28", "stable29", "stable30"] name: php${{ matrix.php-versions }}-${{ matrix.databases }}-${{ matrix.server-versions }} @@ -141,9 +141,9 @@ jobs: # do not stop on another job's failure fail-fast: false matrix: - php-versions: ['8.1', '8.2'] - databases: ['pgsql'] - server-versions: ['stable27', 'stable28', 'stable29'] + php-versions: ["8.1", "8.2"] + databases: ["pgsql"] + server-versions: ["stable27", "stable28", "stable29", "stable30"] name: php${{ matrix.php-versions }}-${{ matrix.databases }}-${{ matrix.server-versions }} diff --git a/CHANGELOG.md b/CHANGELOG.md index 2708f19..c95a0a0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,8 @@ # Changelog +## 3.10.0 - 2024-09-23 +### Changed +- Add support for Nextcloud 30 + ## 3.9.0 - 2024-05-21 ### Changed - Add support for Nextcloud 29 @@ -26,12 +30,12 @@ ## 3.7.3 - 2023-02-24 ### Fixed -- If EpisodeAction is updated with new episode url and there is a conflicting EpisodeAction with that same episode url the later will be deleted +- If EpisodeAction is updated with new episode url and there is a conflicting EpisodeAction with that same episode url the later will be deleted ## 3.7.2 - 2023-02-24 ### Fixed -- EpisodeActions are explicitly searched in database by guid. Episode url is used as fallback. Combined search produces multiple results thus broke synchronization +- EpisodeActions are explicitly searched in database by guid. Episode url is used as fallback. Combined search produces multiple results thus broke synchronization ## 3.7.1 - 2022-11-11 ### Fixed @@ -123,4 +127,3 @@ ## 1.0.7 – 2021-07-13 ### Changed - accept only arrays on subscription change endpoint (thanks https://github.com/mattsches) - diff --git a/README.md b/README.md index bdb4f52..b110a23 100644 --- a/README.md +++ b/README.md @@ -8,6 +8,7 @@ Nextcloud app that replicates basic gpodder.net api to sync podcast consumer app | [KDE Kasts](https://apps.kde.org/de/kasts/) | Supported since version 21.12 | | [Podcast Merlin](https://github.com/yoyoooooooooo/Podcast-Merlin--Nextcloud-Gpodder-Client-For-Windows) | Full sync support podcast client for Windows | | [RePod](https://apps.nextcloud.com/apps/repod) | Nextcloud app for playing and managing podcasts with sync support | +| [Cardo](https://cardo-podcast.github.io/#/cardo) | Podcast client with sync support, for Windows, Mac and Linux | | ~~[Garmin Podcasts](https://lucasasselli.github.io/garmin-podcasts/)~~ | Repository archived, app is [no longer available](https://apps.garmin.com/en-US/apps/b5b85600-0625-43b6-89e9-1245bd44532c) | ### Installation Either from the official Nextcloud app store ([link to app page](https://apps.nextcloud.com/apps/gpoddersync)) or by downloading the [latest release](https://github.com/thrillfall/nextcloud-gpodder/releases/latest) and extracting it into your Nextcloud apps/ directory. diff --git a/appinfo/info.xml b/appinfo/info.xml index 26b0b09..3e9b7b3 100644 --- a/appinfo/info.xml +++ b/appinfo/info.xml @@ -5,7 +5,7 @@ GPodder Sync replicate basic GPodder.net API - 3.9.0 + 3.10.0 agpl Thrillfall GPodderSync @@ -18,7 +18,7 @@ - + diff --git a/lib/Migration/TimestampMigration.php b/lib/Migration/TimestampMigration.php index dc6fb5f..3350657 100644 --- a/lib/Migration/TimestampMigration.php +++ b/lib/Migration/TimestampMigration.php @@ -5,21 +5,21 @@ namespace OCA\GPodderSync\Migration; use OCP\IDBConnection; use OCP\Migration\IOutput; -use Safe\DateTime; +use DateTime; class TimestampMigration implements \OCP\Migration\IRepairStep { - private IDBConnection $db; + private IDBConnection $db; - public function __construct(IDBConnection $db) - { - $this->db = $db; - } + public function __construct(IDBConnection $db) + { + $this->db = $db; + } - /** + /** * @inheritDoc */ - public function getName() : string + public function getName(): string { return "Migrate timestamp values to integer to store unix epoch"; } @@ -29,22 +29,27 @@ class TimestampMigration implements \OCP\Migration\IRepairStep */ public function run(IOutput $output) { - $queryTimestamps = 'SELECT id, timestamp FROM `*PREFIX*gpodder_episode_action` WHERE timestamp_epoch = 0'; - $timestamps = $this->db->executeQuery($queryTimestamps)->fetchAll(); + $queryTimestamps = + "SELECT id, timestamp FROM `*PREFIX*gpodder_episode_action` WHERE timestamp_epoch = 0"; + $timestamps = $this->db->executeQuery($queryTimestamps)->fetchAll(); - $result = 0; + $result = 0; - foreach ($timestamps as $timestamp) { - $timestampEpoch = (new DateTime($timestamp["timestamp"]))->format("U"); - $sql = 'UPDATE `*PREFIX*gpodder_episode_action` ' - . 'SET `timestamp_epoch` = ' . $timestampEpoch . ' ' - . 'WHERE `id` = ' . $timestamp["id"]; + foreach ($timestamps as $timestamp) { + $timestampEpoch = (new DateTime($timestamp["timestamp"]))->format( + "U" + ); + $sql = + "UPDATE `*PREFIX*gpodder_episode_action` " . + "SET `timestamp_epoch` = " . + $timestampEpoch . + " " . + "WHERE `id` = " . + $timestamp["id"]; - $result += $this->db->executeUpdate($sql); + $result += $this->db->executeUpdate($sql); + } - } - - return $result; + return $result; } - }