/**
  * @param int $id
  * @param bool $verbose
  */
 private function recalcAeText($id, $verbose)
 {
     /** @var Aenderungsantrag $aenderungsantrag */
     $aenderungsantrag = Aenderungsantrag::model()->findByPk($id);
     if (!$aenderungsantrag) {
         die("Änderungsantrag nicht gefunden\n");
     }
     $aenderungsantrag->antrag->text = HtmlBBcodeUtils::bbcode_normalize($aenderungsantrag->antrag->text);
     $aenderungsantrag->antrag->save();
     $aenderungsantrag->calcDiffText();
     $aenderungsantrag->save(false);
     if ($verbose) {
         echo "Erledigt. Neuer Änderungstext:\n";
         echo $aenderungsantrag->aenderung_text . "\n";
     }
 }
Пример #2
0
 /**
  * @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 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()));
     }
 }