/**
  * @param string $new_pw
  * @throws Exception
  */
 public function setPassword($new_pw)
 {
     if (!defined("SITE_CALL_MODE") || SITE_CALL_MODE !== "shell") {
         throw new Exception("Diese Funktion kann nur über die Kommandozeile aufgerufen werden.");
     }
     $this->pwd_enc = BenutzerIn::create_hash($new_pw);
     $this->save(false);
 }
 public function actionIndex($code = "")
 {
     $this->top_menu = "benachrichtigungen";
     $this->requireLogin($this->createUrl("index/benachrichtigungen"), $code);
     /** @var BenutzerIn $ich */
     $ich = $this->aktuelleBenutzerIn();
     $this->load_leaflet_css = true;
     $this->load_leaflet_draw_css = true;
     if (AntiXSS::isTokenSet("einstellungen_speichern")) {
         $einstellungen = $ich->getEinstellungen();
         if (isset($_REQUEST["intervall"]) && $_REQUEST["intervall"] == "tag") {
             $einstellungen->benachrichtigungstag = null;
         }
         if (isset($_REQUEST["intervall"]) && $_REQUEST["intervall"] == "woche") {
             if (isset($_REQUEST["wochentag"])) {
                 $einstellungen->benachrichtigungstag = IntVal($_REQUEST["wochentag"]);
             }
         }
         $ich->setEinstellungen($einstellungen);
         $ich->save();
         $this->msg_ok = "Die Einstellung wurde gespeichert.";
     }
     if (AntiXSS::isTokenSet("del_ben")) {
         foreach ($_REQUEST[AntiXSS::createToken("del_ben")] as $ben => $_val) {
             $bena = json_decode(rawurldecode($ben), true);
             $krit = new RISSucheKrits($bena);
             $ich->delBenachrichtigung($krit);
             $this->msg_ok = "Die Benachrichtigung wurde entfernt.";
         }
     }
     if (AntiXSS::isTokenSet("ben_add_text")) {
         $suchbegriff = trim($_REQUEST["suchbegriff"]);
         if ($suchbegriff == "") {
             $this->msg_err = "Bitte gib einen Suchausdruck an.";
         } else {
             $ben = new RISSucheKrits();
             $ben->addVolltextsucheKrit($suchbegriff);
             $ich->addBenachrichtigung($ben);
             $this->msg_ok = "Die Benachrichtigung wurde hinzugefügt.";
         }
     }
     if (AntiXSS::isTokenSet("ben_add_ba")) {
         $ben = new RISSucheKrits();
         $ben->addBAKrit($_REQUEST["ba"]);
         $ich->addBenachrichtigung($ben);
         $this->msg_ok = "Die Benachrichtigung wurde hinzugefügt.";
     }
     if (AntiXSS::isTokenSet("ben_add_geo")) {
         if ($_REQUEST["geo_lng"] == 0 || $_REQUEST["geo_lat"] == 0 || $_REQUEST["geo_radius"] <= 0) {
             $this->msg_err = "Ungültige Eingabe.";
         } else {
             $ben = new RISSucheKrits();
             $ben->addGeoKrit($_REQUEST["geo_lng"], $_REQUEST["geo_lat"], $_REQUEST["geo_radius"]);
             $ich->addBenachrichtigung($ben);
             $this->msg_ok = "Die Benachrichtigung wurde hinzugefügt.";
         }
     }
     if (AntiXSS::isTokenSet("del_vorgang_abo")) {
         foreach (AntiXSS::getTokenVal("del_vorgang_abo") as $vorgang_id => $_tmp) {
             /** @var Vorgang $vorgang */
             $vorgang = Vorgang::model()->findByPk($vorgang_id);
             $vorgang->deabonnieren($ich);
             $this->msg_ok = "Der Vorgang wurde entfernt.";
         }
     }
     if (AntiXSS::isTokenSet("account_loeschen")) {
         $this->top_menu = "Accountlöschung";
         $this->requireLogin($this->createUrl("index/benachrichtigungen"));
         $ich = $this->aktuelleBenutzerIn();
         $id = $ich->id;
         if ($ich != NULL) {
             $ich->email = NULL;
             $ich->email_bestaetigt = 0;
             $ich->pwd_enc = NULL;
             $ich->datum_angelegt = NULL;
             $ich->datum_letzte_benachrichtigung = NULL;
             $ich->berechtigungen_flags = 0;
             $ich->einstellungen_object = NULL;
             $ich->einstellungen = NULL;
             $ich->save(false);
             Yii::app()->db->createCommand("DELETE FROM `benutzerInnen_vorgaenge_abos` WHERE `benutzerInnen_id` = :BenutzerInId")->bindValues([':BenutzerInId' => $ich->id])->execute();
             $this->msg_ok = "Account gelöscht";
             /** @var CWebUser $user */
             $user = Yii::app()->getUser();
             if ($user) {
                 $user->logout();
             }
         } else {
             $this->msg_err = "Sie sind nicht angemeldet";
         }
         $this->redirect(Yii::app()->createUrl("index/startseite"));
         Yii::app()->end();
     }
     if (AntiXSS::isTokenSet("passwort_aendern")) {
         /** @var null|BenutzerIn $ich  */
         $ich = $this->aktuelleBenutzerIn();
         if ($ich) {
             if ($_REQUEST["password"] == $_REQUEST["password2"]) {
                 $ich->pwd_enc = BenutzerIn::create_hash($_REQUEST["password"]);
                 $ich->save();
                 $this->msg_ok = "Passwort geändert";
             } else {
                 $this->msg_err = "Die beiden Passwörter stimmen nicht überein";
             }
         } else {
             $this->render('/index/error', ["code" => 403, "message" => "Sie sind nicht angemeldet."]);
         }
     }
     $this->render("index", ["ich" => $ich]);
 }