AnnouncementCatalog.php 1.2 KB

12345678910111213141516171819202122232425262728
  1. <?php
  2. namespace App\Support;
  3. final class AnnouncementCatalog
  4. {
  5. public const TIMEZONE = 'Asia/Shanghai';
  6. public const CATEGORIES = ['content' => '弹出内容公告', 'image' => '弹出图片公告', 'update' => '弹出更新公告'];
  7. public const PLATFORMS = ['PC' => 'PC', 'H5' => 'H5', 'APP' => 'App'];
  8. public const FREQUENCIES = ['daily_first_login' => '每日首次登录', 'every_login' => '每次登录'];
  9. public const CLICKS = ['none' => '无链接', 'external' => '外站链接', 'internal' => '站内相对路径'];
  10. public const STATES = ['disabled' => '关闭', 'scheduled' => '未开始', 'active' => '展示中', 'expired' => '已结束'];
  11. public static function state(array $row, string $now): string
  12. {
  13. if ((int) $row['status'] !== 1) return 'disabled';
  14. if ($row['publish_at'] > $now) return 'scheduled';
  15. if ($row['end_at'] !== null && $row['end_at'] <= $now) return 'expired';
  16. return 'active';
  17. }
  18. public static function options(array $values): array
  19. {
  20. $result = [];
  21. foreach ($values as $value => $label) $result[] = compact('value', 'label');
  22. return $result;
  23. }
  24. }