/**
  * @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);
 }
Пример #3
0
 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");
 }
Пример #4
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()));
     }
 }
Пример #5
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);
 }
 /**
  * @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()));
     }
 }
Пример #8
0
/** @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);
Пример #9
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));
 }