castopod/modules/PodcastImport/Helpers/podcast_import_helper.php
Yassine Doghri 3359abf3fc fix: remove exit function from podcast:import command to allow for episodes:compute-downloads to run
- update CI4 to v4.5.7
- update php and js dependencies to latest
- reconfigure lint-staged
2025-01-08 12:11:18 +00:00

54 lines
1.5 KiB
PHP

<?php
declare(strict_types=1);
use Modules\PodcastImport\Entities\PodcastImportTask;
use Modules\PodcastImport\Entities\TaskStatus;
/**
* @copyright 2023 Ad Aures
* @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3
* @link https://castopod.org/
*/
if (! function_exists('get_import_tasks')) {
/**
* @return PodcastImportTask[]
*/
function get_import_tasks(?string $podcastHandle = null): array
{
/** @var PodcastImportTask[] $podcastImportsQueue */
$podcastImportsQueue = service('settings')
->get('Import.queue') ?? [];
if ($podcastImportsQueue === []) {
return [];
}
if ($podcastHandle !== null) {
$podcastImportsQueue = array_filter(
$podcastImportsQueue,
static fn ($importTask): bool => $importTask->handle === $podcastHandle
);
}
usort($podcastImportsQueue, static function (PodcastImportTask $a, PodcastImportTask $b): int {
if ($a->status === $b->status) {
return $a->created_at->isAfter($b->created_at) ? -1 : 1;
}
if ($a->status === TaskStatus::Running) {
return -1;
}
if ($a->status === TaskStatus::Queued && $b->status !== TaskStatus::Running) {
return -1;
}
return $a->created_at->isAfter($b->created_at) ? -1 : 1;
});
return $podcastImportsQueue;
}
}