-
-
Notifications
You must be signed in to change notification settings - Fork 8
/
Copy pathOptionHelper.php
64 lines (51 loc) · 1.88 KB
/
OptionHelper.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
<?php
declare(strict_types=1);
namespace Winter\Redirect\Classes;
use Cms\Classes\Page;
use Cms\Classes\Theme;
use System\Classes\PluginManager;
use Winter\Redirect\Models\Category;
use Winter\Redirect\Models\Redirect;
final class OptionHelper
{
public static function getTargetTypeOptions(int $statusCode): array
{
if ($statusCode === 404 || $statusCode === 410) {
return [
Redirect::TARGET_TYPE_NONE => 'winter.redirect::lang.redirect.target_type_none',
];
}
return [
Redirect::TARGET_TYPE_PATH_URL => 'winter.redirect::lang.redirect.target_type_path_or_url',
Redirect::TARGET_TYPE_CMS_PAGE => 'winter.redirect::lang.redirect.target_type_cms_page',
Redirect::TARGET_TYPE_STATIC_PAGE => 'winter.redirect::lang.redirect.target_type_static_page',
];
}
public static function getCmsPageOptions(): array
{
return ['' => '-- ' . e(trans('winter.redirect::lang.redirect.none')) . ' --' ] + Page::getNameList();
}
public static function getStaticPageOptions(): array
{
$options = ['' => '-- ' . e(trans('winter.redirect::lang.redirect.none')) . ' --' ];
$hasPagesPlugin = PluginManager::instance()->hasPlugin('Winter.Pages');
if (!$hasPagesPlugin) {
return $options;
}
$pages = \Winter\Pages\Classes\Page::listInTheme(Theme::getActiveTheme());
/** @var \Winter\Pages\Classes\Page $page */
foreach ($pages as $page) {
if (array_key_exists('title', $page->viewBag)) {
$options[$page->getBaseFileName()] = $page->viewBag['title'];
}
}
return $options;
}
public static function getCategoryOptions(): array
{
return Category::query()
->get(['id', 'name'])
->pluck('name', 'key')
->toArray();
}
}