dbxapp
4.1.3
CMS, Shop, Workflows und modulare Geschäftsanwendungen
dbxapp.de
Portal
Start
Anwender
Entwickler
KI-Bereiche
Loading...
Searching...
No Matches
dbxKiWritingStyles.class.php
Go to the documentation of this file.
1
<?php
2
namespace
dbx\dbxKi;
3
4
class
dbxKiWritingStyles
{
5
6
private
const
CONFIG_KEY =
'writing_styles'
;
7
8
public
static
function
defaults
(): array {
9
$path = dirname(__DIR__) .
'/cfg/writing_styles.php'
;
10
$writing_styles
= array();
11
if
(is_file($path)) {
12
include $path;
13
}
14
return
is_array(
$writing_styles
) ?
$writing_styles
: array();
15
}
16
17
public
static
function
all
(): array {
18
$config
=
dbx
()->get_config(
'dbxKi'
);
19
$stored
= array();
20
if
(is_array(
$config
) && !empty(
$config
[self::CONFIG_KEY])) {
21
$raw =
$config
[self::CONFIG_KEY];
22
if
(is_string($raw)) {
23
$decoded = json_decode($raw,
true
);
24
$stored
= is_array($decoded) ? $decoded : array();
25
} elseif (is_array($raw)) {
26
$stored
= $raw;
27
}
28
}
29
if
(!
$stored
) {
30
return
self::defaults();
31
}
32
return
self::normalize(
$stored
);
33
}
34
35
public
static
function
save
(array $styles): void {
36
$normalized
= self::normalize($styles);
37
if
(!
$normalized
) {
38
throw
new \InvalidArgumentException(
'Mindestens ein gueltiger Schreibstil erforderlich.'
);
39
}
40
$config
=
dbx
()->get_config(
'dbxKi'
);
41
if
(!is_array(
$config
)) {
42
$config
= array();
43
}
44
$config
[self::CONFIG_KEY] = json_encode(
$normalized
, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
45
dbx
()->set_config(
'dbxKi'
,
$config
);
46
}
47
48
public
static
function
resetToDefaults
(): void {
49
$config
=
dbx
()->get_config(
'dbxKi'
);
50
if
(!is_array(
$config
)) {
51
$config
= array();
52
}
53
unset(
$config
[self::CONFIG_KEY]);
54
dbx
()->set_config(
'dbxKi'
,
$config
);
55
}
56
57
public
static
function
prompt
(
string
$key): string {
58
$all
= self::
all
();
59
return
(
string
) (
$all
[$key][
'prompt'
] ?? (
$all
[
'sachlich'
][
'prompt'
] ??
''
));
60
}
61
62
public
static
function
label
(
string
$key): string {
63
$all
= self::
all
();
64
return
(
string
) (
$all
[$key][
'label'
] ?? $key);
65
}
66
67
private
static
function
normalize(array $styles): array {
68
$out
= array();
69
foreach
($styles as $key => $meta) {
70
if
(!is_array($meta)) {
71
continue
;
72
}
73
$key = self::slugKey(is_string($key) ? $key : (
string
) ($meta[
'key'
] ??
''
));
74
if
($key ===
''
) {
75
continue
;
76
}
77
$label = trim((
string
) ($meta[
'label'
] ??
''
));
78
$prompt = trim((
string
) ($meta[
'prompt'
] ??
''
));
79
if
($label ===
''
|| $prompt ===
''
) {
80
continue
;
81
}
82
$out
[$key] = array(
'label'
=> $label,
'prompt'
=> $prompt);
83
}
84
return
$out
;
85
}
86
87
public
static
function
slugKey
(
string
$key): string {
88
$key = strtolower(trim($key));
89
$key = preg_replace(
'/[^a-z0-9_-]+/'
,
'_'
, $key);
90
return
trim((
string
) $key,
'_'
);
91
}
92
93
public
static
function
parseFormRows
(array
$keys
, array $labels, array $prompts): array {
94
$styles = array();
95
$count
= max(count(
$keys
), count($labels), count($prompts));
96
for
($i = 0; $i <
$count
; $i++) {
97
$styles[] = array(
98
'key'
=> (
string
) (
$keys
[$i] ??
''
),
99
'label'
=> (
string
) ($labels[$i] ??
''
),
100
'prompt'
=> (
string
) ($prompts[$i] ??
''
),
101
);
102
}
103
$map = array();
104
foreach
($styles as $row) {
105
$key = self::slugKey((
string
) ($row[
'key'
] ??
''
));
106
if
($key ===
''
) {
107
continue
;
108
}
109
$map[$key] = array(
110
'label'
=> trim((
string
) ($row[
'label'
] ??
''
)),
111
'prompt'
=> trim((
string
) ($row[
'prompt'
] ??
''
)),
112
);
113
}
114
return
self::normalize($map);
115
}
116
}
dbx\dbxKi\dbxKiWritingStyles
Definition
dbxKiWritingStyles.class.php:4
dbx\dbxKi\dbxKiWritingStyles\save
static save(array $styles)
Definition
dbxKiWritingStyles.class.php:35
dbx\dbxKi\dbxKiWritingStyles\resetToDefaults
static resetToDefaults()
Definition
dbxKiWritingStyles.class.php:48
dbx\dbxKi\dbxKiWritingStyles\defaults
static defaults()
Definition
dbxKiWritingStyles.class.php:8
dbx\dbxKi\dbxKiWritingStyles\label
static label(string $key)
Definition
dbxKiWritingStyles.class.php:62
dbx\dbxKi\dbxKiWritingStyles\slugKey
static slugKey(string $key)
Definition
dbxKiWritingStyles.class.php:87
dbx\dbxKi\dbxKiWritingStyles\all
static all()
Definition
dbxKiWritingStyles.class.php:17
dbx\dbxKi\dbxKiWritingStyles\prompt
static prompt(string $key)
Definition
dbxKiWritingStyles.class.php:57
dbx\dbxKi\dbxKiWritingStyles\parseFormRows
static parseFormRows(array $keys, array $labels, array $prompts)
Definition
dbxKiWritingStyles.class.php:93
$stored
if( $base !==$expectedBase) if($files !==$expectedBase . 'files/') $stored
Definition
dbxApi_paths_test.php:23
$config
if($resolved !==$expectedBase . 'files/test/') $config
Definition
dbxApi_paths_test.php:35
$keys
foreach(array('bootstrapRowColumns', 'setBootstrapColumnLayout', 'addBootstrapColumn', 'dissolveBootstrapColumns',) as $function) $keys
Definition
dbxContent_cms_columns_test.php:23
$all
$all
Definition
dbxForm_validation_result_test.php:44
$out
$out
Definition
dbxTPL_design_slots_test.php:37
$count
$count
Definition
generate_dbxapp_merch_mockups.php:270
dbx
DBX schema administration.
$normalized
$normalized
Definition
workflow_roundtrip_test.php:213
$writing_styles
$writing_styles
Pflegbare Schreibstil-Vorgaben fuer KI-Auftraege (dbxKi Briefing).
Definition
writing_styles.php:7
dbx
modules
dbxKi
include
dbxKiWritingStyles.class.php
Generated by
1.17.0