/** * @param int $id */ public function actionPersonBearbeiten($id) { $this->top_menu = "personen"; $ich = $this->aktuelleBenutzerIn(); if (!$ich) { $this->errorMessageAndDie(403, "Du musst eingeloggt sein, um deinen Eintrag zu bearbeiten."); } /** @var StadtraetIn $person */ $person = StadtraetIn::model()->findByPk($id); if ($person->benutzerIn_id != $ich->id) { $this->errorMessageAndDie(403, "Du kannst nur deinen eigenen Eintrag bearbeiten."); } if (AntiXSS::isTokenSet("save")) { $person->web = $_REQUEST["web"]; $person->twitter = trim($_REQUEST["twitter"], "\t\n\r@"); $person->facebook = preg_replace("/^https?:\\/\\/(www\\.)?facebook\\.com\\//siu", "", $_REQUEST["facebook"]); $person->email = $_REQUEST["email"]; $person->beschreibung = trim($_REQUEST["beschreibung"]); $person->quellen = "Selbstauskunft"; $x = explode(".", $_REQUEST["geburtstag"]); if (count($x) == 3) { $person->geburtstag = $x[2] . "-" . $x[1] . "-" . $x[0]; } else { if ($x[0] > 1900) { $person->geburtstag = $x[0] . "-00:00"; } else { $person->geburtstag = null; } } $person->save(); $this->msg_ok = "Gespeichert"; } $this->render("person-bearbeiten", ["person" => $person]); }
/** * @param string $veranstaltungsreihe_id * @param string $veranstaltung_id * @param int $id * @throws CException * @throws Exception */ public function actionUpdate($veranstaltungsreihe_id = "", $veranstaltung_id, $id) { $this->loadVeranstaltung($veranstaltungsreihe_id, $veranstaltung_id); if (!$this->veranstaltung->isAdminCurUser()) { $this->redirect($this->createUrl("/veranstaltung/login", array("back" => yii::app()->getRequest()->requestUri))); } /** @var $model Antrag */ $model = Antrag::model()->with("antragUnterstuetzerInnen", "antragUnterstuetzerInnen.person")->findByPk($id, '', array("order" => "`person`.`name")); if (is_null($model)) { Yii::app()->user->setFlash("error", "Der angegebene Antrag wurde nicht gefunden."); $this->redirect($this->createUrl("admin/antraege")); } if ($model->veranstaltung_id != $this->veranstaltung->id) { return; } $this->performAjaxValidation($model, 'antrag-form'); $messages = array(); if (AntiXSS::isTokenSet("antrag_freischalten")) { $newvar = AntiXSS::getTokenVal("antrag_freischalten"); $model->adminFreischalten($newvar); Yii::app()->user->setFlash("success", "Der Antrag wurde freigeschaltet."); } if (isset($_POST['Antrag'])) { $fixed_fields = $fixed_fields_pre = array(); if (!$model->kannTextUeberarbeitenAdmin()) { $fixed_fields = array("text_unveraenderlich", "text", "begruendung"); } foreach ($fixed_fields as $field) { $fixed_fields_pre[$field] = $model->{$field}; } if (!in_array($_POST['Antrag']['status'], $model->getMoeglicheStati())) { throw new Exception("Status-Übergang ungültig"); } $revision_name = $model->revision_name; $model->setAttributes($_POST['Antrag'], false); if ($model->revision_name != $revision_name && $revision_name != "") { foreach ($this->veranstaltung->antraege as $ant) { if ($ant->id != $model->id && $ant->revision_name == $model->revision_name && $ant->status != Antrag::$STATUS_GELOESCHT) { // Zurücksetzen + Warnung $messages[] = "Das vergebene Antragskürzel \"" . $model->revision_name . "\" wird bereits von einem anderen Antrag verwendet."; $model->revision_name = $revision_name; } } } foreach ($fixed_fields_pre as $field => $val) { $model->{$field} = $val; } Yii::import('ext.datetimepicker.EDateTimePicker'); $model->datum_einreichung = EDateTimePicker::parseInput($_POST["Antrag"], "datum_einreichung"); $model->datum_beschluss = EDateTimePicker::parseInput($_POST["Antrag"], "datum_beschluss"); $relatedData = array(); if ($model->saveWithRelated($relatedData)) { $model->veranstaltung->resetLineCache(); UnterstuetzerInnenAdminWidget::saveUnterstuetzerInnenWidget($model, $messages, "AntragUnterstuetzerInnen", "antrag_id", $id); $model = Antrag::model()->with("antragUnterstuetzerInnen", "antragUnterstuetzerInnen.person")->findByPk($id, '', array("order" => "`person`.`name")); } } $this->render('update', array('model' => $model, 'messages' => $messages)); }
/** * @param int $id */ public function actionAnzeigen($id) { $this->performLoginActions(); /** @var Antrag $antrag */ $antrag = Antrag::model()->findByPk($id); if (!$antrag) { $this->render('/index/error', ["code" => 404, "message" => "Der Antrag wurde nicht gefunden"]); return; } if (AntiXSS::isTokenSet("abonnieren")) { $this->requireLogin($this->createUrl("antraege/anzeigen", ["id" => $id])); $antrag->getVorgang()->abonnieren($this->aktuelleBenutzerIn()); } if (AntiXSS::isTokenSet("deabonnieren")) { $this->requireLogin($this->createUrl("antraege/anzeigen", ["id" => $id])); $antrag->getVorgang()->deabonnieren($this->aktuelleBenutzerIn()); } if (AntiXSS::isTokenSet("tag_add") && $this->aktuelleBenutzerIn()) { $tags = explode(",", $_REQUEST["tags_neu"]); foreach ($tags as $tag_name) { if (mb_strlen(trim($tag_name)) > 0) { try { $tag_name = trim($tag_name); $tag = Tag::model()->findByAttributes(["name" => $tag_name]); if (!$tag) { $tag = new Tag(); $tag->name = $tag_name; $tag->angelegt_benutzerIn_id = $this->aktuelleBenutzerIn()->id; $tag->angelegt_datum = new CDbExpression('NOW()'); $tag->reviewed = $this->binContentAdmin() ? 1 : 0; $tag->save(); if (count($tag->getErrors()) > 0) { $this->render('/index/error', ["code" => 500, "message" => "Ein Fehler beim Anlegen des Schlagworts trat auf"]); } } Yii::app()->db->createCommand()->insert("antraege_tags", ["antrag_id" => $antrag->id, "tag_id" => $tag->id, "zugeordnet_datum" => date("Y-m-d H:i:s"), "zugeordnet_benutzerIn_id" => $this->aktuelleBenutzerIn()->id]); } catch (Exception $e) { // Sind hauptsächlich doppelte Einträge -> ignorieren } } } } $this->render("anzeige", ["antrag" => $antrag, "tag_mode" => isset($_REQUEST["tag_mode"]) && $_REQUEST["tag_mode"] == "1"]); }
public function actionReferat($referat_url) { /** @var Referat $ref */ $ref = Referat::model()->findByAttributes(["urlpart" => $referat_url]); if (!$ref) { die("Nicht gefunden"); } $this->top_menu = "themen"; $von = date("Y-m-d H:i:s", time() - 3600 * 24 * 30); $bis = date("Y-m-d H:i:s", time()); $antraege_referat = Antrag::model()->neueste_stadtratsantragsdokumente_referat($ref->id, $von, $bis)->findAll(); $text = Text::model()->findByAttributes(["typ" => 2, "titel" => $ref->name]); $my_url = Yii::app()->createUrl("/themen/referat/" . $referat_url); if ($this->binContentAdmin() && AntiXSS::isTokenSet("save")) { if (strlen($_REQUEST["text"]) == 0) { die("Kein Text angegeben"); } $text->text = $_REQUEST["text"]; $text->save(); $this->msg_ok = "Gespeichert."; } $this->render("referat", ["referat" => $ref, "antraege_referat" => $antraege_referat, "text" => $text, "my_url" => $my_url]); }
/** * @param string $veranstaltungsreihe_id * @param string $veranstaltung_id * @param int $id * @throws CException * @throws Exception */ public function actionUpdate($veranstaltungsreihe_id = "", $veranstaltung_id, $id) { $this->loadVeranstaltung($veranstaltungsreihe_id, $veranstaltung_id); if (!$this->veranstaltung->isAdminCurUser()) { $this->redirect($this->createUrl("/veranstaltung/login", array("back" => yii::app()->getRequest()->requestUri))); } /** @var $model Aenderungsantrag */ $model = Aenderungsantrag::model()->with("aenderungsantragUnterstuetzerInnen", "aenderungsantragUnterstuetzerInnen.person")->findByPk($id, '', array("order" => "`person`.`name")); if (is_null($model) || $model->status == IAntrag::$STATUS_GELOESCHT) { Yii::app()->user->setFlash("error", "Der angegebene Änderungsantrag wurde nicht gefunden."); $this->redirect($this->createUrl("/admin/aenderungsantraege")); } if ($model->antrag->veranstaltung_id != $this->veranstaltung->id) { Yii::app()->user->setFlash("error", "Der angegebene Änderungsantrag gehört nicht zu dieser Veranstaltung."); $this->redirect($this->createUrl("/admin/aenderungsantraege")); } $this->performAjaxValidation($model, 'aenderungsantrag-form'); $messages = array(); if (AntiXSS::isTokenSet("antrag_freischalten")) { $newvar = AntiXSS::getTokenVal("antrag_freischalten"); $model->revision_name = $newvar; if ($model->status == IAntrag::$STATUS_EINGEREICHT_UNGEPRUEFT) { $model->status = IAntrag::$STATUS_EINGEREICHT_GEPRUEFT; } $model->save(); Yii::app()->user->setFlash("success", "Der Änderungsantrag wurde freigeschaltet."); if ($model->status == Antrag::$STATUS_EINGEREICHT_GEPRUEFT) { $benachrichtigt = array(); foreach ($model->antrag->veranstaltung->veranstaltungsreihe->veranstaltungsreihenAbos as $abo) { if ($abo->aenderungsantraege && !in_array($abo->person_id, $benachrichtigt)) { $abo->person->benachrichtigenAenderungsantrag($model); $benachrichtigt[] = $abo->person_id; } } } } if (isset($_POST['Aenderungsantrag'])) { if (!in_array($_POST['Aenderungsantrag']['status'], $model->getMoeglicheStati())) { throw new Exception("Status-Übergang ungültig"); } $revision_name = $model->revision_name; $model->setAttributes($_POST['Aenderungsantrag'], false); Yii::import('ext.datetimepicker.EDateTimePicker'); $model->datum_einreichung = EDateTimePicker::parseInput($_POST["Aenderungsantrag"], "datum_einreichung"); $model->datum_beschluss = EDateTimePicker::parseInput($_POST["Aenderungsantrag"], "datum_beschluss"); if ($model->revision_name != $revision_name && $revision_name != "") { foreach ($this->veranstaltung->antraege as $ant) { foreach ($ant->aenderungsantraege as $aend) { if ($aend->id != $model->id && $aend->revision_name == $model->revision_name && $aend->status != Aenderungsantrag::$STATUS_GELOESCHT) { // Zurücksetzen + Warnung $messages[] = "Das vergebene Kürzel \"" . $model->revision_name . "\" wird bereits von einem anderen Änderungsantrag verwendet."; $model->revision_name = $revision_name; } } } } if ($model->save()) { UnterstuetzerInnenAdminWidget::saveUnterstuetzerInnenWidget($model, $messages, "AenderungsantragUnterstuetzerInnen", "aenderungsantrag_id", $id); $model = Aenderungsantrag::model()->with("aenderungsantragUnterstuetzerInnen", "aenderungsantragUnterstuetzerInnen.person")->findByPk($id, '', array("order" => "`person`.`name")); } } $this->render('update', array('model' => $model, 'messages' => $messages)); }
public function actionUpdate_extended($veranstaltungsreihe_id = "", $veranstaltung_id) { $this->loadVeranstaltung($veranstaltungsreihe_id, $veranstaltung_id); $model = $this->veranstaltung; if (!$model->isAdminCurUser()) { $this->redirect($this->createUrl("/veranstaltung/login", array("back" => yii::app()->getRequest()->requestUri))); } if (is_null($model)) { Yii::app()->user->setFlash("error", "Die angegebene Veranstaltungen wurde nicht gefunden."); $this->redirect($this->createUrl("admin/veranstaltungen")); } if (AntiXSS::isTokenSet("del_tag")) { foreach ($model->tags as $tag) { if ($tag->id == AntiXSS::getTokenVal("del_tag")) { $tag->delete(); $model->refresh(); } } } if (isset($_POST['Veranstaltung'])) { $model->setAttributes($_POST['Veranstaltung']); $einstellungen = $model->getEinstellungen(); $einstellungen->saveForm($_REQUEST["VeranstaltungsEinstellungen"]); $model->setEinstellungen($einstellungen); $relatedData = array(); if ($model->saveWithRelated($relatedData)) { $reihen_einstellungen = $model->veranstaltungsreihe->getEinstellungen(); $reihen_einstellungen->antrag_neu_nur_namespaced_accounts = isset($_REQUEST["antrag_neu_nur_namespaced_accounts"]); $reihen_einstellungen->antrag_neu_nur_wurzelwerk = isset($_REQUEST["antrag_neu_nur_wurzelwerk"]); $model->veranstaltungsreihe->setEinstellungen($reihen_einstellungen); $model->veranstaltungsreihe->save(); if (!$model->getEinstellungen()->admins_duerfen_aendern) { foreach ($model->antraege as $ant) { $ant->text_unveraenderlich = 1; $ant->save(false); foreach ($ant->aenderungsantraege as $ae) { $ae->text_unveraenderlich = 1; $ae->save(false); } } } if (isset($_REQUEST["tag_neu"]) && trim($_REQUEST["tag_neu"]) != "") { $max_id = 0; $duplicate = false; foreach ($model->tags as $tag) { if ($tag->position > $max_id) { $max_id = $tag->position; } if (mb_strtolower($tag->name) == mb_strtolower($_REQUEST["tag_neu"])) { $duplicate = true; } } if (!$duplicate) { Yii::app()->db->createCommand()->insert("tags", array("veranstaltung_id" => $model->id, "name" => $_REQUEST["tag_neu"], "position" => $max_id + 1)); } } if (isset($_REQUEST["TagSort"]) && is_array($_REQUEST["TagSort"])) { foreach ($_REQUEST["TagSort"] as $i => $tagId) { $tag = Tag::model()->findByPk($tagId); if ($tag->veranstaltung_id == $this->veranstaltung->id) { $tag->position = $i; $tag->save(); } } } $model->resetLineCache(); $this->redirect(array('update_extended')); } } $this->render('update_extended', array('model' => $model)); }
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"); } }
public function actionPasswort() { $this->layout = '//layouts/column2'; $this->performLogin($this->createUrl("veranstaltung/passwort")); $user = Yii::app()->getUser(); if ($user->isGuest) { $this->redirect($this->createUrl("infos/login", array("back" => yii::app()->getRequest()->requestUri))); } /** @var PErson $ich */ $ich = Person::model()->findByAttributes(array("auth" => $user->id)); $msg_ok = $msg_err = ""; $correct_person = null; $aktuelle_einstellungen = null; if (AntiXSS::isTokenSet("speichern")) { if ($_REQUEST["pw_neu"] != $_REQUEST["pw_neu2"]) { $msg_err = "Die beiden Passwörter stimmen nicht überein."; } elseif (strlen(trim($_REQUEST["pw_neu"])) < 5) { $msg_err = "Das Passwort muss mindestens 5 Zeichen lang sein."; } elseif (!$ich->validate_password($_REQUEST["pw_alt"])) { $msg_err = "Das bisherige Passwort stimmt nicht."; } else { $ich->pwd_enc = Person::create_hash($_REQUEST["pw_neu"]); $ich->save(); $msg_ok = "Das neue Passwort wurde gespeichert."; } } $this->render('passwort', array("ich" => $ich, "msg_err" => $msg_err, "msg_ok" => $msg_ok)); }
public function actionBuergerInnenversammlungen() { if (!$this->binContentAdmin()) { $this->errorMessageAndDie(403, ""); } $this->top_menu = "admin"; if (AntiXSS::isTokenSet("delete")) { /** @var Termin $termin */ $termin = Termin::model()->findByPk(AntiXSS::getTokenVal("delete")); $termin->delete(); $this->msg_ok = "Gelöscht."; } if (AntiXSS::isTokenSet("save")) { if (isset($_REQUEST["neu"]) && $_REQUEST["neu"]["datum"] != "" && $_REQUEST["neu"]["ba_nr"] > 0) { $result = Yii::app()->db->createCommand("SELECT MIN(id) minid FROM termine")->queryAll(); $id = $result[0]["minid"]; if ($id >= 0) { $id = 0; } $id--; $termin = new Termin(); $termin->id = $id; $termin->ba_nr = IntVal($_REQUEST["neu"]["ba_nr"]); $termin->typ = Termin::$TYP_BUERGERVERSAMMLUNG; $termin->sitzungsort = $_REQUEST["neu"]["ort"]; $termin->termin = $_REQUEST["neu"]["datum"]; $termin->datum_letzte_aenderung = new CDbExpression('NOW()'); if (!$termin->save()) { $this->msg_err = print_r($termin->getErrors(), true); } } if (isset($_REQUEST["termin"])) { foreach ($_REQUEST["termin"] as $id => $save) { /** @var Termin $termin */ $termin = Termin::model()->findByPk($id); $termin->sitzungsort = $save["ort"]; $termin->termin = $save["datum"]; $termin->save(); } } $this->msg_ok = "Gespeichert"; } $termine = Termin::model()->findAllByAttributes(["typ" => Termin::$TYP_BUERGERVERSAMMLUNG], ["order" => "termin DESC"]); $this->render("buergerInnenversammlungen", ["termine" => $termine]); }
/** * @param string $id * @param string $code */ public function actionNeuesPasswortSetzen($id = "", $code = "") { $my_url = $this->createUrl("benachrichtigungen/NeuesPasswortSetzen", ["id" => $id, "code" => $code]); if (AntiXSS::isTokenSet("reset_password")) { /** @var null|BenutzerIn $benutzerIn */ $benutzerIn = BenutzerIn::model()->findByPk($id); if (!$benutzerIn) { $this->msg_err = "BenutzerIn nicht gefunden"; $this->render('reset_password_form', ["current_url" => $this->createUrl("benachrichtigungen/PasswortZuruecksetzen")]); return; } if ($_REQUEST["password"] != $_REQUEST["password2"]) { $this->msg_err = "Die beiden Passwörter stimmen nicht überein"; $this->render('reset_password_set_form', ["current_url" => $my_url]); return; } $ret = $benutzerIn->resetPasswordDo($code, $_REQUEST["password"]); if ($ret === true) { $this->render('reset_password_done'); } else { $this->msg_err = $ret; $this->render('reset_password_set_form', ["current_url" => $my_url]); } } else { $this->render('reset_password_set_form', ["current_url" => $my_url]); } }
/** * @param string $veranstaltungsreihe_id * @param string $veranstaltung_id * @param int $adoptInitiators */ public function actionNeu($veranstaltungsreihe_id = "", $veranstaltung_id, $adoptInitiators = 0) { $this->layout = '//layouts/column2'; /** @var Veranstaltung $veranstaltung */ $this->veranstaltung = $veranstaltung = $this->loadVeranstaltung($veranstaltungsreihe_id, $veranstaltung_id); $this->testeWartungsmodus(); $model = new Antrag(); $model->status = Antrag::$STATUS_EINGEREICHT_UNGEPRUEFT; $model->typ = isset($_REQUEST["typ"]) ? IntVal($_REQUEST["typ"]) : Antrag::$TYP_ANTRAG; $model->veranstaltung_id = $veranstaltung->id; $model->veranstaltung = $veranstaltung; $model->text_unveraenderlich = $this->veranstaltung->getEinstellungen()->admins_duerfen_aendern ? 0 : 1; if (!$veranstaltung->getPolicyAntraege()->checkCurUserHeuristically()) { Yii::app()->user->setFlash("error", "Es kann kein Antrag angelegt werden."); $this->redirect($this->createUrl("veranstaltung/index")); } $unterstuetzerInnen = array(); $tags_pre = array(); if (AntiXSS::isTokenSet("antragneu")) { $model->attributes = $_REQUEST["Antrag"]; if ($veranstaltung->getEinstellungen()->antrag_begruendungen) { if ($this->veranstaltung->getEinstellungen()->begruendung_in_html && isset($_REQUEST["Antrag"]["begruendung_html"])) { $model->begruendung_html = 1; $model->begruendung = HtmlBBcodeUtils::html_normalize($_REQUEST["Antrag"]["begruendung"]); } else { $model->begruendung_html = 0; $model->begruendung = HtmlBBcodeUtils::bbcode_normalize($_REQUEST["Antrag"]["begruendung"]); } } $model->text = HtmlBBcodeUtils::bbcode_normalize($model->text); $model->datum_einreichung = new CDbExpression('NOW()'); $model->status = Antrag::$STATUS_UNBESTAETIGT; $model->revision_name = ""; if ($model->text2) { $model->text2 = HtmlBBcodeUtils::bbcode_normalize($model->text2); } $goon = true; if (!$this->veranstaltung->getPolicyAntraege()->checkAntragSubmit()) { Yii::app()->user->setFlash("error", "Keine Berechtigung zum Anlegen von Anträgen."); $goon = false; } if ($goon) { if ($model->save()) { $this->veranstaltung->getPolicyAntraege()->submitAntragsstellerInView_Antrag($model); /* $next_status = $_REQUEST["Antrag"]["status"] */ if ($this->veranstaltung->getEinstellungen()->antrag_hat_mehrere_tags) { if (isset($_REQUEST["tags"])) { foreach ($_REQUEST["tags"] as $tag_id) { foreach ($this->veranstaltung->tags as $tag) { if ($tag->id == $tag_id) { Yii::app()->db->createCommand()->insert("antrag_tags", array("antrag_id" => $model->id, "tag_id" => $tag_id)); } } } } } else { if (isset($_REQUEST["tag"])) { foreach ($this->veranstaltung->tags as $tag) { if ($tag->id == $_REQUEST["tag"]) { Yii::app()->db->createCommand()->insert("antrag_tags", array("antrag_id" => $model->id, "tag_id" => IntVal($_REQUEST["tag"]))); } } } } $next_status = Antrag::$STATUS_EINGEREICHT_UNGEPRUEFT; $this->redirect($this->createUrl("antrag/neuConfirm", array("antrag_id" => $model->id, "next_status" => $next_status, "from_mode" => "neu"))); } else { foreach ($model->getErrors() as $key => $val) { foreach ($val as $val2) { Yii::app()->user->setFlash("error", "Antrag konnte nicht angelegt werden: {$key}: " . $val2); } } } } } $hiddens = array(); $js_protection = Yii::app()->user->isGuest; if ($js_protection) { $hiddens["form_token"] = AntiXSS::createToken("antragneu"); } else { $hiddens[AntiXSS::createToken("antragneu")] = "1"; } if (Yii::app()->user->isGuest || $this->veranstaltung->isAdminCurUser()) { $antragstellerIn = new Person(); $antragstellerIn->typ = Person::$TYP_PERSON; } else { $antragstellerIn = Person::model()->findByAttributes(array("auth" => Yii::app()->user->id)); } if ($adoptInitiators > 0 && $this->veranstaltung->isAdminCurUser()) { $templateMotion = $this->veranstaltung->getMotion($adoptInitiators); if ($templateMotion) { $model->typ = $templateMotion->typ; foreach ($templateMotion->antragUnterstuetzerInnen as $unt) { if ($unt->rolle == AntragUnterstuetzerInnen::$ROLLE_INITIATORIN) { $antragstellerIn = $unt->person; } if ($unt->rolle == AntragUnterstuetzerInnen::$ROLLE_UNTERSTUETZERIN) { $unterstuetzerInnen[] = $unt->person; } } } } $force_type = null; if (isset($_REQUEST["typ"])) { if (isset(Antrag::$TYPEN[$_REQUEST["typ"]]) && !in_array($_REQUEST["typ"], $this->veranstaltung->getEinstellungen()->antrags_typen_deaktiviert)) { $force_type = IntVal($_REQUEST["typ"]); } } $this->render('bearbeiten_form', array("mode" => "neu", "model" => $model, "force_type" => $force_type, "antragstellerIn" => $antragstellerIn, "unterstuetzerInnen" => $unterstuetzerInnen, "veranstaltung" => $veranstaltung, "hiddens" => $hiddens, "tags_pre" => $tags_pre, "js_protection" => $js_protection, "login_warnung" => false, "sprache" => $model->veranstaltung->getSprache())); }
/** * @param int $id * @throws Exception */ public function actionGlossarBearbeiten($id) { if (!$this->binContentAdmin()) { throw new Exception("Kein Zugriff"); } $this->top_menu = "so_funktioniert"; /** @var Text $eintrag */ $eintrag = Text::model()->findByAttributes(["id" => $id, "typ" => Text::$TYP_GLOSSAR]); if (!$eintrag) { throw new Exception("Nicht gefunden"); } if (AntiXSS::isTokenSet("speichern")) { $eintrag->titel = $_REQUEST["titel"]; $eintrag->text = $_REQUEST["text"]; $eintrag->edit_datum = new CDbExpression("NOW()"); $eintrag->edit_benutzerIn_id = $this->aktuelleBenutzerIn()->id; $eintrag->save(); $this->redirect($this->createUrl("infos/glossar")); } if (AntiXSS::isTokenSet("del")) { $eintrag->delete(); $this->redirect($this->createUrl("infos/glossar")); } $this->render('glossar_bearbeiten', ["eintrag" => $eintrag]); }
/** * @param string $veranstaltungsreihe_id * @param string $code */ public function actionBenachrichtigungen($veranstaltungsreihe_id = "", $code = "") { $this->loadVeranstaltung($veranstaltungsreihe_id); $this->testeWartungsmodus(); $user = Yii::app()->getUser(); $msg_ok = $msg_err = ""; $aktuelle_einstellungen = null; /** @var Person|null $correct_person */ $correct_person = null; if (AntiXSS::isTokenSet("speichern") && !yii::app()->user->isGuest) { /** @var Person $ich */ $ich = Person::model()->findByAttributes(array("auth" => Yii::app()->user->id)); $vabo = null; foreach ($ich->veranstaltungsreihenAbos as $abo) { if ($abo->veranstaltungsreihe_id == $this->veranstaltungsreihe->id) { $vabo = $abo; } } if (!$vabo) { $vabo = new VeranstaltungsreihenAbo(); $vabo->veranstaltungsreihe_id = $this->veranstaltungsreihe->id; $vabo->person_id = $ich->id; } $vabo->antraege = isset($_REQUEST["Reihe"][$this->veranstaltung->veranstaltungsreihe_id]["antraege"]); $vabo->aenderungsantraege = isset($_REQUEST["Reihe"][$this->veranstaltung->veranstaltungsreihe_id]["aenderungsantraege"]); $vabo->kommentare = isset($_REQUEST["Reihe"][$this->veranstaltung->veranstaltungsreihe_id]["kommentare"]); $vabo->save(); $msg_ok = "Die Einstellungen wurden gespeichert."; } if ($code != "") { $x = explode("-", $code); /** @var Person $person */ $person = Person::model()->findByPk($x[0]); if (!$person) { $msg_err = "Diese Seite existiert nicht. Vielleicht wurde der Bestätigungslink falsch kopiert?"; } elseif ($person->email_bestaetigt) { $msg_err = "Dieser Account wurde bereits bestätigt."; } elseif (!$person->checkEmailBestaetigungsCode($code)) { $msg_err = "Diese Seite existiert nicht. Vielleicht wurde der Bestätigungslink falsch kopiert? (Beachte, dass der Link in der E-Mail nur 2-3 Tage lang gültig ist."; } else { $person->email_bestaetigt = 1; $person->save(); $msg_ok = "Der Zugang wurde bestätigt. Ab jetzt erhältst du Benachrichtigungen per E-Mail, wenn du das so eingestellt hast."; $identity = new AntragUserIdentityPasswd($person->email, $person->auth); Yii::app()->user->login($identity); } } elseif (AntiXSS::isTokenSet("anmelden")) { list($correct_person, $msg_ok, $msg_err) = $this->loginOderRegistrieren_backend($_REQUEST["email"], isset($_REQUEST["password"]) ? $_REQUEST["password"] : null, isset($_REQUEST["bestaetigungscode"]) ? $_REQUEST["bestaetigungscode"] : null); } if ($correct_person) { $bisherig = VeranstaltungsreihenAbo::model()->findByAttributes(array("veranstaltungsreihe_id" => $this->veranstaltungsreihe->id, "person_id" => $correct_person->id)); if (!$bisherig) { $bisherig = new VeranstaltungsreihenAbo(); $bisherig->person_id = $correct_person->id; $bisherig->veranstaltungsreihe_id = $this->veranstaltungsreihe->id; } $bisherig->antraege = isset($_REQUEST["Reihe"][$this->veranstaltung->id]["antraege"]); $bisherig->aenderungsantraege = isset($_REQUEST["Reihe"][$this->veranstaltung->id]["aenderungsantraege"]); $bisherig->kommentare = isset($_REQUEST["Reihe"][$this->veranstaltung->id]["kommentare"]); $bisherig->save(); $msg_ok = "Die Einstellungen wurden gespeichert."; } if ($user->isGuest) { $ich = null; $eingeloggt = false; $email_angegeben = false; $email_bestaetigt = false; } else { $eingeloggt = true; /** @var Person $ich */ $ich = Person::model()->findByAttributes(array("auth" => Yii::app()->user->id)); if ($ich->email == "") { $email_angegeben = false; $email_bestaetigt = false; } elseif ($ich->email_bestaetigt) { $email_angegeben = true; $email_bestaetigt = true; } else { $email_angegeben = true; $email_bestaetigt = false; } foreach ($ich->veranstaltungsreihenAbos as $abo) { if ($abo->veranstaltungsreihe_id = $this->veranstaltungsreihe->id) { $aktuelle_einstellungen = $abo; } } } $this->render('benachrichtigungen', array("eingeloggt" => $eingeloggt, "email_angegeben" => $email_angegeben, "email_bestaetigt" => $email_bestaetigt, "aktuelle_einstellungen" => $aktuelle_einstellungen, "ich" => $ich, "msg_err" => $msg_err, "msg_ok" => $msg_ok)); }
/** * @param string $veranstaltungsreihe_id * @param string $veranstaltung_id * @param int $antrag_id * @param int $adoptInitiators */ public function actionNeu($veranstaltungsreihe_id = "", $veranstaltung_id, $antrag_id, $adoptInitiators = 0) { $this->layout = '//layouts/column2'; $this->testeWartungsmodus(); $antrag_id = IntVal($antrag_id); /** @var Antrag $antrag */ $antrag = Antrag::model()->findByPk($antrag_id); $this->loadVeranstaltung($veranstaltungsreihe_id, $veranstaltung_id, $antrag); if (!$antrag->veranstaltung->getPolicyAenderungsantraege()->checkCurUserHeuristically()) { $msg = $antrag->veranstaltung->getPolicyAenderungsantraege()->getPermissionDeniedMsg(); Yii::app()->user->setFlash("error", "Es kann kein Änderungsantrag werden: " . $msg); $this->redirect($this->createUrl("antrag/anzeige", array("antrag_id" => $antrag->id))); } $aenderungsantrag = new Aenderungsantrag(); $aenderungsantrag->aenderung_first_line_cache = -1; $aenderungsantrag->antrag = $antrag; $aenderungsantrag->antrag_id = $antrag->id; $aenderungsantrag->status = Aenderungsantrag::$STATUS_UNBESTAETIGT; $aenderungsantrag->status_string = ""; $unterstuetzerInnen = array(); $changed = false; if (AntiXSS::isTokenSet("antragneu")) { $aenderungsantrag->name_neu = $_REQUEST["Aenderungsantrag"]["name_neu"]; $aenderungsantrag->begruendung_neu = ""; $aenderungsantrag->aenderung_metatext = HtmlBBcodeUtils::html_normalize($_REQUEST["ae_metatext"]); if ($aenderungsantrag->antrag->veranstaltung->getEinstellungen()->begruendung_in_html && isset($_REQUEST["ae_begruendung_html"])) { $aenderungsantrag->aenderung_begruendung_html = 1; $aenderungsantrag->aenderung_begruendung = HtmlBBcodeUtils::html_normalize($_REQUEST["ae_begruendung"]); } else { $aenderungsantrag->aenderung_begruendung_html = 0; $aenderungsantrag->aenderung_begruendung = HtmlBBcodeUtils::bbcode_normalize($_REQUEST["ae_begruendung"]); } if ($aenderungsantrag->name_neu != $antrag->name) { $changed = true; } if (trim($aenderungsantrag->aenderung_metatext) != "") { $changed = true; } $orig_absaetze = $antrag->getParagraphs(); $neue_absaetze = array(); $neuer_text = ""; for ($i = 0; $i < count($orig_absaetze); $i++) { /** @var AntragAbsatz $abs */ $abs = $orig_absaetze[$i]; if (isset($_REQUEST["change_text"][$i])) { $abs_text = HtmlBBcodeUtils::bbcode_normalize($_REQUEST["neu_text"][$i]); $neue_absaetze[$i] = $abs_text; $neuer_text .= $abs_text . "\n\n"; $changed = true; } else { $neue_absaetze[$i] = ""; $neuer_text .= $abs->str_bbcode . "\n\n"; } } if ($changed) { $aenderungsantrag->setDiffParagraphs($neue_absaetze); $diff = DiffUtils::getTextDiffMitZeilennummern($antrag->text, $neuer_text, $antrag->veranstaltung->getEinstellungen()->zeilenlaenge); $diff_text = ""; if ($aenderungsantrag->name_neu != $antrag->name) { $diff_text .= "Neuer Titel des Antrags:\n[QUOTE]" . $aenderungsantrag->name_neu . "[/QUOTE]\n\n"; } if (trim($aenderungsantrag->aenderung_metatext) != "") { $diff_text = $aenderungsantrag->aenderung_metatext . "\n\n"; } $diff_text .= DiffUtils::diff2text($diff, $antrag->getFirstLineNo()); $aenderungsantrag->aenderung_text = $diff_text; $aenderungsantrag->datum_einreichung = new CDbExpression('NOW()'); } else { Yii::app()->user->setFlash("error", "Es wurde nichts am Text geändert."); } if (!$this->veranstaltung->getPolicyAenderungsantraege()->checkAenderungsantragSubmit()) { Yii::app()->user->setFlash("error", "Keine Berechtigung zum Anlegen von Änderungsanträgen."); $changed = false; } } $hiddens = array("antrag_id" => $antrag->id); $js_protection = Yii::app()->user->isGuest; if ($js_protection) { $hiddens["form_token"] = AntiXSS::createToken("antragneu"); } else { $hiddens[AntiXSS::createToken("antragneu")] = "1"; } if ($changed) { if (!$aenderungsantrag->save()) { foreach ($aenderungsantrag->getErrors() as $val) { foreach ($val as $val2) { Yii::app()->user->setFlash("error", "Änderungsantrag konnte nicht angelegt werden: " . $val2); } } $antragstellerIn = Yii::app()->user->isGuest ? null : Person::model()->findByAttributes(array("auth" => Yii::app()->user->id)); if ($antragstellerIn === null) { $antragstellerIn = new Person(); } $this->render('bearbeiten_form', array("mode" => "neu", "antrag" => $antrag, "aenderungsantrag" => $aenderungsantrag, "antragstellerIn" => $antragstellerIn, "unterstuetzerInnen" => $unterstuetzerInnen, "hiddens" => $hiddens, "js_protection" => $js_protection, "sprache" => $aenderungsantrag->antrag->veranstaltung->getSprache())); return; } $this->veranstaltung->getPolicyAenderungsantraege()->submitAntragsstellerInView_Aenderungsantrag($aenderungsantrag); $this->redirect($this->createUrl("aenderungsantrag/neuConfirm", array("antrag_id" => $antrag_id, "aenderungsantrag_id" => $aenderungsantrag->id))); } else { if (Yii::app()->user->isGuest || $this->veranstaltung->isAdminCurUser()) { $antragstellerIn = new Person(); $antragstellerIn->typ = Person::$TYP_PERSON; } else { $antragstellerIn = Person::model()->findByAttributes(array("auth" => Yii::app()->user->id)); } if ($adoptInitiators > 0 && $this->veranstaltung->isAdminCurUser()) { $templateAmendment = $this->veranstaltung->getAmendment($adoptInitiators); if ($templateAmendment) { foreach ($templateAmendment->aenderungsantragUnterstuetzerInnen as $unt) { if ($unt->rolle == AenderungsantragUnterstuetzerInnen::$ROLLE_INITIATORIN) { $antragstellerIn = $unt->person; } if ($unt->rolle == AenderungsantragUnterstuetzerInnen::$ROLLE_UNTERSTUETZERIN) { $unterstuetzerInnen[] = $unt->person; } } } } $aenderungsantrag->name_neu = $antrag->name; $this->render('bearbeiten_form', array("mode" => "neu", "antrag" => $antrag, "aenderungsantrag" => $aenderungsantrag, "antragstellerIn" => $antragstellerIn, "unterstuetzerInnen" => $unterstuetzerInnen, "hiddens" => $hiddens, "js_protection" => $js_protection, "sprache" => $aenderungsantrag->antrag->veranstaltung->getSprache())); } }
protected function performLoginActions($code = "") { /** @var CWebUser $user */ $user = Yii::app()->getUser(); $this->msg_err = ""; $this->msg_ok = ""; if ($code != "") { $x = explode("-", $code); /** @var BenutzerIn $benutzerIn */ $benutzerIn = BenutzerIn::model()->findByPk($x[0]); if (!$benutzerIn) { $this->msg_err = "Diese Seite existiert nicht. Vielleicht wurde der Bestätigungslink falsch kopiert?"; } elseif ($benutzerIn->email_bestaetigt) { $this->msg_err = "Dieser Zugang wurde bereits bestätigt."; } elseif (!$benutzerIn->emailBestaetigen($code)) { $this->msg_err = "Diese Seite existiert nicht. Vielleicht wurde der Bestätigungslink falsch kopiert? (Beachte, dass der Link in der E-Mail nur 2-3 Tage lang gültig ist."; } else { $this->msg_ok = "Der Zugang wurde bestätigt. Ab jetzt erhältst du Benachrichtigungen per E-Mail, wenn du das so eingestellt hast."; $identity = new RISUserIdentity($benutzerIn); Yii::app()->user->login($identity); } } if (AntiXSS::isTokenSet("abmelden") && !$user->isGuest) { $user->logout(); } if (AntiXSS::isTokenSet("login_anlegen") && $user->isGuest && !isset($_REQUEST["register"])) { /** @var BenutzerIn $benutzerIn */ $benutzerIn = BenutzerIn::model()->findByAttributes(["email" => $_REQUEST["email"]]); if ($benutzerIn) { if ($benutzerIn->validate_password($_REQUEST["password"])) { $identity = new RISUserIdentity($benutzerIn); Yii::app()->user->login($identity); } else { $this->msg_err = "Das angegebene Passwort ist falsch."; } } else { $this->msg_err = "Für die angegebene E-Mail-Adresse existiert noch kein Zugang."; } } if (AntiXSS::isTokenSet("login_anlegen") && $user->isGuest && isset($_REQUEST["register"])) { /** @var BenutzerIn[] $gefundene_benutzerInnen */ $gefundene_benutzerInnen = BenutzerIn::model()->findAll(["condition" => "email='" . addslashes($_REQUEST["email"]) . "'"]); if (count($gefundene_benutzerInnen) > 0) { $this->msg_err = "Es existiert bereits ein Zugang für diese E-Mail-Adresse"; } elseif (trim($_REQUEST["password"]) == "") { $this->msg_err = "Bitte gib ein Passwort an"; } elseif ($_REQUEST["password"] != $_REQUEST["password2"]) { $this->msg_err = "Die beiden angegebenen Passwörter stimmen nicht überein."; } else { $benutzerIn = BenutzerIn::createBenutzerIn(trim($_REQUEST["email"]), $_REQUEST["password"]); if ($benutzerIn->save()) { $benutzerIn->sendEmailBestaetigungsMail(); $identity = new RISUserIdentity($benutzerIn); Yii::app()->user->login($identity); $this->msg_ok = "Der Zugang wurde angelegt. Es wurde eine Bestätigungs-Mail an die angegebene Adresse geschickt. Bitte klicke auf den Link in dieser Mail an, um E-Mail-Benachrichtigungen zu erhalten."; } else { $this->msg_err = "Leider ist ein (ungewöhnlicher) Fehler aufgetreten."; $errs = $benutzerIn->getErrors(); foreach ($errs as $err) { foreach ($err as $e) { $this->msg_err .= $e; } } } } } }
/** */ private function actionAntragslisteAmendments() { if (AntiXSS::isTokenSet('amendment_screen')) { $amendment = $this->veranstaltung->getAmendment(AntiXSS::getTokenVal('amendment_screen')); if (!$amendment) { return; } $amendment->adminFreischalten(); Yii::app()->user->setFlash("success", "Der ausgewählte Änderungsantrag wurden freigeschaltet."); } if (AntiXSS::isTokenSet('amendment_withdraw')) { $amendment = $this->veranstaltung->getAmendment(AntiXSS::getTokenVal('amendment_withdraw')); if (!$amendment) { return; } $amendment->status = Aenderungsantrag::$STATUS_EINGEREICHT_UNGEPRUEFT; $amendment->save(); Yii::app()->user->setFlash("success", "Der ausgewählte Änderungsantrag wurden zurückgezogen."); } if (AntiXSS::isTokenSet('amendment_delete')) { $amendment = $this->veranstaltung->getAmendment(AntiXSS::getTokenVal('amendment_delete')); if (!$amendment) { return; } $amendment->status = Aenderungsantrag::$STATUS_GELOESCHT; $amendment->save(); Yii::app()->user->setFlash("success", "Der ausgewählte Änderungsantrag wurden gelöscht."); } if (!isset($_POST['amendments']) || !AntiXSS::isTokenSet('save')) { return; } if (isset($_POST['screen'])) { foreach ($_POST['amendments'] as $amendmentId) { $amendment = $this->veranstaltung->getAmendment($amendmentId); if (!$amendment) { continue; } $amendment->adminFreischalten(); } Yii::app()->user->setFlash("success", "Die ausgewählten Anträge wurden freigeschaltet."); } if (isset($_POST['withdraw'])) { foreach ($_POST['amendments'] as $amendmentId) { $amendment = $this->veranstaltung->getAmendment($amendmentId); if (!$amendment) { continue; } $amendment->status = Antrag::$STATUS_EINGEREICHT_UNGEPRUEFT; $amendment->save(); } Yii::app()->user->setFlash("success", "Die ausgewählten Anträge wurden zurückgezogen."); } if (isset($_POST['delete'])) { foreach ($_POST['amendments'] as $amendmentId) { $amendment = $this->veranstaltung->getAmendment($amendmentId); if (!$amendment) { continue; } $amendment->status = Antrag::$STATUS_GELOESCHT; $amendment->save(); } Yii::app()->user->setFlash("success", "Die ausgewählten Anträge wurden gelöscht."); } }