/**
  * @param Aenderungsantrag $aenderungsantrag
  * @param int $kommentar_id
  */
 private function performAnzeigeActions($aenderungsantrag, $kommentar_id)
 {
     if (AntiXSS::isTokenSet("komm_del")) {
         /** @var AenderungsantragKommentar $komm */
         $komm = AenderungsantragKommentar::model()->findByPk(AntiXSS::getTokenVal("komm_del"));
         if ($komm->aenderungsantrag_id == $aenderungsantrag->id && $komm->kannLoeschen(Yii::app()->user) && $komm->status == IKommentar::$STATUS_FREI) {
             $komm->status = IKommentar::$STATUS_GELOESCHT;
             $komm->save();
             Yii::app()->user->setFlash("success", "Der Kommentar wurde gelöscht.");
             $benachrichtigt = array();
             foreach ($aenderungsantrag->antrag->veranstaltung->veranstaltungsreihe->veranstaltungsreihenAbos as $abo) {
                 if ($abo->kommentare && !in_array($abo->person_id, $benachrichtigt)) {
                     $abo->person->benachrichtigenKommentar($komm);
                     $benachrichtigt[] = $abo->person_id;
                 }
             }
         } else {
             Yii::app()->user->setFlash("error", "Kommentar nicht gefunden oder keine Berechtigung.");
         }
     }
     if (AntiXSS::isTokenSet("komm_freischalten") && $kommentar_id > 0) {
         /** @var AenderungsantragKommentar $komm */
         $komm = AenderungsantragKommentar::model()->findByPk($kommentar_id);
         if ($komm->aenderungsantrag_id == $aenderungsantrag->id && $komm->status == IKommentar::$STATUS_NICHT_FREI && $aenderungsantrag->antrag->veranstaltung->isAdminCurUser()) {
             $komm->status = IKommentar::$STATUS_FREI;
             $komm->save();
             Yii::app()->user->setFlash("success", "Der Kommentar wurde freigeschaltet.");
         } else {
             Yii::app()->user->setFlash("error", "Kommentar nicht gefunden oder keine Berechtigung.");
         }
     }
     if (AntiXSS::isTokenSet("komm_nicht_freischalten") && $kommentar_id > 0) {
         /** @var AenderungsantragKommentar $komm */
         $komm = AenderungsantragKommentar::model()->findByPk($kommentar_id);
         if ($komm->aenderungsantrag_id == $aenderungsantrag->id && $komm->status == IKommentar::$STATUS_NICHT_FREI && $aenderungsantrag->antrag->veranstaltung->isAdminCurUser()) {
             $komm->status = IKommentar::$STATUS_GELOESCHT;
             $komm->save();
             Yii::app()->user->setFlash("success", "Der Kommentar wurde gelöscht.");
         } else {
             Yii::app()->user->setFlash("error", "Kommentar nicht gefunden oder keine Berechtigung.");
         }
     }
     if (AntiXSS::isTokenSet("mag") && $this->veranstaltung->getPolicyUnterstuetzen()->checkAenderungsantragSubmit()) {
         $userid = Yii::app()->user->getState("person_id");
         foreach ($aenderungsantrag->aenderungsantragUnterstuetzerInnen as $unt) {
             if ($unt->unterstuetzerIn_id == $userid) {
                 $unt->delete();
             }
         }
         $unt = new AenderungsantragUnterstuetzerInnen();
         $unt->aenderungsantrag_id = $aenderungsantrag->id;
         $unt->unterstuetzerIn_id = $userid;
         $unt->rolle = "mag";
         $unt->kommentar = "";
         if ($unt->save()) {
             Yii::app()->user->setFlash("success", "Du unterstützt diesen Änderungsantrag nun.");
         } else {
             Yii::app()->user->setFlash("error", "Ein (seltsamer) Fehler ist aufgetreten.");
         }
         $this->redirect($this->createUrl("aenderungsantrag/anzeige", array("antrag_id" => $aenderungsantrag->antrag_id, "aenderungsantrag_id" => $aenderungsantrag->id)));
     }
     if (AntiXSS::isTokenSet("magnicht") && $this->veranstaltung->getPolicyUnterstuetzen()->checkAenderungsantragSubmit()) {
         $userid = Yii::app()->user->getState("person_id");
         foreach ($aenderungsantrag->aenderungsantragUnterstuetzerInnen as $unt) {
             if ($unt->unterstuetzerIn_id == $userid) {
                 $unt->delete();
             }
         }
         $unt = new AenderungsantragUnterstuetzerInnen();
         $unt->aenderungsantrag_id = $aenderungsantrag->id;
         $unt->unterstuetzerIn_id = $userid;
         $unt->rolle = "magnicht";
         $unt->kommentar = "";
         $unt->save();
         if ($unt->save()) {
             Yii::app()->user->setFlash("success", "Du lehnst diesen Änderungsantrag nun ab.");
         } else {
             Yii::app()->user->setFlash("error", "Ein (seltsamer) Fehler ist aufgetreten.");
         }
         $this->redirect($this->createUrl("aenderungsantrag/anzeige", array("antrag_id" => $aenderungsantrag->antrag_id, "aenderungsantrag_id" => $aenderungsantrag->id)));
     }
     if (AntiXSS::isTokenSet("dochnicht") && $this->veranstaltung->getPolicyUnterstuetzen()->checkAenderungsantragSubmit()) {
         $userid = Yii::app()->user->getState("person_id");
         foreach ($aenderungsantrag->aenderungsantragUnterstuetzerInnen as $unt) {
             if ($unt->unterstuetzerIn_id == $userid) {
                 $unt->delete();
             }
         }
         Yii::app()->user->setFlash("success", "Du stehst diesem Änderungsantrag wieder neutral gegenüber.");
         $this->redirect($this->createUrl("aenderungsantrag/anzeige", array("antrag_id" => $aenderungsantrag->antrag_id, "aenderungsantrag_id" => $aenderungsantrag->id)));
     }
 }
 /**
  * @param Antrag $antrag
  * @param int $anz_absaetze_neu
  * @param array $absatz_mapping
  * @return Aenderungsantrag
  */
 public function aufrechterhaltenBeiNeuemAntrag($antrag, $anz_absaetze_neu, $absatz_mapping)
 {
     $neuer_ae = new Aenderungsantrag();
     $neuer_ae->antrag_id = $antrag->id;
     $neuer_ae->revision_name = $this->revision_name;
     $neuer_ae->name_neu = $this->name_neu;
     $neuer_ae->begruendung_neu = $this->begruendung_neu;
     $neuer_ae->aenderung_begruendung = $this->aenderung_begruendung;
     $neuer_ae->datum_einreichung = $this->datum_einreichung;
     $neuer_ae->aenderung_first_line_cache = -1;
     $neuer_ae->status_string = "";
     $neuer_ae->status = IAntrag::$STATUS_EINGEREICHT_GEPRUEFT;
     $text_neu = array();
     for ($i = 0; $i < $anz_absaetze_neu; $i++) {
         $text_neu[$i] = "";
     }
     $old_abs = json_decode($this->text_neu);
     foreach ($old_abs as $abs => $str) {
         $text_neu[$absatz_mapping[$abs]] = $str;
     }
     $neuer_ae->setDiffParagraphs($text_neu);
     $neuer_ae->calcDiffText();
     if (!$neuer_ae->save()) {
         var_dump($neuer_ae->attributes);
     }
     foreach ($this->aenderungsantragUnterstuetzerInnen as $init) {
         if ($init->rolle == IUnterstuetzerInnen::$ROLLE_INITIATORIN) {
             $in = new AenderungsantragUnterstuetzerInnen();
             $in->rolle = IUnterstuetzerInnen::$ROLLE_INITIATORIN;
             $in->position = $init->position;
             $in->aenderungsantrag_id = $neuer_ae->id;
             $in->unterstuetzerIn_id = $init->unterstuetzerIn_id;
             $in->kommentar = "";
             $in->save();
         }
     }
 }
 /**
  * @param Aenderungsantrag $aenderungsantrag
  * @throws Exception
  */
 public function submitAntragsstellerInView_Aenderungsantrag(&$aenderungsantrag)
 {
     $antragstellerIn = $this->getSubmitPerson($aenderungsantrag->antrag->veranstaltung->isAdminCurUser());
     if ($antragstellerIn === null) {
         throw new Exception("Keine AntragstellerIn gefunden");
     }
     $init = new AenderungsantragUnterstuetzerInnen();
     $init->aenderungsantrag_id = $aenderungsantrag->id;
     $init->rolle = AenderungsantragUnterstuetzerInnen::$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 AenderungsantragUnterstuetzerInnen();
             $unt->aenderungsantrag_id = $aenderungsantrag->id;
             $unt->unterstuetzerIn_id = $person->id;
             $unt->rolle = AenderungsantragUnterstuetzerInnen::$ROLLE_UNTERSTUETZERIN;
             $unt->position = 0;
             $unt->save();
         }
     } elseif (isset($_REQUEST["UnterstuetzerInnen_name"]) && is_array($_REQUEST["UnterstuetzerInnen_name"])) {
         foreach ($_REQUEST["UnterstuetzerInnen_name"] as $i => $name) {
             $name = trim($name);
             if (!$this->isValidName($name)) {
                 continue;
             }
             $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_orga"]) && isset($_REQUEST["UnterstuetzerInnen_orga"][$i])) {
                 $person->organisation = $_REQUEST["UnterstuetzerInnen_orga"][$i];
             }
             if ($person->save()) {
                 $unt = new AenderungsantragUnterstuetzerInnen();
                 $unt->aenderungsantrag_id = $aenderungsantrag->id;
                 $unt->unterstuetzerIn_id = $person->id;
                 $unt->rolle = AenderungsantragUnterstuetzerInnen::$ROLLE_UNTERSTUETZERIN;
                 $unt->position = $i;
                 $unt->save();
             }
         }
     }
 }