<?php
/**
 * @copyright (c) Kufer Software GmbH, Loisachstrasse 4, D-84453 Mühldorf
 */


class WebSettings extends Datamodul
{
  
  public const CURRENT_VERSION = 1;

  
  public $version = 0;

  public $vhsname = '';
  public $vhsstrasse = '';
  public $vhsort = '';
  public $vhstelefon = '';
  public $vhsfax = '';
  public $vhsemail = '';
  public $vhsagb = '';
  public $vhsdatenschutz = '';
  public $vhswiderruf = '';
  public $linkkursdetails = '';
  public $linkkufertools = '';

  public $impressum = '';
  public $kontakt = '';
  public $sslserver = '';
  public $changepwd = false;
  public $newlogin = true;
  public $sessionDomain = '';
  public $dont64Encode = '';

  public $smtpserver = '127.0.0.1';
  public $smtpuser = '';
  public $smtppass = '';
  public $smtpadresse = '';
  public $usephpmail = '';
  public $noenvelopmail = false;
  public $emailanm = '';
  public $anmeldeInfoAdresse = '';
  public $content_encoding = '8bit';
  public $protocolprio = '';
  public $validierungEmailDomain = '';
  public $replyname = '';
  public $reply = '';

  protected $webadminuser = array();
  public $compat_version = '0.0.0';
  public $statistic_enabled = '';
  public $login_log_enabled = '';

  public $dmzEnabled = false;
  public $dmzServer = '';
  public $dmzPort = '';
  public $dmzProtocolHttps = false;
  public $dmzProtocolHttpsSelfSigned = false;
  
  public $dmzApiKey = '';

  public $dmzErrorEmailActive = false;
  public $dmzErrorEmailAddress = '';

  public $emailViaDmz = false;
  public $usephpmailer = false;
  public $absenderAlsReplyTo = true;
  public $phpmailerVerschluesselung = '';

  public $title = KUFERTOOLS;
  public $mandant = '';
  
  public $nurKurseDesMandanten = false;

  public $successMsgAnwesenheiten = 'Die Anwesenheiten wurden erfolgreich übermittelt. Vielen Dank!';
  public $failSubmitMsgAnwesenheiten = 'Bei der Übertragung der Anwesenheiten ist ein Fehler aufgetreten!';
  public $failDoubleSubmitMsgAnwesenheiten = 'Bei der Übertragung der Anwesenheiten ist ein Fehler aufgetreten: Doppelte Übermittlung';
  public $successMsgKursplanung = 'Ihre Korrektur für den Kurstag wurde übermittelt. Vielen Dank!';
  public $successMsgChangeKurs = 'Ihre Korrektur für den Kurs wurde übermittelt. Vielen Dank!';
  public $failSubmitMsgKursplanung = 'Bei der Übertragung ist ein Fehler aufgetreten!';
  public $failNoChangesMsgKursplanung = 'Es wurden keine Änderungen vorgenommen!';
  public $successMsgChangeBelegung = 'Ihre Korrektur für die Belegung wurde übermittelt. Vielen Dank!';
  public $failSubmitMsgBelegung = 'Bei der Übertragung der Belegungsdaten ist ein Fehler aufgetreten!';
  public $failNoChangesMsgBelegung = 'Es wurden keine Belegungsdaten verändert!';
  public $successMsgKursplanungNeu = 'Ihre Daten für die Planung eines Kurses wurden übermittelt. Vielen Dank!';
  public $failSubmitMsgKursplanungNeu = 'Bei der Übertragung ist ein Fehler aufgetreten!';
  public $failMsgKursplanungKeineEingetr = 'Es konnte kein Kurstag eingetragen werden:';
  public $failMsgKursplanungEinigeEingetr = 'Es wurden alle Kurstage eingetragen, bis auf:';
  public $failSubmitMsgNoten = 'Beim Speichern der Noten ist ein Fehler aufgetreten!';
  public $successMsgNotenSpeichern = 'Die Noten wurden erfolgreich gespeichert!';
  public $successMsgNotenEinreichen = 'Die Noten wurden erfolgreich eingereicht!';
  public $failMsgNotenKeineBelegung = 'Es sind keine Teilnehmer für diesen Kurs eingetragen!';
  public $failMsgNotenKeineFaecher = 'Es sind keine Fächer für diesen Kurs eingetragen!';
  public $emailBetreffNotenEinreichen = 'Noten zum Kurs {%k_id%} {%kurstitel%} fertig eingetragen';
  public $emailTextNotenEinreichen = 'Noten zum Kurs {%k_id%} {%kurstitel%} wurden von {%user_vorname%} {%user_name%} fertig eingetragen';
  public $emailAnNotenEinreichen = '';
  public $msgNotenHinweis = '<br><span style="font-weight: bold;">Für Teilnehmer ohne Zeugnisse: <br></span><span style="color: red; font-weight: bold;">Felder leer lassen!</span><br>';
  public $msgNotenHinweisMehrphasig = '<span style="color: red; font-weight: bold;">Kursphase muss ausgewählt werden!</span>';
  public $msgNotenBezeichnerMehrphasig = 'Kursphase';
  public $successMsgDokumente = 'Die Daten zu Ihren Dokumenten wurden erfolgreich übermittelt.';
  public $failSubmitMsgDokumente = 'Beim Speichern der Dokumente in der Datenbank ist ein Fehler aufgetreten!';
  public $successMsgDokument = 'Die Daten zu Ihrem Dokument wurden erfolgreich übermittelt.';
  public $failSubmitMsgDokument = 'Beim Übertragen der Daten Ihres Dokuments ist ein Fehler aufgetreten!';
  public $successMsgPortrait = 'Ihre Daten zum Portrait wurden erfolgreich übermittelt.';
  public $failSubmitMsgPortrait = 'Beim Speichern Ihres Portraits ist ein Fehler aufgetreten!';
  public $successMsgDozHonorar = 'Die Honorardaten des Dozenten wurden erfolgreich übermittelt.';
  public $failSubmitMsgDozHonorar = 'Beim Speichern der Honorardaten des Dozenten in der Datenbank ist ein Fehler aufgetreten!';
  public $successMsgDozentNeu = 'Ihre Dozentendaten wurden erfolgreich übermittelt. Vielen Dank!';
  public $failMsgDozentNeu = 'Beim Anlegen eines neuen Dozenten ist ein Fehler aufgetreten!';
  public $successMsgChangeDozent = 'Die Dozentendaten wurden verändert!';
  public $failMsgChangeDozent = 'Es wurden keine Dozentendaten verändert!';
  public $failSubmitMsgDozent = 'Beim Übertragen der Dozentendaten ist ein Fehler aufgetreten!';
  public $failMsgDozentAdd = 'Beim Hinzufügen eines Dozenten zum Kurs ist ein Fehler aufgetreten!';
  public $failMsgDozentNewAdd = 'Beim Hinzufügen eines neu angelegten Dozenten zum Kurs ist ein Fehler aufgetreten!';
  public $failMsgDozHonDelete = 'Beim Entfernen des Dozenten aus dem Kurs ist ein Fehler aufgetreten!';
  public $failMsgChangeAdresse = 'Es wurden keine Adressdaten verändert!';
  public $failSubmitMsgAdresse = 'Beim Übertragen der Adressdaten ist ein Fehler aufgetreten!';
  public $successMsgAdresseNeu = 'Ihre Adressdaten wurden erfolgreich übermittelt. Vielen Dank!';
  public $failMsgAdresseNeu = 'Beim Anlegen einer neuen Adresse ist ein Fehler aufgetreten!';
  public $failMsgChangeTeilnehmer = 'Es wurden keine Teilnehmerdaten verändert!';
  public $failSubmitMsgTeilnehmer = 'Beim Übertragen der Teilnehmerdaten ist ein Fehler aufgetreten!';
  public $successMsgTeilnehmerNeu = 'Ihre Teilnehmerdaten wurden erfolgreich übermittelt. Vielen Dank!';
  public $failMsgTeilnehmerNeu = 'Beim Anlegen eines neuen Teilnehmers ist ein Fehler aufgetreten!';
  public $failMsgChangeTeilnNewsletter = 'Beim Übertragen der Teilnehmerdaten zum Ändern des Newslettereintrags für folgende Teilnehmer ist ein Fehler aufgetreten:';
  public $successMsgNachlass = 'Die Daten zum Nachlass wurden erfolgreich übermittelt.';
  public $failSubmitMsgNachlass = 'Beim Speichern der Daten zum Nachlass in der Datenbank ist ein Fehler aufgetreten!';
  public $successMsgInsertVisitenkarte = 'Die neue Visitenkarte wurde erfolgreich angelegt!';
  public $successMsgUpdateVisitenkarte = 'Die Änderung der Visitenkarte wurde erfolgreich gespeichert!';
  public $successMsgDeleteVisitenkarte = 'Die Visitenkarte wurde erfolgreich gelöscht!';
  public $failNoChangesMsgVisitenkarte = 'Es wurden keine Daten der Visitenkarte geändert!';
  public $browserRefreshMsgVisitenkarte = 'Es wurden keine Daten der Visitenkarte geändert!';
  public $failSubmitMsgConflict = 'Die Daten im Web sind nicht mehr aktuell und können daher nicht bearbeitet werden. Bitte warten Sie die nächste Aktualisierung ab, oder teilen Sie Ihre Änderung einem Mitarbeiter mit Zugang zu KuferSQL mit.';
  public $failMsgAlreadySubmitted = 'Ihre Änderungen wurden bereits abgesendet und werden deshalb kein zweites Mal versendet.';
  public $headlinePosX = '';
  public $headlinePosY = '';
  public $headlineColor = '';
  public $headlineSize = '';
  public $headlineBold = false;
  public $headlineShowToolName = true;
  public $headlineToolueberschriftenWieImMenu = true;
  public $headlineShowName = true;
  public $headlineShow = true;
  public $leftMenuNotShowKontakt = false;
  public $leftMenuNotShowTippAufloesung = false;

  
  public $admintool_user = '';
  public $admintool_password = '';
  public $admintool_hashversion = '';


  public $user_id = '';
  public $replikat = '';
  public $aggregate_session_id = '0';
  public $aggregate_start_time = '0';
  
  public $buttonleite_position = BUTTONBAR_BOTTOM;
  
  
  public $fehlerMailAnEinrichtung = false;
  
  public $fehlerMailAnEmail = false;
  public $fehlerMailAnKubus = false;
  
  public $fehlerMailAdresse = '';
  
  public $fehlerMailBetreff = '';

  
  public $sightsFolderObjAry = array();

  
  public $blockLoginAnf = '';

  
  public $veranplanmail = '';

  
  public $phpmailerNoAutoTLS = false;

  
  public function __construct()
  {
    $this->id = -1;
    $this->version = static::CURRENT_VERSION;
  }

  
  public function getVersion(): int
  {
    return $this->version;
  }

  
  protected function upgrade(int $from, int $to)
  {
    $this->version = $to; 

    switch ($to) {
    case 1:
      $this->blockLoginAnf = implode(',', array_merge(explode(',', $this->blockLoginAnf), array(KURZ_MITARBEITER, KURZ_VERANSTALTER)));
      break;
    }

    return $this;
  }

  
  public function applyUpgrades()
  {
    $cmp = $this->version <=> static::CURRENT_VERSION;
    if ($cmp === 0) {
      return $this; 
    }

    if ($cmp === -1) {
      
      
      $result = $this;
      for ($i = $this->version + 1; $i <= static::CURRENT_VERSION; ++$i) {
        $result = $result->upgrade($result->version, $i);
      }

      return $result;
    }
    
    throw new \RuntimeException('Sollte nicht auftreten');
  }
}