示例#1
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()));
 }