/** * @param bool $html * @return string */ public function getNameMitBeschlussdatum($html = true) { if ($html) { $name = CHtml::encode($this->person->getNameMitOrga()); if ($this->beschlussdatum > 0) { $name .= " <small style='font-weight: normal;'>(beschlossen am " . AntraegeUtils::date_sql2de($this->beschlussdatum) . ")</small>"; } } else { $name = $this->person->getNameMitOrga(); if ($this->beschlussdatum > 0) { $name .= " (beschlossen am " . AntraegeUtils::date_sql2de($this->beschlussdatum) . ")"; } } return $name; }
/** * @param string $email * @param string|null $password * @param string|null $bestaetigungscode * @return array */ protected function loginOderRegistrieren_backend($email, $password = null, $bestaetigungscode = null) { $msg_ok = $msg_err = ""; $correct_person = null; $person = Person::model()->findAll(array("condition" => "email='" . addslashes($email) . "' AND pwd_enc != ''")); if (count($person) > 0) { /** @var Person $p */ $p = $person[0]; if ($p->email_bestaetigt) { if ($p->validate_password($password)) { $correct_person = $p; if ($p->istWurzelwerklerIn()) { $identity = new AntragUserIdentityPasswd($p->getWurzelwerkName(), $p->auth); } else { $identity = new AntragUserIdentityPasswd($p->email, $p->auth); } Yii::app()->user->login($identity); } else { $msg_err = "Das angegebene Passwort ist leider falsch."; } } else { if ($p->checkEmailBestaetigungsCode($bestaetigungscode)) { $p->email_bestaetigt = 1; if ($p->save()) { $msg_ok = "Die E-Mail-Adresse wurde freigeschaltet. Ab jetzt wirst du entsprechend deinen Einstellungen benachrichtigt."; $identity = new AntragUserIdentityPasswd($p->email, $p->auth); Yii::app()->user->login($identity); } else { $msg_err = "Ein sehr seltsamer Fehler ist aufgetreten."; } } else { $msg_err = "Leider stimmt der angegebene Code nicht"; } } } else { $email = trim($email); $passwort = Person::createPassword(); $person = new Person(); $person->auth = "email:" . $email; $person->name = $email; $person->email = $email; $person->email_bestaetigt = 0; $person->angelegt_datum = date("Y-m-d H:i:s"); $person->status = Person::$STATUS_UNCONFIRMED; $person->typ = Person::$TYP_PERSON; $person->pwd_enc = Person::create_hash($passwort); if ($person->save()) { $person->refresh(); $best_code = $person->createEmailBestaetigungsCode(); $link = Yii::app()->getBaseUrl(true) . $this->createUrl("veranstaltung/benachrichtigungen", array("code" => $best_code)); $send_text = "Hallo,\n\num Benachrichtigungen bei Antragsgrün zu erhalten, klicke entweder auf folgenden Link:\n%best_link%\n\n" . "...oder gib, wenn du auf Antragsgrün danach gefragt wirst, folgenden Code ein: %code%\n\n" . "Das Passwort für den Antragsgrün-Zugang lautet: %passwort%\n\n" . "Liebe Grüße,\n\tDas Antragsgrün-Team."; AntraegeUtils::send_mail_log(EmailLog::$EMAIL_TYP_REGISTRIERUNG, $email, $person->id, "Anmeldung bei Antragsgrün", $send_text, null, null, null, array("%code%" => $best_code, "%best_link%" => $link, "%passwort%" => $passwort)); $correct_person = $person; $identity = new AntragUserIdentityPasswd($email, $person->auth); Yii::app()->user->login($identity); } else { $msg_err = "Leider ist ein (ungewöhnlicher) Fehler aufgetreten."; $errs = $person->getErrors(); foreach ($errs as $err) { foreach ($err as $e) { $msg_err .= $e; } } } } return array($correct_person, $msg_ok, $msg_err); }
public function run($args) { AntraegeUtils::send_email_mandrill("*****@*****.**", "Test", "Test", null, "test", "Antragsgrün", "*****@*****.**", null); //AntraegeUtils::send_mail_log(EmailLog::$EMAIL_TYP_SONSTIGES, $args[0], null, "Test", "Test"); }
/** * @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 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); }
/** * @param Veranstaltung $veranstaltung * @return array */ private function getFeedAntragKommentarData(&$veranstaltung) { $veranstaltung_id = IntVal($veranstaltung->id); $antraege = AntragKommentar::holeNeueste($veranstaltung, 20); $data = array(); foreach ($antraege as $ant) { $data[AntraegeUtils::date_sql2timestamp($ant->datum) . "_kommentar_" . $ant->id] = array("title" => "Kommentar von " . $ant->verfasserIn->name . " zu: " . $ant->antrag->nameMitRev(), "link" => Yii::app()->getBaseUrl(true) . $this->createUrl("antrag/anzeige", array("antrag_id" => $ant->antrag->id, "kommentar_id" => $ant->id, "#" => "komm" . $ant->id)), "dateCreated" => AntraegeUtils::date_sql2timestamp($ant->datum), "content" => HtmlBBcodeUtils::bbcode2html($ant->text)); } return $data; }
/** * @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())); } }
/** @var array|string[] $initiatorinnen */ $initiatorinnen = array(); $unterstuetzerInnen = array(); foreach ($model->antragUnterstuetzerInnen as $unt) { if ($unt->rolle == IUnterstuetzerInnen::$ROLLE_INITIATORIN) { $name = $unt->person->name; if ($unt->person->organisation != "" || $unt->beschlussdatum > 0) { $name .= " ("; if ($unt->person->organisation != "") { $name .= $unt->person->organisation; } if ($unt->person->organisation != "" && $unt->beschlussdatum > 0) { $name .= ", "; } if ($unt->beschlussdatum > 0) { $name .= "Beschlossen am " . AntraegeUtils::date_sql2de($unt->beschlussdatum); } $name .= ")"; } $initiatorinnen[] = $name; } if ($unt->rolle == IUnterstuetzerInnen::$ROLLE_UNTERSTUETZERIN) { $unterstuetzerInnen[] = $unt->person; } } // set document information $pdf->SetCreator(PDF_CREATOR); $pdf->SetAuthor(implode(", ", $initiatorinnen)); $pdf->SetTitle($sprache->get("Antrag") . " " . $model->nameMitRev()); $pdf->SetSubject($sprache->get("Antrag") . " " . $model->nameMitRev()); //$pdf->SetSubject($model->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)); }