Files
intranet/web/intranet_repo/general_files/ini/functions.php
T

124 lines
4.1 KiB
PHP
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?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' => 'Brandschutz­beauftrage*r',
];
return $map[$role] ?? $role;
}
?>