124 lines
4.1 KiB
PHP
124 lines
4.1 KiB
PHP
<?php /* Name: functions.php
|
||
Beschreibung: Generelle Funktionen
|
||
- Verwaltung von Schaltflächen
|
||
- Info-Panels (Boxen und Tabellen)
|
||
- Markdown-Formatierung
|
||
- Eigene Prüffunktionen */
|
||
|
||
|
||
|
||
|
||
// Schaltfläche: Ausgabe eines beliebigen Buttons
|
||
function display_button($p_key,$p_text,$align) {
|
||
|
||
global $p_buttons;
|
||
|
||
if (array_key_exists($p_key, $p_buttons)) {
|
||
$p_file = $p_buttons[$p_key];
|
||
|
||
echo "<div class='button_picto' style='justify-content:" . $align . ";'>";
|
||
echo file_get_contents($p_file);
|
||
if ($p_text) echo $p_text;
|
||
echo "</div>";
|
||
}
|
||
}
|
||
|
||
|
||
/** Infopanel mit einer zweispaltigen Tabelle
|
||
* @param string $title Überschrift des Panels
|
||
* @param array $data_array Strukturdaten mit Schlüssel und Wert
|
||
* @return string Die formatierte Zeichenkette.
|
||
*/
|
||
function infopanel_table($title, $data_array) {
|
||
// Ausgabe des Panels mit ZWEI Spalten
|
||
echo '<div class="info_panel_table">';
|
||
echo ' <table>';
|
||
echo ' <thead>';
|
||
echo ' <tr>';
|
||
echo ' <th colspan="2">';
|
||
echo ' <label>' . $title . '</label>';
|
||
echo ' </th>';
|
||
echo ' </tr>';
|
||
echo '</thead>';
|
||
echo ' <tbody id="tableBody">';
|
||
|
||
foreach ($data_array as $key => $value) {
|
||
|
||
echo ' <tr>';
|
||
echo ' <td>' . $key . '</td>';
|
||
echo ' <td>' . nvl($value, '---') . '</td>';
|
||
echo ' </tr>';
|
||
}
|
||
echo ' </tbody>';
|
||
echo ' </table>';
|
||
echo '</div>';
|
||
}
|
||
|
||
|
||
/** Markdown-Formatierung für Schnelleingaben
|
||
* @param string $text Die zu formatierende Zeichenkette.
|
||
* @return string Die formatierte Zeichenkette.
|
||
*/
|
||
function markdownFormat($text) {
|
||
$text = nl2br(rtrim($text, "\n")); // Umbrüche formatieren (<BR>)
|
||
|
||
$pattern = "/(\::::)( .+)/";
|
||
$replacement = "<li style='margin-left:40px; list-style: none;'>$2</li>"; // :::: {Einrücken 2. Ebene}
|
||
$text = preg_replace($pattern, $replacement, $text);
|
||
|
||
$pattern = "/(\::)( .+)/";
|
||
$replacement = "<li style='margin-left:20px; list-style: none;'>$2</li>"; // :: {Einrücken 1. Ebene}
|
||
$text = preg_replace($pattern, $replacement, $text);
|
||
|
||
$pattern = "/(\-\-)( .+)/";
|
||
$replacement = "<li style='margin-left:40px;'>$2</li>"; // -- {Listenelement 2. Ebene}
|
||
$text = preg_replace($pattern, $replacement, $text);
|
||
|
||
$pattern = "/(\-)( .+)/";
|
||
$replacement = "<li>$2</li>"; // - {Listenelement 1. Ebene}
|
||
$text = preg_replace($pattern, $replacement, $text);
|
||
|
||
$text = preg_replace("/\*\*(.*?)\*\*/s", "<b>$1</b>", $text); // **{Fett}**
|
||
$text = preg_replace("/\*(.*?)\*/s", "<i>$1</i>", $text); // *{Kursiv}*
|
||
|
||
$text = "<ul>" . $text . "</ul>"; // Listenumschluss
|
||
|
||
return $text;
|
||
}
|
||
|
||
|
||
/////////////////////////////////////////
|
||
// EIGENE PRÜFFUNKTIONEN //
|
||
/////////////////////////////////////////
|
||
|
||
|
||
/** Checken einer Zeichenkette auf das Vorhandensein.
|
||
* @param string|null $value Die zu überprüfende Zeichenkette.
|
||
* @param mixed $default Der Ersatzwert, der zurückgegeben wird, wenn die Zeichenkette leer ist.
|
||
* @return mixed Der ursprüngliche Wert oder der Ersatzwert.
|
||
*/
|
||
function nvl(string $value = null, $default) {
|
||
return isset($value) && $value !== '' ? $value : $default;
|
||
}
|
||
|
||
|
||
/** Gegenderte Anzeige eines Rollennamens (Datenbankwert → Anzeige).
|
||
* @param string $role Der Rollenname aus der Datenbank
|
||
* @return string Der gegenderte Anzeigename
|
||
*/
|
||
function genderRole(string $role): string {
|
||
static $map = [
|
||
'Admin' => 'Admin',
|
||
'Technik' => 'Technik',
|
||
'Entwickler' => 'Entwickler*in',
|
||
'Amtsgeschwister' => 'Amtsgeschwister',
|
||
'Diakon' => 'Diakon*in',
|
||
'DiakonIn' => 'Diakon*in',
|
||
'Priester' => 'Priester*in',
|
||
'PriesterIn' => 'Priester*in',
|
||
'Brandschutz' => 'Brandschutz',
|
||
'Brandschutzbeauftragter' => 'Brandschutzbeauftrage*r',
|
||
];
|
||
return $map[$role] ?? $role;
|
||
}
|
||
?>
|