/** * @param string $veranstaltungsreihe_id * @param string $veranstaltung_id * @param int $antrag_id */ public function actionAes_Einpflegen($veranstaltungsreihe_id = "", $veranstaltung_id, $antrag_id) { $this->layout = '//layouts/column2'; $antrag_id = IntVal($antrag_id); /** @var Antrag $antrag */ $antrag = Antrag::model()->findByPk($antrag_id); if (is_null($antrag)) { Yii::app()->user->setFlash("error", "Der angegebene Antrag wurde nicht gefunden."); $this->redirect($this->createUrl("veranstaltung/index")); } $this->veranstaltung = $this->loadVeranstaltung($veranstaltungsreihe_id, $veranstaltung_id, $antrag); $this->testeWartungsmodus(); if (!$antrag->kannUeberarbeiten()) { Yii::app()->user->setFlash("error", "Kein Zugriff auf den Antrag"); $this->redirect($this->createUrl("antrag/anzeige", array("antrag_id" => $antrag_id))); } if (AntiXSS::isTokenSet("ueberarbeiten")) { $neuer = new Antrag(); $neuer->veranstaltung_id = $antrag->veranstaltung_id; $neuer->abgeleitet_von = $antrag->id; $neuer->typ = $antrag->typ; $neuer->text_unveraenderlich = $this->veranstaltung->getEinstellungen()->admins_duerfen_aendern ? 0 : 1; switch ($_REQUEST["titel_typ"]) { case "original": $neuer->name = $antrag->name; break; case "neu": $neuer->name = $_REQUEST["titel_neu"]; break; default: $ae = $antrag->getAenderungsAntragById($_REQUEST["titel_typ"]); if (!$ae) { die("ÄA nicht gefunden: " . $_REQUEST["titel_typ"]); } $neuer->name = $ae->name_neu; } $absatz_mapping = array(); $neue_absaetze = array(); $absae = $antrag->getParagraphs(true, false); $neu_count = 0; for ($i = 0; $i < count($absae); $i++) { $absatz_mapping[$i] = $neu_count; switch ($_REQUEST["absatz_typ"][$i]) { case "original": $neuer_text = $absae[$i]->str_bbcode; break; case "neu": $neuer_text = HtmlBBcodeUtils::bbcode_normalize($_REQUEST["neu_text"][$i]); break; default: $aes = $absae[$i]->aenderungsantraege; foreach ($aes as $ae) { if ($ae->id == $_REQUEST["absatz_typ"][$i]) { $par = $ae->getDiffParagraphs(); $neuer_text = $par[$i]; } } if (!isset($neuer_text)) { die("ÄA nicht gefunden"); } } $neu = HtmlBBcodeUtils::bbcode2html_absaetze($neuer_text, false, $antrag->veranstaltung->getEinstellungen()->zeilenlaenge); foreach ($neu["bbcode"] as $line) { $neue_absaetze[] = $line; } $neu_count += count($neu["bbcode"]); } $neuer->text = implode("\n\n", $neue_absaetze); $neuer->revision_name = $_REQUEST["rev_neu"]; $neuer->datum_einreichung = new CDbExpression('NOW()'); switch ($_REQUEST["begruendung_typ"]) { case "original": $neuer->begruendung = $antrag->begruendung; break; case "neu": $neuer->begruendung = $_REQUEST["begruendung_neu"]; break; default: die("Ungültige Eingabe"); } $neuer->status = $antrag->status == IAntrag::$STATUS_EINGEREICHT_GEPRUEFT ? IAntrag::$STATUS_EINGEREICHT_GEPRUEFT : IAntrag::$STATUS_EINGEREICHT_UNGEPRUEFT; if ($neuer->save()) { foreach ($antrag->antragUnterstuetzerInnen as $init) { if ($init->rolle == IUnterstuetzerInnen::$ROLLE_INITIATORIN) { $in = new AntragUnterstuetzerInnen(); $in->rolle = IUnterstuetzerInnen::$ROLLE_INITIATORIN; $in->position = $init->position; $in->antrag_id = $neuer->id; $in->unterstuetzerIn_id = $init->unterstuetzerIn_id; $in->kommentar = ""; $in->save(); } } $antrag->status = IAntrag::$STATUS_MODIFIZIERT; $antrag->datum_beschluss = new CDbExpression('NOW()'); $antrag->save(); foreach ($antrag->aenderungsantraege as $ae) { if (!in_array($ae->status, IAntrag::$STATI_UNSICHTBAR)) { switch ($_REQUEST["ae"][$ae->id]) { case IAntrag::$STATUS_ANGENOMMEN: case IAntrag::$STATUS_MODIFIZIERT_ANGENOMMEN: case IAntrag::$STATUS_ABGELEHNT: $ae->status = $_REQUEST["ae"][$ae->id]; $ae->save(); break; case IAntrag::$STATUS_EINGEREICHT_GEPRUEFT: $ae->aufrechterhaltenBeiNeuemAntrag($neuer, $neu_count, $absatz_mapping); break; } } } $this->redirect($this->createUrl("antrag/anzeige", array("antrag_id" => $neuer->id))); } else { die("Ein Fehler ist aufgetreten"); } die; } $aenderungsantraege = array(); foreach ($antrag->aenderungsantraege as $antr) { if (!in_array($antr->status, IAntrag::$STATI_UNSICHTBAR)) { $aenderungsantraege[] = $antr; } } $this->render("aes_einpflegen", array("antrag" => $antrag, "aenderungsantraege" => $aenderungsantraege, "sprache" => $antrag->veranstaltung->getSprache())); }
/** * @param Antrag $antrag * @throws Exception */ public function submitAntragsstellerInView_Antrag(&$antrag) { $antragstellerIn = $this->getSubmitPerson($antrag->veranstaltung->isAdminCurUser()); if ($antragstellerIn === null) { throw new Exception("Keine AntragstellerIn gefunden"); } $initiatorIn_pre = AntragUnterstuetzerInnen::model()->findAllByAttributes(array("antrag_id" => $antrag->id, "rolle" => AntragUnterstuetzerInnen::$ROLLE_INITIATORIN, "unterstuetzerIn_id" => $antragstellerIn->id)); if (count($initiatorIn_pre) == 0) { $init = new AntragUnterstuetzerInnen(); } else { $init = $initiatorIn_pre[0]; } $init->antrag_id = $antrag->id; $init->rolle = AntragUnterstuetzerInnen::$ROLLE_INITIATORIN; $init->unterstuetzerIn_id = $antragstellerIn->id; $init->position = 0; if (isset($_REQUEST["Organisation_Beschlussdatum"]) && $_REQUEST["Organisation_Beschlussdatum"] != "") { if (preg_match("/^(?<tag>[0-9]{2})\\. *(?<monat>[0-9]{2})\\. *(?<jahr>[0-9]{4})\$/", $_REQUEST["Organisation_Beschlussdatum"], $matches)) { $init->beschlussdatum = $matches["jahr"] . "-" . $matches["monat"] . "-" . $matches["tag"]; } } $init->save(); if (isset($_REQUEST["UnterstuetzerInnen_fulltext"]) && trim($_REQUEST["UnterstuetzerInnen_fulltext"]) != "") { $person = new Person(); $person->name = trim($_REQUEST["UnterstuetzerInnen_fulltext"]); $person->typ = Person::$TYP_PERSON; $person->status = Person::$STATUS_UNCONFIRMED; $person->angelegt_datum = new CDbExpression('NOW()'); $person->organisation = ""; if ($person->save()) { $unt = new AntragUnterstuetzerInnen(); $unt->antrag_id = $antrag->id; $unt->unterstuetzerIn_id = $person->id; $unt->rolle = AntragUnterstuetzerInnen::$ROLLE_UNTERSTUETZERIN; $unt->position = 0; $unt->save(); } } elseif (isset($_REQUEST["UnterstuetzerInnen_name"]) && is_array($_REQUEST["UnterstuetzerInnen_name"])) { foreach ($_REQUEST["UnterstuetzerInnen_name"] as $i => $name) { if (!$this->isValidName($name)) { continue; } $name = trim($name); $person = new Person(); $person->name = $name; $person->typ = Person::$TYP_PERSON; $person->status = Person::$STATUS_UNCONFIRMED; $person->angelegt_datum = new CDbExpression('NOW()'); if (isset($_REQUEST["UnterstuetzerInnen_organisation"]) && isset($_REQUEST["UnterstuetzerInnen_organisation"][$i])) { $person->organisation = $_REQUEST["UnterstuetzerInnen_organisation"][$i]; } if ($person->save()) { $unt = new AntragUnterstuetzerInnen(); $unt->antrag_id = $antrag->id; $unt->unterstuetzerIn_id = $person->id; $unt->rolle = AntragUnterstuetzerInnen::$ROLLE_UNTERSTUETZERIN; $unt->position = $i; $unt->save(); } } } }