diff --git a/cis/private/lehre/abgabe_lektor_details.php b/cis/private/lehre/abgabe_lektor_details.php index fa64f8683..d3721213f 100644 --- a/cis/private/lehre/abgabe_lektor_details.php +++ b/cis/private/lehre/abgabe_lektor_details.php @@ -35,6 +35,8 @@ require_once('../../../include/datum.class.php'); require_once('../../../include/mail.class.php'); require_once('../../../include/phrasen.class.php'); require_once('../../../include/projektarbeit.class.php'); +require_once('../../../include/projektbetreuer.class.php'); +require_once('../../../include/sancho.inc.php'); if (!$db = new basis_db()) $db=false; @@ -116,6 +118,63 @@ if($projektarbeit_id==-1) if(!$projektarbeit_obj->load($projektarbeit_id)) die('Fehler beim Laden der Projektarbeit'); $titel = $projektarbeit_obj->titel; +$student_uid = $projektarbeit_obj->student_uid; + +// paarbeit sollte nur ab SS2021 online bewertet werden +$qry_sem="SELECT 1 + FROM lehre.tbl_projektarbeit + JOIN lehre.tbl_lehreinheit USING(lehreinheit_id) + JOIN public.tbl_studiensemester USING(studiensemester_kurzbz) + WHERE projektarbeit_id=".$db->db_add_param($projektarbeit_id, FHC_INTEGER)." + AND tbl_studiensemester.start >= (SELECT start FROM public.tbl_studiensemester WHERE studiensemester_kurzbz = 'SS2021') + LIMIT 1"; +$result_sem=$db->db_query($qry_sem); +$num_rows_sem = $db->db_num_rows($result_sem); + +// Zweitbegutachter holen +if($betreuerart=="Erstbegutachter") +{ + $projektbetreuer = new projektbetreuer(); + $alleBegutachter = $projektbetreuer->getProjektbetreuer($projektarbeit_id); + + if ($alleBegutachter) + { + $alleBegutachterResults = $projektbetreuer->result; + + foreach ($alleBegutachterResults as $begutachter) + { + if ($begutachter->betreuerart_kurzbz == "Erstbegutachter") + { + $erstbetreuer_id = $begutachter->person_id; + $zweitbegutachter = $projektbetreuer->getZweitbegutachterWithToken($erstbetreuer_id, $projektarbeit_id, $student_uid); + break; + } + } + + if ($zweitbegutachter && $num_rows_sem >= 1 && isset($_GET['zweitbegutachtertoken'])) + { + $qry_std="SELECT * FROM campus.vw_benutzer where uid=".$db->db_add_param($uid); + if(!$result_std=$db->db_query($qry_std)) + { + echo "Student konnte nicht gefunden werden!
 "; + } + else + { + $row_std=@$db->db_fetch_object($result_std); + $mailres = sendZweitbegutachterMail($zweitbegutachter, $erstbetreuer_id, $row_std); + + if ($mailres) + { + echo "
".$p->t('abgabetool/zweitbegutachterMailGesendet', $zweitbegutachter->email)."
 "; + } + elseif(!$mailres) + { + echo "".$p->t('abgabetool/fehlerMailZweitBegutachter')."
 "; + } + } + } + } +} echo ' @@ -357,16 +416,6 @@ while ($result_nam && $row_nam=$db->db_fetch_object($result_nam)) $studentenname=$row_nam->studnam; } -$qry_sem="SELECT 1 - FROM lehre.tbl_projektarbeit - JOIN lehre.tbl_lehreinheit USING(lehreinheit_id) - JOIN public.tbl_studiensemester USING(studiensemester_kurzbz) - WHERE projektarbeit_id=".$db->db_add_param($projektarbeit_id, FHC_INTEGER)." - AND tbl_studiensemester.start >= (SELECT start FROM public.tbl_studiensemester WHERE studiensemester_kurzbz = 'SS2021') - LIMIT 1"; -$result_sem=$db->db_query($qry_sem); -$num_rows_sem = $db->db_num_rows($result_sem); - $htmlstr .= "\n"; $htmlstr .= ""; if ($num_rows_sem >= 1) @@ -387,7 +436,9 @@ $htmlstr .= ""; if($betreuerart!="Zweitbegutachter") { $htmlstr .= ""; + $htmlstr .= ""; + $htmlstr .= "\n"; + $htmlstr .= "\n"; } else { @@ -396,7 +447,26 @@ else $htmlstr .= ""; $htmlstr .= "\n"; $htmlstr .= "
".$p->t('abgabetool/student').": ".$db->convert_html_chars($studentenname)."
"; - $htmlstr .= "
            
Titel: ".$db->convert_html_chars($titel)."".$p->t('abgabetool/studentenansicht')."
\n"; -$htmlstr .= "
".$p->t('abgabetool/abgabetermine').":\n"; +$htmlstr .= ""; +$htmlstr .= "\n"; +if (isset($zweitbegutachter) && $zweitbegutachter && $num_rows_sem >= 1) // if there is a zweitbegutachter and paarbeit should be graded with online form +{ + $htmlstr .= "\n"; + $htmlstr .= "\n"; + $htmlstr .= "\n"; + $htmlstr .= "\n"; +} +$htmlstr .= "\n"; +$htmlstr .= "

".$p->t('abgabetool/abgabetermine').":
" . $p->t('abgabetool/zweitBegutachter') . ": " . $zweitbegutachter->voller_name . ""; + if (isset($zweitbegutachter->abgabedatum) && !isset($zweitbegutachter->uid)) + { + $htmlstr .= ""; + $htmlstr .= ""; + $htmlstr .= ""; + $htmlstr .= "  \n"; + $htmlstr .= ""; + } + $htmlstr .= "     
\n"; $htmlstr .= "\n"; $htmlstr .= "\n"; $htmlstr .= " @@ -565,4 +635,51 @@ $htmlstr .= "\n"; $htmlstr .= "
\n"; $htmlstr .= "\n"; echo $htmlstr; + +/** + * Mail zum Zweitbegutachter mit Info dass Projektarbeit zur Bewertung bereit ist, inklusive Zugangstoken wenn nötig. + * @param object $zweitbegutachter + * @param $int erstbegutachter_person_id + * @param object $student + * @return bool|projektbetreuer|void|null + */ +function sendZweitbegutachterMail($zweitbegutachter, $erstbegutachter_person_id, $student) +{ + // send Mail to 2. Begutachter + $projektbetreuer = new projektbetreuer(); + + $projektbetreuer->generateZweitbegutachterToken($zweitbegutachter->person_id, $zweitbegutachter->projektarbeit_id); + + if (!$projektbetreuer) + return $projektbetreuer; + + $zweitbetr = $projektbetreuer->getZweitbegutachterWithToken($erstbegutachter_person_id, $zweitbegutachter->projektarbeit_id, $student->uid); + + if ($zweitbetr) + { + $intern = isset($zweitbetr->uid); + $mail_baselink = APP_ROOT."index.ci.php/extensions/FHC-Core-Projektarbeitsbeurteilung/Projektarbeitsbeurteilung"; + $mail_fulllink = "$mail_baselink?projektarbeit_id=".$zweitbegutachter->projektarbeit_id."&uid=".$student->uid; + $maildata = array(); + $maildata['geehrt'] = "geehrte".($zweitbegutachter->anrede=="Herr"?"r":""); + $maildata['anrede'] = $zweitbegutachter->anrede; + $maildata['betreuer_voller_name'] = $zweitbegutachter->voller_name; + $maildata['student_anrede'] = $student->anrede; + $maildata['student_voller_name'] = trim($student->titelpre." ".$student->vorname." ".$student->nachname." ".$student->titelpost); + $maildata['link'] = $mail_link = $intern ? $mail_fulllink : $mail_baselink; + $maildata['token'] = isset($zweitbetr->zugangstoken) && !$intern ? "

Zugangstoken: ".$zweitbetr->zugangstoken."

" : ""; + + return sendSanchoMail( + 'ParbeitsbeurteilungEndupload', + $maildata, + $zweitbetr->email, + "Masterarbeitsbetreuung", + 'sancho_header_min_bw.jpg', + 'sancho_footer_min_bw.jpg' + ); + } + + return false; +} + ?> diff --git a/cis/private/lehre/abgabe_student_details.php b/cis/private/lehre/abgabe_student_details.php index 5141e495c..6198f9392 100644 --- a/cis/private/lehre/abgabe_student_details.php +++ b/cis/private/lehre/abgabe_student_details.php @@ -34,6 +34,7 @@ require_once('../../../include/mail.class.php'); require_once('../../../include/benutzerberechtigung.class.php'); require_once('../../../include/phrasen.class.php'); require_once('../../../include/projektarbeit.class.php'); +require_once('../../../include/projektbetreuer.class.php'); require_once('../../../include/sancho.inc.php'); $anzeigesprache = getSprache(); @@ -445,6 +446,7 @@ if($command=="update" && $error!=true) echo "".$p->t('abgabetool/fehlerMailBegutachter')."
 "; }*/ + // 1. Begutachter ohne Token $mail_baselink = APP_ROOT."index.ci.php/extensions/FHC-Core-Projektarbeitsbeurteilung/Projektarbeitsbeurteilung"; $mail_fulllink = "$mail_baselink?projektarbeit_id=".$projektarbeit_id."&uid=".$row_std->uid; $maildata = array(); @@ -470,11 +472,25 @@ if($command=="update" && $error!=true) echo "".$p->t('abgabetool/fehlerMailBegutachter')."
 "; } - // send Mail to 2. Begutachter - $zweitbetr = getZweitbegutachterWithToken($projektarbeit_id, $bid, $row_std->uid); + // 2. Begutachter mit Token wenn extern + $projektbetreuer = new projektbetreuer(); + $zweitbetr = $projektbetreuer->getZweitbegutachterWithToken($bid, $projektarbeit_id, $row_std->uid); if ($zweitbetr) { + if (!isset($zweitbetr->zugangstoken)) + { + $tokenGenRes = $projektbetreuer->generateZweitbegutachterToken($zweitbetr->person_id, $projektarbeit_id); + + if (!$tokenGenRes) + echo "" . $p->t('abgabetool/fehlerMailZweitBegutachter') . "
 "; + + $zweitbetr = $projektbetreuer->getZweitbegutachterWithToken($bid, $projektarbeit_id, $row_std->uid); + + if (!$zweitbetr) + echo "".$p->t('abgabetool/fehlerMailZweitBegutachter')."
 "; + } + $intern = isset($zweitbetr->uid); $zweitbetrmail = $intern ? $zweitbetr->uid."@".DOMAIN : $zweitbetr->kontakt; @@ -495,7 +511,7 @@ if($command=="update" && $error!=true) $zweitbetmaildata = array(); $zweitbetmaildata['geehrt'] = "geehrte".($zweitbetr->anrede=="Herr"?"r":""); $zweitbetmaildata['anrede'] = $zweitbetr->anrede; - $zweitbetmaildata['betreuer_voller_name'] = $zweitbetr->first; + $zweitbetmaildata['betreuer_voller_name'] = $zweitbetr->voller_name; $zweitbetmaildata['student_anrede'] = $maildata['student_anrede']; $zweitbetmaildata['student_voller_name'] = $maildata['student_voller_name']; $zweitbetmaildata['link'] = $mail_link = $intern ? $mail_fulllink : $mail_baselink; @@ -690,103 +706,4 @@ 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, pers.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; - } - } -} ?> diff --git a/include/functions.inc.php b/include/functions.inc.php index 534f11f28..587860982 100644 --- a/include/functions.inc.php +++ b/include/functions.inc.php @@ -1121,4 +1121,57 @@ function setLeadingZero($number, $length = 2) return str_pad($number, $length, "0", STR_PAD_LEFT); } } + +/** + * Generates a new token for diffent use cases. Default token length is 64 + * - Reading messages + * - Forgotten password + * - etc + * Returns null on failure + */ +function generateUniqueToken($length = 64) +{ + $token = null; + $firstGeneratedToken = null; + + // For PHP 7 you can use random_bytes() + if (function_exists('random_bytes')) + { + try + { + $firstGeneratedToken = random_bytes($length); // try to generates cryptographically secure pseudo-random bytes... + } + catch (Exception $e) { $firstGeneratedToken = null; } // if fails $firstGeneratedToken is set to null + } + // For PHP >= 5.3 and < 7 and openssl is available + elseif (function_exists('openssl_random_pseudo_bytes')) + { + $firstGeneratedToken = openssl_random_pseudo_bytes($length, $strong); + // If the token generation ended with errors OR the generated token is NOT strong enough + if ($firstGeneratedToken == false || $strong == false) $firstGeneratedToken = null; // $firstGeneratedToken is set to null + } + + if ($firstGeneratedToken != null) // If everything was fine + { + // base64 is about 33% longer, so we need to truncate the result + $token = strtr(substr(base64_encode($firstGeneratedToken), 0, $length), '+/=', '-_,'); + } + + // Fallback to mt_rand if: + // php < 5.3 + // OR no openssl is available + // OR openssl_random_pseudo_bytes used an algorithm that is cryptographically NOT strong + // OR one of the previous methods failed + if ($token == null) + { + $token = ''; // set $token as an empty string + $characters = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz/+'; + $charactersLength = strlen($characters) - 1; + + // Select some random characters + for ($i = 0; $i < $length; $i++) $token .= $characters[mt_rand(0, $charactersLength)]; + } + + return $token; +} ?> diff --git a/include/projektbetreuer.class.php b/include/projektbetreuer.class.php index e962b2d0a..ed8e3bae0 100644 --- a/include/projektbetreuer.class.php +++ b/include/projektbetreuer.class.php @@ -391,5 +391,131 @@ class projektbetreuer extends basis_db return false; } } + + /** + * Holt Zweitbegutachter einer Projektarbeit mit Mail. + * @param $erstbegutachter_person_id int person_id des Erstbegutachters + * @param $projektarbeit_id int + * @param $student_uid string uid des Studenten der Arbeit abgibt + * @return object | bool + */ + public function getZweitbegutachterWithToken($erstbegutachter_person_id, $projektarbeit_id, $student_uid) + { + $qry_betr="SELECT betr.person_id, betr.projektarbeit_id, pers.anrede, betr.zugangstoken, betr.zugangstoken_gueltigbis, tbl_benutzer.uid, kontakt, + trim(COALESCE(titelpre,'')||' '||COALESCE(vorname,'')||' '||COALESCE(nachname,'')||' '||COALESCE(titelpost,'')) as voller_name, + CASE WHEN tbl_benutzer.uid IS NULL THEN kontakt ELSE tbl_benutzer.uid || '@".DOMAIN."' END AS email, abg.abgabedatum + 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 + LEFT JOIN campus.tbl_paabgabe abg ON betr.projektarbeit_id = abg.projektarbeit_id AND abg.paabgabetyp_kurzbz = 'end' + WHERE betr.betreuerart_kurzbz = 'Zweitbegutachter' + AND betr.projektarbeit_id = ".$this->db_add_param($projektarbeit_id, FHC_INTEGER)." + AND parb.student_uid = ".$this->db_add_param($student_uid)." + AND EXISTS ( + SELECT 1 FROM lehre.tbl_projektbetreuer + WHERE person_id = ".$this->db_add_param($erstbegutachter_person_id, 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=$this->db_query($qry_betr)) + { + $row_betr = $this->db_fetch_object($betr); + + if ($row_betr) + return $row_betr; + else + return false; + } + else + { + return false; + } + } + + /** + * Generiert Token für externen Zweitbetreuer wenn noch kein Token vorhanden ist. + * @param int $zweitbegutachter_person_id + * @param int $projektarbeit_id + * @return bool true wenn erfolgreich (generiert oder bereits vorhanden), false wenn fehlgeschlagen + */ + public function generateZweitbegutachterToken($zweitbegutachter_person_id, $projektarbeit_id) + { + // if externer Betreuer and no valid token, generate + $betreuerUidQry = "SELECT uid, zugangstoken, zugangstoken_gueltigbis, tbl_projektbetreuer.person_id + FROM lehre.tbl_projektbetreuer + JOIN public.tbl_person USING(person_id) + LEFT JOIN public.tbl_benutzer USING(person_id) + WHERE projektarbeit_id = ".$this->db_add_param($projektarbeit_id, FHC_INTEGER)." + AND tbl_projektbetreuer.person_id = ".$this->db_add_param($zweitbegutachter_person_id, FHC_INTEGER)." + AND betreuerart_kurzbz = 'Zweitbegutachter' + LIMIT 1"; + + if ($betreueruidres = $this->db_query($betreuerUidQry)) + { + $row_betr = $this->db_fetch_object($betreueruidres); + + if ($row_betr) + { + + 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 + $token = generateUniqueToken(16); + + if (!$token) + return false; + + $qry_tokencheck = "SELECT count(*) AS anzahl + FROM lehre.tbl_projektbetreuer + WHERE zugangstoken = " . $this->db_add_param($token); + + if ($tokencount = $this->db_query($qry_tokencheck)) + { + $row_tokencount = $this->db_fetch_object($tokencount); + + $tokenanzahl = (int)$row_tokencount->anzahl; + } + else + { + return false; + } + } + + $qry_upd = "UPDATE lehre.tbl_projektbetreuer SET + zugangstoken = " . $this->db_add_param($token) . ", + zugangstoken_gueltigbis = CURRENT_DATE + interval '1 year' + WHERE projektarbeit_id = " . $this->db_add_param($projektarbeit_id, FHC_INTEGER) . " + AND person_id = " . $this->db_add_param($row_betr->person_id, FHC_INTEGER) . " + AND betreuerart_kurzbz = 'Zweitbegutachter'"; + + if ($this->db_query($qry_upd)) + { + return true; + } + else + { + return false; + } + } + else + return true; // not generated because intern or already exists + } + else + return false;// not found + } + else + return false; // query error + } } ?> diff --git a/locale/de-AT/abgabetool.php b/locale/de-AT/abgabetool.php index 1b40fa187..3b2bd750a 100644 --- a/locale/de-AT/abgabetool.php +++ b/locale/de-AT/abgabetool.php @@ -80,4 +80,7 @@ Sollten Sie trotzdem die `Eidesstattliche Erklärung´ samt Unterschrift hochlad $this->phrasen['abgabetool/gelesenUndAkzeptiert']='Gelesen und akzeptiert'; $this->phrasen['abgabetool/erklaerungNichtAkzeptiert']='Erklärung nicht akzeptiert'; $this->phrasen['abgabetool/downloadProjektarbeit']='Dokument herunterladen'; +$this->phrasen['abgabetool/zweitBegutachter']='Zweitbegutachter'; +$this->phrasen['abgabetool/zweitbetreuerTokenMailSenden']='Zugangstoken an Zweitbegutachter senden'; +$this->phrasen['abgabetool/zweitbegutachterMailGesendet']='Mail an Zweitbegutachter (%s) gesendet'; ?> diff --git a/locale/en-US/abgabetool.php b/locale/en-US/abgabetool.php index 55a30d049..6ee00d47c 100644 --- a/locale/en-US/abgabetool.php +++ b/locale/en-US/abgabetool.php @@ -80,4 +80,7 @@ Sollten Sie trotzdem die `Eidesstattliche Erklärung´ samt Unterschrift hochlad $this->phrasen['abgabetool/gelesenUndAkzeptiert']='Read and accepted'; $this->phrasen['abgabetool/erklaerungNichtAkzeptiert']='Declaration not accepted'; $this->phrasen['abgabetool/downloadProjektarbeit']='Download File'; +$this->phrasen['abgabetool/zweitBegutachter']='Second assessor'; +$this->phrasen['abgabetool/zweitbetreuerTokenMailSenden']='Send access token to second assessor'; +$this->phrasen['abgabetool/zweitbegutachterMailGesendet']='Mail sent to second assessor (%s)'; ?> diff --git a/locale/it-IT/abgabetool.php b/locale/it-IT/abgabetool.php index 793ac204d..70504ca04 100644 --- a/locale/it-IT/abgabetool.php +++ b/locale/it-IT/abgabetool.php @@ -70,4 +70,7 @@ $this->phrasen['abgabetool/ueberschrift']='tesi bachelor / master'; $this->phrasen['abgabetool/upload']='Upload'; $this->phrasen['abgabetool/variablerAbgabetermin']='scadenza consegna variabile'; $this->phrasen['abgabetool/zweitbetreuerBei']='secondo relatore presso'; +$this->phrasen['abgabetool/zweitBegutachter']='Second assessor'; +$this->phrasen['abgabetool/zweitbetreuerTokenMailSenden']='Send access token to second assessor'; +$this->phrasen['abgabetool/zweitbegutachterMailGesendet']='Mail sent to second assessor (%s)'; ?>