dbXapp
2.0
RAD, CMS, Module und Runtime-IDE fuer dbXapp
Toggle main menu visibility
Loading...
Searching...
No Matches
dbxContentPermalinkIndex.class.php
Go to the documentation of this file.
1
<?php
2
namespace
dbx\dbxContent;
3
4
require_once __DIR__ .
'/dbxContentLng.class.php'
;
5
require_once __DIR__ .
'/dbxContentPageCache.class.php'
;
6
require_once __DIR__ .
'/dbxContentRenderer.class.php'
;
7
16
class
dbxContentPermalinkIndex
{
17
19
public
static
function
indexPath
(
string
$lng =
''
): string {
20
$lng = self::safeLng($lng);
21
return
dbxContentPageCache::baseDir
() .
'meta/permalinks_'
. $lng .
'.json'
;
22
}
23
25
public
static
function
homePath
(
string
$lng =
''
): string {
26
$lng = self::safeLng($lng);
27
return
dbxContentPageCache::baseDir
() .
'meta/home_'
. $lng .
'.json'
;
28
}
29
30
private
static
function
safeLng(
string
$lng =
''
): string {
31
if
($lng ===
''
) {
32
$lng = trim((
string
)
dbx
()->get_system_var(
'dbx_lng'
,
'de'
));
33
}
34
$lng = strtolower(trim($lng));
35
return
preg_match(
'/^[a-z]{2,3}$/'
, $lng) ? $lng :
'de'
;
36
}
37
38
public
static
function
normalizePermalink
(
string
$permalink): string {
39
$permalink = trim(str_replace(
'\\'
,
'/'
, $permalink),
'/'
);
40
return
strtolower($permalink);
41
}
42
43
private
static
function
pageRights(array $row,
dbxContentRenderer
$renderer): string {
44
$folderRights = trim($renderer->getPublicFolderRights((int)($row[
'folder'
] ?? 0)));
45
return
$folderRights !==
''
? $folderRights :
'*'
;
46
}
47
48
private
static
function
routeFromRow(array $row, dbxContentRenderer $renderer): ?array {
49
$cid = (int)($row[
'id'
] ?? 0);
50
$permalink = self::normalizePermalink((
string
)($row[
'permalink'
] ??
''
));
51
if
($cid <= 0 || $permalink ===
''
) {
52
return
null
;
53
}
54
55
return
array(
56
'cid'
=> $cid,
57
'rights'
=> self::pageRights($row, $renderer),
58
'activ'
=> (
int
)($row[
'activ'
] ?? 1),
59
'permalink'
=> $permalink,
60
);
61
}
62
63
private
static
function
withLanguage(
string
$lng, callable $callback) {
64
$lng = self::safeLng($lng);
65
$previous = trim((
string
)
dbx
()->get_system_var(
'dbx_lng'
,
'de'
));
66
$changed = $previous !== $lng;
67
if
($changed) {
68
dbx
()->set_system_var(
'dbx_lng'
, $lng);
69
}
70
71
try
{
72
return
$callback($lng);
73
}
finally
{
74
if
($changed) {
75
dbx
()->set_system_var(
'dbx_lng'
, $previous !==
''
? $previous :
'de'
);
76
}
77
}
78
}
79
81
public
static
function
load
(
string
$lng =
''
): array {
82
return (array) self::withLanguage($lng, static function(string $activeLng): array {
83
$db
=
dbx
()->get_system_obj(
'dbxDB'
);
84
if
(!is_object(
$db
)) {
85
return
array();
86
}
87
88
$rows =
$db
->select(
89
dbxContentLng::ddContent
($activeLng),
90
'1=1'
,
91
'id,permalink,folder,activ'
,
92
'id'
,
93
'ASC'
,
94
''
,
95
0,
96
0,
97
0
98
);
99
if
(!is_array($rows)) {
100
return
array();
101
}
102
103
$renderer =
new
dbxContentRenderer();
104
$result
= array();
105
foreach
($rows as $row) {
106
if
(!is_array($row)) {
107
continue
;
108
}
109
$route = self::routeFromRow($row, $renderer);
110
if
(is_array($route)) {
111
$result
[$route[
'permalink'
]] = $route;
112
}
113
}
114
return
$result
;
115
});
116
}
117
119
public
static
function
save
(array $data,
string
$lng =
''
): bool {
120
return true;
121
}
122
123
public
static
function
upsertPage
(
int
$cid,
string
$permalink,
string
$rights,
int
$activ
= 1,
string
$lng =
''
): void {
124
// Die Content-Speicherroutine hat den Datensatz bereits aktualisiert.
125
}
126
127
public static function
removeByCid
(int $cid, string $lng =
''
): void {
128
// Kein separater Permalink-Index vorhanden.
129
}
130
131
public static function
removeByPermalink
(string $permalink, string $lng =
''
): void {
132
// Kein separater Permalink-Index vorhanden.
133
}
134
136
public static function
resolve
(string $permalink, string $lng =
''
): ?array {
137
$permalink = self::
normalizePermalink
($permalink);
138
if
($permalink ===
''
) {
139
return
null
;
140
}
141
142
return
self::withLanguage($lng,
static
function
(
string
$activeLng) use ($permalink): ?array {
143
$db
=
dbx
()->get_system_obj(
'dbxDB'
);
144
if
(!is_object(
$db
)) {
145
return
null
;
146
}
147
148
$row =
$db
->select1(
149
dbxContentLng::ddContent($activeLng),
150
array(
'permalink'
=> $permalink),
151
'id,permalink,folder,activ'
,
152
0
153
);
154
if
(!is_array($row) || (
int
)($row[
'id'
] ?? 0) <= 0) {
155
return
null
;
156
}
157
158
return
self::routeFromRow($row,
new
dbxContentRenderer());
159
});
160
}
161
162
public
static
function
writeHomeCid
(
int
$cid,
string
$lng =
''
): void {
163
// Die sprachabhaengige Startseite wird bei Bedarf live aufgeloest.
164
}
165
166
public static function
readHomeCid
(string $lng =
''
): int {
167
return 0;
168
}
169
}
dbx\dbxContent\dbxContentLng\ddContent
static ddContent(string $lng='')
Definition
dbxContentLng.class.php:10
dbx\dbxContent\dbxContentPageCache\baseDir
static baseDir()
Definition
dbxContentPageCache.class.php:86
dbx\dbxContent\dbxContentPermalinkIndex
Kompatibilitaets-Fassade fuer Permalinks.
Definition
dbxContentPermalinkIndex.class.php:16
dbx\dbxContent\dbxContentPermalinkIndex\load
static load(string $lng='')
Liefert die aktuellen Permalinks direkt aus dbxContent.
Definition
dbxContentPermalinkIndex.class.php:81
dbx\dbxContent\dbxContentPermalinkIndex\writeHomeCid
static writeHomeCid(int $cid, string $lng='')
Definition
dbxContentPermalinkIndex.class.php:162
dbx\dbxContent\dbxContentPermalinkIndex\homePath
static homePath(string $lng='')
Legacy-Pfad, wird nur noch beim Leeren alter Cache-Dateien benoetigt.
Definition
dbxContentPermalinkIndex.class.php:25
dbx\dbxContent\dbxContentPermalinkIndex\normalizePermalink
static normalizePermalink(string $permalink)
Definition
dbxContentPermalinkIndex.class.php:38
dbx\dbxContent\dbxContentPermalinkIndex\readHomeCid
static readHomeCid(string $lng='')
Definition
dbxContentPermalinkIndex.class.php:166
dbx\dbxContent\dbxContentPermalinkIndex\removeByPermalink
static removeByPermalink(string $permalink, string $lng='')
Definition
dbxContentPermalinkIndex.class.php:131
dbx\dbxContent\dbxContentPermalinkIndex\removeByCid
static removeByCid(int $cid, string $lng='')
Definition
dbxContentPermalinkIndex.class.php:127
dbx\dbxContent\dbxContentPermalinkIndex\indexPath
static indexPath(string $lng='')
Legacy-Pfad, wird nur noch beim Leeren alter Cache-Dateien benoetigt.
Definition
dbxContentPermalinkIndex.class.php:19
dbx\dbxContent\dbxContentPermalinkIndex\upsertPage
static upsertPage(int $cid, string $permalink, string $rights, int $activ=1, string $lng='')
Definition
dbxContentPermalinkIndex.class.php:123
dbx\dbxContent\dbxContentPermalinkIndex\resolve
static resolve(string $permalink, string $lng='')
Loest genau einen Permalink direkt aus der Content-Tabelle auf.
Definition
dbxContentPermalinkIndex.class.php:136
dbx\dbxContent\dbxContentPermalinkIndex\save
static save(array $data, string $lng='')
Kein Persistieren: Permalinks liegen ausschliesslich in dbxContent.
Definition
dbxContentPermalinkIndex.class.php:119
dbx\dbxContent\dbxContentRenderer
Definition
dbxContentRenderer.class.php:6
$activ
$activ
Definition
Report-dbxConfig.body.php:3
if
if( $syncRequest)
Definition
index.php:520
dbx
DBX schema administration.
$db
$db
Definition
run_context_help_provision.php:38
$result
if(! $db->connect_db_server($server)) $result
Definition
run_context_help_provision.php:45
dbx
modules
dbxContent
include
dbxContentPermalinkIndex.class.php
Generated by
1.17.0