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

  if (!defined('BASEDIR')) {
    include_once '..' . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'classes' . DIRECTORY_SEPARATOR . 'constants.php';
  }



  
  class MenuEinstellTool20 extends MenuEinstell
  {
    public $file = 'writecolumnstool20.php';

    
    protected function _getSights()
    {
      $result = array();

      $sightIds = array(
          293 => 'Kursübersicht',
          294 => 'Reiter 1. Seite',
          295 => 'Reiter Kursdetails',
          296 => 'Reiter Inhalt',
          297 => 'Reiter Termine',
          298 => 'Reiter Journal',
          300 => 'Alle meine Termine',
          303 => 'Reiter Downloads',
          304 => 'Terminplan - Drucklisten',
          335 => 'Reiter zu einem Kurs',
          358 => 'Storno/Abmeldung',
          439 => 'Belegungsdetails bearbeitbar'
          );

      foreach ($sightIds as $sightId => $description) {
        $result[] = $this->_createSightObj($sightId, \ToolsAPI::TOOL_TN, $description);
      }

      return $result;
    }

    public function mainmenu($pEinstieg, $editid, $p_sightid)
    {
      
      if ($pEinstieg == 1) {
        $this->getUebersichtEinstell(SessionOperations::getVarValueIntern('menutext'));
      } else { 

        echo"
        <table border='0' cellpadding='0' cellspacing='5' height='100%' width='100%'>
          <tr>
            <td valign='top' width='100%' height='5%'>
              <p align='right'><font id='text_basys_webtools'>" . KUFERTOOLS . '</font></p>
            </td>
          </tr>
        </table>
        ';

        $curr_caption = $this->_getSightDescription($p_sightid);

        switch ($p_sightid) {
          case 293: 

            $objsettings = ToolSettingsAPI::getToolSettings(\ToolsAPI::TOOL_TN);

            
            $arycheck = $this->getArrayCheck4Kurse($objsettings, true);


            echo '<h2>Einstellungen für Sortierung etc</h2>';
            echo $this->getStandardEinstellFormHeader(\ToolsAPI::TOOL_TN, 'uebersicht_allg', $p_sightid);
            echo "  
             <table border='0' cellpadding='0' cellspacing='0' width='100%'>
              <tr>
                <td width='85%' valign='top' height='19'>
                  <font class='text_main_menu'><b>angezeigte Kurse pro Seite:</b></font>"
                  . HTMLOperations::CreateInputTagPlusMinus('kurseproseite', '', 'bigger-null', $objsettings->kurseproseite, 'size="3"')
                  . BR_WT . BR_WT . BR_WT . '
                </td>
              </tr>';
            echo $this->getKursSortierungSubMenu($arycheck, true);

 
             if (DBWorkBASysSettings::isBlak()) {
               echo " <td valign='top' height='19'><font class='text_main_menu'><b>Schwellen für die Zertifikatsmeldung:</b>" . BR_WT . '</font>';

               
               echo "<tr><td height='19' valign='top'>
                  <font class='text_main_menu'><b></b></font>"
                . '<input type="hidden" name="blakSchwelle" id="blakSchwelle" value="' . CleanOperations::cleanInt($objsettings->blakUntereSchwelle) . '-' . CleanOperations::cleanInt($objsettings->blakObereSchwelle) . '">'
                . '<span id="blakUntereSchwelle">' . CleanOperations::cleanInt($objsettings->blakUntereSchwelle) . '</span>% - <span id="blakObereSchwelle">' . CleanOperations::cleanInt($objsettings->blakObereSchwelle) . '</span>%
                <div style="width: 500px" id="blakSchwelleSlider"></div>
                <script type="text/javascript">$(function(){$("#blakSchwelleSlider").slider({
      range: true,
      min: 0,
      max: 100,
      values: [ ' . CleanOperations::cleanInt($objsettings->blakUntereSchwelle) . ', ' . CleanOperations::cleanInt($objsettings->blakObereSchwelle) . ' ],
      slide: function( event, ui ) {
        $( "#blakSchwelle" ).val( ui.values[ 0 ] + "-" + ui.values[ 1 ] );
        $("#blakUntereSchwelle").html(ui.values[0]);
        $("#blakObereSchwelle").html(ui.values[1]);
      }
    });});
                </script>' . BR_WT . BR_WT
              . '</td></tr>';

               echo "<tr>
                <td height='19' valign='top'>
                  <font class='text_main_menu'><b>Zertifikatsmeldungen falls noch kein Zertifikat ausgestellt wurde und sich die Punktezahl zwischen den Schwellen befindet:</b>" . BR_WT;
               $namen = array(11 => 'ApothekerIn', 12 => 'PTA', 13 => 'PKA');
               for ($i = 11; $i < 14;$i++) {
                 $varName = "blak{$i}meldungOhneZertPunkte";
                 echo '<label for="' . $varName . '" style="width: 80px; float: left;">' . $namen[$i] . ':</label><textarea name="' . $varName . '" rows="3" cols="100" id="' . $varName . '">'
                  . $objsettings->{$varName} . '</textarea>' . BR_WT;
               }
               echo BR_WT . '</td>
              </tr>';
               echo "<tr><td><font class='text_main_menu'><b>Mails an Teilnehmer ("
             . '<select name="blakBerufsgruppeOhneZertifikat"><option value="11">ApothekerIn</option><option value="12">PTA</option><option value="13">PKA</option></select>'
             . ') ohne Zertifikat aber Punkten im Punktebereich</b></font>
              <input type="submit" name="mailNachPunkten" value="versenden">' . BR_WT . BR_WT . '</td>
              </tr>';
               echo  "<tr>
                <td height='19' valign='top'>
                  <font class='text_main_menu'><b>Zertifikatsmeldungen falls das Zertifikat innerhalb der nächsten beiden Monate abläuft/bereits abgelaufen ist:</b></font>" . BR_WT;
               for ($i = 11; $i < 14;$i++) {
                 $varName = "blak{$i}meldungZertAblauf";
                 echo '<label for="' . $varName . '" style="width: 80px; float: left;">' . $namen[$i] . ':</label><textarea name="' . $varName . '" rows="3" cols="100" id="' . $varName . '">'
                  . $objsettings->{$varName} . '</textarea>' . BR_WT;
               }
               echo BR_WT . '</td>
              </tr>';
               echo "<tr><td><font class='text_main_menu'><b>Mails an Teilnehmer ("
             . '<select name="blakBerufsgruppeZertifikatAblauf"><option value="11">ApothekerIn</option><option value="12">PTA</option><option value="13">PKA</option></select>'
             . ') deren Zertifikat demnächst abläuft/bereits abgelaufen ist</b></font> <input type="submit" name="mailAblaufendesZertifikat" value="versenden">' . BR_WT . BR_WT . BR_WT . '</td>
              </tr>';
               echo  "<tr>
                <td height='19' valign='top'>
                  <font class='text_main_menu'><b>Mail - Betreff:</b></font> <input id=\"blakMailBetreff\" type=\"text\" name=\"blakMailBetreff\" value=\""
                  . CleanOperations::cleanStringForHtml($objsettings->blakMailBetreff) . '">' . BR_WT;
               echo BR_WT . '</td>
              </tr>';
               echo  "<tr>
                <td height='19' valign='top'>
                  <font class='text_main_menu'><b>Mail - Inhalt:</b></font>" . BR_WT . '<textarea name="blakMailVorlage" rows="10" cols="113">'
                  . CleanOperations::cleanStringForHtml($objsettings->blakMailVorlage) . '</textarea>' . BR_WT;
               echo BR_WT . '</td>
              </tr>';
             }
 

             echo "<tr>
                <td width='85%' height='19' valign='top'>
                  <font class='text_main_menu'><b>Kurse folgender Semester anzeigen:</b> (es können auch mehrere Semester gewählt werden)</font>" . BR_WT;

            $tool0Settings = ToolSettingsAPI::getToolSettings(0);
            $preFilterKurs = $this->getPrefilters4Kurs(false, $tool0Settings, $objsettings);
            $allgPreFilterKurs = $this->getPrefilters4Kurs(true, $tool0Settings, $objsettings);
            
            echo $this->getSemester4SingleTool($objsettings->semlist, $tool0Settings->semlist, $objsettings->useAbweichendeSemester, true, $objsettings->keineAusgefallenenKurse, true, $preFilterKurs, $allgPreFilterKurs)
                . '</td>
              </tr>'
            . '<tr><td>'

             . $this->getEinschraenkungStatusTnSubMenu(\ToolsAPI::TOOL_TN, $objsettings->tnstatus, '', STATUSART_TEILNEHMER)
            . '</td></tr>'
            . '</table>'
            . "<div class=\"SpeicherButtonDiv\">
               <input type='image' title='Speichern' src='layout/button_save.gif' border='0'>
             </div>
            </form>" . BR_WT . BR_WT . BR_WT;

            $isBlakAnfrage = false;
            $statusmeldung = '';
 
            
            if (RequestOperations::getVarValue('sendMailNachPunkten') == 'absenden' || RequestOperations::getVarValue('sendMailNachAblauf') == 'absenden') {
              $isBlakAnfrage = true;
              
              $tnNummern = RequestOperations::getVarValue('tn');
              if (!empty($tnNummern)) {
                $emailAdressen = $this->_blakGetEmailAdressenByTnrs($tnNummern);
                

                $dbwteilnehm = new DBWorkTeilnehmer();
                $teilnehmer = $dbwteilnehm->getTeilnehmByIdArray($tnNummern);

                $mailSubject = RequestOperations::getVarValue('mailSubject');
                $mailtext = RequestOperations::getVarValue('mailText');

                $tnMitVersendetenMails = array();
                foreach ($teilnehmer as $tn) {
                  $ansprache = $tn->getVarValue('ansprache_default');
                  $mailThisTn = str_replace('{%t_ansprache%}', $ansprache, $mailtext);
                  Logger::logg('versende jetzt die mail an ' . $tn->vorname . ' ' . $tn->name . ' ' . $emailAdressen[$tn->id] . ': ' . $mailThisTn, 12);
                  $mailAdress = $emailAdressen[$tn->id];
                  $email = new smtpMail();
                  $email->SetVar2Value('to', $mailAdress);
                  $email->SetVar2Value('contenttype', SMTP_CONTENTTYPE_TEXT);
                  $email->SetVar2Value('doNotSplitHTMLBody', true);
                  $email->subject = $mailSubject;
                  $email->body = $mailThisTn;
                  
                  
                  if (true) { 
                    $tn->wtemailam = DateTimeOperations::getDateNow();
                    $tnMitVersendetenMails[] = $tn;
                  }
                  $statusmeldung = 'Es wurde(n) ' . count($tnMitVersendetenMails) . ' E-Mail(s) versendet.';
                }
                try {
                  $this->_blakDoMailNachbereitung($tnMitVersendetenMails);
                } catch (Exception $e) {
                  Logger::logg($e->getMessage(), 100);
                }
              }
            }
            
            if (RequestOperations::getVarValue('mailNachPunkten') != '') {
              $dbwteilnehm = new DBWorkTeilnehmer();
              $berufsgruppe = RequestOperations::getVarValue('mailNachPunkten');
              $punkteNoetig = ConstantOperations::getBlakPunkteschwelle($berufsgruppe);
              $untereSchwelle = round($punkteNoetig * (int)$objsettings->blakUntereSchwelle * 0.01);
              $obereSchwelle = round($punkteNoetig * (int)$objsettings->blakObereSchwelle * 0.01);
              $lastDate = DateTimeOperations::computeDate(DateTimeOperations::getDateNow(), '-3 years');
              $tns = $dbwteilnehm->getEmailZielBlakNachPunkten(
                $berufsgruppe,
                $lastDate,
                DateTimeOperations::computeDate(DateTimeOperations::getDateNow(), '-2 years'),
                $untereSchwelle,
                $obereSchwelle
              );
              $berufsgruppeString = $this->_blakGetBerufsgruppenString($berufsgruppe);

              $title = "Mail an $berufsgruppeString mit $untereSchwelle bis $obereSchwelle Punkten";
              $message = '';
              if (false === $tns || count($tns) == 0) {
                $message .= 'Keine Teilnehmer gefunden.';
              } else {
                
                $message .= '<form action=\\"#\\" method=\\"post\\">';
                if ($statusmeldung != '') {
                  $message .= '<p class=\\"statusmeldung\\">' . $statusmeldung . '</p>';
                }
                $message .= "<p>Hier werden die $berufsgruppeString angezeigt die<ul>"
                  . "<li>zwischen $untereSchwelle und $obereSchwelle Punkten haben</li>"
                  . '<li>das letzte Zertifikat vor mindestens 3 Jahren erhalten haben</li>'
                  . '<li>innerhalb der letzten 2 Jahre keine Erinnerungsmail erhalten haben</li>'
                  
                  . '</ul></p>';
                $emailAdressen = $this->_blakGetEmailAdressen($tns);
                $message .= '<ol class=\\"tnEmailList\\">';
                foreach ($tns as $tn) {
                  $checked = (isset($emailAdressen[$tn['nr']]) && $emailAdressen[$tn['nr']] != '') ? ' checked' : '';
                  $message .= '<li><input name=\\"tn[]\\" type=\\"checkbox\\" value=\\"' . CleanOperations::cleanInt($tn['nr']) . '\\"' . $checked . '>';
                  $message .= ' <strong>' . CleanOperations::cleanStringForHtml($tn['name']) . ', ' . CleanOperations::cleanStringForHtml($tn['vorname']) . '</strong> - ' . CleanOperations::cleanInt($tn['punkte']) . ' Punkte';
                  if ($tn['letztesZertifikat'] != '') {
                    $message .= ', letztes Zertifikat am ' . CleanOperations::cleanStringForHtml($tn['letztesZertifikat']);
                  }
                  $message .= BR_WT . '<span class=\\"mail\\">Mail: ' . CleanOperations::cleanStringForHtml($emailAdressen[$tn['nr']]) . '</span>';
                  $message .= '</li>';
                }
                $message .= '</ol><label for=\\"mailSubject\\">Betreff für die E-Mail: </label>'
                    . '<input type=\\"text\\" id=\\"mailSubject\\" name=\\"mailSubject\\" value=\\"' . CleanOperations::cleanStringForHtml($objsettings->blakMailBetreff) 
                    . '\\">' . BR_WT;
                $message .= '<label for=\\"mailText\\">Text für die E-Mail:</label>';
                $message .= '<textarea id=\\"mailText\\" name=\\"mailText\\" cols=\\"80\\" rows=\\"10\\">';
                $msgName = "blak{$berufsgruppe}meldungOhneZertPunkte";
                if ($objsettings->blakMailVorlage) {
                  $vorlage = str_replace('{%meldung%}', $objsettings->{$msgName}, $objsettings->blakMailVorlage);
                  $vorlage = str_replace("\r\n", '\\n', $vorlage);
                  $message .= $vorlage;
                } else {
                  $message .= $objsettings->{$msgName};
                }

                $message .= '</textarea>';
                $message .= '<input type=\\"submit\\" name=\\"sendMailNachPunkten\\" value=\\"absenden\\">';
                $message .= '</form>';
              }
              $buttons = '{ "Abbrechen": function() {  $(this).dialog("close"); } }';
              echo '<script type="text/javascript">jQuery(function() {showMessage("<div id=\\"blakMailDialog\\">' . CleanOperations::cleanStringForJs($message) . '</div>","'
                    . CleanOperations::cleanStringForJs($title) . '", ' . $buttons . ', 700);});</script>';
              echo "\n";
            }
            if (RequestOperations::getVarValue('mailAblaufendesZertifikat') != '') {
              $dbwteilnehm = new DBWorkTeilnehmer();
              $berufsgruppe = RequestOperations::getVarValue('mailAblaufendesZertifikat');
              $tmpDat = DateTimeOperations::computeDate(DateTimeOperations::getDateNow(), '-3 years');
              $letztesZertifikatDatum = DateTimeOperations::computeDate($tmpDat, '+2 months');
              $tns = $dbwteilnehm->getEmailZielBlakNachAblauf(
                $berufsgruppe,
                $letztesZertifikatDatum,
                DateTimeOperations::computeDate(DateTimeOperations::getDateNow(), '-2 years')
              );
              $berufsgruppeString = $this->_blakGetBerufsgruppenString($berufsgruppe);

              $title = "Mail an $berufsgruppeString ohne/mit bald ablaufendem Zertifikat";
              $message = '';
              if (false === $tns || count($tns) == 0) {
                $message .= 'Keine Teilnehmer gefunden.';
              } else {
                
                $message .= '<form action=\\"#\\" method=\\"post\\">';
                if ($statusmeldung != '') {
                  $message .= '<p class=\\"statusmeldung\\">' . $statusmeldung . '</p>';
                }
                $message .= "<p>Hier werden die $berufsgruppeString angezeigt die<ul>"
                  . '<li>deren Zertifikat in spätestens 2 Monaten ausläuft oder die noch kein Zertifikat erhalten haben</li>'
                  . '<li>innerhalb der letzten 2 Jahre keine Erinnerungsmail erhalten haben</li>'
                  . '<li>eine E-Mail Adresse hinterlegt haben</li>'
                  . '</ul></p>';
                $emailAdressen = $this->_blakGetEmailAdressen($tns);
                $message .= '<ol class=\\"tnEmailList\\">';
                foreach ($tns as $tn) {
                  if (isset($emailAdressen[$tn['nr']])) {
                    $checked = ($emailAdressen[$tn['nr']] != '') ? ' checked' : '';
                    $message .= '<li><input name=\\"tn[]\\" type=\\"checkbox\\" value=\\"' . CleanOperations::cleanInt($tn['nr']) . '\\"' . $checked . '>';
                    $message .= ' <strong>' . CleanOperations::cleanStringForHtml($tn['name']) . ', ' . CleanOperations::cleanStringForHtml($tn['vorname']) . '</strong>';
                    if ($tn['letztesZertifikat'] != '') {
                      $message .= ', letztes Zertifikat am ' . CleanOperations::cleanStringForHtml($tn['letztesZertifikat']);
                    }
                    $message .= BR_WT . '<span class=\\"mail\\">Mail: ' . CleanOperations::cleanStringForHtml($emailAdressen[$tn['nr']]) . '</span>';
                    $message .= '</li>';
                  }
                }
                $message .= '</ol><label for=\\"mailSubject\\">Betreff für die E-Mail: </label>'
                    . '<input type=\\"text\\" id=\\"mailSubject\\" name=\\"mailSubject\\" value=\\"' . CleanOperations::cleanStringForHtml($objsettings->blakMailBetreff) 
                    . '\\">' . BR_WT;
                $message .= '<label for=\\"mailText\\">Text für die E-Mail:</label>';
                $message .= '<textarea id=\\"mailText\\" name=\\"mailText\\" cols=\\"80\\" rows=\\"10\\">';
                $msgName = "blak{$berufsgruppe}meldungZertAblauf";
                if ($objsettings->blakMailVorlage) {
                  $vorlage = str_replace('{%meldung%}', $objsettings->{$msgName}, $objsettings->blakMailVorlage);
                  $vorlage = str_replace("\r\n", '\\n', $vorlage);
                  $message .= $vorlage;
                } else {
                  $message .= $objsettings->{$msgName};
                }
                $message .= '</textarea>';
                $message .= '<input type=\\"submit\\" name=\\"sendMailNachAblauf\\" value=\\"absenden\\">';
                $message .= '</form>';
              }
              $buttons = '{ "Abbrechen": function() {  $(this).dialog("close"); } }';
              echo '<script type="text/javascript">jQuery(function() {showMessage("<div id=\\"blakMailDialog\\">' . CleanOperations::cleanStringForJs($message) . '</div>","'
                    . CleanOperations::cleanStringForJs($title) . '", ' . $buttons . ', 700);});</script>';
              echo "\n";
            }


            echo '<h2>Einstellungen für die Anzeige der Kurse</h2>';

            $this->_configureSight($p_sightid, new SightConfiguratorUebersicht($p_sightid, 795, 80), $isBlakAnfrage);

            break;

          case 294: 

            echo '<h2>Einstellungen für die Anzeige der Anmeldedetails</h2>';

            $this->_configureSight($p_sightid, new SightConfiguratorUebersicht($p_sightid, 775, 380));
            break;

          case 295: 
            echo '<h2>Einstellungen für die Anzeige der Kursdetails</h2>';

            $this->_configureSight($p_sightid, new SightConfiguratorUebersicht($p_sightid, 775, 380));
            break;
          case 296: 
            echo $this->getSettings4ReiterInhalt(\ToolsAPI::TOOL_TN, $p_sightid);
            break;
          case 297: 
            $objsettings = ToolSettingsAPI::getToolSettings(\ToolsAPI::TOOL_TN);
            $this->mainmenuTop($curr_caption, \ToolsAPI::TOOL_TN, $p_sightid, $this->file);
            $this->mainmenuCenter(\ToolsAPI::TOOL_TN, $editid, $p_sightid, $this->file);

            $settingsTable = BR_WT;
            $settingsTable .= $this->_getSettingsTableStart(\ToolsAPI::TOOL_TN, 'smsformular', $p_sightid);

            $settingsTable .= $this->_einstellungVersteckeKurseWieInRaumanzeige($objsettings->versteckeKurstageWieImRaumanzeigeprogramm);
            $settingsTable .= $this->_getSettingsTableRow('(Gilt auch für den ICS-Kalender und "Alle meine Termine")');

            $settingsTable .= $this->_getSettingsTableRow(BR_WT . '<h2>Einstellungen für Anzeige des SMS Formulars</h2>');
            $settingsTable .= $this->_einstellungSMSBetreffAnzeigen($objsettings->showSmsBetreff);

            $settingsTable .= $this->_getSettingsTableEnd();
            echo $settingsTable;
            break;
          case 298: 
            $this->mainmenuTop($curr_caption, \ToolsAPI::TOOL_TN, $p_sightid, $this->file); 
            $this->mainmenuCenter(\ToolsAPI::TOOL_TN, $editid, $p_sightid, $this->file);     
            break;

          case 300: 
            $objsettings = ToolSettingsAPI::getToolSettings(\ToolsAPI::TOOL_TN);
            echo '<h2>Einstellungen für Anzahl angezeigter Kurstage</h2>';
            echo $this->getStandardEinstellFormHeader(\ToolsAPI::TOOL_TN, 'uebersicht_alletermine', $p_sightid);
            echo "
             <table border='0' cellpadding='0' cellspacing='0' width='100%'>
              <tr>
                <td valign='top' height='19'>
                  <font class='text_main_menu'><b>angezeigte Kurstage pro Seite:</b></font>"
                   . HTMLOperations::CreateInputTagPlusMinus('kurstageproseite', '', 'bigger-null', $objsettings->kurstageproseite, 'size="3"') . '
                </td>
              </tr>'
                . $this->_getEmptySettingsTableRow()
                . $this->_einstellungVersteckeKurseWieInRaumanzeige($objsettings->versteckeKurstageWieImRaumanzeigeprogramm)
                . $this->_getSettingsTableRow('(Gilt auch für den Reiter Termine und den ICS-Kalender)')
              . '</table>'
              . "<table border='0' cellpadding='0' cellspacing='0' width='100%'>
              <tr><td>"
              . $this->getEinschraenkungStatusTnSubMenu(\ToolsAPI::TOOL_TN, $objsettings->tnStatusTermine, 'ATP', STATUSART_TEILNEHMER, true)
              . '</td></tr>'
              . '<tr><td>' . BR_WT . "
              <input type='image' title='Speichern' src='layout/button_save.gif' border='0'>
              </td></tr>
             </table>
            </form>" . BR_WT;
            echo '<h2>Einstellungen für die Anzeige der Kurstage</h2>';

            $this->_configureSight($p_sightid, new SightConfiguratorUebersicht($p_sightid, 790, 100));
            break;

          case 303: 
            echo '<h2>Einstellungen für die Anzeige der Downloads</h2>' . BR_WT;

            $this->_configureSight($p_sightid, new SightConfiguratorUebersicht($p_sightid, 750, 100));
            break;

          case 304: 
            $drucklisten = new TeilnehmerDruckListen('hleinstell.php?sightid=' . $p_sightid . '&tool=' . \ToolsAPI::TOOL_TN, \ToolsAPI::TOOL_TN, $p_sightid, true);
            $drucklisten->show();
            break;

          case 335: 
            $objsettings = ToolSettingsAPI::getToolSettings(\ToolsAPI::TOOL_TN);
            echo $this->getSettings4ReiterSeite(\ToolsAPI::TOOL_TN, $p_sightid, 'reiter_seite', $objsettings->reiterBeschriftung, '', null, true, true);
            break;

          case 358: 
            $objsettings = ToolSettingsAPI::getToolSettings(\ToolsAPI::TOOL_TN);
            echo '<h2>Einstellungen für Storno/Abmeldung</h2>';
            echo '<p>'
            . '<strong>Die Funktion Abmelden/Stornieren:</strong>' . BR_WT
            . 'Falls der Teilnehmer bei diesem Kurs bereits storniert ist (Status S oder Z), '
            . 'gibt es keine Möglichkeit zur Stornierung.' . BR_WT
            . 'Nach dem Klick auf den entsprechenden Knopf erscheint bei Firmenanmeldungen eine Meldung, '
            . 'dass nur über die Firma abgemeldet werden kann, ansonsten ein Formular, in das der Teilnehmer '
            . 'seinen Grund für die Abmeldung eintragen kann. ' . BR_WT
            . 'Nachdem er auf Abmelden/Stornieren klickt wird:' . BR_WT
            . '- im Replikat-Betrieb: eine E-Mail an den verwaltenden Mitarbeiter des Kurses bzw. die Einrichtung ausgelöst, '
            . 'in der Teilnehmer, Kurs und Abmeldegrund sowie Versanddatum vermerkt sind. Anschließend gelangt der Teilnehmer '
            . 'auf eine Seite, auf der ihm der Versand der E-Mail bestätigt wird und ihm mitgeteilt wird, dass die Einrichtung '
            . 'die Abmeldung noch bestätigen muss.' . BR_WT
            . '- im Direkt- oder DMZ-Betrieb: falls eine einfache Stornierung möglich ist, wird diese durchgeführt, und es '
            . 'werden <strong>keine Stornogebühren</strong> erhoben. Als Bearbeiterkürzel wird \'WT\' oder das unter '
            . 'Allgemein/Schulungseinrichtung/"Bearbeiterkürzel für Änderungen aus den KuferTools" hinterlegte Kürzel verwendet. '
            . 'Zudem wird eine E-Mail an den ersten Teilnehmer in der Warteliste des Kurses gesendet. '
            . 'Ist dieser Teil einer Firmenanmeldung, so wird die E-Mail nicht an den Teilnehmer, '
            . 'sondern an seine Firma versendet. Ansonsten wird, wie im Replikatfall, eine E-Mail an die Einrichtung ausgelöst, '
            . 'in der zusätzlich zu den oben beschriebenen Informationen auch die Gründe aufgeführt sind, warum ein Storno nicht möglich war.' . BR_WT . BR_WT
            . 'Mögliche Gründe sind:' . BR_WT
            . '- der Teilnehmer ist nicht mit Status angemeldet im Kurs' . BR_WT
            . '- der Kurs hat bereits begonnen' . BR_WT
            . '- der Anmeldeschluss des Kurses ist bereits erreicht' . BR_WT
            . '- bei der Abmeldung des Teilnehmers wird die minimale Teilnehmerzahl unterschritten' . BR_WT
            . '- es sind bereits Zahlungen durch den Teilnehmer erfolgt' . BR_WT
            . '- Der Teilnehmer ist an einer Mehrfachanmeldung zu diesem Kurs beteiligt' . BR_WT
            . '- Zu diesem Teilnehmer sind Kinder angemeldet' . BR_WT . BR_WT
            . 'Sobald bereits Zahlungen durch den Teilnehmer getätigt wurden, ist keine einfache Stornierung möglich.' . BR_WT
            . 'Falls aus technischen Gründen kein E-Mail-Versand möglich ist, kommt der Teilnehmer wieder auf die Seite mit dem Formular, '
            . 'diesmal aber mit einem entsprechenden Hinweis.' . BR_WT . BR_WT . '</p>';

            echo $this->getStandardEinstellFormHeader(\ToolsAPI::TOOL_TN, 'storno', $p_sightid);
            echo '
             <table border="0" cellpadding="0" cellspacing="0">';

            $vhsEmailTool = EmailOperations::getVarName4ToolEmailSetting(\ToolsAPI::TOOL_TN, $p_sightid);

            echo $this->getStornoSettings(
              $vhsEmailTool,
              $objsettings->{$vhsEmailTool},
              $objsettings->stornoBenachrichtigungsMailAnVerwMa == true,
              $objsettings->stornoImmerBenachrichtigungsMail == true,
              $objsettings->stornoHideEingabeFeldStornoGrund == true,
              $objsettings->stornoWartelistenBenachrichtigungText
            );
            echo
              '<tr>
                <td>                  
                  ' . BR_WT . '
                  <input type="image" title="Speichern" src="layout/button_save.gif" border="0">
                </td>
              </tr>
             </table>
            </form>' . BR_WT;
            break;
          case 439:
            $objsettings = ToolSettingsAPI::getToolSettings(\ToolsAPI::TOOL_TN);
            echo '<h2>Einstellungen für die Anzeige der bearbeitbaren Belegungsdetails</h2>' . BR_WT;

            $checkedEMail = $objsettings->belegInfo_InformiereTnPerEMail ? 'checked="checked"' : '';
            $checkedTelefonTodoListe = $objsettings->belegInfo_InformiereEinrichtungPerTelefonTodoListe ? 'checked="checked"' : '';

            echo $this->getStandardEinstellFormHeader(\ToolsAPI::TOOL_TN, 'belegung_bearbeitbar', $p_sightid);
            echo "
             <table border='0' cellpadding='0' cellspacing='0' width='100%'>
              <tr>
                <td width='460px' valign='top' height='19'>
                  <label for='belegInfo_InformiereTnPerEMail' class='text_main_menu'><b>Bei Änderungen eine Bestätigungs-E-Mail an den Teilnehmer versenden</b></label>
                </td>
                <td>
                  <input type='checkbox' id='belegInfo_InformiereTnPerEMail' name='belegInfo_InformiereTnPerEMail' " . $checkedEMail . ">
                </td>
              </tr>
              <tr>
                <td width='460px' valign='top' height='19'>
                  <label for='belegInfo_InformiereEinrichtungPerTelefonTodoListe' class='text_main_menu'><b>Bei Änderungen einen Eintrag in die Telefon-Todo-Liste erzeugen (Nur im Direkt- und DMZ-Betrieb möglich)</b></label>
                </td>
                <td>
                  <input type='checkbox' id='belegInfo_InformiereEinrichtungPerTelefonTodoListe' name='belegInfo_InformiereEinrichtungPerTelefonTodoListe' " . $checkedTelefonTodoListe . '>
                </td>
              </tr>
              <tr>
                <td>                  
                  ' . BR_WT . "
                  <input type='image' title='Speichern' src='layout/button_save.gif' border='0'>
                </td>
              </tr>
             </table>
            </form>" . BR_WT;

            $this->_configureSight($p_sightid, new SightConfiguratorUebersicht($p_sightid, 750, 340));
            break;
        }
      }
    }

    private function _blakGetBerufsgruppenString($pBerufsgruppe)
    {
      if ($pBerufsgruppe == 11) {
        return 'ApothekerInnen';
      } elseif ($pBerufsgruppe == 12) {
        return 'PTA';
      } elseif ($pBerufsgruppe == 13) {
        return 'PKA';
      } else {
        return 'nicht definiert';
      }
    }

    
    private function _blakGetEmailAdressen($pTeilnehmer)
    {
      $tnNummern = array();
      foreach ($pTeilnehmer as $tn) {
        $tnNummern[] = $tn['nr'];
      }

      return $this->_blakGetEmailAdressenByTnrs($tnNummern);
    }

    
    private function _blakGetEmailAdressenByTnrs($pTeilnehmerNummern)
    {
      $dbwkomm = new DBWorkKommunikation();
      $dbwkomm->allkom = true;

      return $dbwkomm->getEmailAdressenForTeilnehmer($pTeilnehmerNummern);
    }

    private function _blakDoMailNachbereitung($pTnMitVersendetenMails)
    {
      
      $allgsettings = AllgSettingsAPI::getAllgSettings();

      $dmz = false;
      
      if (SessionOperations::isReplikat() && $allgsettings->dmzEnabled) {
        WtMeldungAPI::sendTnMeldung($pTnMitVersendetenMails);
        $dmz = true;
      }

      
      $dbwteilnehm = new DBWorkTeilnehmer();
      foreach ($pTnMitVersendetenMails as $tn) {
        
        
        $dbwteilnehm->updateTeilnehmer($tn, $dmz);
      }
    }
  }