Example #1
0
function askBool($sQuestion)
{
    say($sQuestion);
    $sInput = getCliBool();
    say();
    return $sInput;
}
/**
 * Farbeinstellungen des Benutzers auslesen
 *
 * @return array        Farbwerte aus der global.ini als Array
 */
function getColors()
{
    // Einstellungen aus der global.ini auslesen
    $hColors = Settings::getValue('global', 'colors');
    if (!$hColors) {
        say("Farbeinstellungen konnten nicht ausgelesen werden");
        return false;
    }
    $hSettingsToChange = array();
    // Hauptfarbe nicht vorhanden -> Alles abbrechen
    if (!array_key_exists('main', $hColors) || $hColors['main'] === '{{hauptfarbe}}') {
        say('Es fehlt die Hauptfarbe in der global.ini! ');
        say('Bitte stellen Sie sicher, dass ein Bereich [colors] vorhanden ist. ');
        say('Setzen Sie darunter eine Zeile mit dem Inhalt main="#<ihrefarbe>". ');
        say('Beispiel: ');
        say('main="#027a8b"');
        // Nach Hauptfarbe fragen
        $sMainColor = null;
        do {
            if ($sMainColor !== null) {
                say('Ihre angegebene Farbe ist keine Hex-Farbe.');
            }
            $sMainColor = ask("Bitte geben Sie Ihre Hauptfarbe im Format #rrggbb an: ");
        } while (!preg_match('/^#[0-9a-z]{3}([0-9a-z]{3})?$/i', $sMainColor));
        $hColors['main'] = $sMainColor;
        $hSettingsToChange['main'] = '"' . $sMainColor . '"';
    }
    // Akzentfarbe nicht angegeben -> Hauptfarbe uebernehmen
    if (!array_key_exists('accent', $hColors) || $hColors['accent'] === '{{akzentfarbe}}') {
        say('Es wurde keine Akzentfarbe angegeben. Verwende Hauptfarbe als Akzentfarbe. ');
        say('Damit eine Akzentfarbe verwendet werden kann, muss in der global.ini ');
        say('eine Zeile mit dem Inhalt accent="#<ihrefarbe>" vorhanden sein. ');
        say('Beispiel: ');
        say('accent="#f59000"');
        // Nach Akzentfarbe fragen
        $sAccentColor = null;
        do {
            if ($sAccentColor !== null) {
                say('Ihre angegebene Farbe ist keine Hex-Farbe.');
            }
            $sAccentColor = ask("Bitte geben Sie Ihre Akzentfarbe im Format #rrggbb an: ");
        } while (!preg_match('/^#[0-9a-z]{3}([0-9a-z]{3})?$/i', $sAccentColor));
        $hColors['accent'] = $sAccentColor;
        $hSettingsToChange['accent'] = '"' . $sAccentColor . '"';
    }
    // Darkmode nicht angegeben -> nicht aktivieren
    if (!array_key_exists('darkmode', $hColors) || $hColors['darkmode'] === '{{farben-invertieren}}') {
        say('In den Einstellungen fehlt die Angabe der Invertierung. ');
        say('Soll der Text weiss auf schwarz dargestellt werden? (y/n): ');
        $hColors['darkmode'] = getCliBool();
        $hSettingsToChange['darkmode'] = $hColors['darkmode'] ? 'true' : 'false';
    }
    // Farbcode-Angaben auch in der global.ini uebernehmen
    if (count($hSettingsToChange) > 0) {
        updateGlobalConfig($hSettingsToChange);
    }
    return $hColors;
}