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"); } }
?> <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; }
/** * @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]); }