Esempio n. 1
0
 /**
  * @param string $veranstaltungsreihe_id
  * @param string $veranstaltung_id
  * @param int $id
  * @throws CException
  * @throws Exception
  */
 public function actionUpdate($veranstaltungsreihe_id = "", $veranstaltung_id, $id)
 {
     $this->loadVeranstaltung($veranstaltungsreihe_id, $veranstaltung_id);
     if (!$this->veranstaltung->isAdminCurUser()) {
         $this->redirect($this->createUrl("/veranstaltung/login", array("back" => yii::app()->getRequest()->requestUri)));
     }
     /** @var $model Antrag */
     $model = Antrag::model()->with("antragUnterstuetzerInnen", "antragUnterstuetzerInnen.person")->findByPk($id, '', array("order" => "`person`.`name"));
     if (is_null($model)) {
         Yii::app()->user->setFlash("error", "Der angegebene Antrag wurde nicht gefunden.");
         $this->redirect($this->createUrl("admin/antraege"));
     }
     if ($model->veranstaltung_id != $this->veranstaltung->id) {
         return;
     }
     $this->performAjaxValidation($model, 'antrag-form');
     $messages = array();
     if (AntiXSS::isTokenSet("antrag_freischalten")) {
         $newvar = AntiXSS::getTokenVal("antrag_freischalten");
         $model->adminFreischalten($newvar);
         Yii::app()->user->setFlash("success", "Der Antrag wurde freigeschaltet.");
     }
     if (isset($_POST['Antrag'])) {
         $fixed_fields = $fixed_fields_pre = array();
         if (!$model->kannTextUeberarbeitenAdmin()) {
             $fixed_fields = array("text_unveraenderlich", "text", "begruendung");
         }
         foreach ($fixed_fields as $field) {
             $fixed_fields_pre[$field] = $model->{$field};
         }
         if (!in_array($_POST['Antrag']['status'], $model->getMoeglicheStati())) {
             throw new Exception("Status-Übergang ungültig");
         }
         $revision_name = $model->revision_name;
         $model->setAttributes($_POST['Antrag'], false);
         if ($model->revision_name != $revision_name && $revision_name != "") {
             foreach ($this->veranstaltung->antraege as $ant) {
                 if ($ant->id != $model->id && $ant->revision_name == $model->revision_name && $ant->status != Antrag::$STATUS_GELOESCHT) {
                     // Zurücksetzen + Warnung
                     $messages[] = "Das vergebene Antragskürzel \"" . $model->revision_name . "\" wird bereits von einem anderen Antrag verwendet.";
                     $model->revision_name = $revision_name;
                 }
             }
         }
         foreach ($fixed_fields_pre as $field => $val) {
             $model->{$field} = $val;
         }
         Yii::import('ext.datetimepicker.EDateTimePicker');
         $model->datum_einreichung = EDateTimePicker::parseInput($_POST["Antrag"], "datum_einreichung");
         $model->datum_beschluss = EDateTimePicker::parseInput($_POST["Antrag"], "datum_beschluss");
         $relatedData = array();
         if ($model->saveWithRelated($relatedData)) {
             $model->veranstaltung->resetLineCache();
             UnterstuetzerInnenAdminWidget::saveUnterstuetzerInnenWidget($model, $messages, "AntragUnterstuetzerInnen", "antrag_id", $id);
             $model = Antrag::model()->with("antragUnterstuetzerInnen", "antragUnterstuetzerInnen.person")->findByPk($id, '', array("order" => "`person`.`name"));
         }
     }
     $this->render('update', array('model' => $model, 'messages' => $messages));
 }
 public function actionUpdate($veranstaltungsreihe_id = "", $veranstaltung_id)
 {
     $this->loadVeranstaltung($veranstaltungsreihe_id, $veranstaltung_id);
     $model = $this->veranstaltung;
     if (!$model->isAdminCurUser()) {
         $this->redirect($this->createUrl("/veranstaltung/login", array("back" => yii::app()->getRequest()->requestUri)));
     }
     if (is_null($model)) {
         Yii::app()->user->setFlash("error", "Die angegebene Veranstaltungen wurde nicht gefunden.");
         $this->redirect($this->createUrl("admin/veranstaltungen"));
     }
     $this->performAjaxValidation($model, 'veranstaltung-form');
     if (isset($_POST['Veranstaltung'])) {
         $model->setAttributes($_POST['Veranstaltung']);
         Yii::import('ext.datetimepicker.EDateTimePicker');
         $model->antragsschluss = EDateTimePicker::parseInput($_POST["Veranstaltung"], "antragsschluss");
         $einstellungen = $model->getEinstellungen();
         $einstellungen->saveForm($_REQUEST["VeranstaltungsEinstellungen"]);
         if (isset($_REQUEST["VeranstaltungsEinstellungen"]["ae_nummerierung"])) {
             switch ($_REQUEST["VeranstaltungsEinstellungen"]["ae_nummerierung"]) {
                 case 0:
                     $einstellungen->ae_nummerierung_nach_zeile = false;
                     $einstellungen->ae_nummerierung_global = false;
                     break;
                 case 1:
                     $einstellungen->ae_nummerierung_nach_zeile = false;
                     $einstellungen->ae_nummerierung_global = true;
                     break;
                 case 2:
                     $einstellungen->ae_nummerierung_nach_zeile = true;
                     $einstellungen->ae_nummerierung_global = false;
                     break;
             }
         }
         $model->setEinstellungen($einstellungen);
         $relatedData = array();
         if ($model->saveWithRelated($relatedData)) {
             $model->resetLineCache();
             $this->redirect(array('update'));
         }
     }
     $this->render('update', array('model' => $model));
 }
 /**
  * @param string $veranstaltungsreihe_id
  * @param string $veranstaltung_id
  * @param int $id
  * @throws CException
  * @throws Exception
  */
 public function actionUpdate($veranstaltungsreihe_id = "", $veranstaltung_id, $id)
 {
     $this->loadVeranstaltung($veranstaltungsreihe_id, $veranstaltung_id);
     if (!$this->veranstaltung->isAdminCurUser()) {
         $this->redirect($this->createUrl("/veranstaltung/login", array("back" => yii::app()->getRequest()->requestUri)));
     }
     /** @var $model Aenderungsantrag */
     $model = Aenderungsantrag::model()->with("aenderungsantragUnterstuetzerInnen", "aenderungsantragUnterstuetzerInnen.person")->findByPk($id, '', array("order" => "`person`.`name"));
     if (is_null($model) || $model->status == IAntrag::$STATUS_GELOESCHT) {
         Yii::app()->user->setFlash("error", "Der angegebene Änderungsantrag wurde nicht gefunden.");
         $this->redirect($this->createUrl("/admin/aenderungsantraege"));
     }
     if ($model->antrag->veranstaltung_id != $this->veranstaltung->id) {
         Yii::app()->user->setFlash("error", "Der angegebene Änderungsantrag gehört nicht zu dieser Veranstaltung.");
         $this->redirect($this->createUrl("/admin/aenderungsantraege"));
     }
     $this->performAjaxValidation($model, 'aenderungsantrag-form');
     $messages = array();
     if (AntiXSS::isTokenSet("antrag_freischalten")) {
         $newvar = AntiXSS::getTokenVal("antrag_freischalten");
         $model->revision_name = $newvar;
         if ($model->status == IAntrag::$STATUS_EINGEREICHT_UNGEPRUEFT) {
             $model->status = IAntrag::$STATUS_EINGEREICHT_GEPRUEFT;
         }
         $model->save();
         Yii::app()->user->setFlash("success", "Der Änderungsantrag wurde freigeschaltet.");
         if ($model->status == Antrag::$STATUS_EINGEREICHT_GEPRUEFT) {
             $benachrichtigt = array();
             foreach ($model->antrag->veranstaltung->veranstaltungsreihe->veranstaltungsreihenAbos as $abo) {
                 if ($abo->aenderungsantraege && !in_array($abo->person_id, $benachrichtigt)) {
                     $abo->person->benachrichtigenAenderungsantrag($model);
                     $benachrichtigt[] = $abo->person_id;
                 }
             }
         }
     }
     if (isset($_POST['Aenderungsantrag'])) {
         if (!in_array($_POST['Aenderungsantrag']['status'], $model->getMoeglicheStati())) {
             throw new Exception("Status-Übergang ungültig");
         }
         $revision_name = $model->revision_name;
         $model->setAttributes($_POST['Aenderungsantrag'], false);
         Yii::import('ext.datetimepicker.EDateTimePicker');
         $model->datum_einreichung = EDateTimePicker::parseInput($_POST["Aenderungsantrag"], "datum_einreichung");
         $model->datum_beschluss = EDateTimePicker::parseInput($_POST["Aenderungsantrag"], "datum_beschluss");
         if ($model->revision_name != $revision_name && $revision_name != "") {
             foreach ($this->veranstaltung->antraege as $ant) {
                 foreach ($ant->aenderungsantraege as $aend) {
                     if ($aend->id != $model->id && $aend->revision_name == $model->revision_name && $aend->status != Aenderungsantrag::$STATUS_GELOESCHT) {
                         // Zurücksetzen + Warnung
                         $messages[] = "Das vergebene Kürzel \"" . $model->revision_name . "\" wird bereits von einem anderen Änderungsantrag verwendet.";
                         $model->revision_name = $revision_name;
                     }
                 }
             }
         }
         if ($model->save()) {
             UnterstuetzerInnenAdminWidget::saveUnterstuetzerInnenWidget($model, $messages, "AenderungsantragUnterstuetzerInnen", "aenderungsantrag_id", $id);
             $model = Aenderungsantrag::model()->with("aenderungsantragUnterstuetzerInnen", "aenderungsantragUnterstuetzerInnen.person")->findByPk($id, '', array("order" => "`person`.`name"));
         }
     }
     $this->render('update', array('model' => $model, 'messages' => $messages));
 }