setHeaderTitle(_t('Einstellungen zur Übersicht')); if (isset($_POST['submit-main']) && $_POST['submit-main'] != '') { if (isset($_POST['overview-interval']) && is_numeric($_POST['overview-interval']) && $_POST['overview-interval'] >= 1 && $_POST['overview-interval'] <= 9999) { setConfig('main:overview.interval', $_POST['overview-interval']); $tpl->msg('success', _t('Einstellungen gespeichert'), _t('Die Einstellungen wurden erfolgreich gespeichert.'), true, 10); } else $tpl->msg('error', _t('Fehler'), _t('Bitte vergebe für den Intervall einen Wert zwischen 1 und 9999.'), true, 10); if (isset($_POST['show-devices']) && $_POST['show-devices'] == 'checked') setConfig('main:overview.showDevices', 'true'); else setConfig('main:overview.showDevices', 'false'); } if (isset($_POST['submit-weather']) && $_POST['submit-weather'] != '') { if (isset($_POST['weather-service'], $_POST['weather-location-country'], $_POST['weather-location-type']) && in_array($_POST['weather-service'], array('openweathermap', 'yahoo', 'wunderground', 'darksky', 'yr')) && in_array($_POST['weather-location-country'], array('germany', 'austria', 'swiss', 'uk')) && ((isset($_POST['weather-service-token']) && in_array($_POST['weather-service'], array('openweathermap', 'wunderground', 'darksky')) && ($pWeatherServiceToken = trim($_POST['weather-service-token'])) != '') || in_array($_POST['weather-service'], array('yahoo', 'yr'))) && (($_POST['weather-location-type'] == 'postcode' && isset($_POST['weather-location-postcode-text']) && $_POST['weather-location-postcode-text'] != '') || ($_POST['weather-location-type'] == 'city' && isset($_POST['weather-location-city-text']) && ($cityText = trim($_POST['weather-location-city-text'])) != '') || ($_POST['weather-location-type'] == 'coordinates' && isset($_POST['weather-location-coordinates-latitude-text'], $_POST['weather-location-coordinates-longitude-text']) && ($coordinatesLatitudeText = trim($_POST['weather-location-coordinates-latitude-text'])) != '' && ($coordinatesLongitudeText = trim($_POST['weather-location-coordinates-longitude-text'])) != ''))) { setConfig('main:weather.service', $_POST['weather-service']); setConfig('main:weather.country', $_POST['weather-location-country']); setConfig('main:weather.type', $_POST['weather-location-type']); if (isset($pWeatherServiceToken) && ((strlen($pWeatherServiceToken) == 32 && in_array($_POST['weather-service'], array('openweathermap', 'darksky'))) || (strlen($pWeatherServiceToken) == 16 && in_array($_POST['weather-service'], array('wunderground'))))) setConfig('main:weather.serviceToken', $pWeatherServiceToken); elseif (in_array($_POST['weather-service'], array('openweathermap', 'wunderground', 'darksky'))) $tpl->msg('error', _t('Fehler'), _t('Leider ist der angegebene API-Schlüssel zu kurz!'), true, 10); else setConfig('main:weather.serviceToken', ''); if ($_POST['weather-location-type'] == 'postcode') { if (in_array($_POST['weather-location-country'], array('germany', 'austria', 'swiss'))) { if (in_array(strlen($_POST['weather-location-postcode-text']), array(4, 5)) && $_POST['weather-location-postcode-text'] >= 1 && $_POST['weather-location-postcode-text'] <= 99999) setConfig('main:weather.postcode', $_POST['weather-location-postcode-text']); else $tpl->msg('error', _t('Fehler'), _t('Leider ist die angegebene Postleitzahl ungültig!'), true, 10); } elseif (in_array($_POST['weather-location-country'], array('uk'))) { if (in_array(strlen($_POST['weather-location-postcode-text']), array(5, 6, 7, 8)) && preg_match('/^([A-Z]{1,2}[0-9][A-Z]?[0-9]?)( )?([0-9]{1}[A-Z]{2})$/', $_POST['weather-location-postcode-text'])) setConfig('main:weather.postcode', $_POST['weather-location-postcode-text']); else $tpl->msg('error', _t('Fehler'), _t('Leider ist die angegebene Postleitzahl ungültig!'), true, 10); } } elseif ($_POST['weather-location-type'] == 'city') { if (strlen($cityText) >= 3 && preg_match('/^[A-Za-zÄÖÜäöü \(\)\.\-\/]+$/', $cityText)) setConfig('main:weather.city', $cityText); else $tpl->msg('error', _t('Fehler'), _t('Leider ist der angegebene Stadtname ungültig!'), true, 10); } elseif ($_POST['weather-location-type'] == 'coordinates') { if (preg_match('/^-?[0-9]{1,2}([\.|,][0-9]{1,6})?$/', $coordinatesLatitudeText) && preg_match('/^-?[0-9]{1,2}([\.|,][0-9]{1,6})?$/', $coordinatesLongitudeText)) { setConfig('main:weather.latitude', str_replace(',', '.', $coordinatesLatitudeText)); setConfig('main:weather.longitude', str_replace(',', '.', $coordinatesLongitudeText)); } else $tpl->msg('error', _t('Fehler'), _t('Leider sind die angegebenen Koordinaten ungültig!'), true, 10); } if ($tpl->msgExists(10) === false) { setConfig('main:weather.activation', (isset($_POST['weather-activation']) && $_POST['weather-activation'] == 'checked') ? 'true' : 'false'); if ($_POST['weather-service'] == 'yr') setConfig('main:weather.yrCache', ''); if ($_POST['weather-service'] == 'wunderground') setConfig('main:weather.wundergroundCache', ''); $tpl->msg('success', _t('Einstellungen gespeichert'), _t('Die Einstellungen wurden erfolgreich gespeichert.')); } } else $tpl->msg('error', _t('Fehler'), _t('Bitte fülle alle benötigten Felder aus!')); } $tpl->assign('main-overview-interval', getConfig('main:overview.interval', '30')); $tpl->assign('main-show-devices', getConfig('main:overview.showDevices', 'true')); $tpl->assign('weather-activation', (getConfig('main:weather.activation', 'false') == 'true') ? true : false); $tpl->assign('weather-service', getConfig('main:weather.service', 'openweathermap')); $tpl->assign('weather-service-token', getConfig('main:weather.serviceToken', '')); $tpl->assign('weather-country', getConfig('main:weather.country', 'germany')); $tpl->assign('weather-type', getConfig('main:weather.type', 'postcode')); $tpl->assign('weather-city', getConfig('main:weather.city', '')); $tpl->assign('weather-postcode', getConfig('main:weather.postcode', '')); $tpl->assign('weather-coordinates-latitude', getConfig('main:weather.latitude', '')); $tpl->assign('weather-coordinates-longitude', getConfig('main:weather.longitude', '')); $tpl->assign('weather-info', getWeather()); $tpl->draw('settings/overview'); ?>