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