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");
     }
 }
Esempio n. 2
0
    ?>
                            <ul class="list">
                                <?php 
    foreach ($person->antraege as $antrag) {
        echo "<li>";
        echo "<a class='antrag-name' href='" . CHtml::encode($antrag->getLink()) . "'>" . $antrag->getName(true) . "</a>";
        echo "<span class='list-js-datum'> (" . RISTools::datumstring($antrag->gestellt_am) . ")</span>";
        echo "</li>\n";
    }
    ?>
                            </ul>
                        </td>
                    </tr>
                <?php 
} else {
    $suche = new RISSucheKrits();
    $suche->addVolltextsucheKrit("\"" . $person->getName() . "\"");
    $solr = RISSolrHelper::getSolrClient("ris");
    $select = $solr->createSelect();
    $suche->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>');
    /** @var \Solarium\QueryType\Select\Result\Result $ergebnisse */
    $ergebnisse = $solr->select($select);
    $dokumente = $ergebnisse->getDocuments();
    if (count($dokumente) > 0) {
 /**
  * @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;
 }
Esempio n. 4
0
 /**
  * @param int[] $document_ids
  * @param RISSucheKrits $benachrichtigung
  * @return array
  */
 public function queryBenachrichtigungen($document_ids, $benachrichtigung)
 {
     $solr = RISSolrHelper::getSolrClient("ris");
     $select = $solr->createSelect();
     $select->addSort('sort_datum', $select::SORT_DESC);
     $select->setRows(100);
     /** @var Solarium\QueryType\Select\Query\Component\DisMax $dismax */
     $dismax = $select->getDisMax();
     $dismax->setQueryParser('edismax');
     $dismax->setQueryFields("text text_ocr");
     $select->setQuery($benachrichtigung->getSolrQueryStr($select));
     $select->createFilterQuery('maxprice')->setQuery(implode(" OR ", $document_ids));
     /** @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>');
     $ergebnisse = $solr->select($select);
     /** @var RISSolrDocument[] $documents */
     $documents = $ergebnisse->getDocuments();
     $res = [];
     foreach ($documents as $document) {
         $res[] = ["id" => $document->id, "name" => $document->dokument_name . ", " . $document->antrag_betreff];
     }
     return $res;
 }
 public function actionIndex($code = "")
 {
     $this->top_menu = "benachrichtigungen";
     $this->requireLogin($this->createUrl("index/benachrichtigungen"), $code);
     /** @var BenutzerIn $ich */
     $ich = $this->aktuelleBenutzerIn();
     $this->load_leaflet_css = true;
     $this->load_leaflet_draw_css = true;
     if (AntiXSS::isTokenSet("einstellungen_speichern")) {
         $einstellungen = $ich->getEinstellungen();
         if (isset($_REQUEST["intervall"]) && $_REQUEST["intervall"] == "tag") {
             $einstellungen->benachrichtigungstag = null;
         }
         if (isset($_REQUEST["intervall"]) && $_REQUEST["intervall"] == "woche") {
             if (isset($_REQUEST["wochentag"])) {
                 $einstellungen->benachrichtigungstag = IntVal($_REQUEST["wochentag"]);
             }
         }
         $ich->setEinstellungen($einstellungen);
         $ich->save();
         $this->msg_ok = "Die Einstellung wurde gespeichert.";
     }
     if (AntiXSS::isTokenSet("del_ben")) {
         foreach ($_REQUEST[AntiXSS::createToken("del_ben")] as $ben => $_val) {
             $bena = json_decode(rawurldecode($ben), true);
             $krit = new RISSucheKrits($bena);
             $ich->delBenachrichtigung($krit);
             $this->msg_ok = "Die Benachrichtigung wurde entfernt.";
         }
     }
     if (AntiXSS::isTokenSet("ben_add_text")) {
         $suchbegriff = trim($_REQUEST["suchbegriff"]);
         if ($suchbegriff == "") {
             $this->msg_err = "Bitte gib einen Suchausdruck an.";
         } else {
             $ben = new RISSucheKrits();
             $ben->addVolltextsucheKrit($suchbegriff);
             $ich->addBenachrichtigung($ben);
             $this->msg_ok = "Die Benachrichtigung wurde hinzugefügt.";
         }
     }
     if (AntiXSS::isTokenSet("ben_add_ba")) {
         $ben = new RISSucheKrits();
         $ben->addBAKrit($_REQUEST["ba"]);
         $ich->addBenachrichtigung($ben);
         $this->msg_ok = "Die Benachrichtigung wurde hinzugefügt.";
     }
     if (AntiXSS::isTokenSet("ben_add_geo")) {
         if ($_REQUEST["geo_lng"] == 0 || $_REQUEST["geo_lat"] == 0 || $_REQUEST["geo_radius"] <= 0) {
             $this->msg_err = "Ungültige Eingabe.";
         } else {
             $ben = new RISSucheKrits();
             $ben->addGeoKrit($_REQUEST["geo_lng"], $_REQUEST["geo_lat"], $_REQUEST["geo_radius"]);
             $ich->addBenachrichtigung($ben);
             $this->msg_ok = "Die Benachrichtigung wurde hinzugefügt.";
         }
     }
     if (AntiXSS::isTokenSet("del_vorgang_abo")) {
         foreach (AntiXSS::getTokenVal("del_vorgang_abo") as $vorgang_id => $_tmp) {
             /** @var Vorgang $vorgang */
             $vorgang = Vorgang::model()->findByPk($vorgang_id);
             $vorgang->deabonnieren($ich);
             $this->msg_ok = "Der Vorgang wurde entfernt.";
         }
     }
     if (AntiXSS::isTokenSet("account_loeschen")) {
         $this->top_menu = "Accountlöschung";
         $this->requireLogin($this->createUrl("index/benachrichtigungen"));
         $ich = $this->aktuelleBenutzerIn();
         $id = $ich->id;
         if ($ich != NULL) {
             $ich->email = NULL;
             $ich->email_bestaetigt = 0;
             $ich->pwd_enc = NULL;
             $ich->datum_angelegt = NULL;
             $ich->datum_letzte_benachrichtigung = NULL;
             $ich->berechtigungen_flags = 0;
             $ich->einstellungen_object = NULL;
             $ich->einstellungen = NULL;
             $ich->save(false);
             Yii::app()->db->createCommand("DELETE FROM `benutzerInnen_vorgaenge_abos` WHERE `benutzerInnen_id` = :BenutzerInId")->bindValues([':BenutzerInId' => $ich->id])->execute();
             $this->msg_ok = "Account gelöscht";
             /** @var CWebUser $user */
             $user = Yii::app()->getUser();
             if ($user) {
                 $user->logout();
             }
         } else {
             $this->msg_err = "Sie sind nicht angemeldet";
         }
         $this->redirect(Yii::app()->createUrl("index/startseite"));
         Yii::app()->end();
     }
     if (AntiXSS::isTokenSet("passwort_aendern")) {
         /** @var null|BenutzerIn $ich  */
         $ich = $this->aktuelleBenutzerIn();
         if ($ich) {
             if ($_REQUEST["password"] == $_REQUEST["password2"]) {
                 $ich->pwd_enc = BenutzerIn::create_hash($_REQUEST["password"]);
                 $ich->save();
                 $this->msg_ok = "Passwort geändert";
             } else {
                 $this->msg_err = "Die beiden Passwörter stimmen nicht überein";
             }
         } else {
             $this->render('/index/error', ["code" => 403, "message" => "Sie sind nicht angemeldet."]);
         }
     }
     $this->render("index", ["ich" => $ich]);
 }