public function createPassForStudiAndMail(Connection $conn, $matrnr, $len)
 {
     $len = intval($len);
     if ($len <= 0) {
         $len = rand(6, 12);
     }
     $count = count($this->alpha);
     $pass = "";
     while ($len >= 0) {
         $pass .= $this->alpha[rand(0, $count - 1)];
         $len = $len - 1;
     }
     $email = "";
     if ($email = $this->writepass($conn, $matrnr, $pass)) {
         Mailer::mailit($email, "Neues Passwort", "Dein Passwort lautet \"{$pass}\"\r\n\\Du kannst Dich jetzt unter \r\n " . Config::PRAVER_ROOT_URL . " \r\n mit Deiner Matrikelnummer und diesem Passwort anmelden.");
         return true;
     } else {
         return false;
     }
 }
 public function notenAbgeben($anfachid, $notenstatus, $termin, ErrorQueue $err, UtilBuffer $notenwerte, UtilBuffer $matrnummer, UtilBuffer $fehlendeVorleistungen)
 {
     $anfachid = intval($anfachid);
     $notenstatus = intval($notenstatus);
     $freigebenAmEnde = false;
     // Ob das Fach nach der Notenabgabe freigegeben werden soll.
     if ($notenwerte->getCount() != $matrnummer->getCount() || $notenwerte->getCount() != $fehlendeVorleistungen->getCount()) {
         $err->addError("Systemfehler: Funktion 'notenAbgeben' wurde mit fehlerhaften Patametern aufgerufen.");
         return false;
     }
     if ($anfach = AngebotenesFach::readAngebotenesFach($this->conn, $err, $anfachid)) {
         $fach = $anfach->getFach();
         $hatGemeinsame = $fach->hatGemeinsameLeistungen();
         $istPruefung = $fach->istPruefung();
         if (-1 == $hatGemeinsame) {
             $err->addError($fach->getLastError());
             return false;
         }
         if (1 == $hatGemeinsame) {
             if ($istPruefung) {
                 $notenstatus = $notenstatus == Note::STATUS_TEILNOTE ? Note::STATUS_TEILNOTE : Note::STATUS_ENDNOTE;
                 // Wenn das eine Prüfung ist, die mit gemeinsamen Leistungen verbunden ist
                 // dann wird ersmal überprüft, was überhaupt abgegeben wurde
                 $abgabeStatus = $anfach->getNotenabgabeStatus();
                 if (-1 == $abgabeStatus) {
                     $err->addError($anfach->getLastError());
                     return false;
                 }
                 if ($notenstatus == Note::STATUS_TEILNOTE && $abgabeStatus == Note::STATUS_TEILNOTE) {
                     $err->addError("Sie haben die Teilnoten f&uuml;r dieses Fach schon vergeben.");
                     return false;
                 }
                 if ($notenstatus == Note::STATUS_ENDNOTE && $abgabeStatus == Note::STATUS_ENDNOTE) {
                     $err->addError("Sie haben die Endnoten f&uuml;r dieses Fach schon vergeben.");
                     return false;
                 }
                 $endnote = $notenstatus;
                 if ($abgabeStatus == 0) {
                     $freigebenAmEnde = false;
                 } else {
                     $freigebenAmEnde = true;
                 }
             } else {
                 $endnote = Note::STATUS_TEILNOTE;
                 $freigebenAmEnde = true;
             }
         } else {
             if ($istPruefung) {
                 $endnote = Note::STATUS_ENDNOTE;
             } else {
                 $endnote = Note::STATUS_TEILNOTE;
             }
             $freigebenAmEnde = true;
         }
     } else {
         $err->addError("Das Fach ist nicht mehr angeboten. Sie k&ouml;nnen nur Noten abgeben, wenn Sie das Fach anbieten.");
         return false;
     }
     if ($endnote == Note::STATUS_TEILNOTE) {
         $endnoteString = "TEILNOTE";
     } else {
         $endnoteString = "ENDNOTE";
     }
     $dozentmessage = "Hallo " . $this->getName() . ",\r\n";
     $dozentmessage .= "Sie haben gerade die folgenden Noten zum Fach " . $anfach->getKennzahl() . " " . $anfach->getName() . " abgegeben.\r\n\r\n";
     for ($i = 0; $i < $notenwerte->getCount(); $i++) {
         $notenwert = $notenwerte->get($i);
         $matrnr = $matrnummer->get($i);
         $kennzahl = $anfach->getKennzahl();
         $kennziffer = $anfach->getKennziffer();
         $termin = addslashes($termin);
         $fehlende = $fehlendeVorleistungen->get($i);
         $interpretation = Note::getInterpretation($notenwert);
         $bestanden = Note::retrBr($interpretation);
         if (Note::NOTE_BESTANDEN == $interpretation || Note::NOTE_NICHTBESTANDEN == $interpretation) {
             $note = $notenwert;
         } else {
             $note = 0;
         }
         $n = new Note($note, $interpretation, $termin);
         $n->setFehlendeVorleistungen($fehlende);
         $n->setMatrNr($matrnr);
         $n->setDozentId($this->getID());
         $n->setKennzahl($kennzahl);
         $n->setKennziffer($kennziffer);
         if ($endnote == Note::STATUS_ENDNOTE) {
             $n->setEndnote(true);
         } else {
             $n->setEndnote(false);
         }
         $fristgerecht = Student::istFristgerechtAngemeldet($this->conn, $err, $matrnr, $anfach);
         $fristgerechtS = $fristgerecht ? 'JA' : 'NEIN';
         $s = "INSERT INTO hatleistung(MatrNr, Kennzahl, Teilkennziffer, Bestanden, Note, Datum, TeilEndNote, PDozentID, FehlendeVorleistungen, FristgerechtAngemeldet) ";
         $s .= "VALUES({$matrnr}, '{$kennzahl}', {$kennziffer}, '{$bestanden}', {$note}, '{$termin}', '{$endnoteString}', " . $this->getID() . ", {$fehlende}, '{$fristgerechtS}')";
         $q = new DBQuery($s);
         if ($this->conn->executeQuery($q)) {
             Mailer::mailNote($n, $anfach, $this);
             $vf = $n->hatFehlendeVorleistungen() ? "(Vorleistungen fehlen)" : "";
             $dozentmessage .= $n->getMatrNr() . ": " . $n->getBenotung($anfach->getFach()) . " " . $vf . "\r\n";
             if ($freigebenAmEnde) {
                 $q = new DBQuery("DELETE FROM angemeldet WHERE MatrNr={$matrnr} and PAnFachID=" . $anfach->getID());
                 if (false == $this->conn->executeQuery($q)) {
                     $err->addError("Die Abmeldung von {$matrnr} konnte nicht durchgef&uuml;hrt werden. " . $this->conn->getLastError());
                     return false;
                 }
             }
         } else {
             $err->addError("Unerwarteter Fehler. Die Note von {$matrnr} konnte nicht abgegeben werden.");
             return false;
         }
     }
     // for
     $dozentmessage .= "\r\nTermin der Pruefung: " . $termin . "\r\n";
     $dozentmessage .= "Status: " . $endnoteString;
     Mailer::mailit($this->getEmail(), "Notenabgabe " . $anfach->getKennzahl() . " " . $anfach->getName() . " zum " . $termin, $dozentmessage);
     // Hier werden (wenn es soweit ist) die Studenten abgemeldet und das Fach freigegeben
     if ($freigebenAmEnde) {
         if (false == $this->fachBeenden($anfachid)) {
             $err->addError($this->getLastError());
         }
     } else {
         if (false == $anfach->setNotenabgabeStatus($notenstatus)) {
             $err->addError($anfach->getLastError());
         }
     }
     return true;
 }
        Mailer::mailit($dozent_daten[1], "Neuer Bericht zum BpS", $student->getNameKomplett() . " hat einen Bericht zum Berufspraktischen Semester abgegeben.\n" . "Dieser wurde bereits erfolgreich von " . $mitarbeiter->getName() . " mit dem Praktikumszeugnis abgeglichen.\n" . "Bitte überprüfen Sie diesen unter \r\n " . Config::PRAVER_ROOT_URL . " \r\n");
        echo "Der Bericht wurde erfolgreich überprüft und wurde nun zum zuständigen Sachbearbeiter weitergeleitet.";
    } else {
        if ($aktion == "fehlerhaft") {
            $student = Student::readStudent($conn, $err, $bericht->getMatrNr());
            $email = $student->getEmail();
            if ($zeugnisvorhanden == "Nein") {
                $zeugnisproblem = "Das Zeugnis wurde nicht abgegeben\n";
            }
            if ($datenkorrekt == "Nein") {
                $datenproblem = "Die Daten im Bericht stimmen nicht mit denen im Zeugnis überein\n";
            }
            if ($zeiteingehalten == "Nein") {
                $zeitproblem = "Die Länge dess Praktikums ist nicht ausreichend.\n";
            }
            Mailer::mailit($email, "Bericht zum BpS fehlerhaft", "Dein Bericht wurde von " . $mitarbeiter->getName() . "überprüft und abgelehnt.\nGrund:\n" . $zeugnisproblem . $datenproblem . $zeitproblem . "Bitte korrigiere Deinen Bericht gegebenfalls unter \r\n " . Config::PRAVER_ROOT_URL . " \r\n");
            echo "Der Bericht wurde als fehlerhaft gewertet und der Student wurde benachrichtigt.<br>";
            if ($zeugnisvorhanden == "Nein" && $datenkorrekt == "Ja" && $zeiteingehalten == "Ja") {
                echo "Da das Zeugnis noch nicht abgegeben wurde, verbleibt der Bericht in Ihrer Liste";
            } else {
                echo "Der Bericht wurde zurück zum Studenten geschickt";
            }
        }
    }
}
?>
		     
	      
	
	
	      </td>
                    $bericht->setFreigabe("1");
                    $freigabe_text = "Der Sachbearbeiter hat jedoch entschieden, diesen nicht für die Datenbank freizugegeben.";
                    break;
                case "auto":
                    $bericht->setFreigabe("1");
                    $freigabe_text = "Aufgrund Deines Wunsches, wurde dieser jedoch nicht für die Datenbank freigegeben.";
                    break;
            }
            //switch
            if ($bericht->getUnternehmen()->getStatus() == 1) {
                $bericht->getUnternehmen()->setStatus(0);
                $bericht->getUnternehmen()->setInited(true);
                $bericht->getUnternehmen()->updateDatenbank();
            }
            $email_adresse = $student->getEmail();
            Mailer::mailit($email_adresse, "Bericht wurde anerkannt", $dozent->getName() . " hat Deinen Bericht zum Berufspraktischen Semester überprüft und anerkannt.\n" . $freigabe_text . "\n\nDu kannst Dich jederzeit wieder einloggen um Deinen und andere Bericht zu durchstöbern.\r\n " . Config::PRAVER_ROOT_URL . " \r\n");
            $bericht->updateDatenbank();
        }
        //else
    } else {
        if ($aktion == "zurueck") {
            $schritt--;
        } else {
            if ($aktion == "weiter") {
                $schritt++;
            }
        }
    }
}
if ($schritt < 1) {
    $schritt = 1;
$bericht->initAusDatenbank($berichtid);
$student = Student::readStudent($conn, $err, $bericht->getMatrNr());
$aktion = "";
if (isset($_POST['abschicken_x'])) {
    $aktion = "abschicken";
}
if ($aktion == "abschicken") {
    if (isset($_POST['grund'])) {
        $text = $_POST['grund'];
    }
    $subj = "Bericht zum BpS wurde abgelehnt!";
    $email = $student->getEmail();
    $bericht->setBearbeitungszustand(Bericht::BEIM_STUDENT);
    $bericht->updateDatenbank();
    $text .= "\n\nBitte korrigiere Deinen Bericht gegebenfalls unter \r\n " . Config::PRAVER_ROOT_URL . " \r\n";
    Mailer::mailit($email, $subj, $text);
}
?>

<html>
<head>
<title>Dozent</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link rel="stylesheet" href="../styles/main.css" type="text/css">
<link rel="stylesheet" href="../styles/menu.css" type="text/css">
<link rel="stylesheet" href="../styles/prof.css" type="text/css">
</head>

<body leftmargin="0" topmargin="0">
<table height="100%" border="0" cellspacing="0" cellpadding="0" class="hauptbox"><tr><td valign="top" height="100%">
<?php 
    }
    echo "</form>";
} else {
    //sonderseiten
    switch ($sonderseite) {
        case 1:
            echo 'Vielen Dank, Dein Bericht wurde nun zur Überprüfung weitergeleitet.<br>Sobald er beurteilt wurde, erhälst Du eine Ergebnis-Email.';
            $bericht->setAbgabeversuch($bericht->getAbgabeversuch() + 1);
            if (!$student->getStudiengang()->getMitarbeiterID()) {
                $bericht->setBearbeitungszustand(Bericht::BEIM_PROFESSOR);
                $dozent_daten = $student->getStudiengang()->getSachbearbeiter();
                Mailer::mailit($dozent_daten[1], "Neuer Bericht zum BpS", $student->getNameKomplett() . " hat einen Bericht zum Berufspraktischen Semester abgegeben.\nBitte überprüfen Sie diesen unter \r\n " . Config::PRAVER_ROOT_URL . " \r\n");
            } else {
                $bericht->setBearbeitungszustand(Bericht::BEIM_MITARBEITER);
                $mitarbeiter_daten = $student->getStudiengang()->getMitarbeiter();
                Mailer::mailit($mitarbeiter_daten[1], "Neuer Bericht zum BpS", $student->getNameKomplett() . " hat einen Bericht zum Berufspraktischen Semester abgegeben.\nBitte überprüfen Sie diesen unter \r\n " . Config::PRAVER_ROOT_URL . " \r\n");
            }
            break;
        case 2:
            echo 'Deine bisherigen Eingaben wurden gespeichert.<br>Du kannst Deinen Bericht jederzeit unter <i>Bericht einpflegen</i> weiterschreiben.';
            break;
        case 3:
            echo 'Deine bisherigen Eingaben wurden gelöscht.<br>Unter <i>Bericht einpflegen</i> kannst Du nun jederzeit einen neuen Bericht anfangen.';
            $bericht->loescheAusDatenbank();
            break;
    }
}
?>
	     
      
            $err->addError("Fehler: Es ist kein E-Mail-Ziel definiert");
        }
    }
    $aktion = "formular";
    if (isset($_POST['aktion']) && $_POST['aktion'] == "senden") {
        if (isset($_POST['nachricht']) && $_POST['nachricht'] != "" && isset($_POST['absender']) && $_POST['absender'] != "" && Mailer::checkMail($_POST['absender']) && $berichtID > -1) {
            $bericht = new Bericht($conn);
            $bericht->initAusDatenbank($berichtID);
            if ($bericht->getInited()) {
                if ($student = Student::readStudent($conn, $err, $bericht->getMatrNr())) {
                    $email_adresse = $student->getEmail();
                    $betreff = "";
                    if (isset($_POST['betreff'])) {
                        $betreff = $_POST['betreff'];
                    }
                    Mailer::mailit($email_adresse, $betreff, $_POST['nachricht']);
                    $aktion = "senden";
                } else {
                    echo $err->addError("Eingaben nicht ausreichend!");
                }
            } else {
                echo $err->addError("Eingaben nicht ausreichend!");
            }
        } else {
            echo $err->addError("Eingaben nicht ausreichend!");
        }
    }
    ?>


<html>
 public static function neuerStudentAnmelden($matrnr, $name, $vorname, $email, $fhemail, ErrorQueue $err, Connection $conn)
 {
     $gen = new PassGenerator();
     $pass = $gen->createNewPass(0);
     $mdpass = md5($pass);
     // Matrikelnummer überprüfen
     $matrnr1 = $matrnr;
     $matrnrlen = strlen($matrnr1);
     $matrnr = intval($matrnr);
     if ($matrnrlen != strlen($matrnr) || $matrnr <= 0) {
         $err->addError("Die Matrikelnummer ist ungültig.");
         return false;
     }
     $name = addslashes($name);
     $email = addslashes($email);
     $vorname = addslashes($vorname);
     $fhemail .= "@stud.fh-luebeck.de";
     $fhemail = addslashes($fhemail);
     if (strcmp($name, "") == 0 || strcmp($vorname, "") == 0 || strcmp($email, "") == 0 || strcmp($fhemail, "") == 0) {
         $err->addError("Bitte f&uuml;ll alle Felder aus.");
         return false;
     }
     if (!Mailer::checkMail($email)) {
         $err->addError("Die E-Mail-Adresse hat das falsche Format.");
         return false;
     }
     if (!Mailer::checkMail($fhemail)) {
         $err->addError("Die FHL-E-Mail-Adresse hat das falsche Format.");
         return false;
     }
     if ($conn->isConnected()) {
         $q = new DBQuery("INSERT INTO student(MatrNr, Name, EMail, Pass, Vorname) VALUES({$matrnr}, '{$name}', '{$email}', '{$mdpass}', '{$vorname}')");
         if ($conn->executeQuery($q)) {
             Mailer::mailit($fhemail, "Deine Anmeldung", "Hallo {$name},\n danke für Deine Anmeldung. Deine Login-Daten lauten:\n Passwort: \"{$pass}\"\nMatrikelnummer: {$matrnr}\n\n" . Studiengang::getSemsysInfo($conn, $err));
             return true;
         } else {
             $err->addError("Die Anmeldung konnte nicht durchgef&uuml;hrt werden. Diese Matrikelnummer ist schon registriert.");
             return false;
         }
         // Query executed
     } else {
         $err->addError("Keine Verbindung zur Datenbank.");
         return false;
     }
     // Connected
 }