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