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


class DataMenuKurse extends DataMenuMain
{
  
  public $dbwkurse;
  
  public $settings;
  public $dbwtools;

  
  public function sortierungWieFuerKurssuche($pGewaehlteSortierung)
  {
    $sortierung = $pGewaehlteSortierung;
    if ($sortierung == '' || $sortierung == 0) {
      $sortierung = null;
    }

    return $sortierung;
  }

  public function __construct($urlparamter)
  {
    parent::__construct($urlparamter);
    
    $urlparam = new URLParameterNavigation();

    
    $this->dbwkurse = new DBWorkKurseINetAktivFilterMinimal();

    $myExtractor = new Kufer\Web\Classes\Api\SearchRestriction\SearchInfoExtractor();
    $myExtractor->setIdField('nr');
    $interestingFields = array('beginn', 'beginn_dat', 'ende_dat', 'ort', 'dozent', 'neuerkurs', 'aussenst', 'kart_key', 'kzielg_key', 'mandant');
    for ($i = 0; $i < 17; $i++) {
      if ($i !== 10) {
        $interestingFields[] = 'kursauswahl' . $i;
      }
    }
    $myExtractor->setInterestingFields($interestingFields);

    $this->dbwkurse->setSearchInfoExtractor($myExtractor);


    
    $this->exportadapter = new ExpKurse();
    $this->exportadapter->setSightInfo('suchinfo', $myExtractor);
    
    $this->settings = ToolSettingsAPI::getToolSettings(4);

    $defaultOrderby = $this->getDefaultOrderBy();
    $defaultOrderbyASC = $this->getDefaultOderbyAsc();

    $orderby = $this->sortierungWieFuerKurssuche($defaultOrderby);

    $this->dbwkurse->setOrderByValues($urlparam, $orderby, is_null($orderby) ? null : $defaultOrderbyASC);

    
    $this->_getClickPath();

    if (RequestOperations::isPost()) {
      header_remove('Cache-Control');
    }
  }

  protected function getDefaultOrderBy()
  {
    return ($this->urlparameter->kathaupt == 1) ? $this->settings->sortkursekat : $this->settings->sortkurseskat;
  }

  protected function getDefaultOderbyAsc()
  {
    return ($this->urlparameter->kathaupt == 1) ? $this->settings->sortkursekatasc : $this->settings->sortkurseskatasc;
  }

  
  public function prepareMainmenu($pZeitBereich = 'noRestrict')
  {
    $this->getsight();
    
    $this->getSeitenwahl();
    $this->getdataarrayheader();
    $this->getdataarraybody($pZeitBereich);
    
    
    if ($this->nrOfMainBodyElements == -1) {
      $this->nrOfMainBodyElements = $this->getAnzahlBodyElements();
    }
    $this->blaetternAry = $this->getBlaettern();

    
    
    $this->setParams4Seitenwahl();
    $this->getdataarrayfooter();
    $this->getdataarraynodata();
    $this->getdataarraynocolumn();
    $this->setStatusMeldung();
  }

  

  public function getsight($sightid = 12)
  {
    parent::getsight($sightid);
  }

  
  public function getdataarraybody($pZeitBereich = 'noRestrict')
  {
    $this->setKursSearch();
    
    $katid = $this->addfstring->getfilledStr($this->urlparameter->katid, '0');

    if (is_numeric($katid) && $katid > 0) {
      StatistikAPI::writeKategorieAufrufOnlyDiff(new StatistikParameter('kategorieid', $katid));
    }

    $param = new URLParameterFilter();
    if ($param->clearAllKatfilter()) {
      SessionOperations::resetKursKategorieRestrictions();
    }

    
    $ort = RequestOperations::getVarValue('kfs_ort_select_only', '-1');
    if ($ort != '-1') {
      $this->dbwkurse->fromobject->ort = $ort;
    }
    if (($suchort = RequestOperations::getVarValue('kfs_ortplz', '-1')) != '-1') {
      $this->dbwkurse->fromobject->suche_ortPlz = explode(',', $suchort);
    }

    SessionOperations::applyKursKategorieRestrictions($this->dbwkurse->fromobject, $this->dbwkurse->toobject);

    
    

    $aktDate = DateTimeOperations::getDateNow();
    if ($pZeitBereich == 'vonHeute') {
      
      $this->dbwkurse->fromobject->beginn_dat = DateTimeOperations::max($this->dbwkurse->fromobject->beginn_dat, $aktDate);
    } elseif ($pZeitBereich == 'bisHeute') {
      
      $this->dbwkurse->toobject->beginn_dat = DateTimeOperations::getDateDaysBefore($aktDate, 1);
    } else {
      
    }

    $this->getdataarraybodyBeforeDbHook();

    $kursids = $this->dbwkurse->getKursebyCategoryLimit(
      $katid,
      WBKursStore::getKurs($this->urlparameter->knr),
      $this->getAnzahlKurseProSeite(),
      ($this->addfstring->getfilledStr($this->urlparameter->browse, 'forward') == 'forward')
    );


    $this->dataarraybody = WBKursStore::getKurseByIdArray($kursids);
  }

  

  protected function getdataarraybodyBeforeDbHook()
  {
  }

  protected function getAnzahlKurseProSeite()
  {
    if (is_numeric($this->urlparameter->kurseproseite) && $this->urlparameter->kurseproseite > 0) {
      $kurseproseite = $this->urlparameter->kurseproseite;
      if ($kurseproseite > $this->settings->kurseproseite) {
        $kurseproseite = $this->settings->kurseproseite;
      }
      if ($kurseproseite == '') {
        $kurseproseite = 10;
      }

      return $kurseproseite;
    }

    return $this->settings->kurseproseite;
  }

  public function showfooter()
  {
    DataMenu::showfooter(); 
    
    
    $settings = ToolSettingsAPI::getToolSettings(4);
    
    if ($settings->checkBlaetternExportVar != '1') {
      $this->showBlaettern();
    }
    echo " </div>\n\n";
  }

  
  public function mainmenu()
  {
    
    $zeitBereich = 'noRestrict';

    if (RequestOperations::isDefined('begonneneKurse') && RequestOperations::getVarValue('begonneneKurse') != 'all') {
      $begonneneKurse = RequestOperations::getVarValue('begonneneKurse');
      
      
      $this->setExportSightInfo('isBegonneneKurse', $begonneneKurse);
      if ($begonneneKurse == 1) {
        $zeitBereich = 'bisHeute';
      } else { 
        $zeitBereich = 'vonHeute';
      }
    } else {
      $this->setExportSightInfo('isBegonneneKurse', '');
    }

    $this->prepareMainmenu($zeitBereich);
    if ($this->toolsettings->showClickpfad) {
      
      echo $this->getClickPath();
    }
    $this->openTagHauptseite();
    $this->statusmenu();
    echo $this->getContentAnker();
    
    if (count($this->dataarraybody) > 0) {
      
      $this->handleAusgabeMitKurse();
    }
    
    else {
      $this->handleAusgabeOhneKurse();
    }
    $this->closingTagHauptseite();
  }

  protected function openTagHauptseite()
  {
    echo "<div class='hauptseite'>\n";
  }

  protected function closingTagHauptseite()
  {
    echo '</div>';
  }

  protected function handleAusgabeMitKurse()
  {
    $this->handleDescription();
    $this->showheader();
    $this->showbody();
    $this->showfooter();
  }

  
  protected function handleDescription()
  {
    if ($this->toolsettings->showCatDescOnKursOverview && ($this->urlparameter->kathaupt == 1 || $this->urlparameter->kathaupt == 2)) {
      $this->_showCategoryDescription();
    }
  }

  
  protected function handleAusgabeOhneKurse()
  {
    $kathaupt = $this->urlparameter->kathaupt;
    if ($kathaupt == 3) {
      $this->demnaechstmenu();
    } elseif ($kathaupt < 3 || $kathaupt > 199) {
      if ($kathaupt == 216) {
        $this->shownodata();
      } elseif (!isset($this->urlparameter->suchesetzen) || $this->urlparameter->suchesetzen != 'true') {
        
        if ($this->settings->katuebersichtNRWStyle) {
          $this->menukategorie3();
        } elseif (!$this->toolsettings->katuebersichtAusSicht) {
          $this->menukategorie();
        } else {
          $this->menukategorie2();
        }
      } 
    } 
    if (!NO_CLEAR_BEFORE_HAUPTSEITE_KURSE) {
      echo "<div style='clear:left;'></div>";
    }
    
    if ($this->urlparameter->kathaupt < 3) {
      $this->shownodata();
    } else {
      $this->shownocolumn();
    }
  }

  

  
  public function setKursSearch()
  {
    
    
    if (SessionOperations::getVarValueSuche('kfs_suchegesetzt') == 'true') {
      $this->dbwkurse->fromobject = SessionOperations::getKurssearchFromObject(true);
      $this->dbwkurse->toobject = SessionOperations::getKurssearchToObject(true);
      
      
      $this->urlparameter->katid = '-1';
    } else {
      $this->dbwkurse->fromobject = SessionOperations::getKurssearchFromObject(false);
      $this->dbwkurse->toobject = SessionOperations::getKurssearchToObject(false);
    }

    $this->dbwkurse->beruecksichtigeKurstagRaumanzeige = $this->toolsettings->versteckeKurstageWieImRaumanzeigeprogramm;

    
    
    

    $param = new URLParameterNavigation();
    if (($this->urlparameter->kathaupt == 3) && ($this->urlparameter->von != '')) {
      $this->dbwkurse->fromobject->beginn_dat = $this->urlparameter->von;
      $this->dbwkurse->toobject->beginn_dat = $this->urlparameter->bis;
      $this->urlparameter->katid = '-1';
    } else {
      if (!empty($param->von)) {
        $this->dbwkurse->fromobject->beginn_dat = $param->von;
      }
      if (!empty($param->bis)) {
        $this->dbwkurse->toobject->beginn_dat = $param->bis;
      }
    }

    
    if ($param->kategorie > 0) {
      if ($this->urlparameter->kathaupt == 1) {
        $this->dbwkurse->fromobject->sonderkategorie = array($param->kategorie);
      } else {
        $this->dbwkurse->fromobject->kategorie = array($param->kategorie);
      }
    }

    if ($this->settings->stichwortFindetDozent) {
      $this->dbwkurse->fromobject->stichwortFindetDoz = true;
    }

    if ($this->settings->stichwortFindetDozentenInfo) {
      $this->dbwkurse->fromobject->suche_dozinfo = true;
    }

    if ($this->settings->stichwortFindetKategorienbezeichnung) {
      $this->dbwkurse->fromobject->stichwortFindetKategorienbezeichnung = true;
    }
  }

  

  
  public function setStatusMeldung()
  {
    
    $tmptext = '';
    $toolsettings = ToolSettingsAPI::getToolSettings(4);
    if (SessionOperations::getVarValueSuche('kfs_suchegesetzt') == 'true') {
      
      
      if (!isset($this->addfdatetime)) {
        $this->addfdatetime = new DateTimeOperations();
      }
      
      if (SessionOperations::getVarValueSuche('kfs_stichwort') != '') {
        $tmptext .= ', Stichwort "' . SessionOperations::getVarValueSuche('kfs_stichwort') . '"';
      }
      if (SessionOperations::getVarValueSuche('kfs_titel') != '') {
        $tmptext .= ', Titel "' . SessionOperations::getVarValueSuche('kfs_titel') . '"';
      }
      
      if (SessionOperations::getVarValueSuche('kfs_dozentname') != '') {
        $tmptext .= ', DozentIn Name "' . SessionOperations::getVarValueSuche('kfs_dozentname') . '"';
      }
      if (SessionOperations::getVarValueSuche('kfs_dozentnamevorname') != '') {
        $tmptext .= ', DozentIn "' . SessionOperations::getVarValueSuche('kfs_dozentnamevorname') . '"';
      }
      if (((SessionOperations::getVarValueSuche('kfs_dozentname') != '') || ($toolsettings->kfsNachDozentVorname == 1)) && (SessionOperations::getVarValueSuche('kfs_dozentvorname') != '')) {
        $tmptext .= ', Dozent Vorname "' . SessionOperations::getVarValueSuche('kfs_dozentvorname') . '"';
      }
      if ((SessionOperations::getVarValueSuche('kfs_dozentid') != '')) {
        $dbwdoz = new DBWorkDozentenWB();
        $doz = $dbwdoz->getDozent(SessionOperations::getVarValueSuche('kfs_dozentid'));

        $titelvor = '';
        $titelnach = '';
        if ($doz->name_titel != '') {
          $dbwtitel = DBWorkTitel::getDefaultInstance();
          $titelvor = $dbwtitel->getTitle4Doz($doz->name_titel, true);
          if ($titelvor != '') {
            $titelvor .= ' ';
          }
          $titelnach = $dbwtitel->getTitle4Doz($doz->name_titel, false);
        }
        $tmptext .= ', Dozent "' . $titelvor . $doz->vorname . ' ' . $doz->name . $titelnach . '"';
      }
      if (SessionOperations::getVarValueSuche('kfs_aussenst') != '') {
        $asName = 'Außenstelle';
        if (DBWorkBASysSettings::isSchleswigFbs() || DBWorkBASysSettings::isFrankfurtEvFbs()) {
          $asName = 'Standort';
        }
        if (DBWorkBASysSettings::isHersbruckVHS()) {
          $asName = 'Mitgliedsgemeinde';
        }
        if (DBWorkBASysSettings::isMuenchenFabi()) {
          $asName = 'Zweigstelle';
        }
        if (DBWorkBASysSettings::isCrailsheimKVHS()) {
          $asName = '';
        }
        if (is_array(SessionOperations::getVarValueSuche('kfs_aussenst'))) {
          $tmptext .= ', ' . $asName . ' "' . implode('", "', SessionOperations::getVarValueSuche('kfs_aussenst')) . '"';
        } else {
          $tmptext .= ', ' . $asName . ' "' . SessionOperations::getVarValueSuche('kfs_aussenst') . '"';
        }
      }
      if (SessionOperations::getVarValueSuche('kfs_aussenstort') != '') {
        $asName = 'Außenstellenstadt';
        $tmptext .= ', ' . $asName . ' "' . implode('", "', SessionOperations::getVarValueSuche('kfs_aussenstort')) . '"';
      }
      if (SessionOperations::getVarValueSuche('kfs_ort') != '') {
        if (is_array(SessionOperations::getVarValueSuche('kfs_ort'))) {
          $tmptext .= ', Ort "' . implode('", "', SessionOperations::getVarValueSuche('kfs_ort')) . '"';
        } else {
          $tmptext .= ', Ort "' . SessionOperations::getVarValueSuche('kfs_ort') . '"';
        }
      }
      if (SessionOperations::getVarValueSuche('kfs_bezirk') != '') {
        $name = 'Bezirk';
        $tmptext .= ', ' . $name . ' "' . implode('", "', SessionOperations::getVarValueSuche('kfs_bezirk')) . '"';
      }
      if (SessionOperations::getVarValueSuche('kfs_webinar') != '') {
        $selected = SessionOperations::getVarValueSuche('kfs_webinar');
        $relevantWebinarTypes = array_filter(\Kurs2::getAllWebinarTypen(), function($item) use ($selected) {
          return in_array($item->id, $selected);
        });
        $list = array_reduce($relevantWebinarTypes, function($carry, $item) {
          return "$carry, '{$item->text}'";
        }, '');
        $tmptext .= ', Kurs-Art: ' . ltrim($list, ', ');
      }
      if (SessionOperations::getVarValueSuche('kfs_kirchengemeinde') != '') {
        if (is_array(SessionOperations::getVarValueSuche('kfs_kirchengemeinde'))) {
          $tmptext .= ', Kirchengemeinde "' . implode('", "', SessionOperations::getVarValueSuche('kfs_kirchengemeinde')) . '"';
        } else {
          $tmptext .= ', Kirchengemeinde "' . SessionOperations::getVarValueSuche('kfs_kirchengemeinde') . '"';
        }
      }
      if (SessionOperations::getVarValueSuche('kfs_typ') != '') {
        if (is_array(SessionOperations::getVarValueSuche('kfs_typ'))) {
          $tmptext .= ', Kurstyp "' . implode('", "', SessionOperations::getVarValueSuche('kfs_typ')) . '"';
        } else {
          $tmptext .= ', Kurstyp "' . SessionOperations::getVarValueSuche('kfs_typ') . '"';
        }
      }
      if (SessionOperations::getVarValueSuche('kfs_schlagwort') != '' && SessionOperations::getVarValueSuche('kfs_schlagwort') != SessionOperations::getVarValueSuche('kfs_stichwort')) {
        $tmptext .= ', Schlagwort "' . SessionOperations::getVarValueSuche('kfs_schlagwort') . '"';
      }
      if ((SessionOperations::getVarValueSuche('kfs_beginn_dat1') != '' && DateTimeOperations::isValidDate(SessionOperations::getVarValueSuche('kfs_beginn_dat1')))
              || (SessionOperations::getVarValueSuche('kfs_beginn_dat2') != '' && DateTimeOperations::isValidDate(SessionOperations::getVarValueSuche('kfs_beginn_dat2')))) {
        $tmptext .= ', Kursbeginn ';
        if (SessionOperations::getVarValueSuche('kfs_beginn_dat1') == SessionOperations::getVarValueSuche('kfs_beginn_dat2')) {
          $tmptext .= ' "' . SessionOperations::getVarValueSuche('kfs_beginn_dat1') . '"';
        } else {
          if (SessionOperations::getVarValueSuche('kfs_beginn_dat1') != '' && DateTimeOperations::isValidDate(SessionOperations::getVarValueSuche('kfs_beginn_dat1'))) {
            $tmptext .= ' ab "' . $this->addfdatetime->getValidDateString(SessionOperations::getVarValueSuche('kfs_beginn_dat1')) . '"';
          }
          if (SessionOperations::getVarValueSuche('kfs_beginn_dat2') != '' && DateTimeOperations::isValidDate(SessionOperations::getVarValueSuche('kfs_beginn_dat2'))) {
            $tmptext .= ' bis "' . $this->addfdatetime->getValidDateString(SessionOperations::getVarValueSuche('kfs_beginn_dat2')) . '"';
          }
        }
      }
      if (SessionOperations::getVarValueSuche('wochentage_suche', '') != '') {
        $tageString = SessionOperations::getVarValueSuche('wochentage_suche');
        $tage = explode(',', $tageString);
        sort($tage);
        $tmptext .= ', de' . (count($tage) > 1 ? 'n' : 'm') . ' Wochentag' . (count($tage) > 1 ? 'en' : '') . ' "';
        foreach ($tage as $tag) {
          $tmptext .= DateTimeOperations::getWeekDayFromInt($tag, false) . ', ';
        }
        $tmptext = StringOperations::substr($tmptext, 0, -2) . '"';
      }
      if (SessionOperations::getVarValueSuche('kfs_knr') != '') {
        if (count(SessionOperations::getVarValueSuche('kfs_knr')) > 1) {
          $tmptext .= ', den Kursnummern ';
        } else {
          $tmptext .= ', der Kursnummer ';
        }
        $tmptext .= '"' . implode('","', SessionOperations::getVarValueSuche('kfs_knr')) . '"';
      }
      if (SessionOperations::getVarValueSuche('kfs_knrab1') != '' || SessionOperations::getVarValueSuche('kfs_knrab2') != '') {
        $tmptext .= ', Kursnummer ';
        if ((SessionOperations::getVarValueSuche('kfs_knrab1') != '' && SessionOperations::getVarValueSuche('kfs_knrab2') != '')
             && (SessionOperations::getVarValueSuche('kfs_knrab1') != SessionOperations::getVarValueSuche('kfs_knrab2'))) {
          $tmptext .= ' von "' . SessionOperations::getVarValueSuche('kfs_knrab1') . '"';
          $tmptext .= ' bis "' . SessionOperations::getVarValueSuche('kfs_knrab2') . '"';
        } else {
          if (SessionOperations::getVarValueSuche('kfs_knrab1') != '') {
            $tmptext .= ' "' . SessionOperations::getVarValueSuche('kfs_knrab1') . '"';
          } else {
            $tmptext .= ' "' . SessionOperations::getVarValueSuche('kfs_knrab2') . '"';
          }
        }
      }
      if (SessionOperations::getVarValueSuche('kfs_semester') != '') {
        $tmptext .= ', Semester "' . SessionOperations::getVarValueSuche('kfs_semester') . '"';
      }
      if ($this->dbwkurse->fromobject->altervon != '') {
        $tmptext .= ', empfohlenes Alter "' . $this->dbwkurse->fromobject->altervon . '"';
      }
      if ($this->dbwkurse->fromobject->kurs_zielg != '') {
        $tmptext .= ', Zielgruppe "' . $this->dbwkurse->fromobject->kurs_zielg . '"';
      }
      if ($this->dbwkurse->fromobject->suche_nurNichtVolleKurse) {
        $tmptext .= ', "nur Kurse mit freien Pl&auml;tzen"';
      }
      if ($this->dbwkurse->fromobject->neuerkurs) {
        $tmptext .= ', "nur neue Kurse"';
      }
      if ($this->dbwkurse->fromobject->gebuehr) {
        $tmptext .= ', "Gebühr von ' . $this->dbwkurse->fromobject->gebuehr . '"';
      }
      if ($this->dbwkurse->toobject->gebuehr) {
        $tmptext .= ', "Gebühr bis ' . $this->dbwkurse->toobject->gebuehr . '"';
      }
      
      if ($tmptext != '') {
        $textid = ($this->getAnzahlBodyElements() > 0) ? TEXTE_SUCHENACH : TEXTE_NICHTS_GEFUNDEN_NACH;
        $textobj = $this->dbwtexte->getTextById($textid);
        $textobjwert = str_replace(
          '{%such_kriterien%}',
          StringOperations::substr($tmptext, 2),
          trim($textobj->wert)
        );
        $tmptext = 'Bei der Suche nach ' . StringOperations::substr($tmptext, 2)
                     . ' wurden folgende Kurse/Veranstaltungen gefunden:';
        $tmptext = $textobjwert == '' ? $tmptext : $textobjwert;
      } else {
        $textid = ($this->getAnzahlBodyElements() > 0) ? TEXTE_GEFUNDEN : TEXTE_NICHTS_GEFUNDEN;
        $textobj = $this->dbwtexte->getTextById($textid);
        $tmptext = 'Es wurden folgende Kurse/Veranstaltungen gefunden:';
        $tmptext = trim($textobj->wert) == '' ? $tmptext : trim($textobj->wert);
      }

      
      if (((SessionOperations::getVarValueSuche('kfs_dozentname') == '')
        && (isset($_REQUEST['kfs_dozentvorname']) && ($_REQUEST['kfs_dozentvorname'] != ''))) && ($toolsettings->kfsNachDozentVorname == 0)) {
        $tmptext = 'Dozent Vorname wird bei der Suche nur berücksichtigt, falls auch der '
                       . 'Dozent Name gesetzt ist.' . BR . $tmptext;
      }
    }  

    
    
    
    if (SessionOperations::getVarValueSuche('seitenwahlerror', '--') == 1) {
      $tmptext = 'Die Seitenangabe ist fehlerhaft. Bitte geben Sie eine Seitenzahl zwischen 1 und ' . (SessionOperations::getVarValueSuche('seitenanzahl')) . ' ein.';
      $textobj = $this->dbwtexte->getTextById(TEXTE_FALSCHESEITENANGABE);
      $tmptext = trim($textobj->wert) == '' ? $tmptext : trim($textobj->wert);
    }
    if (trim($tmptext) != '') {
      if ($this->status2 != '') {
        $this->status2 = $this->status2 . BR . CleanOperations::cleanStringContainingHtml($tmptext);
      } else {
        $this->status2 = CleanOperations::cleanStringContainingHtml($tmptext);
      }
    }
  }

  public function getAnzahlBodyElements()
  {
    if (isset($this->dbwkurse)) {
      return SessionOperations::getVarValueSuche('datenanzahl', 0);
    } else {
      return 0;
    }
  }

  
  public function showBlaettern()
  {
    
    

    $blaetternapi = new SeitenblaetternAPI(
      $this->settings->kurseproseite,
      $this->dbwkurse->countBefore,
      $this->dbwkurse->countBehind,
      $this->dbwkurse->countAll
    );
    echo $blaetternapi->getBlaetternText($this->blaetternAry);
  }

  
  public function getBlaettern()
  {
    $urlParamNav = new URLParameterNavigation();
    $urlParamNav->suchesetzen = '';
    $urlParamNav->implodeSettingsbyType($this->urlparameter);

    $kurseproseite = GetOperations::getVarValue('kurseproseite', $this->settings->kurseproseite);
    if ($kurseproseite > $this->settings->kurseproseite) {
      $kurseproseite = $this->settings->kurseproseite;
    }
    if ($kurseproseite == '') {
      $kurseproseite = 10;
    }

    $blaetternapi = new SeitenblaetternAPI(
      $kurseproseite,
      $this->dbwkurse->countBefore,
      $this->dbwkurse->countBehind,
      $this->dbwkurse->countAll
    );
    $retAry = $blaetternapi->getBlaetternArray();
    $retAry[4] = $this->getBackwBlaetternLink($this->dbwkurse->countBefore, $urlParamNav, $retAry[0]);
    $retAry[5] = $this->getForwBlaetternLink($this->dbwkurse->countBehind, $urlParamNav);

    return $retAry;
  }

  public function getForwBlaetternLink($pCountBeh, $pUrlParamNav)
  {
    $retVal = '';
    if ($pCountBeh > 0) {
      $pUrlParamNav->knr = $this->dataarraybody[count($this->dataarraybody) - 1]->id;
      $pUrlParamNav->browse = 'forward';
      
      $pUrlParamNav->begonneneKurse = $this->getExportSightInfo('isBegonneneKurse');

      $pUrlParamNav->implodeSettings();

      
      if (!CodingOperations::areInternalAndExternalEncodingEqual()) {
        $retVal .= INDEXSCRIPT . '?urlparameter=' . urldecode($pUrlParamNav->stream);
      } else {
        $retVal .= INDEXSCRIPT . '?urlparameter=' . $pUrlParamNav->stream;
      }
    }
    
    $ort = RequestOperations::getVarValue('kfs_ort_select_only', '-1');
    if ($ort != '-1') {
      $retVal .= "&amp;kfs_ort_select_only=$ort";
    }

    return $retVal;
  }

  public function getBackwBlaetternLink($pCountBef, $pUrlParamNav, $pAktSeite)
  {
    $retVal = '';
    if ($pCountBef > 0) {
      if ($pAktSeite != 2) {
        $pUrlParamNav->knr = $this->dataarraybody[0]->id;
        $pUrlParamNav->browse = 'backward';
        
        $pUrlParamNav->begonneneKurse = $this->getExportSightInfo('isBegonneneKurse');
      } else {
        
        
        
        
        

        $pUrlParamNav->knr = '';
        $pUrlParamNav->browse = '';
      }
      $pUrlParamNav->implodeSettings();
      
      if (!CodingOperations::areInternalAndExternalEncodingEqual()) {
        $retVal .= INDEXSCRIPT . '?urlparameter=' . urldecode($pUrlParamNav->stream);
      } else {
        $retVal .= INDEXSCRIPT . '?urlparameter=' . $pUrlParamNav->stream;
      }
    }

    
    $ort = RequestOperations::getVarValue('kfs_ort_select_only', '-1');
    if ($ort != '-1') {
      $retVal .= "&amp;kfs_ort_select_only=$ort";
    }

    return $retVal;
  }

  public function getKursnameForBlaetternLink($pKnr = '')
  {
    $result = '';
    if ($pKnr != '' && SEARCHENGINE_FUNCTIONS) {
      $kurs = WBKursStore::getKurs($pKnr);
      $kname = $kurs->kurzbez;
      if (DBWorkBASysSettings::isIHK()) {
        $kname = $kurs->getVarValue('kurzbez_titel');
      }
      $result = 'kursname' . URLPARAMETER_ZUWEISUNG . StringOperations::cleanStringForUrl($kname) . URLPARAMETER_TRENNZEICHEN;
    }

    return $result;
  }

  
  public function setParams4Seitenwahl()
  {
    
    $this->seitenWahl->setSeitenParams($this->dbwkurse->countBefore, $this->dbwkurse->countBehind);
  }

  
  public function getSeitenwahl()
  {
    
    $this->seitenWahl = new \webbasys\includee\api\SeitenwahlAPI($this->getAnzahlKurseProSeite(), $this->getSeitenwahlAnz());
    $seitenindary = SessionOperations::getVarValueSuche('seitenindary');
    if (isset($seitenindary['anf'], $seitenindary['end'])) {
      
      $seitenparams = $this->seitenWahl->getSeitenwahlParamsFromReq($this->urlparameter->knr, $this->urlparameter->browse);
      
      if (!empty($seitenparams['firstid'])) {
        $this->urlparameter->knr = $seitenparams['firstid'];
        if ($seitenparams['forward']) {
          $this->urlparameter->browse = 'forward';
        } else {
          $this->urlparameter->browse = 'backward';
        }
        $this->urlparameter->implodeSettings();
        $_REQUEST['urlparameter'] = $this->urlparameter->stream;
      }
    } 
  }

  

  
  public function getSeitenwahlAnz()
  {
    return $this->settings->seitenwahlanz;
  }

  
  public function _getClickPath()
  {
    
    DataMenuMain::_getClickPath();
    
    
    
    $trennBeg = false;
    if ($this->toolsettings->titleKursBereich != '') {
      $trennBeg = true;
      $this->clickpfad = '<span class="clickadresse"> ' . CleanOperations::cleanStringForHtml(stripslashes($this->toolsettings->titleKursBereich)) . ' ' . '</span>';

      
      
      
      
      
      
      switch ($this->urlparameter->kathaupt) {
        case '1':
          if ($this->toolsettings->showCaptionHauptkategorieInClickPfad && $this->toolsettings->captionHauptkategorie != '') {
            $this->clickpfad .= '<span class="clickadresse"> ' . CleanOperations::cleanStringContainingHtml($this->toolsettings->trennzeichenKategorie) . ' ' . '</span>';
          }
          break;
        case '2':
          if ($this->toolsettings->captionSonderrubrik != '') {
            $this->clickpfad .= '<span class="clickadresse"> ' . CleanOperations::cleanStringContainingHtml($this->toolsettings->trennzeichenKategorie) . ' ' . '</span>';
          }
          break;
        case '3':
          if ($this->toolsettings->captionZeitraum != '') {
            $this->clickpfad .= '<span class="clickadresse"> ' . CleanOperations::cleanStringContainingHtml($this->toolsettings->trennzeichenKategorie) . ' ' . '</span>';
          }
          break;
      } 
      
      
      
      
    } 
    else { 
    
    
    
    
      switch ($this->urlparameter->kathaupt) {
        case '1':
          if ($this->toolsettings->showCaptionHauptkategorieInClickPfad
              && $this->toolsettings->captionHauptkategorie != '') {
            $trennBeg = true;
          }
          break;
        case '2':
          if ($this->toolsettings->captionSonderrubrik != '') {
            $trennBeg = true;
          }
          break;
        case '3':
          if ($this->toolsettings->captionZeitraum != '') {
            $trennBeg = true;
          }
          break;
      }
    } 


    
    
    
    
    
    
    
    
    $unterpfad = '';
    if (($this->urlparameter->kathaupt == 1) || ($this->urlparameter->kathaupt == 2)) { 
      
      

      $unterpfad = $this->getCategoryPath($this->addfstring->getfilledStr($this->urlparameter->katid, '0'), '', $trennBeg);
    } elseif ($this->urlparameter->kathaupt == 3) {
      $unterpfad = $this->_getSubPathKathaupt3($trennBeg);
    }
    
    
    
    
    if ($this->toolsettings->showCaptionHauptkategorieInClickPfad) {
      if ($this->urlparameter->kathaupt == 1 && $this->toolsettings->captionHauptkategorie !== '') {
        if (empty($unterpfad)) {
          $this->clickpfad .= '<span class="clickadrbold">' . CleanOperations::cleanStringForHtml($this->toolsettings->captionHauptkategorie) . "</span>\n";
        } else {
          $this->clickpfad .= ' <a class="clickadresse" href="' . CleanOperations::cleanStringForHtml(INDEXSCRIPT . '?urlparameter='
              . $this->urlparameter->getStreamWith(
                array('kathaupt', 'kathauptname'),
                array('1', $this->toolsettings->captionHauptkategorie)
              ))
                 . '" title="Veranstaltungsübersicht für ' . CleanOperations::cleanStringForHtml($this->toolsettings->captionHauptkategorie) . ' öffnen">'
                 . CleanOperations::cleanStringForHtml($this->toolsettings->captionHauptkategorie) . "</a>\n";
        }
      } 
    } 
    if ($this->urlparameter->kathaupt == 2 && $this->toolsettings->captionSonderrubrik !== '') {
      if (empty($unterpfad)) {
        $this->clickpfad .= '<span class="clickadrbold">' . CleanOperations::cleanStringForHtml($this->toolsettings->captionSonderrubrik) . "</span>\n";
      } else {
        $this->clickpfad .= ' <a class="clickadresse" href="' . CleanOperations::cleanStringForHtml(INDEXSCRIPT) . '?urlparameter='
            . $this->urlparameter->getStreamWith(
              array('kathaupt', 'kathauptname'),
              array('2', $this->toolsettings->captionSonderrubrik)
            )
                 . '" title="Veranstaltungsübersicht für ' . CleanOperations::cleanStringForHtml($this->toolsettings->captionSonderrubrik) . ' öffnen">'
                 . CleanOperations::cleanStringForHtml($this->toolsettings->captionSonderrubrik) . "</a>\n";
      }
    } 

    if ($this->urlparameter->kathaupt == 3 && $this->toolsettings->captionZeitraum !== '') {
      if (empty($unterpfad)) {
        $this->clickpfad .= '<span class="clickadrbold">' . CleanOperations::cleanStringForHtml($this->toolsettings->captionZeitraum) . "</span>\n";
      } else {
        $this->clickpfad .= ' <a class="clickadresse" href="' . CleanOperations::cleanStringForHtml(INDEXSCRIPT) . '?urlparameter='
        . $this->urlparameter->getStreamWith(
          array('kathaupt', 'kathauptname'),
          array('3', $this->toolsettings->captionZeitraum)
        )
                 . '" title="Veranstaltungsübersicht für ' . CleanOperations::cleanStringForHtml($this->toolsettings->captionZeitraum) . ' öffnen">'
                 . CleanOperations::cleanStringForHtml($this->toolsettings->captionZeitraum) . "</a>\n";
      }
    } 

    $this->clickpfad .= $unterpfad;
    
    return $this->clickpfad;
  }

  

  
  public function _getSubPathKathaupt3($p_trennbeg)
  {
    $subpath = '';
    if (!empty($this->urlparameter->demnaechstname)) {
      $coding = new EncodeCharsetFromTo(UTF_8, CodingOperations::getExternalEncoding());
      $demnaechstname = $coding->encode($this->urlparameter->demnaechstname);

      $subpath = "<span class='trennzeichen'> " . ' ' . CleanOperations::cleanStringContainingHtml($this->toolsettings->trennzeichenKategorie) . ' ' . '</span>'
              . "<span class='clickadrbold'>" . ' ' . CleanOperations::cleanStringForHtml($demnaechstname) . "</span>\n";
    }

    return $subpath;
  }
}