2026-03-18 17:31:47 +01:00
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
namespace App\Enums;
|
|
|
|
|
|
|
|
|
|
enum PublishStatusEnum: string
|
|
|
|
|
{
|
|
|
|
|
case UNPUBLISHED = 'unpublished';
|
|
|
|
|
case PUBLISHING = 'publishing';
|
|
|
|
|
case PUBLISHED = 'published';
|
2026-08-02 17:16:30 +02:00
|
|
|
case SKIPPED = 'skipped';
|
2026-03-18 17:31:47 +01:00
|
|
|
case ERROR = 'error';
|
2026-08-13 17:34:57 +02:00
|
|
|
|
|
|
|
|
/** Skipped articles were never attempted, so they are not a publish outcome. */
|
|
|
|
|
public function isSettled(): bool
|
|
|
|
|
{
|
|
|
|
|
return $this === self::PUBLISHED || $this === self::ERROR;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @return array<int, string>
|
|
|
|
|
*/
|
|
|
|
|
public static function settledValues(): array
|
|
|
|
|
{
|
|
|
|
|
return array_values(array_map(
|
|
|
|
|
fn (self $status): string => $status->value,
|
|
|
|
|
array_filter(self::cases(), fn (self $status): bool => $status->isSettled()),
|
|
|
|
|
));
|
|
|
|
|
}
|
2026-03-18 17:31:47 +01:00
|
|
|
}
|