Ejemplo n.º 1
0
 /**
  * @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()));
 }
Ejemplo n.º 2
0
 /**
  * @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();
             }
         }
     }
 }