2namespace dbx\dbxContent;
4require_once __DIR__ .
'/dbxContentLng.class.php';
5require_once __DIR__ .
'/dbxContentPageCache.class.php';
6require_once __DIR__ .
'/dbxContentRenderer.class.php';
7require_once __DIR__ .
'/dbxContent_permalink.class.php';
31 private static function safeLng(
string $lng =
''): string {
33 $lng = trim((
string)
dbx()->get_system_var(
'dbx_lng',
'de'));
36 return preg_match(
'/^[a-z]{2,3}$/',
$lng) ?
$lng :
'de';
44 $folderRights = trim(
$renderer->getPublicFolderRights((int)($row[
'folder'] ?? 0)));
45 return $folderRights !==
'' ? $folderRights :
'*';
48 private static function routeFromRow(array $row, dbxContentRenderer
$renderer): ?array {
49 $cid = (int)($row[
'id'] ?? 0);
50 $storedPermalink = trim((
string)($row[
'permalink'] ??
''));
51 if ($cid <= 0 || !dbxContent_permalink::isValid($storedPermalink)) {
54 $permalink = self::normalizePermalink($storedPermalink);
58 'rights' => self::pageRights($row,
$renderer),
59 'activ' => (
int)($row[
'activ'] ?? 1),
60 'permalink' => $permalink,
61 'meta_robots' => trim((
string)($row[
'meta_robots'] ??
'')),
65 private static function withLanguage(
string $lng, callable $callback) {
67 $previous = trim((
string)
dbx()->get_system_var(
'dbx_lng',
'de'));
68 $changed = $previous !==
$lng;
70 dbx()->set_system_var(
'dbx_lng',
$lng);
74 return $callback(
$lng);
77 dbx()->set_system_var(
'dbx_lng', $previous !==
'' ? $previous :
'de');
83 public static function load(
string $lng =
''): array {
84 return (array) self::withLanguage(
$lng, static function(string $activeLng): array {
85 $db =
dbx()->get_system_obj(
'dbxDB');
86 if (!is_object(
$db)) {
93 'id,permalink,folder,activ,meta_robots',
101 if (!is_array(
$rows)) {
107 foreach (
$rows as $row) {
108 if (!is_array($row)) {
111 $route = self::routeFromRow($row,
$renderer);
112 if (is_array($route)) {
113 $result[$route[
'permalink']] = $route;
121 public static function save(array $data,
string $lng =
''): bool {
125 public static function upsertPage(
int $cid,
string $permalink,
string $rights,
int $activ = 1,
string $lng =
''): void {
138 public static function
resolve(string $permalink, string
$lng =
''): ?array {
139 $permalink = trim($permalink);
146 $permalink = self::normalizePermalink($permalink);
148 return self::withLanguage(
$lng,
static function(
string $activeLng) use ($permalink): ?array {
149 $db =
dbx()->get_system_obj(
'dbxDB');
150 if (!is_object(
$db)) {
155 dbxContentLng::ddContent($activeLng),
156 array(
'permalink' => $permalink),
157 'id,permalink,folder,activ,meta_robots',
160 if (!is_array($row) || (
int)($row[
'id'] ?? 0) <= 0) {
164 return self::routeFromRow($row,
new dbxContentRenderer());
static canonicalFromLegacy($permalink)
Uebersetzt ausschliesslich alte, pfadartige CMS-Permalinks.
static isValid($permalink)
static ddContent(string $lng='')
Kompatibilitaets-Fassade fuer Permalinks.
static load(string $lng='')
Liefert die aktuellen Permalinks direkt aus dbxContent.
static writeHomeCid(int $cid, string $lng='')
static homePath(string $lng='')
Legacy-Pfad, wird nur noch beim Leeren alter Cache-Dateien benoetigt.
static normalizePermalink(string $permalink)
static readHomeCid(string $lng='')
static removeByPermalink(string $permalink, string $lng='')
static removeByCid(int $cid, string $lng='')
static indexPath(string $lng='')
Legacy-Pfad, wird nur noch beim Leeren alter Cache-Dateien benoetigt.
static upsertPage(int $cid, string $permalink, string $rights, int $activ=1, string $lng='')
static resolve(string $permalink, string $lng='')
Loest genau einen Permalink direkt aus der Content-Tabelle auf.
static save(array $data, string $lng='')
Kein Persistieren: Permalinks liegen ausschliesslich in dbxContent.
if(!defined( 'IMG_WEBP')) define( 'IMG_WEBP'
DBX schema administration.