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; + } + } +} ?>