Exemplo n.º 1
0
 /**
  * @param string $veranstaltungsreihe_id
  * @param string $veranstaltung_id
  * @param int $antrag_id
  */
 public function actionNeuConfirm($veranstaltungsreihe_id = "", $veranstaltung_id, $antrag_id)
 {
     $this->layout = '//layouts/column2';
     $antrag_id = IntVal($antrag_id);
     /** @var Antrag $antrag */
     $antrag = Antrag::model()->findByAttributes(array("id" => $antrag_id, "status" => Antrag::$STATUS_UNBESTAETIGT));
     $this->veranstaltung = $this->loadVeranstaltung($veranstaltungsreihe_id, $veranstaltung_id, $antrag);
     if (is_null($antrag)) {
         Yii::app()->user->setFlash("error", "Antrag nicht gefunden oder bereits bestätigt.");
         $this->redirect($this->createUrl("veranstaltung/index"));
     }
     $this->testeWartungsmodus();
     if (AntiXSS::isTokenSet("antragbestaetigen")) {
         $freischaltung = $antrag->veranstaltung->getEinstellungen()->freischaltung_antraege;
         $antrag->status = $freischaltung ? Antrag::$STATUS_EINGEREICHT_UNGEPRUEFT : Antrag::$STATUS_EINGEREICHT_GEPRUEFT;
         $braucht_revision = !$freischaltung || $antrag->veranstaltung->getEinstellungen()->freischaltung_antraege_anzeigen;
         if ($braucht_revision && $antrag->revision_name == "") {
             $antrag->revision_name = $antrag->veranstaltung->naechsteAntragRevNr($antrag->typ);
         }
         $antrag->save();
         if ($antrag->veranstaltung->admin_email != "") {
             $mails = explode(",", $antrag->veranstaltung->admin_email);
             $from_name = veranstaltungsspezifisch_email_from_name($this->veranstaltung);
             $mail_text = "Es wurde ein neuer Antrag \"" . $antrag->name . "\" eingereicht.\n" . "Link: " . yii::app()->getBaseUrl(true) . $this->createUrl("antrag/anzeige", array("antrag_id" => $antrag->id));
             foreach ($mails as $mail) {
                 if (trim($mail) != "") {
                     AntraegeUtils::send_mail_log(EmailLog::$EMAIL_TYP_ANTRAG_BENACHRICHTIGUNG_ADMIN, trim($mail), null, "Neuer Antrag", $mail_text, $from_name);
                 }
             }
         }
         if ($antrag->status == Antrag::$STATUS_EINGEREICHT_GEPRUEFT) {
             $benachrichtigt = array();
             foreach ($antrag->veranstaltung->veranstaltungsreihe->veranstaltungsreihenAbos as $abo) {
                 if ($abo->antraege && !in_array($abo->person_id, $benachrichtigt)) {
                     $abo->person->benachrichtigenAntrag($antrag);
                     $benachrichtigt[] = $abo->person_id;
                 }
             }
         }
         $this->render("neu_submitted", array("antrag" => $antrag, "sprache" => $antrag->veranstaltung->getSprache()));
     } else {
         $unterstuetzerInnen = array();
         for ($i = 0; $i < 15; $i++) {
             $unterstuetzerInnen[] = array("typ" => Person::$TYP_PERSON, "name" => "");
         }
         $this->render('neu_confirm', array("antrag" => $antrag, "unterstuetzerInnen" => $unterstuetzerInnen, "sprache" => $antrag->veranstaltung->getSprache()));
     }
 }
 /**
  * @param string $veranstaltungsreihe_id
  * @param string $veranstaltung_id
  * @param int $antrag_id
  * @param int $aenderungsantrag_id
  */
 public function actionNeuConfirm($veranstaltungsreihe_id = "", $veranstaltung_id, $antrag_id, $aenderungsantrag_id)
 {
     $this->layout = '//layouts/column2';
     $aenderungsantrag = $this->getValidatedParamObjects($veranstaltungsreihe_id, $veranstaltung_id, $antrag_id, $aenderungsantrag_id);
     if ($aenderungsantrag->status != Aenderungsantrag::$STATUS_UNBESTAETIGT) {
         $this->redirect($this->createUrl("aenderungsantrag/anzeige", array("antrag_id" => $antrag_id, "aenderungsantrag_id" => $aenderungsantrag_id)));
     }
     if (AntiXSS::isTokenSet("antragbestaetigen")) {
         $freischaltung = $aenderungsantrag->antrag->veranstaltung->getEinstellungen()->freischaltung_aenderungsantraege;
         if ($freischaltung) {
             $aenderungsantrag->status = Aenderungsantrag::$STATUS_EINGEREICHT_UNGEPRUEFT;
         } else {
             $aenderungsantrag->status = Aenderungsantrag::$STATUS_EINGEREICHT_GEPRUEFT;
             $aenderungsantrag->revision_name = $aenderungsantrag->naechsteAenderungsRevNr();
         }
         $aenderungsantrag->save();
         if ($aenderungsantrag->antrag->veranstaltung->admin_email != "") {
             $mails = explode(",", $aenderungsantrag->antrag->veranstaltung->admin_email);
             $from_name = veranstaltungsspezifisch_email_from_name($this->veranstaltung);
             $mail_text = "Es wurde ein neuer Änderungsantrag zum Antrag \"" . $aenderungsantrag->antrag->name . "\" eingereicht.\n" . "Link: " . yii::app()->getBaseUrl(true) . $this->createUrl("aenderungsantrag/anzeige", array("antrag_id" => $antrag_id, "aenderungsantrag_id" => $aenderungsantrag_id));
             foreach ($mails as $mail) {
                 if (trim($mail) != "") {
                     AntraegeUtils::send_mail_log(EmailLog::$EMAIL_TYP_ANTRAG_BENACHRICHTIGUNG_ADMIN, trim($mail), null, "Neuer Änderungsantrag", $mail_text, $from_name);
                 }
             }
         }
         if ($aenderungsantrag->status == Antrag::$STATUS_EINGEREICHT_GEPRUEFT) {
             $benachrichtigt = array();
             foreach ($aenderungsantrag->antrag->veranstaltung->veranstaltungsreihe->veranstaltungsreihenAbos as $abo) {
                 if ($abo->aenderungsantraege && !in_array($abo->person_id, $benachrichtigt)) {
                     $abo->person->benachrichtigenAenderungsantrag($aenderungsantrag);
                     $benachrichtigt[] = $abo->person_id;
                 }
             }
         }
         $this->render("neu_submitted", array("aenderungsantrag" => $aenderungsantrag, "sprache" => $aenderungsantrag->antrag->veranstaltung->getSprache()));
     } else {
         $this->render('neu_confirm', array("aenderungsantrag" => $aenderungsantrag, "sprache" => $aenderungsantrag->antrag->veranstaltung->getSprache()));
     }
 }
Exemplo n.º 3
0
 /**
  * @param Veranstaltung $veranstaltung
  * @param string $betreff
  * @param string $text
  */
 public function benachrichtigen($veranstaltung, $betreff, $text)
 {
     if ($this->email == "" || !$this->email_bestaetigt) {
         return;
     }
     $abbestellen_url = yii::app()->getBaseUrl(true) . yii::app()->createUrl("veranstaltung/benachrichtigungenAbmelden", array("veranstaltungsreihe_id" => $veranstaltung->veranstaltungsreihe->subdomain, "code" => $this->getBenachrichtigungAbmeldenCode()));
     $gruss = "Hallo " . $this->name . ",\n\n";
     $from_name = veranstaltungsspezifisch_email_from_name($veranstaltung);
     $sig = "\n\nLiebe Grüße,\n   Das Antragsgrün-Team\n\n--\n\nFalls du diese Benachrichtigung abbestellen willst, kannst du das hier tun:\n" . $abbestellen_url;
     AntraegeUtils::send_mail_log(EmailLog::$EMAIL_TYP_ANTRAG_BENACHRICHTIGUNG_USER, $this->email, $this->id, $betreff, $gruss . $text . $sig, $from_name);
 }
Exemplo n.º 4
0
 public function actionNamespacedAccounts($veranstaltungsreihe_id = "", $veranstaltung_id = "")
 {
     $this->loadVeranstaltung($veranstaltungsreihe_id, $veranstaltung_id);
     if (!$this->veranstaltung->isAdminCurUser()) {
         $this->redirect($this->createUrl("/veranstaltung/login", array("back" => yii::app()->getRequest()->requestUri)));
     }
     $msg = "";
     if (AntiXSS::isTokenSet("eintragen")) {
         $text = $_REQUEST["email_text"];
         $zeilen_email = explode("\n", $_REQUEST["email_adressen"]);
         $zeilen_namen = explode("\n", $_REQUEST["namen"]);
         $email_invalid = array();
         $emails_verschickt = array();
         $emails_schonda = array();
         if (count($zeilen_email) == count($zeilen_namen)) {
             for ($zeile = 0; $zeile < count($zeilen_email); $zeile++) {
                 if (trim($zeilen_email[$zeile]) == "") {
                     continue;
                 }
                 $email = trim($zeilen_email[$zeile]);
                 $name = trim($zeilen_namen[$zeile]);
                 $valid = preg_match("/^[_a-z0-9-]+(\\.[_a-z0-9-]+)*@[a-z0-9-]+(\\.[a-z0-9-]+)*(\\.[a-z]{2,})\$/siu", $email);
                 if (!$valid) {
                     $email_invalid[] = $email;
                 } else {
                     $schon_da = Person::model()->findByAttributes(array("veranstaltungsreihe_namespace" => $this->veranstaltungsreihe->id, "email" => $email));
                     if ($schon_da) {
                         $emails_schonda[] = $email;
                         continue;
                     }
                     $password = Person::createPassword();
                     $person = new Person();
                     $person->auth = "ns_admin:" . $this->veranstaltungsreihe->id . ":" . $email;
                     $person->name = $name;
                     $person->email = $email;
                     $person->email_bestaetigt = 1;
                     $person->angelegt_datum = date("Y-m-d H:i:s");
                     $person->pwd_enc = Person::create_hash($password);
                     $person->status = Person::$STATUS_CONFIRMED;
                     $person->typ = Person::$TYP_PERSON;
                     $person->veranstaltungsreihe_namespace = $this->veranstaltungsreihe->id;
                     if ($person->save()) {
                         $link = yii::app()->getBaseUrl(true) . $this->createUrl("veranstaltung/index");
                         $mail_text = str_replace(array("%EMAIL%", "%LINK%"), array($email, $link), $text);
                         $person_id = null;
                         $from_name = veranstaltungsspezifisch_email_from_name($this->veranstaltung);
                         $reply_to = veranstaltungsspezifisch_email_reply_to($this->veranstaltung);
                         AntraegeUtils::send_mail_log(EmailLog::$EMAIL_TYP_NAMESPACED_ACCOUNT_ANGELEGT, $email, $person_id, "Antragsgrün-Zugang", $mail_text, $from_name, null, $reply_to, array("%PASSWORT%" => $password));
                         $emails_verschickt[] = $email;
                     } else {
                         $msg .= "<div class='alert alert-danger'>Bei der E-Mail-Adresse " . CHtml::encode($email) . " ist ein Fehler aufgetreten:<br>\n";
                         $msg .= CHtml::encode(print_r($person->getErrors(), true));
                         $msg .= "</div>";
                     }
                 }
             }
         }
         if (count($emails_verschickt) > 0) {
             $msg .= '<div class="alert alert-success" role="alert">';
             $msg .= count($emails_verschickt) == 1 ? "1 Zugang wurde angelegt." : count($emails_verschickt) . " Zugänge wurden angelegt.";
             $msg .= '</div>';
         }
         if (count($emails_schonda) > 0) {
             $msg .= "<div class='alert alert-danger'>Folgende angegebenen E-Mail-Adressen waren bereits registriert:<br>\n";
             foreach ($emails_schonda as $inv) {
                 $msg .= "- " . CHtml::encode($inv) . "<br>\n";
             }
             $msg .= '</div>';
         }
         if (count($email_invalid) > 0) {
             $msg .= "<div class='alert alert-danger'>Folgende angegebenen E-Mail-Adressen sind ungültig:<br>\n";
             foreach ($email_invalid as $inv) {
                 $msg .= "- " . CHtml::encode($inv) . "<br>\n";
             }
             $msg .= '</div>';
         }
     }
     $accounts = Person::model()->findAllByAttributes(array("veranstaltungsreihe_namespace" => $this->veranstaltungsreihe->id));
     $this->render("namespaced_accounts", array("accounts" => $accounts, "msg" => $msg));
 }