2023-06-21 16:17:11 +00:00
|
|
|
<?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 ($podcastHandle !== null) {
|
2024-04-26 09:26:22 +00:00
|
|
|
$podcastImportsQueue = array_filter(
|
|
|
|
$podcastImportsQueue,
|
2025-03-01 13:08:00 +00:00
|
|
|
static fn ($importTask): bool => $importTask->handle === $podcastHandle,
|
2024-04-26 09:26:22 +00:00
|
|
|
);
|
2023-06-21 16:17:11 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
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;
|
|
|
|
});
|
|
|
|
|
2024-12-17 15:06:08 +00:00
|
|
|
return $podcastImportsQueue;
|
2023-06-21 16:17:11 +00:00
|
|
|
}
|
|
|
|
}
|