/** * @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)); }