public function actionSuche($code = "")
 {
     if (AntiXSS::isTokenSet("search_form")) {
         $krits = new RISSucheKrits();
         if (trim($_REQUEST["volltext"]) != "") {
             $krits->addVolltextsucheKrit($_REQUEST["volltext"]);
         }
         if (trim($_REQUEST["antrag_nr"]) != "") {
             $krits->addAntragNrKrit($_REQUEST["antrag_nr"]);
         }
         if ($_REQUEST["typ"] != "") {
             $krits->addAntragTypKrit($_REQUEST["typ"]);
         }
         if ($_REQUEST["referat"] > 0) {
             $krits->addReferatKrit($_REQUEST["referat"]);
         }
         /*
          * @TODO: Setzt voraus: offizielles Datum eines Dokuments ermitteln
         $datum_von = $datum_bis = null;
         if ($_REQUEST["datum_von"] != "") {
             $x = explode(".", $_REQUEST["datum_von"]);
             if (count($x) == 3) $datum_von = $x[2] . "-" . $x[1] . "-" . $x[0] . " 00:00:00";
         }
         if ($_REQUEST["datum_bis"] != "") {
             $x = explode(".", $_REQUEST["datum_bis"]);
             if (count($x) == 3) $datum_bis = $x[2] . "-" . $x[1] . "-" . $x[0] . " 23:59:59";
         }
         if ($datum_von || $datum_bis) $krits->addDatumKrit($datum_von, $datum_bis);
         */
     } elseif (isset($_REQUEST["suchbegriff"]) && $_REQUEST["suchbegriff"] != "") {
         $suchbegriff = $_REQUEST["suchbegriff"];
         if ($_SERVER["REQUEST_METHOD"] == 'POST') {
             $this->redirect($this->createUrl("index/suche", ["suchbegriff" => $suchbegriff]));
         }
         $this->suche_pre = $suchbegriff;
         $krits = new RISSucheKrits();
         $krits->addVolltextsucheKrit($suchbegriff);
     } else {
         $krits = RISSucheKrits::createFromUrl($_REQUEST);
     }
     $this->load_leaflet_css = true;
     if ($krits->getKritsCount() > 0) {
         $benachrichtigungen_optionen = $this->sucheBenachrichtigungenAnmelden($krits, $code);
         $solr = RISSolrHelper::getSolrClient("ris");
         $select = $solr->createSelect();
         $krits->addKritsToSolr($select);
         $select->setRows(50);
         $select->addSort('sort_datum', $select::SORT_DESC);
         /** @var Solarium\QueryType\Select\Query\Component\Highlighting\Highlighting $hl */
         $hl = $select->getHighlighting();
         $hl->setFields('text, text_ocr, antrag_betreff');
         $hl->setSimplePrefix('<b>');
         $hl->setSimplePostfix('</b>');
         $facetSet = $select->getFacetSet();
         $facetSet->createFacetField('antrag_typ')->setField('antrag_typ');
         $facetSet->createFacetField('antrag_wahlperiode')->setField('antrag_wahlperiode');
         try {
             $ergebnisse = $solr->select($select);
             if ($krits->isGeoKrit()) {
                 $geodata = $this->getJSGeodata($krits, $ergebnisse);
             } else {
                 $geodata = null;
             }
             $this->render("suchergebnisse", array_merge(["krits" => $krits, "ergebnisse" => $ergebnisse, "geodata" => $geodata], $benachrichtigungen_optionen));
         } catch (Exception $e) {
             $this->render('error', ["code" => 500, "message" => "Ein Fehler bei der Suche ist aufgetreten"]);
             Yii::app()->end(500);
         }
     } else {
         $this->render("suche");
     }
 }
 /**
  * @param array $request
  * @return RISSucheKrits
  */
 public static function createFromUrl($request)
 {
     $x = new RISSucheKrits();
     if (isset($request["krit_typ"])) {
         for ($i = 0; $i < count($request["krit_typ"]); $i++) {
             switch ($request["krit_typ"][$i]) {
                 case "betreff":
                     $x->addBetreffKrit($request["krit_val"][$i]);
                     break;
                 case "volltext":
                     $x->addVolltextsucheKrit($request["krit_val"][$i]);
                     break;
                 case "antrag_typ":
                     $x->addAntragTypKrit($request["krit_val"][$i]);
                     break;
                 case "antrag_wahlperiode":
                     $x->addWahlperiodeKrit($request["krit_val"][$i]);
                     break;
                 case "ba":
                     $x->addBAKrit($request["krit_val"][$i]);
                     break;
                 case "geo":
                     $y = explode("-", $request["krit_val"][$i]);
                     $x->addGeoKrit($y[0], $y[1], $y[2]);
                     break;
                 case "referat":
                     $x->addReferatKrit($request["krit_val"][$i]);
                     break;
                 case "antrag_nr":
                     $x->addAntragNrKrit($request["krit_val"][$i]);
                     break;
             }
         }
     }
     return $x;
 }