示例#1
0
 public static function sendGroupMail(UtilBuffer $anStudenten, Dozent $vonDozent, $sMessage, $subj, $bSendCopyToDozent)
 {
     $subj = "[PRA|VER] " . $subj;
     //$text = "Das ist eine automatische Nachricht vom Studi-Manager-System.\r\n\r\n\r\n".$text;
     $text = $sMessage;
     /* To send HTML mail, you can set the Content-type header to text/html. */
     $headers = "MIME-Version: 1.0\r\n";
     $headers .= "Content-type: text/plain; charset=iso-8859-1\r\n";
     $headers .= "From: " . $vonDozent->getName() . " <" . $vonDozent->getEmail() . ">\r\n";
     // Verschicken der Mails
     for ($i = 0; $i < $anStudenten->getCount(); $i++) {
         $studi = $anStudenten->get($i);
         mail($studi->getEmail(), $subj, $text, $headers);
     }
     if ($bSendCopyToDozent) {
         $text = "Sie haben die folgende Nachricht über das Fächerverwaltungssystem verschickt:\r\n\r\n" . $text;
         mail($vonDozent->getEmail(), $subj, $text, $headers);
     }
 }
示例#2
0
 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;
 }