-
Notifications
You must be signed in to change notification settings - Fork 28
Expand file tree
/
Copy pathindex.php
More file actions
135 lines (111 loc) · 4.6 KB
/
index.php
File metadata and controls
135 lines (111 loc) · 4.6 KB
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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
<?php
#===============================================================================
# INCLUDE: Initialization
#===============================================================================
require 'core/application.php';
function setupAdminEnv(bool $auth_required = true) {
session_start();
if($auth_required and !Application::isAuthenticated()) {
HTTP::redirect(Application::getAdminURL('auth.php'));
}
Application::set('CORE.LANGUAGE', Application::get('ADMIN.LANGUAGE'));
Application::set('TEMPLATE.NAME', Application::get('ADMIN.TEMPLATE'));
Application::set('TEMPLATE.LANG', Application::get('ADMIN.LANGUAGE'));
}
Router::add('admin/', function() {
setupAdminEnv();
require 'core/include/admin/index.php';
});
Router::add('admin/database.php', function() {
setupAdminEnv();
require 'core/include/admin/db_editor.php';
});
Router::add('admin/auth.php', function() {
setupAdminEnv(false);
require 'core/include/admin/login.php';
});
foreach(['Category', 'Page', 'Post', 'User'] as $entity_ns) {
$entity_str = strtolower($entity_ns);
$plural_map = [
'category' => 'categories',
'page' => 'pages',
'post' => 'posts',
'user' => 'users'
];
$list_key_plural = strtoupper($plural_map[$entity_str]);
Router::add(sprintf('admin/%s/', $entity_str),
function() use($entity_ns, $entity_str, $list_key_plural) {
setupAdminEnv();
require 'core/include/admin/entity/list.php';
}
);
// Ensure trailing slash for list controllers
Router::addRedirect(sprintf('admin/%s', $entity_str),
Application::getURL(sprintf('admin/%s/', $entity_str)));
$route_template = sprintf('admin/%s/%%s.php', $entity_str);
// Routes for create/update/delete
foreach(['insert', 'update', 'delete'] as $action) {
Router::add(sprintf($route_template, $action),
function() use($entity_ns, $entity_str, $list_key_plural, $action) {
setupAdminEnv();
require sprintf('core/include/admin/entity/%s.php', $action);
}
);
}
// Routes for post and page search
if(in_array($entity_ns, ['Page', 'Post'])) {
Router::add(sprintf($route_template, 'search'),
function() use($entity_ns, $entity_str, $list_key_plural) {
setupAdminEnv();
require 'core/include/admin/entity/search.php';
}
);
}
}
// Ensure trailing slash for admin index controller
Router::addRedirect('admin', 'admin/');
#===============================================================================
# ROUTE: Item controllers
#===============================================================================
foreach(['category', 'page', 'post', 'user'] as $item) {
$slug = Application::get(strtoupper($item).'.DIRECTORY');
# Item list controller
Router::add("{$slug}/", function() use($item) {
require "core/include/{$item}/list.php";
});
# Item show controller
Router::add("{$slug}/([^/]+)/", function($param) use($item) {
require "core/include/{$item}/main.php";
});
# Item controllers (ensure trailing slashes)
Router::addRedirect($slug, Application::getURL("{$slug}/"));
Router::addRedirect("{$slug}/([^/]+)", Application::getURL("{$slug}/$1/"));
}
#===============================================================================
# ROUTE: Home
#===============================================================================
Router::add('', function() {
require 'core/include/home.php';
});
#===============================================================================
# ROUTE: Feed and Search
#===============================================================================
Router::add('(feed|search)/', function($slug) {
require "core/include/{$slug}/main.php";
});
#===============================================================================
# REDIRECT: Feed and Search (trailing slash)
#===============================================================================
Router::addRedirect('(feed|search)', Application::getURL('$1/'));
#===============================================================================
# REDIRECT: Favicon
#===============================================================================
Router::addRedirect('favicon.ico', Application::getTemplateURL('static/favicon.ico'));
#===============================================================================
# BACKWARD COMPATIBILITY: Redirect to the new post feed URL
#===============================================================================
Router::addRedirect('feed/post/', Application::getURL('feed/'), 301);
#===============================================================================
# Execute router and route requests
#===============================================================================
Router::execute(parse_url(HTTP::requestURI(), PHP_URL_PATH));