diff --git a/cis/private/lehre/abgabe_student_details.php b/cis/private/lehre/abgabe_student_details.php
index e12bb1fb8..5506ddc74 100644
--- a/cis/private/lehre/abgabe_student_details.php
+++ b/cis/private/lehre/abgabe_student_details.php
@@ -397,7 +397,7 @@ if($command=="update" && $error!=true)
echo $p->t('global/dateiNichtErfolgreichHochgeladen');
}
}
- //E-Mail an 1.Begutachter
+ //E-Mail an 1.Begutachter und 2.Begutachter
if($bid!='' && $bid!=NULL)
{
$qry_betr="SELECT distinct trim(COALESCE(titelpre,'')||' '||COALESCE(vorname,'')||' '||COALESCE(nachname,'')||' '||COALESCE(titelpost,'')) as first,
@@ -424,13 +424,48 @@ if($command=="update" && $error!=true)
{
$row_std=$db->db_fetch_object($result_std);
+ $mail_anrede = "Sehr geehrte".($row_betr->anrede=="Herr"?"r":"")." ".$row_betr->anrede." ".$row_betr->first."!\n\n";
+ $mail_abgabetext = ($row_std->anrede)." ".trim($row_std->titelpre." ".$row_std->vorname." ".$row_std->nachname." ".$row_std->titelpost)." hat eine Abgabe vorgenommen.\n\n";
+ $mail_zurbeurteilung = "Zur Beurteilung der Arbeit:\n";
+ $mail_baselink = APP_ROOT."index.ci.php/extensions/FHC-Core-Projektarbeitsbeurteilung/Projektarbeitsbeurteilung";
+ $mail_fulllink = "$mail_baselink?projektarbeit_id=".$projektarbeit_id."&uid=".$user."\n\n";
+ $mail_abschluss = "--------------------------------------------------------------------------\n";
+ $mail_abschluss .= "Dies ist ein vom Bachelor-/Masterarbeitsabgabesystem generiertes Info-Mail\nCis->Mein CIS->Projektarbeiten->Bachelor- und Masterarbeitsabgabe\n";
+ $mail_abschluss .= "--------------------------------------------------------------------------";
+
+ $mailtext_erstbetr = $mail_anrede.$mail_abgabetext.$mail_zurbeurteilung.$mail_fulllink.$mail_abschluss;
+
+ // send Mail to 1. Begutachter
$mail = new mail($row_betr->mitarbeiter_uid."@".DOMAIN, "no-reply@".DOMAIN, "Bachelor-/Masterarbeitsbetreuung",
- "Sehr geehrte".($row_betr->anrede=="Herr"?"r":"")." ".$row_betr->anrede." ".$row_betr->first."!\n\n".($row_std->anrede)." ".trim($row_std->titelpre." ".$row_std->vorname." ".$row_std->nachname." ".$row_std->titelpost)." hat eine Abgabe vorgenommen.\n\n--------------------------------------------------------------------------\nDies ist ein vom Bachelor-/Masterarbeitsabgabesystem generiertes Info-Mail\nCis->Mein CIS->Projektarbeiten->Bachelor- und Masterarbeitsabgabe\n--------------------------------------------------------------------------");
+ $mailtext_erstbetr);
$mail->setReplyTo($user."@".DOMAIN);
if(!$mail->send())
{
echo "".$p->t('abgabetool/fehlerMailBegutachter')."
";
}
+
+ // send Mail to 2. Begutachter
+ $zweitbetr = getZweitbegutachterWithToken($projektarbeit_id, $bid, $user);
+
+ if ($zweitbetr)
+ {
+ $intern = isset($zweitbetr->uid);
+ $zweitbetrmail = $intern ? $zweitbetr->uid."@".DOMAIN : $zweitbetr->kontakt;
+
+ $mail_link = $intern ? $mail_fulllink : $mail_baselink."\n\n";
+ $mail_anrede = "Sehr geehrte".($zweitbetr->anrede=="Herr"?"r":"")." ".$zweitbetr->anrede." ".$zweitbetr->first."!\n\n";
+ $mail_token = isset($zweitbetr->zugangstoken) && !$intern ? "Zugangstoken: ".$zweitbetr->zugangstoken."\n\n" : "";
+
+ $mailtext_zweitbetr = $mail_anrede.$mail_abgabetext.$mail_zurbeurteilung.$mail_link.$mail_token.$mail_abschluss;
+
+ $mail = new mail($zweitbetrmail, "no-reply@".DOMAIN, "Masterarbeitsbetreuung",
+ $mailtext_zweitbetr);
+ $mail->setReplyTo($user."@".DOMAIN);
+ if(!$mail->send())
+ {
+ echo "".$p->t('abgabetool/fehlerMailBegutachter')."
";
+ }
+ }
}
}
else
@@ -605,4 +640,103 @@ function isAbgabeOutOfDate($paabgabe_id)
}
return false;
}
+
+/**
+ * Holt Zweitbegutachter einer Projektarbeit.
+ * Wenn Zweitbegutachter extern ist (kein Benutzeraccount) und noch keinen Token hat,
+ * wird der Token erstellt.
+ * @param $projektarbeit_id int
+ * @param $bid int person_id des Erstbegutachters
+ * @param $student_uid string uid des Studenten der Arbeit abgibt
+ * @return object
+ */
+function getZweitbegutachterWithToken($projektarbeit_id, $bid, $student_uid)
+{
+ global $db, $p;
+
+ $qry_betr="SELECT betr.person_id, anrede, betr.zugangstoken, betr.zugangstoken_gueltigbis, tbl_benutzer.uid, kontakt,
+ trim(COALESCE(titelpre,'')||' '||COALESCE(vorname,'')||' '||COALESCE(nachname,'')||' '||COALESCE(titelpost,'')) as first
+ FROM lehre.tbl_projektbetreuer betr
+ JOIN lehre.tbl_projektarbeit parb ON betr.projektarbeit_id = parb.projektarbeit_id
+ JOIN public.tbl_person pers ON betr.person_id = pers.person_id
+ JOIN public.tbl_kontakt ON pers.person_id = tbl_kontakt.person_id
+ LEFT JOIN public.tbl_benutzer ON pers.person_id = tbl_benutzer.person_id
+ WHERE betr.betreuerart_kurzbz = 'Zweitbegutachter'
+ AND betr.projektarbeit_id = ".$db->db_add_param($projektarbeit_id, FHC_INTEGER)."
+ AND parb.student_uid = ".$db->db_add_param($student_uid)."
+ AND EXISTS (
+ SELECT 1 FROM lehre.tbl_projektbetreuer
+ WHERE person_id = ".$db->db_add_param($bid, FHC_INTEGER)."
+ AND betreuerart_kurzbz = 'Erstbegutachter'
+ AND projektarbeit_id = betr.projektarbeit_id
+ )
+ AND kontakttyp='email' AND zustellung AND (tbl_benutzer.aktiv OR tbl_benutzer.aktiv IS NULL)
+ ORDER BY betr.insertamum DESC
+ LIMIT 1";
+
+ if (!$betr=$db->db_query($qry_betr))
+ {
+ echo "".$p->t('global/fehlerBeimLesenAusDatenbank')."
";
+ return null;
+ }
+ else
+ {
+ $row_betr = $db->db_fetch_object($betr);
+
+ if ($row_betr)
+ {
+ // if externer Betreuer and no valid token, generate
+ if (!isset($row_betr->uid) && (!isset($row_betr->zugangstoken) || $row_betr->zugangstoken_gueltigbis < date('Y-m-d')))
+ {
+ $tokenanzahl = 1;
+
+ while ($tokenanzahl > 0)
+ {
+ //generate random string
+ $rand_token = openssl_random_pseudo_bytes(16);
+ //change binary to hexadecimal
+ $token = bin2hex($rand_token);
+ //token generated
+
+ $qry_tokencheck = "
+ SELECT count(*) AS anzahl
+ FROM lehre.tbl_projektbetreuer
+ WHERE zugangstoken = ".$db->db_add_param($token)."
+ ";
+
+ if ($tokencount = $db->db_query($qry_tokencheck))
+ {
+ $row_tokencount = $db->db_fetch_object($tokencount);
+
+ $tokenanzahl = (int) $row_tokencount->anzahl;
+ }
+ else
+ {
+ echo "".$p->t('global/fehleraufgetreten')."
";
+ break;
+ }
+ }
+
+ $qry_upd="UPDATE lehre.tbl_projektbetreuer SET
+ zugangstoken = ".$db->db_add_param($token).",
+ zugangstoken_gueltigbis = CURRENT_DATE + interval '1 year'
+ WHERE projektarbeit_id = ".$db->db_add_param($projektarbeit_id, FHC_INTEGER)."
+ AND person_id = ".$db->db_add_param($row_betr->person_id, FHC_INTEGER)."
+ AND betreuerart_kurzbz = 'Zweitbegutachter'
+ ";
+
+ if($result=$db->db_query($qry_upd))
+ {
+ $row_betr->zugangstoken = $token;
+ }
+ else
+ {
+ echo "".$p->t('global/fehleraufgetreten')."
";
+ }
+ }
+
+ return $row_betr;
+ }
+ }
+}
?>