Merged master into branch

Signed-off-by: cris-technikum <hainberg@technikum-wien.at>
This commit is contained in:
Cris
2021-04-28 15:54:54 +02:00
committed by cris-technikum
parent cafd72e51d
commit 21ce118f0b
27 changed files with 2714 additions and 597 deletions
+1 -1
View File
@@ -1,5 +1,5 @@
# FH-Complete
* [FH-Complete Homepage](https://www.fhcomplete.org)
* [Wiki](https://wiki.fhcomplete.org/)
* [Wiki](https://wiki.fhcomplete.info/)
* [Changelog](CHANGELOG.md)
@@ -220,7 +220,7 @@ class Pruefungsprotokoll extends Auth_Controller
$nullfields = array('uhrzeit', 'endezeit', 'abschlussbeurteilung_kurzbz', 'protokoll');
foreach ($data as $idx => $item)
{
if (in_array($idx, $nullfields) & $item === '')
if (in_array($idx, $nullfields) && $item === '')
$data[$idx] = null;
}
+1 -1
View File
@@ -167,7 +167,7 @@ class LDAPLib
}
// LDAP connection
$ldapConnection = @ldap_connect($ldapConfigs[self::SERVER], $ldapConfigs[self::PORT]);
$ldapConnection = @ldap_connect($ldapConfigs[self::SERVER].':'.$ldapConfigs[self::PORT]);
if ($ldapConnection) // if success
{
// Sets the LDAP protocol version
@@ -41,4 +41,23 @@ class Projektbetreuer_model extends DB_Model
return error ('Incorrect parameter type');
}
}
/**
* Get Projektbetreuer data by authentification token
* @param $zugangstoken
* @return object
*/
public function getBetreuerByToken($zugangstoken)
{
$qry = '
SELECT tbl_projektbetreuer.person_id, tbl_projektbetreuer.projektarbeit_id, student_uid
FROM lehre.tbl_projektbetreuer
JOIN lehre.tbl_projektarbeit USING (projektarbeit_id)
WHERE zugangstoken = ? AND zugangstoken_gueltigbis >= NOW()
ORDER BY tbl_projektbetreuer.insertamum DESC, projektarbeit_id DESC
LIMIT 1
';
return $this->execQuery($qry, array($zugangstoken));
}
}
@@ -13,6 +13,11 @@ class Benutzer_model extends DB_Model
$this->hasSequence = false;
}
/**
* Gets active Benutzer from person_id
* @param $person_id
* @return object
*/
public function getFromPersonId($person_id)
{
return $this->loadWhere(array('person_id' => $person_id, 'aktiv' => true));
+206 -8
View File
@@ -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,68 @@ 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::date >= (SELECT start FROM public.tbl_studiensemester WHERE studiensemester_kurzbz = 'SS2021')::date
LIMIT 1";
$result_sem=$db->db_query($qry_sem);
$num_rows_sem = $db->db_num_rows($result_sem);
if($num_rows_sem < 0)
{
echo "<font color=\"#FF0000\">".$p->t('abgabetool/fehlerAktualitaetProjektarbeit')."</font><br>&nbsp;";
}
// 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;
}
}
// Mail mit Token an Zweitbegutachter senden
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 "<font color=\"#FF0000\">Student konnte nicht gefunden werden!</font><br>&nbsp;";
}
else
{
$row_std=@$db->db_fetch_object($result_std);
$mailres = sendZweitbegutachterMail($zweitbegutachter, $erstbetreuer_id, $row_std);
if ($mailres)
{
echo "<br><span style='color: green; '>".$p->t('abgabetool/zweitbegutachterMailGesendet', $zweitbegutachter->email)."</span><br>&nbsp;";
}
else
{
echo "<font color=\"#FF0000\">".$p->t('abgabetool/fehlerMailZweitBegutachter')." Mail: ".$zweitbegutachter->email."</font><br>&nbsp;";
}
}
}
}
}
echo '
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
@@ -124,6 +188,39 @@ echo '
<title>'.$p->t('abgabetool/abgabetool').'</title>
<link rel="stylesheet" href="../../../skin/style.css.php" type="text/css">
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<style>
#beurteilungheadertable td {
height: 30px;
overflow: hidden;
}
#beurteilungheadertable form {
margin: 0;
}
/* Bild statt submit button, styling entfernen*/
button[name="zweitbegutachtertoken"] {
background: none;
color: inherit;
border: none;
font: inherit;
cursor: pointer;
outline: inherit;
}
#zweitbetrmailicon {
top: 4px;
height: 18px;
width: 18px;
position: relative;
}
#tokenmailicon {
top: 2px;
height: 15px;
width: 15px;
position: relative;
}
</style>
<script language="Javascript">
function confdel()
@@ -356,25 +453,73 @@ while ($result_nam && $row_nam=$db->db_fetch_object($result_nam))
{
$studentenname=$row_nam->studnam;
}
$htmlstr .= "<table width=100%>\n";
$htmlstr .= "<table id='beurteilungheadertable' width=100%>\n";
$htmlstr .= "<tr><td style='font-size:16px'>".$p->t('abgabetool/student').": <b>".$db->convert_html_chars($studentenname)."</b></td>";
$htmlstr .= "<td width=10% align=center><form action='../../../include/".EXT_FKT_PATH."/abgabe_lektor_benotung.php' title='Benotungsformular' target='_blank' method='GET'>";
$htmlstr .= "<input type='hidden' name='projektarbeit_id' value='".$projektarbeit_id."'>\n";
$htmlstr .= "<input type='hidden' name='uid' value='".$uid."'>\n";
$htmlstr .= "<input type='submit' name='note' value='".$p->t('abgabetool/benoten')."'></form></td>";
$htmlstr .= "<td width=10% align=center>";
if ($num_rows_sem >= 1)
{
$htmlstr .= "<form action='../../../index.ci.php/extensions/FHC-Core-Projektarbeitsbeurteilung/Projektarbeitsbeurteilung' title='Benotungsformular' target='_blank' method='GET'>";
$htmlstr .= "<input type='hidden' name='projektarbeit_id' value='".$projektarbeit_id."'>\n";
$htmlstr .= "<input type='hidden' name='uid' value='".$uid."'>\n";
$htmlstr .= "<input type='submit' name='note' value='".$p->t('abgabetool/benoten')."'></form>";
}
else
{
$htmlstr .= "<form action='javascript:void(0);'>";
$htmlstr .= "<input type='submit' value='".$p->t('abgabetool/benoten')."' title='".$p->t('abgabetool/aeltereParbeitBenoten')."'
alt='".$p->t('abgabetool/aeltereParbeitBenoten')."' disabled>";
$htmlstr .= "</form>";
}
$htmlstr .= "</td>";
if($betreuerart!="Zweitbegutachter")
{
$htmlstr .= "<td width=10% align=center><form action='https://www1.ephorus.com/' title='ephorus' target='_blank' method='GET'>";
$htmlstr .= "<input type='submit' name='ephorus' value='".$p->t('abgabetool/plagiatspruefung')."'></form></td></tr>";
$htmlstr .= "<input type='submit' name='ephorus' value='".$p->t('abgabetool/plagiatspruefung')."'></form></td>";
$htmlstr .= "<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>\n";
$htmlstr .= "<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td></tr>\n";
}
else
{
$htmlstr .= "<td>&nbsp;</td></tr>";
}
$htmlstr .= "<tr><td style='font-size:16px'>Titel: <b>".$db->convert_html_chars($titel)."<b></td><td></td><td valign=\"right\"><a href='abgabe_student_frameset.php?uid=$uid' target='_blank'>".$p->t('abgabetool/studentenansicht')."</a></td>";
$htmlstr .= "<tr><td style='font-size:16px'>" . $p->t('abgabetool/titel') . ": <b>".$db->convert_html_chars($titel)."<b></td><td></td><td valign=\"right\"><a href='abgabe_student_frameset.php?uid=$uid' target='_blank'>".$p->t('abgabetool/studentenansicht')."</a></td>";
$htmlstr .= "</tr>\n";
if (isset($zweitbegutachter) && $zweitbegutachter) // wenn es Zweitbegutachter gibt
{
// Zweitbegutachter anzeigen
$htmlstr .= "<tr>\n";
$htmlstr .= "<td style='font-size:16px'>" . $p->t('abgabetool/zweitBegutachter') . ": <b>" . $zweitbegutachter->voller_name . "</b>";
// keine Mail -> Fehler anzeigen
if (!isset($zweitbegutachter->email))
$htmlstr .= "&nbsp;&nbsp;<img src='../../../skin/images/exclamation.png' title='" . $p->t('abgabetool/zweitBegutachterEmailFehlt') . "' alt='" . $p->t('abgabetool/zweitBegutachterEmailFehlt') . "'/>";
// Token senden button wenn Projektarbeit abgegeben und Zweitbegutachter extern ist und Projektarbeit nicht für altes Semester ist
if (isset($zweitbegutachter->abgabedatum) && isset($zweitbegutachter->email) && !isset($zweitbegutachter->uid) && $num_rows_sem >= 1)
{
$htmlstr .= "<form action='" . htmlspecialchars($_SERVER['PHP_SELF']) . "' method='GET' style='display: inline'>\n";
$htmlstr .= "<input type='hidden' name='uid' value='" . $student_uid . "'>";
$htmlstr .= "<input type='hidden' name='projektarbeit_id' value='" . $projektarbeit_id . "'>";
$htmlstr .= "<input type='hidden' name='betreuerart' value='" . $betreuerart . "'>";
$htmlstr .= "&nbsp;<a href='mailto:".$zweitbegutachter->email."'><img id='zweitbetrmailicon' src='../../../skin/images/email.png'
title='" . $p->t('abgabetool/zweitbetreuerMailSenden', $zweitbegutachter->email) . "' alt='" . $p->t('abgabetool/zweitbetreuerMailSenden', $zweitbegutachter->email) . "'/></a>\n";
$htmlstr .= "&nbsp;<button type='submit' name='zweitbegutachtertoken' title='" . $p->t('abgabetool/zweitbetreuerTokenMailSenden') . "'>
<img id='tokenmailicon' src='../../../skin/images/repeat.png' alt='" . $p->t('abgabetool/zweitbetreuerTokenMailSenden') . "'/></button>\n";
$htmlstr .= "</form>";
}
$htmlstr .= "</td>\n";
$htmlstr .= "<td></td>\n";
$htmlstr .= "<td></td>\n";
$htmlstr .= "</tr>\n";
}
$htmlstr .= "</table>\n";
$htmlstr .= "<table style='width: 100%'><tr>";
$htmlstr .= "<td><br><b>".$p->t('abgabetool/abgabetermine').":</b></td>\n";
$htmlstr .= "</tr>\n";
$htmlstr .= "</table>\n";
$htmlstr .= "<br><b>".$p->t('abgabetool/abgabetermine').":</b>\n";
$htmlstr .= "<table class='detail' style='padding-top:10px;' >\n";
$htmlstr .= "<tr></tr>\n";
$htmlstr .= "<tr>
@@ -543,4 +688,57 @@ $htmlstr .= "</form>\n";
$htmlstr .= "</table>\n";
$htmlstr .= "</body></html>\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)
{
if (!isset($zweitbegutachter->email) || $zweitbegutachter->email == '')
return false;
// 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;
$mail_link = $intern ? $mail_fulllink : $mail_baselink;
$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['parbeituebersichtlink'] = $intern ? "<p><a href='".APP_ROOT."cis/private/lehre/abgabe_lektor_frameset.html'>Zur Projektarbeitsübersicht</a></p>" : "";
$maildata['bewertunglink'] = "<p><a href='$mail_link'>Zur Beurteilung der Arbeit</a></p>";
$maildata['token'] = isset($zweitbetr->zugangstoken) && !$intern ? "<p>Zugangstoken: ".$zweitbetr->zugangstoken."</p>" : "";
return sendSanchoMail(
'ParbeitsbeurteilungEndupload',
$maildata,
$zweitbetr->email,
"Masterarbeitsbetreuung",
'sancho_header_min_bw.jpg',
'sancho_footer_min_bw.jpg'
);
}
return false;
}
?>
+243 -219
View File
@@ -1,224 +1,248 @@
<?php
/* Copyright (C) 2009 Technikum-Wien
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* Authors: Christian Paminger < christian.paminger@technikum-wien.at >
* Andreas Oesterreicher < andreas.oesterreicher@technikum-wien.at >
* Rudolf Hangl < rudolf.hangl@technikum-wien.at >
* Gerald Simane-Sequens < gerald.simane-sequens@technikum-wien.at >
*/
require_once('../../../config/cis.config.inc.php');
require_once('../../../include/functions.inc.php');
require_once('../../../include/datum.class.php');
require_once('../../../include/person.class.php');
require_once('../../../include/benutzer.class.php');
require_once('../../../include/student.class.php');
require_once('../../../include/studiengang.class.php');
require_once('../../../include/benutzerberechtigung.class.php');
require_once('../../../include/phrasen.class.php');
$sprache = getSprache();
$p = new phrasen($sprache);
if (!$db = new basis_db())
die($p->t('global/fehlerBeimOeffnenDerDatenbankverbindung'));
$getuid=get_uid();
$uid=$getuid;
if(isset($_GET['uid']))
{
//Studentenansicht
$uid = $_GET['uid'];
//Rechte Pruefen
$allowed=false;
$student = new student();
if(!$student->load($uid))
die($p->t('global/fehlerBeimErmittelnDerUID'));
$stg_obj = new studiengang();
if(!$stg_obj->load($student->studiengang_kz))
die($p->t('global/fehlerBeimLesenAusDatenbank'));
//Berechtigung ueber das Berechtigungssystem
$rechte = new benutzerberechtigung();
$rechte->getBerechtigungen($getuid);
if($rechte->isBerechtigt('lehre/abgabetool',$stg_obj->oe_kurzbz,'s'))
$allowed=true;
//oder Lektor mit Betreuung dieses Studenten
$qry = "SELECT 1
FROM
lehre.tbl_projektarbeit
JOIN lehre.tbl_projektbetreuer USING(projektarbeit_id)
JOIN campus.vw_benutzer on(vw_benutzer.person_id=tbl_projektbetreuer.person_id)
WHERE
tbl_projektarbeit.student_uid=".$db->db_add_param($uid)." AND
vw_benutzer.uid=".$db->db_add_param($getuid).";";
if($result = $db->db_query($qry))
{
if($db->db_num_rows($result)>0)
{
$allowed=true;
}
}
if(!$allowed)
{
die($p->t('abgabetool/keineBerechtigungStudentenansicht'));
}
}
$htmlstr = '';
$htmlstr1 = '';
$vorname='';
$nachname='';
$zweitbetreuer = '';
$sql_query = "SELECT (SELECT nachname FROM public.tbl_person WHERE person_id=tbl_projektbetreuer.person_id) AS bnachname,
(SELECT vorname FROM public.tbl_person WHERE person_id=tbl_projektbetreuer.person_id) AS bvorname,
(SELECT titelpre FROM public.tbl_person WHERE person_id=tbl_projektbetreuer.person_id) AS btitelpre,
(SELECT titelpost FROM public.tbl_person WHERE person_id=tbl_projektbetreuer.person_id) AS btitelpost,
(SELECT person_id FROM lehre.tbl_projektbetreuer WHERE projektarbeit_id=tbl_projektarbeit.projektarbeit_id
AND betreuerart_kurzbz IN ('Zweitbetreuer', 'Zweitbegutachter') LIMIT 1) AS zweitbetreuer_person_id,
(SELECT betreuerart_kurzbz FROM lehre.tbl_projektbetreuer WHERE projektarbeit_id=tbl_projektarbeit.projektarbeit_id
AND betreuerart_kurzbz IN ('Zweitbetreuer', 'Zweitbegutachter') LIMIT 1) AS zweitbetreuer_betreuerart_kurzbz,
tbl_projektbetreuer.person_id AS betreuer_person_id,
tbl_projekttyp.bezeichnung AS prjbez, *
FROM lehre.tbl_projektarbeit
LEFT JOIN lehre.tbl_projektbetreuer USING(projektarbeit_id)
LEFT JOIN public.tbl_benutzer ON(uid=student_uid)
LEFT JOIN public.tbl_person ON(tbl_benutzer.person_id=tbl_person.person_id)
LEFT JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
LEFT JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id)
LEFT JOIN public.tbl_studiengang USING(studiengang_kz)
LEFT JOIN lehre.tbl_projekttyp USING (projekttyp_kurzbz)
WHERE (projekttyp_kurzbz='Bachelor' OR projekttyp_kurzbz='Diplom')
AND (tbl_projektbetreuer.betreuerart_kurzbz='Betreuer'
OR tbl_projektbetreuer.betreuerart_kurzbz='Begutachter'
OR tbl_projektbetreuer.betreuerart_kurzbz='Erstbetreuer'
OR tbl_projektbetreuer.betreuerart_kurzbz='Erstbegutachter')
AND tbl_projektarbeit.student_uid=".$db->db_add_param($uid)."
AND public.tbl_benutzer.aktiv
AND lehre.tbl_projektarbeit.note IS NULL
ORDER BY studiensemester_kurzbz desc, tbl_lehrveranstaltung.kurzbz";
//AND tbl_projektarbeit.student_uid='$getuid' 'ie07m102';
if(!$erg=$db->db_query($sql_query))
{
$errormsg=$p->t('global/fehlerBeimLesenAusDatenbank');
}
else
{
$htmlstr .= "<form name='formular'><input type='hidden' name='check' value=''></form><table id='t1' class='tablesorter'>\n";
$htmlstr .= "<thead><tr>\n";
$htmlstr .= "
<th>".$p->t('abgabetool/details')."</th>
<th>".$p->t('lvplan/sem')."</th>
<th>".$p->t('lvplan/stg')."</th>
<th>".$p->t('global/mail')."</th>
<th>".$p->t('abgabetool/betreuer')."</th>
<th>".$p->t('abgabetool/typ')."</th>
<th>".$p->t('abgabetool/titel')."</th>
<!--<th>".$p->t('abgabetool/betreuerart')."</th>-->";
$htmlstr .= "</tr></thead><tbody>\n";
$i = 0;
while($row=$db->db_fetch_object($erg))
{
$htmlstr1 = '';
$zweitbetreuer_obj = new person();
if ($zweitbetreuer_obj->load($row->zweitbetreuer_person_id))
{
$zweitbetreuer = ', <b>'.$db->convert_html_chars($row->zweitbetreuer_betreuerart_kurzbz).'</b>: '.$zweitbetreuer_obj->titelpre.' '.$zweitbetreuer_obj->vorname.' '.$zweitbetreuer_obj->nachname.' '.$zweitbetreuer_obj->titelpost;
}
$htmlstr1 = '<b>'.$db->convert_html_chars($row->betreuerart_kurzbz).'</b>: ';
$vorname=$row->vorname;
$nachname=$row->nachname;
$uid=$row->uid;
($row->btitelpre!=''?$htmlstr1 .= $row->btitelpre.' ':$htmlstr1 .= '');
$htmlstr1 .= $row->bvorname.' '.$row->bnachname;
($row->btitelpost!=''?$htmlstr1 .= ' '.$row->btitelpost:$htmlstr1 .= '');
$htmlstr1 .= $zweitbetreuer;
$htmlstr .= " <tr>\n"; //class='liste".($i%2)."'
$htmlstr .= " <td><a href='abgabe_student_details.php?uid=".$row->uid."&projektarbeit_id=".$row->projektarbeit_id."&bid=".$row->betreuer_person_id."' target='as_detail' title='Details anzeigen'>".$p->t('abgabetool/upload')."</a></td>\n";
$htmlstr .= " <td>".$row->studiensemester_kurzbz."</td>\n";
$htmlstr .= " <td>".strtoupper($row->typ.$row->kurzbz)."</td>\n";
$htmlstr .= " <td align= center>";
$qry_betr="SELECT mitarbeiter_uid FROM public.tbl_person
JOIN public.tbl_benutzer USING(person_id)
JOIN public.tbl_mitarbeiter ON(uid=mitarbeiter_uid)
WHERE person_id=".$db->db_add_param($row->betreuer_person_id, FHC_INTEGER).";";
if($result_betr=$db->db_query($qry_betr))
{
if($row_betr=$db->db_fetch_object($result_betr))
{
$htmlstr.="<a href='mailto:$row_betr->mitarbeiter_uid@".DOMAIN."?subject=Betreuung%20".$row->prjbez."%20von%20".$row->vorname."%20".$row->nachname."'><img src='../../../skin/images/email.png' alt='email' title='".$p->t('abgabetool/emailAnBetreuer')."'></a>";
}
else
{
$htmlstr.="UID unknown!";
}
}
$htmlstr .= " </td>";
$htmlstr .= " <td>".$htmlstr1." </td>\n";
$htmlstr .= " <td>".$db->convert_html_chars($row->prjbez)."</td>\n";
$htmlstr .= " <td>".$db->convert_html_chars($row->titel)."</td>\n";
// $htmlstr .= " <td>".$db->convert_html_chars($row->betreuerart_kurzbz)."</td>\n";
$htmlstr .= " </tr>\n";
$i++;
}
$htmlstr .= "</tbody></table>\n";
}
echo '
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Abgabesystem_Studentensicht</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" href="../../../skin/style.css.php" type="text/css">
<?php
/* Copyright (C) 2009 Technikum-Wien
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* Authors: Christian Paminger < christian.paminger@technikum-wien.at >
* Andreas Oesterreicher < andreas.oesterreicher@technikum-wien.at >
* Rudolf Hangl < rudolf.hangl@technikum-wien.at >
* Gerald Simane-Sequens < gerald.simane-sequens@technikum-wien.at >
*/
require_once('../../../config/cis.config.inc.php');
require_once('../../../include/functions.inc.php');
require_once('../../../include/datum.class.php');
require_once('../../../include/person.class.php');
require_once('../../../include/benutzer.class.php');
require_once('../../../include/student.class.php');
require_once('../../../include/studiengang.class.php');
require_once('../../../include/benutzerberechtigung.class.php');
require_once('../../../include/phrasen.class.php');
$sprache = getSprache();
$p = new phrasen($sprache);
if (!$db = new basis_db())
die($p->t('global/fehlerBeimOeffnenDerDatenbankverbindung'));
$getuid=get_uid();
$uid=$getuid;
if(isset($_GET['uid']))
{
//Studentenansicht
$uid = $_GET['uid'];
//Rechte Pruefen
$allowed=false;
$student = new student();
if(!$student->load($uid))
die($p->t('global/fehlerBeimErmittelnDerUID'));
$stg_obj = new studiengang();
if(!$stg_obj->load($student->studiengang_kz))
die($p->t('global/fehlerBeimLesenAusDatenbank'));
//Berechtigung ueber das Berechtigungssystem
$rechte = new benutzerberechtigung();
$rechte->getBerechtigungen($getuid);
if($rechte->isBerechtigt('lehre/abgabetool',$stg_obj->oe_kurzbz,'s'))
$allowed=true;
//oder Lektor mit Betreuung dieses Studenten
$qry = "SELECT 1
FROM
lehre.tbl_projektarbeit
JOIN lehre.tbl_projektbetreuer USING(projektarbeit_id)
JOIN campus.vw_benutzer on(vw_benutzer.person_id=tbl_projektbetreuer.person_id)
WHERE
tbl_projektarbeit.student_uid=".$db->db_add_param($uid)." AND
vw_benutzer.uid=".$db->db_add_param($getuid).";";
if($result = $db->db_query($qry))
{
if($db->db_num_rows($result)>0)
{
$allowed=true;
}
}
if(!$allowed)
{
die($p->t('abgabetool/keineBerechtigungStudentenansicht'));
}
}
$htmlstr = '';
$htmlstr1 = '';
$vorname='';
$nachname='';
$zweitbetreuer = '';
$sql_query = "SELECT (SELECT nachname FROM public.tbl_person WHERE person_id=tbl_projektbetreuer.person_id) AS bnachname,
(SELECT vorname FROM public.tbl_person WHERE person_id=tbl_projektbetreuer.person_id) AS bvorname,
(SELECT titelpre FROM public.tbl_person WHERE person_id=tbl_projektbetreuer.person_id) AS btitelpre,
(SELECT titelpost FROM public.tbl_person WHERE person_id=tbl_projektbetreuer.person_id) AS btitelpost,
(SELECT person_id FROM lehre.tbl_projektbetreuer WHERE projektarbeit_id=tbl_projektarbeit.projektarbeit_id
AND betreuerart_kurzbz IN ('Zweitbetreuer', 'Zweitbegutachter') LIMIT 1) AS zweitbetreuer_person_id,
(SELECT betreuerart_kurzbz FROM lehre.tbl_projektbetreuer WHERE projektarbeit_id=tbl_projektarbeit.projektarbeit_id
AND betreuerart_kurzbz IN ('Zweitbetreuer', 'Zweitbegutachter') LIMIT 1) AS zweitbetreuer_betreuerart_kurzbz,
tbl_projektbetreuer.person_id AS betreuer_person_id,
tbl_projekttyp.bezeichnung AS prjbez, *,
lehre.tbl_projektbetreuer.note as note,
public.tbl_benutzer.aktiv as aktiv,
(SELECT abgeschicktvon FROM extension.tbl_projektarbeitsbeurteilung WHERE projektarbeit_id = tbl_projektarbeit.projektarbeit_id AND betreuer_person_id = tbl_projektbetreuer.person_id) AS babgeschickt,
(SELECT abgeschicktvon FROM extension.tbl_projektarbeitsbeurteilung WHERE projektarbeit_id = tbl_projektarbeit.projektarbeit_id AND betreuerart_kurzbz IN ('Zweitbetreuer', 'Zweitbegutachter') LIMIT 1) AS zweitbetreuer_abgeschickt
FROM lehre.tbl_projektarbeit
LEFT JOIN lehre.tbl_projektbetreuer USING(projektarbeit_id)
LEFT JOIN public.tbl_benutzer ON(uid=student_uid)
LEFT JOIN public.tbl_person ON(tbl_benutzer.person_id=tbl_person.person_id)
LEFT JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
LEFT JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id)
LEFT JOIN public.tbl_studiengang USING(studiengang_kz)
LEFT JOIN lehre.tbl_projekttyp USING (projekttyp_kurzbz)
WHERE (projekttyp_kurzbz='Bachelor' OR projekttyp_kurzbz='Diplom')
AND (tbl_projektbetreuer.betreuerart_kurzbz='Betreuer'
OR tbl_projektbetreuer.betreuerart_kurzbz='Begutachter'
OR tbl_projektbetreuer.betreuerart_kurzbz='Erstbetreuer'
OR tbl_projektbetreuer.betreuerart_kurzbz='Erstbegutachter')
AND tbl_projektarbeit.student_uid=".$db->db_add_param($uid)."
ORDER BY studiensemester_kurzbz desc, tbl_lehrveranstaltung.kurzbz";
//AND tbl_projektarbeit.student_uid='$getuid' 'ie07m102';
if(!$erg=$db->db_query($sql_query))
{
$errormsg=$p->t('global/fehlerBeimLesenAusDatenbank');
}
else
{
$htmlstr .= "<form name='formular'><input type='hidden' name='check' value=''></form><table id='t1' class='tablesorter'>\n";
$htmlstr .= "<thead><tr>\n";
$htmlstr .= "
<th>".$p->t('abgabetool/details')."</th>
<th>".$p->t('lvplan/sem')."</th>
<th>".$p->t('lvplan/stg')."</th>
<th>".$p->t('global/mail')."</th>
<th>".$p->t('abgabetool/betreuer')."</th>
<th>".$p->t('abgabetool/typ')."</th>
<th>".$p->t('abgabetool/titel')."</th>
<!--<th>".$p->t('abgabetool/betreuerart')."</th>-->";
$htmlstr .= "</tr></thead><tbody>\n";
$i = 0;
while($row=$db->db_fetch_object($erg))
{
$htmlstr1 = '';
$zweitbetreuer_obj = new person();
if ($zweitbetreuer_obj->load($row->zweitbetreuer_person_id))
{
$zweitbetreuer = ', <b>'.$db->convert_html_chars($row->zweitbetreuer_betreuerart_kurzbz).'</b>: '.$zweitbetreuer_obj->titelpre.' '.$zweitbetreuer_obj->vorname.' '.$zweitbetreuer_obj->nachname.' '.$zweitbetreuer_obj->titelpost;
}
$htmlstr1 = '<b>'.$db->convert_html_chars($row->betreuerart_kurzbz).'</b>: ';
$vorname=$row->vorname;
$nachname=$row->nachname;
$uid=$row->uid;
($row->btitelpre!=''?$htmlstr1 .= $row->btitelpre.' ':$htmlstr1 .= '');
$htmlstr1 .= $row->bvorname.' '.$row->bnachname;
($row->btitelpost!=''?$htmlstr1 .= ' '.$row->btitelpost:$htmlstr1 .= '');
$htmlstr1 .= $zweitbetreuer;
$htmlstr .= " <tr>\n"; //class='liste".($i%2)."'
if (is_null($row->note) && $row->aktiv === 't')
$htmlstr .= " <td><a href='abgabe_student_details.php?uid=".$row->uid."&projektarbeit_id=".$row->projektarbeit_id."&bid=".$row->betreuer_person_id."' target='as_detail' title='Details anzeigen'>".$p->t('abgabetool/upload')."</a></td>\n";
elseif (!is_null($row->babgeschickt) || !is_null($row->zweitbetreuer_abgeschickt))
{
$htmlstr .= "<td>";
if (!is_null($row->babgeschickt))
$htmlstr .= "<a href='../pdfExport.php?xml=projektarbeitsbeurteilung.xml.php&xsl=Projektbeurteilung&betreuerart_kurzbz=" . $row->betreuerart_kurzbz . "&projektarbeit_id=" . $row->projektarbeit_id . "&person_id=" . $row->betreuer_person_id ."' title='".$p->t('abgabetool/projektbeurteilungDownload')."'>".$p->t('abgabetool/projektbeurteilungErstDownload')."</a>";
if (!is_null($row->babgeschickt) && !is_null($row->zweitbetreuer_abgeschickt))
$htmlstr .= "/";
if (!is_null($row->zweitbetreuer_abgeschickt))
$htmlstr .= "<a href='../pdfExport.php?xml=projektarbeitsbeurteilung.xml.php&xsl=Projektbeurteilung&betreuerart_kurzbz=" . $row->zweitbetreuer_betreuerart_kurzbz . "&projektarbeit_id=" . $row->projektarbeit_id . "&person_id=" . $row->zweitbetreuer_person_id."' title='".$p->t('abgabetool/projektbeurteilungDownload')."'>".$p->t('abgabetool/projektbeurteilungZweitDownload')."</a>";
$htmlstr .= "</td>";
} else
{
$htmlstr .= "<td></td>";
}
$htmlstr .= " <td>".$row->studiensemester_kurzbz."</td>\n";
$htmlstr .= " <td>".strtoupper($row->typ.$row->kurzbz)."</td>\n";
$htmlstr .= " <td align= center>";
$qry_betr="SELECT mitarbeiter_uid FROM public.tbl_person
JOIN public.tbl_benutzer USING(person_id)
JOIN public.tbl_mitarbeiter ON(uid=mitarbeiter_uid)
WHERE person_id=".$db->db_add_param($row->betreuer_person_id, FHC_INTEGER).";";
if($result_betr=$db->db_query($qry_betr))
{
if($row_betr=$db->db_fetch_object($result_betr))
{
$htmlstr.="<a href='mailto:$row_betr->mitarbeiter_uid@".DOMAIN."?subject=Betreuung%20".$row->prjbez."%20von%20".$row->vorname."%20".$row->nachname."'><img src='../../../skin/images/email.png' alt='email' title='".$p->t('abgabetool/emailAnBetreuer')."'></a>";
}
else
{
$htmlstr.="UID unknown!";
}
}
$htmlstr .= " </td>";
$htmlstr .= " <td>".$htmlstr1." </td>\n";
$htmlstr .= " <td>".$db->convert_html_chars($row->prjbez)."</td>\n";
$htmlstr .= " <td>".$db->convert_html_chars($row->titel)."</td>\n";
// $htmlstr .= " <td>".$db->convert_html_chars($row->betreuerart_kurzbz)."</td>\n";
$htmlstr .= " </tr>\n";
$i++;
}
$htmlstr .= "</tbody></table>\n";
}
echo '
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Abgabesystem_Studentensicht</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" href="../../../skin/style.css.php" type="text/css">
<link rel="stylesheet" type="text/css" href="../../../skin/jquery-ui-1.9.2.custom.min.css">
<script type="text/javascript" src="../../../vendor/jquery/jqueryV1/jquery-1.12.4.min.js"></script>
<script type="text/javascript" src="../../../vendor/christianbach/tablesorter/jquery.tablesorter.min.js"></script>
<script type="text/javascript" src="../../../vendor/components/jqueryui/jquery-ui.min.js"></script>
<script type="text/javascript" src="../../../include/js/jquery.ui.datepicker.translation.js"></script>
<script type="text/javascript" src="../../../vendor/jquery/sizzle/sizzle.js"></script>
<link rel="stylesheet" href="../../../skin/tablesort.css" type="text/css"/>
<script language="JavaScript" type="text/javascript">
$(document).ready(function()
{
$("#t1").tablesorter(
{
sortList: [[4,0]],
widgets: ["zebra"]
});
});
</script>
</head>
<body>';
echo '<h1><div style="float:left">'.$p->t('abgabetool/ueberschrift');
if(trim($uid)!='')
echo " ($uid $vorname $nachname)</div> <div style='text-align:right'><a href='".$p->t('dms_link/abgabetoolStudentHandbuch')."' target='_blank'><img src='../../../skin/images/information.png' alt='Anleitung' title='Anleitung Abgabetool' border=0>&nbsp;".$p->t('global/handbuch')."</a></div>";
echo '</h1>';
echo $htmlstr;
echo '</body>
</html>';
?>
<script type="text/javascript" src="../../../vendor/jquery/sizzle/sizzle.js"></script>
<link rel="stylesheet" href="../../../skin/tablesort.css" type="text/css"/>
<script language="JavaScript" type="text/javascript">
$(document).ready(function()
{
$("#t1").tablesorter(
{
sortList: [[4,0]],
widgets: ["zebra"]
});
});
</script>
</head>
<body>';
echo '<h1><div style="float:left">'.$p->t('abgabetool/ueberschrift');
if(trim($uid)!='')
echo " ($uid $vorname $nachname)</div> <div style='text-align:right'><a href='".$p->t('dms_link/abgabetoolStudentHandbuch')."' target='_blank'><img src='../../../skin/images/information.png' alt='Anleitung' title='Anleitung Abgabetool' border=0>&nbsp;".$p->t('global/handbuch')."</a></div>";
echo '</h1>';
echo $htmlstr;
echo '</body>
</html>';
?>
+90 -6
View File
@@ -34,6 +34,8 @@ 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();
$p = new phrasen($anzeigesprache);
@@ -324,7 +326,6 @@ if($command=="update" && $error!=true)
{
if($row_zd=@$db->db_fetch_object($result_zd))
{
$htmlstr = "<div>".$p->t('abgabetool/betreuer').": <b>".$db->convert_html_chars($betreuer)."</b><br>".$p->t('abgabetool/titel').": <b>".$db->convert_html_chars($titel)."<b><br><br></div>\n";
$htmlstr .= "<table class='detail' style='padding-top:10px;'>\n";
$htmlstr .= "<tr></tr>\n";
@@ -397,7 +398,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,
@@ -422,15 +423,98 @@ if($command=="update" && $error!=true)
}
else
{
// 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::date >= (SELECT start FROM public.tbl_studiensemester WHERE studiensemester_kurzbz = 'SS2021')::date
LIMIT 1";
$result_sem=$db->db_query($qry_sem);
$num_rows_sem = $db->db_num_rows($result_sem);
if($num_rows_sem < 0)
{
echo "<font color=\"#FF0000\">".$p->t('abgabetool/fehlerAktualitaetProjektarbeit')."</font><br>&nbsp;";
}
$row_std=$db->db_fetch_object($result_std);
$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--------------------------------------------------------------------------");
$mail->setReplyTo($user."@".DOMAIN);
if(!$mail->send())
// 1. Begutachter mail 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();
$maildata['geehrt'] = "geehrte".($row_betr->anrede=="Herr"?"r":"");
$maildata['anrede'] = $row_betr->anrede;
$maildata['betreuer_voller_name'] = $row_betr->first;
$maildata['student_anrede'] = $row_std->anrede;
$maildata['student_voller_name'] = trim($row_std->titelpre." ".$row_std->vorname." ".$row_std->nachname." ".$row_std->titelpost);
$maildata['parbeituebersichtlink'] = "<p><a href='".APP_ROOT."cis/private/lehre/abgabe_lektor_frameset.html'>Zur Projektarbeitsübersicht</a></p>";
$maildata['bewertunglink'] = $num_rows_sem >= 1 ? "<p><a href='$mail_fulllink'>Zur Beurteilung der Arbeit</a></p>" : "";
$maildata['token'] = "";
$mailres = sendSanchoMail(
'ParbeitsbeurteilungEndupload',
$maildata,
$row_betr->mitarbeiter_uid."@".DOMAIN,
"Bachelor-/Masterarbeitsbetreuung",
'sancho_header_min_bw.jpg',
'sancho_footer_min_bw.jpg',
$user."@".DOMAIN);
if(!$mailres)
{
echo "<font color=\"#FF0000\">".$p->t('abgabetool/fehlerMailBegutachter')."</font><br>&nbsp;";
}
// 2. Begutachter mail, wenn Endabgabe, mit Token wenn extern
if ($paabgabetyp_kurzbz == 'end')
{
$projektbetreuer = new projektbetreuer();
$zweitbetr = $projektbetreuer->getZweitbegutachterWithToken($bid, $projektarbeit_id, $row_std->uid);
if ($zweitbetr)
{
$tokenGenRes = $projektbetreuer->generateZweitbegutachterToken($zweitbetr->person_id, $projektarbeit_id);
if (!$tokenGenRes)
echo "<font color=\"#FF0000\">" . $p->t('abgabetool/fehlerMailZweitBegutachter') . "</font><br>&nbsp;";
$zweitbetr = $projektbetreuer->getZweitbegutachterWithToken($bid, $projektarbeit_id, $row_std->uid);
if (!$zweitbetr)
echo "<font color=\"#FF0000\">" . $p->t('abgabetool/fehlerMailZweitBegutachter') . "</font><br>&nbsp;";
$intern = isset($zweitbetr->uid);
$mail_link = $intern ? $mail_fulllink : $mail_baselink;
$zweitbetmaildata = array();
$zweitbetmaildata['geehrt'] = "geehrte" . ($zweitbetr->anrede == "Herr" ? "r" : "");
$zweitbetmaildata['anrede'] = $zweitbetr->anrede;
$zweitbetmaildata['betreuer_voller_name'] = $zweitbetr->voller_name;
$zweitbetmaildata['student_anrede'] = $maildata['student_anrede'];
$zweitbetmaildata['student_voller_name'] = $maildata['student_voller_name'];
$zweitbetmaildata['parbeituebersichtlink'] = $intern ? $maildata['parbeituebersichtlink'] : "";
$zweitbetmaildata['bewertunglink'] = $num_rows_sem >= 1 ? "<p><a href='$mail_link'>Zur Beurteilung der Arbeit</a></p>" : "";
$zweitbetmaildata['token'] = $num_rows_sem >= 1 && isset($zweitbetr->zugangstoken) && !$intern ? "<p>Zugangstoken: " . $zweitbetr->zugangstoken . "</p>" : "";
$mailres = sendSanchoMail(
'ParbeitsbeurteilungEndupload',
$zweitbetmaildata,
$zweitbetr->email,
"Masterarbeitsbetreuung",
'sancho_header_min_bw.jpg',
'sancho_footer_min_bw.jpg',
$user . "@" . DOMAIN
);
if (!$mailres)
{
echo "<font color=\"#FF0000\">" . $p->t('abgabetool/fehlerMailZweitBegutachter') . "</font><br>&nbsp;";
}
}
}
}
}
else
+40 -3
View File
@@ -39,6 +39,7 @@ require_once('../../include/prestudent.class.php');
require_once('../../include/dokument_export.class.php');
require_once('../../include/person.class.php');
require_once('../../include/webservicelog.class.php');
require_once('../../include/projektarbeit.class.php');
if (!$db = new basis_db())
die('Fehler beim Oeffnen der Datenbankverbindung');
@@ -120,7 +121,7 @@ $params = 'xmlformat=xml';
//Admins duerfen Dokumente anderer Personen drucken
if ($rechte->isBerechtigt('admin'))
$user = $_GET['uid'];
$user = isset($_GET['uid']) ? $_GET['uid'] : $user;
$params .= '&uid='.$user;
if (isset($_GET['person_id']))
@@ -139,6 +140,11 @@ if (isset($_GET['all']))
$params .= '&all=1';
if (isset($_GET['xsl_oe_kurzbz']))
$params .= '&xsl_oe_kurzbz='. $_GET['xsl_oe_kurzbz'];
if (isset($_GET['projektarbeit_id']))
$params .= '&projektarbeit_id='. $_GET['projektarbeit_id'];
if (isset($_GET['betreuerart_kurzbz']))
$params .= '&betreuerart_kurzbz='. $_GET['betreuerart_kurzbz'];
// Logeintrag bei Download von Zahlungsbestaetigungen
if (isset($_GET['xsl']) && $_GET['xsl'] == 'Zahlung')
@@ -150,7 +156,7 @@ if (isset($_GET['xsl']) && $_GET['xsl'] == 'Zahlung')
$log->request_id = isset($_GET['buchungsnummern']) && !empty($_GET['buchungsnummern']) ? $_GET['buchungsnummern'] : NULL;
$log->beschreibung = 'Zahlungsbestaetigungsdownload';
$log->request_data = $requestdata;
$log->execute_user = $user;
$log->execute_user = get_uid();
$log->save(true);
}
@@ -183,9 +189,40 @@ if (isset($_GET['output']) && $_GET['output'] != 'pdf')
else
$output = 'pdf';
if (isset($_GET['xsl']) && ($_GET['xsl'] === 'Projektbeurteilung'))
{
if (!isset($_GET['betreuerart_kurzbz']) || !isset($_GET['person_id']) || !isset($_GET['projektarbeit_id']))
die('Fehlerhafte Parameteruebergabe');
$projektarbeit = new projektarbeit();
$projektarbeit->load($_GET['projektarbeit_id']);
$betreuer = new person();
$betreuer->getPersonFromBenutzer($user);
//Überprüft ob es der Betreuer oder der Student ist
if ($betreuer->person_id !== $_GET['person_id'] && $projektarbeit->student_uid !== $user && !$rechte->isBerechtigt('assistenz'))
die("<html><body><h3>Sie haben keine Berechtigung für diese Aktion.</h3></body></html>");
switch ($_GET['betreuerart_kurzbz'])
{
case 'Begutachter' :
$xsl = 'ProjektBeurteilungBA';
break;
case 'Erstbegutachter' :
$xsl = 'ProjektBeurteilungMAErst';
break;
case 'Zweitbegutachter' :
$xsl = 'ProjektBeurteilungMAZweit';
break;
}
$allowed = true;
}
$konto = new konto();
if (((isset($_GET["uid"]) && $user == $_GET["uid"])) || $rechte->isBerechtigt('admin'))
if ((((isset($_GET["uid"]) && $user == $_GET["uid"])) || $rechte->isBerechtigt('admin')) || (isset($allowed) && $allowed === true))
{
$buchungstypen = array();
if (defined("CIS_DOKUMENTE_STUDIENBEITRAG_TYPEN"))
+332 -331
View File
@@ -1,333 +1,334 @@
<?php
/* Copyright (C) 2010 Technikum-Wien
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* Authors: Christian Paminger < christian.paminger@technikum-wien.at >
* Andreas Oesterreicher < andreas.oesterreicher@technikum-wien.at >
* Rudolf Hangl < rudolf.hangl@technikum-wien.at >
* Gerald Simane-Sequens < gerald.simane-sequens@technikum-wien.at >
*/
/*******************************************************************************************************
* projektabgabe
* projektabgabe ermöglicht den Download aller Abgaben eines Stg.
* fuer Diplom- und Bachelorarbeiten
*******************************************************************************************************/
require_once('../../../config/cis.config.inc.php');
require_once('../../../include/functions.inc.php');
require_once('../../../include/studiengang.class.php');
require_once('../../../include/datum.class.php');
require_once('../../../include/benutzerberechtigung.class.php');
require_once('../../../include/datum.class.php');
require_once('../../../include/mail.class.php');
require_once('../../../include/phrasen.class.php');
$sprache = getSprache();
$p = new phrasen($sprache);
if (!$db = new basis_db())
die($p->t('global/fehlerBeimOeffnenDerDatenbankverbindung'));
$aktion='';
if(isset($_REQUEST['aktion']))
{
$aktion=$_REQUEST['aktion'];
}
$zipfile='';
$stg_kz=(isset($_REQUEST['stg_kz'])?$_REQUEST['stg_kz']:'');
if(!is_numeric($stg_kz) && $stg_kz!='')
exit();
$abgabetyp=(isset($_REQUEST['abgabetyp'])?$_REQUEST['abgabetyp']:'');
$termin=(isset($_REQUEST['termin'])?$_REQUEST['termin']:'');
$htmlstr='';
$datum_obj = new datum();
$user = get_uid();
$rechte = new benutzerberechtigung();
$rechte->getBerechtigungen($user);
$berechtigung_kurzbz = 'lehre/abgabetool:download';
if(isset($_GET['id']) && isset($_GET['uid']))
{
if($rechte->isBerechtigt($berechtigung_kurzbz))
{
if(!is_numeric($_GET['id']) || $_GET['id']=='')
die($p->t('global/fehlerBeiDerParameteruebergabe'));
$file = $_GET['id'].'_'.$_GET['uid'].'.pdf';
$filename = PAABGABE_PATH.$file;
header('Content-Type: application/octet-stream');
header('Content-disposition: attachment; filename="'.$file.'"');
readfile($filename);
}
else
{
die($p->t('global/keineBerechtigungFuerDieseSeite'));
}
exit();
}
if($aktion!='zip')
{
echo '<!DOCTYPE HTML>
<html>
<head>
<title>'.$p->t('abgabetool/projektabgabeUebersicht').'</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="stylesheet" href="../../../skin/style.css.php" type="text/css">
<link rel="stylesheet" href="../../../skin/tablesort.css" type="text/css"/>
<?php
/* Copyright (C) 2010 Technikum-Wien
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* Authors: Christian Paminger < christian.paminger@technikum-wien.at >
* Andreas Oesterreicher < andreas.oesterreicher@technikum-wien.at >
* Rudolf Hangl < rudolf.hangl@technikum-wien.at >
* Gerald Simane-Sequens < gerald.simane-sequens@technikum-wien.at >
*/
/*******************************************************************************************************
* projektabgabe
* projektabgabe ermöglicht den Download aller Abgaben eines Stg.
* fuer Diplom- und Bachelorarbeiten
*******************************************************************************************************/
require_once('../../../config/cis.config.inc.php');
require_once('../../../include/functions.inc.php');
require_once('../../../include/studiengang.class.php');
require_once('../../../include/datum.class.php');
require_once('../../../include/benutzerberechtigung.class.php');
require_once('../../../include/datum.class.php');
require_once('../../../include/mail.class.php');
require_once('../../../include/phrasen.class.php');
include('../../../include/meta/jquery.php');
include('../../../include/meta/jquery-tablesorter.php');
$sprache = getSprache();
$p = new phrasen($sprache);
if (!$db = new basis_db())
die($p->t('global/fehlerBeimOeffnenDerDatenbankverbindung'));
$aktion='';
if(isset($_REQUEST['aktion']))
{
$aktion=$_REQUEST['aktion'];
}
$zipfile='';
$stg_kz=(isset($_REQUEST['stg_kz'])?$_REQUEST['stg_kz']:'');
if(!is_numeric($stg_kz) && $stg_kz!='')
exit();
$abgabetyp=(isset($_REQUEST['abgabetyp'])?$_REQUEST['abgabetyp']:'');
$termin=(isset($_REQUEST['termin'])?$_REQUEST['termin']:'');
$htmlstr='';
$datum_obj = new datum();
$user = get_uid();
$rechte = new benutzerberechtigung();
$rechte->getBerechtigungen($user);
$berechtigung_kurzbz = 'lehre/abgabetool:download';
if(isset($_GET['id']) && isset($_GET['uid']))
{
if($rechte->isBerechtigt($berechtigung_kurzbz))
{
if(!is_numeric($_GET['id']) || $_GET['id']=='')
die($p->t('global/fehlerBeiDerParameteruebergabe'));
$file = $_GET['id'].'_'.$_GET['uid'].'.pdf';
$filename = PAABGABE_PATH.$file;
header('Content-Type: application/octet-stream');
header('Content-disposition: attachment; filename="'.$file.'"');
readfile($filename);
}
else
{
die($p->t('global/keineBerechtigungFuerDieseSeite'));
}
exit();
}
if($aktion!='zip')
{
echo '<!DOCTYPE HTML>
<html>
<head>
<title>'.$p->t('abgabetool/projektabgabeUebersicht').'</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="stylesheet" href="../../../skin/style.css.php" type="text/css">
<link rel="stylesheet" href="../../../skin/tablesort.css" type="text/css"/>
<link rel="stylesheet" type="text/css" href="../../../skin/jquery-ui-1.9.2.custom.min.css">
<script type="text/javascript" src="../../../vendor/jquery/jqueryV1/jquery-1.12.4.min.js"></script>
<script type="text/javascript" src="../../../vendor/christianbach/tablesorter/jquery.tablesorter.min.js"></script>
<script type="text/javascript" src="../../../vendor/components/jqueryui/jquery-ui.min.js"></script>
<link rel="stylesheet" href="../../../include/js/tablesort/table.css" type="text/css">
<script type="text/javascript" src="../../../include/js/jquery.ui.datepicker.translation.js"></script>
<script type="text/javascript" src="../../../vendor/jquery/sizzle/sizzle.js"></script>
<script src="../../../vendor/components/jqueryui/jquery-ui.min.js" type="text/javascript"></script>
<script language="JavaScript" type="text/javascript">
$(document).ready(function()
{
$("#t1").tablesorter(
{
sortList: [[5,0]],
widgets: ["zebra"]
});
});
</script>
</head>
<body>
<H1>'.$p->t('abgabetool/projektabgabeUebersicht').'</H1>';
$s = new studiengang();
$s->loadArray($rechte->getStgKz($berechtigung_kurzbz),'typ,kurzbz');
echo'<form method="GET" action="'.$_SERVER['PHP_SELF'].'" name="abgabeFrm">';
echo $p->t('global/studiengang').": <SELECT onchange='set_termin();' id='stg_kz' name='stg_kz'>";
echo '<option value="" '. (!isset($_REQUEST['stg_kz']) || empty($stg_kz)?' selected ':'') .'>-</option>';
foreach ($s->result as $stg)
{
echo '<option value="'.$stg->studiengang_kz.'" '.(isset($_REQUEST['stg_kz']) && $stg->studiengang_kz==$stg_kz?' selected ':'').'>'.$stg->kuerzel.'</option>';
}
echo "</SELECT><input type=hidden name=aktion value=\"\">";
echo $p->t('abgabetool/abgabetyp').": <SELECT onchange='set_termin();' id='abgabetyp' name='abgabetyp'>";
$qry_atyp="SELECT * FROM campus.tbl_paabgabetyp";
echo '<option value="" '.(!isset($_REQUEST['abgabetyp']) || empty($abgabetyp)?' selected ':'').'>-</option>';
if($result_atyp=$db->db_query($qry_atyp))
{
while($row_atyp=$db->db_fetch_object($result_atyp))
{
echo '<option value="'.$row_atyp->paabgabetyp_kurzbz.'" '.($row_atyp->paabgabetyp_kurzbz==$abgabetyp?' selected ':'').'>'.$row_atyp->bezeichnung.'</option>';
}
}
echo "</SELECT>";
$qry_termin=" SELECT distinct campus.tbl_paabgabe.datum as termin , to_char(campus.tbl_paabgabe.datum, 'DD.MM.YYYY') as termin_anzeige
FROM lehre.tbl_projektarbeit
JOIN campus.tbl_paabgabe USING(projektarbeit_id)
LEFT JOIN public.tbl_benutzer ON(uid=student_uid)
LEFT JOIN public.tbl_person ON(tbl_benutzer.person_id=tbl_person.person_id)
LEFT JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
LEFT JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id)
LEFT JOIN public.tbl_studiengang USING(studiengang_kz)
WHERE (projekttyp_kurzbz='Bachelor' OR projekttyp_kurzbz='Diplom')
";
if ($stg_kz!='')
$qry_termin.=" AND public.tbl_studiengang.studiengang_kz=".$db->db_add_param($stg_kz, FHC_INTEGER);
if ($abgabetyp!='')
$qry_termin.=" AND campus.tbl_paabgabe.paabgabetyp_kurzbz=".$db->db_add_param($abgabetyp);
$qry_termin.=" ORDER BY termin desc";
echo '&nbsp;'.$p->t('abgabetool/termin').'&nbsp;<select name="termin" id="termin">
<option value="" '. (!isset($_REQUEST['termin']) || empty($termin)?' selected ':'') .'>-'.$p->t('global/alle').'-</option> ';
if($result_termin=$db->db_query($qry_termin))
{
while($row_termin=$db->db_fetch_object($result_termin))
{
echo '<option value="'.$row_termin->termin.'" '.($row_termin->termin==$termin?' selected ':'').'>'.$row_termin->termin_anzeige.'</option>';
}
}
echo '</select>';
?>
<script type="text/javascript">
function set_termin()
{
$('#termin').children().remove().end();
$.ajax
(
{
type: "POST",
url: 'projektabgabe_autocomplete.php',
dataType: 'json',
data: "work=work_termin_select" + "&stg_kz=" + $('#stg_kz').val() + "&abgabetyp=" + $('#abgabetyp').val(),
success: function(json)
{
var output = '';
for (p in json)
{
output += '<option value=\"' + json[p].oTermin + '\">' + json[p].oTerminAnzeige + '<\/option>\n';
}
$('#termin').html(output);
$('#termin').focus();
}
}
);
}
</script>
<?php
echo "&nbsp;<INPUT type='submit' name='ok' value='".$p->t('global/anzeigen')."' onclick=\"f=document.abgabeFrm;f.aktion.value='';\">&nbsp;<INPUT type='button' value='ZIP' onclick=\"f=document.abgabeFrm;f.aktion.value='zip';f.submit();\"></FORM><br>";
}
if(isset($_REQUEST['ok']) || (isset($_REQUEST['aktion']) && $_REQUEST['aktion']=='zip'))
{
$s=new studiengang();
if($stg_kz!='' && !$s->load($stg_kz))
{
die($p->t('global/studiengangKonnteNichtGefundenWerden'));
}
if($rechte->isBerechtigt('admin') || $rechte->isBerechtigt($berechtigung_kurzbz, $s->oe_kurzbz))
{
$qry="";
$qry.=" SELECT public.tbl_studiengang.bezeichnung as stgbez, campus.tbl_paabgabe.datum as termin,*
FROM lehre.tbl_projektarbeit
JOIN campus.tbl_paabgabe USING(projektarbeit_id)
LEFT JOIN public.tbl_benutzer ON(uid=student_uid)
LEFT JOIN public.tbl_person ON(tbl_benutzer.person_id=tbl_person.person_id)
LEFT JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
LEFT JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id)
LEFT JOIN public.tbl_studiengang USING(studiengang_kz)
WHERE (projekttyp_kurzbz='Bachelor' OR projekttyp_kurzbz='Diplom')
";
if ($stg_kz!='')
$qry.=" AND public.tbl_studiengang.studiengang_kz=".$db->db_add_param($stg_kz);
if ($abgabetyp!='')
$qry.=" AND campus.tbl_paabgabe.paabgabetyp_kurzbz=".$db->db_add_param($abgabetyp);
if ($termin!='')
$qry.=" AND campus.tbl_paabgabe.datum=".$db->db_add_param($termin);
$qry.=" ORDER BY nachname ";
if($stg_kz=='' && $abgabetyp=='' && $termin=='')
{
$qry.=" limit 100 ";
}
if(!$erg=$db->db_query($qry))
{
die('Fehler beim Laden der Betreuungen!');
}
else
{
$htmlstr .= "<table id='t1' class='tablesorter'>\n";
$htmlstr .= "<thead><tr>\n";
$htmlstr .= "<th>".$p->t('global/download')."</th>
<th>".$p->t('abgabetool/termin')."</th>
<th>".$p->t('abgabetool/abgabetyp')."</th>
<th>".$p->t('global/uid')."</th>
<th>".$p->t('global/vorname')."</th>
<th>".$p->t('global/nachname')."</th>";
$htmlstr .= "<th>".$p->t('abgabetool/typ')."</th>
<th>".$p->t('abgabetool/titel')."</th>";
$htmlstr .= "</tr></thead><tbody>\n";
$i = 0;
while($row=$db->db_fetch_object($erg))
{
$htmlstr .= "<tr>";
if(file_exists(PAABGABE_PATH.$row->paabgabe_id.'_'.$row->uid.'.pdf'))
{
$htmlstr .= " <td align=center><a href='".$_SERVER['PHP_SELF']."?id=".$row->paabgabe_id."&amp;uid=$row->uid' target='_blank'><img src='../../../skin/images/pdf.ico' alt='PDF' title='abgegebene Datei' border=0></a></td>";
}
else
{
$htmlstr .= " <td>&nbsp;&nbsp;&nbsp;&nbsp;</td>";
}
//$htmlstr .= "<td>link</td>";
$htmlstr .= "<td>".$datum_obj->formatDatum($row->termin,'d.m.Y')."</td>";
$htmlstr .= "<td>".$abgabetyp."&nbsp;</td>";
$htmlstr .= "<td>".$row->uid."&nbsp;</td>";
$htmlstr .= "<td>".$row->vorname."&nbsp;</td>\n";
$htmlstr .= "<td>".$row->nachname."&nbsp;</td>\n";
$htmlstr .= "<td>".$row->projekttyp_kurzbz."&nbsp;</td>\n";
$htmlstr .= "<td>".$row->titel."&nbsp;</td>\n";
if($aktion=='zip')
{
if($zipfile=='')
{
$zipfile = $row->paabgabe_id.'_'.$row->uid.'.pdf';
}
else
{
$zipfile .= " ".$row->paabgabe_id.'_'.$row->uid.'.pdf';
}
}
}
$htmlstr .= "</tbody></table>";
}
}
else
{
die($p->t('global/keineBerechtigungFuerDieseSeite'));
}
}
if($zipfile=='')
{
echo $htmlstr;
echo "</body></html>";
}
else
{
if(!$rechte->isBerechtigt($berechtigung_kurzbz))
{
die($p->t('global/keineBerechtigungFuerDieseSeite'));
}
//Zip File erstellen
chdir(PAABGABE_PATH);
$zipausgabe=tempnam("/tmp", "PAA").".zip";
exec("zip ".$zipausgabe." ".$zipfile);
if(file_exists($zipausgabe))
{
header('Content-Type: application/octet-stream');
header('Content-disposition: attachment; filename="Abgabe_'.$s->kuerzel.'.zip"');
$handle = fopen($zipausgabe, "rb");
while (!feof($handle))
{
echo fread($handle, 1024);
}
fclose($handle);
//echo file_get_contents($zipausgabe);
unlink($zipausgabe);
}
else
{
echo $p->t('global/dateiExistiertNicht');
}
}
?>
<script language="JavaScript" type="text/javascript">
$(document).ready(function()
{
$("#t1").tablesorter(
{
sortList: [[5,0]],
widgets: ["zebra"],
headers: {1: { sorter: "shortDate", dateFormat: "ddmmyyyy" }}
});
});
</script>
</head>
<body>
<H1>'.$p->t('abgabetool/projektabgabeUebersicht').'</H1>';
$s = new studiengang();
$s->loadArray($rechte->getStgKz($berechtigung_kurzbz),'typ,kurzbz');
echo'<form method="GET" action="'.$_SERVER['PHP_SELF'].'" name="abgabeFrm">';
echo $p->t('global/studiengang').": <SELECT onchange='set_termin();' id='stg_kz' name='stg_kz'>";
echo '<option value="" '. (!isset($_REQUEST['stg_kz']) || empty($stg_kz)?' selected ':'') .'>-</option>';
foreach ($s->result as $stg)
{
echo '<option value="'.$stg->studiengang_kz.'" '.(isset($_REQUEST['stg_kz']) && $stg->studiengang_kz==$stg_kz?' selected ':'').'>'.$stg->kuerzel.'</option>';
}
echo "</SELECT><input type=hidden name=aktion value=\"\">";
echo $p->t('abgabetool/abgabetyp').": <SELECT onchange='set_termin();' id='abgabetyp' name='abgabetyp'>";
$qry_atyp="SELECT * FROM campus.tbl_paabgabetyp";
echo '<option value="" '.(!isset($_REQUEST['abgabetyp']) || empty($abgabetyp)?' selected ':'').'>-</option>';
if($result_atyp=$db->db_query($qry_atyp))
{
while($row_atyp=$db->db_fetch_object($result_atyp))
{
echo '<option value="'.$row_atyp->paabgabetyp_kurzbz.'" '.($row_atyp->paabgabetyp_kurzbz==$abgabetyp?' selected ':'').'>'.$row_atyp->bezeichnung.'</option>';
}
}
echo "</SELECT>";
$qry_termin=" SELECT distinct campus.tbl_paabgabe.datum as termin , to_char(campus.tbl_paabgabe.datum, 'DD.MM.YYYY') as termin_anzeige
FROM lehre.tbl_projektarbeit
JOIN campus.tbl_paabgabe USING(projektarbeit_id)
LEFT JOIN public.tbl_benutzer ON(uid=student_uid)
LEFT JOIN public.tbl_person ON(tbl_benutzer.person_id=tbl_person.person_id)
LEFT JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
LEFT JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id)
LEFT JOIN public.tbl_studiengang USING(studiengang_kz)
WHERE (projekttyp_kurzbz='Bachelor' OR projekttyp_kurzbz='Diplom')
";
if ($stg_kz!='')
$qry_termin.=" AND public.tbl_studiengang.studiengang_kz=".$db->db_add_param($stg_kz, FHC_INTEGER);
if ($abgabetyp!='')
$qry_termin.=" AND campus.tbl_paabgabe.paabgabetyp_kurzbz=".$db->db_add_param($abgabetyp);
$qry_termin.=" ORDER BY termin desc";
echo '&nbsp;'.$p->t('abgabetool/termin').'&nbsp;<select name="termin" id="termin">
<option value="" '. (!isset($_REQUEST['termin']) || empty($termin)?' selected ':'') .'>-'.$p->t('global/alle').'-</option> ';
if($result_termin=$db->db_query($qry_termin))
{
while($row_termin=$db->db_fetch_object($result_termin))
{
echo '<option value="'.$row_termin->termin.'" '.($row_termin->termin==$termin?' selected ':'').'>'.$row_termin->termin_anzeige.'</option>';
}
}
echo '</select>';
?>
<script type="text/javascript">
function set_termin()
{
$('#termin').children().remove().end();
$.ajax
(
{
type: "POST",
url: 'projektabgabe_autocomplete.php',
dataType: 'json',
data: "work=work_termin_select" + "&stg_kz=" + $('#stg_kz').val() + "&abgabetyp=" + $('#abgabetyp').val(),
success: function(json)
{
var output = '';
for (p in json)
{
output += '<option value=\"' + json[p].oTermin + '\">' + json[p].oTerminAnzeige + '<\/option>\n';
}
$('#termin').html(output);
$('#termin').focus();
}
}
);
}
</script>
<?php
echo "&nbsp;<INPUT type='submit' name='ok' value='".$p->t('global/anzeigen')."' onclick=\"f=document.abgabeFrm;f.aktion.value='';\">&nbsp;<INPUT type='button' value='ZIP' onclick=\"f=document.abgabeFrm;f.aktion.value='zip';f.submit();\"></FORM><br>";
}
if(isset($_REQUEST['ok']) || (isset($_REQUEST['aktion']) && $_REQUEST['aktion']=='zip'))
{
$s=new studiengang();
if($stg_kz!='' && !$s->load($stg_kz))
{
die($p->t('global/studiengangKonnteNichtGefundenWerden'));
}
if($rechte->isBerechtigt('admin') || $rechte->isBerechtigt($berechtigung_kurzbz, $s->oe_kurzbz))
{
$qry="";
$qry.=" SELECT public.tbl_studiengang.bezeichnung as stgbez, campus.tbl_paabgabe.datum as termin,*
FROM lehre.tbl_projektarbeit
JOIN campus.tbl_paabgabe USING(projektarbeit_id)
LEFT JOIN public.tbl_benutzer ON(uid=student_uid)
LEFT JOIN public.tbl_person ON(tbl_benutzer.person_id=tbl_person.person_id)
LEFT JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
LEFT JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id)
LEFT JOIN public.tbl_studiengang USING(studiengang_kz)
WHERE (projekttyp_kurzbz='Bachelor' OR projekttyp_kurzbz='Diplom')
";
if ($stg_kz!='')
$qry.=" AND public.tbl_studiengang.studiengang_kz=".$db->db_add_param($stg_kz);
if ($abgabetyp!='')
$qry.=" AND campus.tbl_paabgabe.paabgabetyp_kurzbz=".$db->db_add_param($abgabetyp);
if ($termin!='')
$qry.=" AND campus.tbl_paabgabe.datum=".$db->db_add_param($termin);
$qry.=" ORDER BY nachname ";
if($stg_kz=='' && $abgabetyp=='' && $termin=='')
{
$qry.=" limit 100 ";
}
if(!$erg=$db->db_query($qry))
{
die('Fehler beim Laden der Betreuungen!');
}
else
{
$htmlstr .= "<table id='t1' class='tablesorter'>\n";
$htmlstr .= "<thead><tr>\n";
$htmlstr .= "<th>".$p->t('global/download')."</th>
<th>".$p->t('abgabetool/termin')."</th>
<th>".$p->t('abgabetool/abgabetyp')."</th>
<th>".$p->t('global/uid')."</th>
<th>".$p->t('global/vorname')."</th>
<th>".$p->t('global/nachname')."</th>";
$htmlstr .= "<th>".$p->t('abgabetool/typ')."</th>
<th>".$p->t('abgabetool/titel')."</th>";
$htmlstr .= "</tr></thead><tbody>\n";
$i = 0;
while($row=$db->db_fetch_object($erg))
{
$htmlstr .= "<tr>";
if(file_exists(PAABGABE_PATH.$row->paabgabe_id.'_'.$row->uid.'.pdf'))
{
$htmlstr .= " <td align=center><a href='".$_SERVER['PHP_SELF']."?id=".$row->paabgabe_id."&amp;uid=$row->uid' target='_blank'><img src='../../../skin/images/pdf.ico' alt='PDF' title='abgegebene Datei' border=0></a></td>";
}
else
{
$htmlstr .= " <td>&nbsp;&nbsp;&nbsp;&nbsp;</td>";
}
//$htmlstr .= "<td>link</td>";
$htmlstr .= "<td>".$datum_obj->formatDatum($row->termin,'d.m.Y')."</td>";
$htmlstr .= "<td>".$abgabetyp."&nbsp;</td>";
$htmlstr .= "<td>".$row->uid."&nbsp;</td>";
$htmlstr .= "<td>".$row->vorname."&nbsp;</td>\n";
$htmlstr .= "<td>".$row->nachname."&nbsp;</td>\n";
$htmlstr .= "<td>".$row->projekttyp_kurzbz."&nbsp;</td>\n";
$htmlstr .= "<td>".$row->titel."&nbsp;</td>\n";
if($aktion=='zip')
{
if($zipfile=='')
{
$zipfile = $row->paabgabe_id.'_'.$row->uid.'.pdf';
}
else
{
$zipfile .= " ".$row->paabgabe_id.'_'.$row->uid.'.pdf';
}
}
}
$htmlstr .= "</tbody></table>";
}
}
else
{
die($p->t('global/keineBerechtigungFuerDieseSeite'));
}
}
if($zipfile=='')
{
echo $htmlstr;
echo "</body></html>";
}
else
{
if(!$rechte->isBerechtigt($berechtigung_kurzbz))
{
die($p->t('global/keineBerechtigungFuerDieseSeite'));
}
//Zip File erstellen
chdir(PAABGABE_PATH);
$zipausgabe=tempnam("/tmp", "PAA").".zip";
exec("zip ".$zipausgabe." ".$zipfile);
if(file_exists($zipausgabe))
{
header('Content-Type: application/octet-stream');
header('Content-disposition: attachment; filename="Abgabe_'.$s->kuerzel.'.zip"');
$handle = fopen($zipausgabe, "rb");
while (!feof($handle))
{
echo fread($handle, 1024);
}
fclose($handle);
//echo file_get_contents($zipausgabe);
unlink($zipausgabe);
}
else
{
echo $p->t('global/dateiExistiertNicht');
}
}
?>
+1 -1
View File
@@ -252,7 +252,7 @@ else
array('uid', 'stg_kz', 'person_id', 'id', 'prestudent_id', 'buchungsnummern', 'ss', 'abschlusspruefung_id',
'typ', 'all', 'preoutgoing_id', 'lvid', 'projekt_kurzbz', 'von', 'bis', 'stundevon', 'stundebis',
'sem', 'lehreinheit', 'mitarbeiter_uid', 'studienordnung_id', 'fixangestellt', 'standort',
'abrechnungsmonat', 'form')
'abrechnungsmonat', 'form', 'projektarbeit_id', 'betreuerart_kurzbz')
)
)
{
+16
View File
@@ -2296,8 +2296,12 @@ if(!$error)
{
$dokumente = explode(';',$_POST['dokumente']);
$errormsg = '';
$sonst = 0;
foreach ($dokumente as $dokument_kurzbz)
{
if ($dokument_kurzbz === 'Sonst' && $sonst !== 0)
continue;
if($dokument_kurzbz!='')
{
$dok = new dokument();
@@ -2308,6 +2312,8 @@ if(!$error)
$dok->insertamum = date('Y-m-d H:i:s');
$dok->insertvon = $user;
$dok->new = true;
if ($dokument_kurzbz === 'Sonst')
$sonst++;
if(!$dok->save())
{
@@ -2501,8 +2507,13 @@ if(!$error)
{
$dokumente = explode(';',$_POST['dokumente']);
$errormsg = '';
$sonst = 0;
foreach ($dokumente as $dokument_kurzbz)
{
if ($dokument_kurzbz === 'Sonst' && $sonst !== 0)
continue;
if($dokument_kurzbz!='')
{
$dok = new dokument();
@@ -2514,6 +2525,11 @@ if(!$error)
{
$errormsg .= "Fehler bei $dokument_kurzbz: $dok->errormsg\n";
}
else
{
if ($dokument_kurzbz === 'Sonst')
$sonst++;
}
}
else
{
+13 -1
View File
@@ -892,7 +892,13 @@ function StudentProjektbetreuerAuswahl()
document.getElementById('student-projektbetreuer-checkbox-neu').checked=false;
var gesamtkosten = StudentProjektbetreuerGesamtkosten();
if (document.getElementById('student-projektbetreuer-button-beurteilung'))
{
checkBeurteilung();
}
// Wenn Vertragsdetails angezeigt werden
if (projektarbeit_vertragsdetails_anzeigen) {
//Reset attributes
@@ -1122,6 +1128,12 @@ function StudentProjektbetreuerDetailDisableFields(val)
document.getElementById('student-projektbetreuer-button-speichern').disabled=val;
document.getElementById('student-projektbetreuer-button-neueperson').disabled=val;
document.getElementById('student-projektbetreuer-button-kontaktdaten').disabled=val;
if (document.getElementById('student-projektbetreuer-button-beurteilung') && val === true)
{
document.getElementById('student-projektbetreuer-button-beurteilung').disabled=val;
document.getElementById('student-projektbetreuer-span-beurteilung').setAttribute("value", '');
}
}
// ****
@@ -520,7 +520,7 @@ $is_hidden = (!defined('FAS_STUDIERENDE_PROJEKTARBEIT_VERTRAGSDETAILS_ANZEIGEN')
</groupbox>
<!-- Vertragsdetails: Anzeige wird ueber config Eintrag bestimmt -->
<vbox>
<vbox id="student-projektbetreuer-vbox">
<groupbox id="student-projektbetreuer-groupbox-vertragsdetails" hidden="<?php echo $is_hidden ?>">
<caption label="Vertragsdetails" />
<grid style="overflow:auto; padding:10px;" flex="1">
@@ -529,7 +529,7 @@ $is_hidden = (!defined('FAS_STUDIERENDE_PROJEKTARBEIT_VERTRAGSDETAILS_ANZEIGEN')
<column flex="1"/>
<column flex="1"/>
</columns>
<rows>
<rows >
<label id="student-projektbetreuer-label-vertrag_id" hidden="true" value=""/>
<row>
<label value="Vertragsstatus:"/>
+29
View File
@@ -177,6 +177,24 @@ class bisverwendung extends basis_db
}
}
/**
* Prueft das Datum
* @param $date = string
* @return true wenn ok, sonst false
*/
static public function verifyDate($date, $strict = true)
{
$dateTime = DateTime::createFromFormat('Y-m-d', $date);
if ($strict) {
$errors = DateTime::getLastErrors();
if (!empty($errors['warning_count'])) {
return false;
}
}
return $dateTime !== false;
}
/**
* Prueft die Daten vor dem Speichern
*
@@ -189,6 +207,17 @@ class bisverwendung extends basis_db
$this->errormsg = 'Vertragsstunden sind ungueltig';
return false;
}
elseif(!$this->verifyDate($this->beginn) && !empty($this->beginn))
{
$this->errormsg = 'Start Datum ist kein Valides Datum: '.$this->beginn;
return false;
}
elseif(!$this->verifyDate($this->ende) && !empty($this->ende))
{
$this->errormsg = 'End Datum ist kein Valides Datum: '.$this->ende;
return false;
}
return true;
}
+53
View File
@@ -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;
}
?>
+3 -1
View File
@@ -81,7 +81,9 @@ class organisationsform extends basis_db
$this->errormsg ="Fehler bei der Abfrage aufgetreten";
return false;
}
}
return true;
}
/**
*
+125
View File
@@ -391,5 +391,130 @@ 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
LEFT JOIN public.tbl_kontakt ON pers.person_id = tbl_kontakt.person_id AND kontakttyp = 'email' AND zustellung = true
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 (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
}
}
?>
+11 -5
View File
@@ -23,6 +23,7 @@ require_once(dirname(__FILE__).'/mail.class.php');
require_once(dirname(__FILE__).'/vorlage.class.php');
const DEFAULT_SANCHO_HEADER_IMG = 'sancho_header_DEFAULT.jpg';
const DEFAULT_SANCHO_FOOTER_IMG = 'sancho_footer_DEFAULT.jpg';
/**
* Send single Mail with Sancho Design and Layout.
@@ -31,14 +32,15 @@ const DEFAULT_SANCHO_HEADER_IMG = 'sancho_header_DEFAULT.jpg';
* to be replaced in the content template.
* @param string $to Email-adress.
* @param string $subject Subject of mail.
* @param string $headerImg Filename of the specific Sancho header image.
* @return boolean True, if succeeded.
* @param string $headerImg Filename of the specific Sancho header image.
* @param string $replyTo default Email-adress for reply.
* @return boolean True, if succeeded.
*/
function sendSanchoMail($vorlage_kurzbz, $vorlage_data, $to, $subject, $headerImg = DEFAULT_SANCHO_HEADER_IMG)
function sendSanchoMail($vorlage_kurzbz, $vorlage_data, $to, $subject, $headerImg = DEFAULT_SANCHO_HEADER_IMG, $footerImg = DEFAULT_SANCHO_FOOTER_IMG, $replyTo = '')
{
$from = 'sancho@'. DOMAIN;
$sanchoHeader_img = dirname(__FILE__). '/../skin/images/sancho/'. $headerImg;
$sanchoFooter_img = dirname(__FILE__). '/../skin/images/sancho/sancho_footer.jpg';
$sanchoFooter_img = dirname(__FILE__). '/../skin/images/sancho/'. $footerImg;
// Set unique content id for embedding header and footer image
$cid_header = uniqid();
@@ -63,7 +65,11 @@ function sendSanchoMail($vorlage_kurzbz, $vorlage_data, $to, $subject, $headerIm
// * embed the images
$mail->addEmbeddedImage($sanchoHeader_img, 'image/jpg', '', $cid_header);
$mail->addEmbeddedImage($sanchoFooter_img, 'image/jpg', '', $cid_footer);
// * Set reply-to
if (isset($replyTo) && $replyTo != '')
$mail->setReplyTo($replyTo);
// * embed the html content
$mail->setHTMLContent($body);
+12 -1
View File
@@ -1,5 +1,6 @@
<?php
$this->phrasen['abgabetool/abgabetool']='Abgabetool';
$this->phrasen['abgabetool/aeltereParbeitBenoten']='Projektarbeit für älteres Semester, bitte Word-Formular zur Benotung verwenden!';
$this->phrasen['abgabetool/typ']='Typ';
$this->phrasen['abgabetool/titel']='Titel';
$this->phrasen['abgabetool/betreuerart']='Betreuerart';
@@ -61,8 +62,10 @@ $this->phrasen['abgabetool/fehlerTerminEintragen']='Die Termin konnte nicht eing
$this->phrasen['abgabetool/fehlerTerminLoeschen']='Fehler beim Löschen des Termins!';
$this->phrasen['abgabetool/keineBerechtigungStudentenansicht']='Sie haben keine Berechtigung zum Anzeigen der Studentenansicht';
$this->phrasen['abgabetool/dateneingabeUnvollstaendig']='Die Dateneingabe ist unvollständig';
$this->phrasen['abgabetool/fehlerMailBegutachter']='Fehler beim Versenden des Mails an den (Erst-)Begutachter!';
$this->phrasen['abgabetool/fehlerMailBegutachter']='Fehler beim Versenden des Mails an den Erstbegutachter!';
$this->phrasen['abgabetool/fehlerMailZweitBegutachter']='Fehler beim Versenden des Mails an den Zweitbegutachter!';
$this->phrasen['abgabetool/fehlerBetreuerNichtGefundenKeinMail']='Betreuer nicht gefunden. Kein Mail verschickt!';
$this->phrasen['abgabetool/fehlerAktualitaetProjektarbeit']='Fehler bei Ermittlung der Aktualit&auml;t der Projektarbeit';
$this->phrasen['abgabetool/keinPDF']='Upload ist keine pdf-Datei! Bitte wiederholen Sie den Fileupload.';
$this->phrasen['abgabetool/dateiZuGross']='Die Datei ist zu groß! Maximale Dateigröße 15 MB';
$this->phrasen['abgabetool/fehlerTerminVorbei']='Die Abgabefrist für diesen Termin ist bereits abgelaufen.';
@@ -78,4 +81,12 @@ 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']='ZweitbegutachterIn';
$this->phrasen['abgabetool/zweitbetreuerTokenMailSenden']='Zugangstoken an ZweitbegutachterIn noch einmal senden';
$this->phrasen['abgabetool/zweitbegutachterMailGesendet']='Mail an ZweitbegutachterIn (%s) gesendet';
$this->phrasen['abgabetool/zweitbetreuerMailSenden']='Mail an ZweitbegutachterIn (%s) senden';
$this->phrasen['abgabetool/zweitBegutachterEmailFehlt']='keine Zustellmail für Zweitbegutachter vorhanden!';
$this->phrasen['abgabetool/projektbeurteilungDownload']='Projektbeurteilung herunterladen';
$this->phrasen['abgabetool/projektbeurteilungErstDownload']='Erst-/Begutachter';
$this->phrasen['abgabetool/projektbeurteilungZweitDownload']='Zweitbegutachter';
?>
+7 -7
View File
@@ -11,11 +11,11 @@ $this->phrasen['dms_link/iconPDF']='46'; //PDF Icon
$this->phrasen['dms_link/bedienungsanleitungMailverteiler']='1474'; //Bedienungsanleitung Mailverteiler
$this->phrasen['dms_link/berechtigungskonzeptMailverteiler']='1475'; //Berechtigungskonzept Mailverteiler
$this->phrasen['dms_link/handbuchUrlaubsverwaltung']='759'; //Handbuch Urlaubsverwaltung -> Leer lassen, falls es keines gibt
$this->phrasen['dms_link/handbuchZeitaufzeichnung']='1545'; //Handbuch Zeitaufzeichnung -> Leer lassen, falls es keines gibt
$this->phrasen['dms_link/handbuchZeitaufzeichnung']='1545'; //Handbuch Zeitaufzeichnung -> Leer lassen, falls es keines gibt
$this->phrasen['dms_link/fiktiveNormalarbeitszeit']='2512'; //fiktive Normalarbeitszeit -> Leer lassen, falls es keines gibt
$this->phrasen['dms_link/learningAgreementErasmus']='85863'; //Learning Agreement Incomings Erasmus
$this->phrasen['dms_link/learningAgreement']='38866'; //Learning Agreement Incomings NICHT Erasmus
$this->phrasen['dms_link/passwortpolicy']='57972'; //Passwortpolicy
$this->phrasen['dms_link/learningAgreement']='38866'; //Learning Agreement Incomings NICHT Erasmus
$this->phrasen['dms_link/passwortpolicy']='57972'; //Passwortpolicy
// Content IDs (=Englisch)
$this->phrasen['dms_link/lvPlanFAQ']='6887'; //Hilfe-Link aus dem LV-Plan in die LV-Plan FAQ auf der CIS (CMS-ID)
@@ -32,8 +32,8 @@ $this->phrasen['dms_link/lvevaluierungStudierendeCMS']=''; //Beschreibung des Ab
$this->phrasen['dms_link/lvevaluierungMitarbeiterCMS']=''; //Beschreibung des Ablaufs der LVEvaluierung für Mitarbeiter
//Links auf externe Seiten
$this->phrasen['dms_link/dokuwikiGesamtnote']='https://wiki.fhcomplete.org/doku.php?id=cis:gesamtnote'; //Link ins Dokuwiki zur Anleitung Gesamtnote
$this->phrasen['dms_link/abgabetoolLektorHandbuch']='https://wiki.fhcomplete.org/doku.php?id=cis:abgabetool_fuer_lektoren'; //Abgabetool Handbuch fuer LektorInnen
$this->phrasen['dms_link/abgabetoolStudentHandbuch']='https://wiki.fhcomplete.org/doku.php?id=cis:abgabetool_fuer_studierende'; //Abgabetool Handbuch fuer Studierende
$this->phrasen['dms_link/abgabetoolAssistenzHandbuch']='https://wiki.fhcomplete.org/doku.php?id=cis:abgabetool_fuer_lektoren'; //Abgabetool Handbuch fuer Assistenz
$this->phrasen['dms_link/dokuwikiGesamtnote']='https://wiki.fhcomplete.info/doku.php?id=cis:gesamtnote'; //Link ins Dokuwiki zur Anleitung Gesamtnote
$this->phrasen['dms_link/abgabetoolLektorHandbuch']='https://wiki.fhcomplete.info/doku.php?id=cis:abgabetool_fuer_lektoren'; //Abgabetool Handbuch fuer LektorInnen
$this->phrasen['dms_link/abgabetoolStudentHandbuch']='https://wiki.fhcomplete.info/doku.php?id=cis:abgabetool_fuer_studierende'; //Abgabetool Handbuch fuer Studierende
$this->phrasen['dms_link/abgabetoolAssistenzHandbuch']='https://wiki.fhcomplete.info/doku.php?id=cis:abgabetool_fuer_lektoren'; //Abgabetool Handbuch fuer Assistenz
?>
+12 -1
View File
@@ -1,5 +1,6 @@
<?php
$this->phrasen['abgabetool/abgabetool']='Submission tool';
$this->phrasen['abgabetool/aeltereParbeitBenoten']='Thesis handed in for older semester, please use word form for assessment!';
$this->phrasen['abgabetool/typ']='Type';
$this->phrasen['abgabetool/titel']='Title';
$this->phrasen['abgabetool/betreuerart']='Supervisor type';
@@ -60,8 +61,10 @@ $this->phrasen['abgabetool/fehlerTerminEintragen']='The deadline could not be en
$this->phrasen['abgabetool/fehlerTerminLoeschen']='Error deleting the deadline!';
$this->phrasen['abgabetool/keineBerechtigungStudentenansicht']='You are not allowed to view this Page';
$this->phrasen['abgabetool/dateneingabeUnvollstaendig']='Incomplete Data input';
$this->phrasen['abgabetool/fehlerMailBegutachter']='Error sending E-Mail to Assessor!';
$this->phrasen['abgabetool/fehlerMailBegutachter']='Error sending E-Mail to first Assessor!';
$this->phrasen['abgabetool/fehlerMailZweitBegutachter']='Error sending E-Mail to second Assessor!';
$this->phrasen['abgabetool/fehlerBetreuerNichtGefundenKeinMail']='Assessor not found. No E-Mail sent!';
$this->phrasen['abgabetool/fehlerAktualitaetProjektarbeit']='Error when checking if current thesis';
$this->phrasen['abgabetool/keinPDF']='Upload-File ist not a PDF! Please retry the Fileupload.';
$this->phrasen['abgabetool/dateiZuGross']='The File is too big! Maximum File size: 15 MB';
$this->phrasen['abgabetool/fehlerTerminVorbei']='The deadline for this upload has already expired.';
@@ -78,4 +81,12 @@ 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']='Resend access token to second assessor';
$this->phrasen['abgabetool/zweitbetreuerMailSenden']='Send mail to second assessor (%s)';
$this->phrasen['abgabetool/zweitbegutachterMailGesendet']='Mail sent to second assessor (%s)';
$this->phrasen['abgabetool/zweitBegutachterEmailFehlt']='Second assessor has no delivery mail adress!';
$this->phrasen['abgabetool/projektbeurteilungDownload']='Thesis-Assessment download';
$this->phrasen['abgabetool/projektbeurteilungErstDownload']='First-/Assessor';
$this->phrasen['abgabetool/projektbeurteilungZweitDownload']='Second Assessor';
?>
+6 -6
View File
@@ -10,11 +10,11 @@ $this->phrasen['dms_link/moodleHandbuch24']='1426'; //Moodle Handbuch
$this->phrasen['dms_link/iconPDF']='46'; //PDF Icon
$this->phrasen['dms_link/bedienungsanleitungMailverteiler']='1474'; //Bedienungsanleitung Mailverteiler
$this->phrasen['dms_link/berechtigungskonzeptMailverteiler']='1475'; //Berechtigungskonzept Mailverteiler
$this->phrasen['dms_link/handbuchUrlaubsverwaltung']='759'; //Handbuch Urlaubsverwaltung
$this->phrasen['dms_link/handbuchUrlaubsverwaltung']='759'; //Handbuch Urlaubsverwaltung
$this->phrasen['dms_link/handbuchZeitaufzeichnung']='1545'; //Handbuch Zeitaufzeichnung -> Leer lassen, falls es keines gibt
$this->phrasen['dms_link/fiktiveNormalarbeitszeit']='2512'; //fiktive Normalarbeitszeit -> Leer lassen, falls es keines gibt
$this->phrasen['dms_link/learningAgreementErasmus']='85863'; //Learning Agreement Incomings Erasmus
$this->phrasen['dms_link/learningAgreement']='38866'; //Learning Agreement Incomings NICHT Erasmus
$this->phrasen['dms_link/learningAgreement']='38866'; //Learning Agreement Incomings NICHT Erasmus
// Content IDs (=Deutsch)
$this->phrasen['dms_link/lvPlanFAQ']='6887'; //Hilfe-Link aus dem LV-Plan in die LV-Plan FAQ auf der CIS (CMS-ID)
@@ -27,8 +27,8 @@ $this->phrasen['dms_link/profilhilfe']=''; //Hilfe-Link aus dem Profil
$this->phrasen['dms_link/anleitungMailverteiler']='7578'; //Anleitung für die Benutzung der Mailverteiler und der Berechtigungsschlüssel
//Links auf externe Seiten
$this->phrasen['dms_link/dokuwikiGesamtnote']='https://wiki.fhcomplete.org/doku.php?id=cis:gesamtnote'; //Link ins Dokuwiki zur Anleitung Gesamtnote
$this->phrasen['dms_link/abgabetoolLektorHandbuch']='https://wiki.fhcomplete.org/doku.php?id=cis:abgabetool_fuer_lektoren'; //Abgabetool Handbuch fuer LektorInnen
$this->phrasen['dms_link/abgabetoolStudentHandbuch']='https://wiki.fhcomplete.org/doku.php?id=cis:abgabetool_fuer_studierende'; //Abgabetool Handbuch fuer Studierende
$this->phrasen['dms_link/abgabetoolAssistenzHandbuch']='https://wiki.fhcomplete.org/doku.php?id=cis:abgabetool_fuer_lektoren'; //Abgabetool Handbuch fuer Assistenz
$this->phrasen['dms_link/dokuwikiGesamtnote']='https://wiki.fhcomplete.info/doku.php?id=cis:gesamtnote'; //Link ins Dokuwiki zur Anleitung Gesamtnote
$this->phrasen['dms_link/abgabetoolLektorHandbuch']='https://wiki.fhcomplete.info/doku.php?id=cis:abgabetool_fuer_lektoren'; //Abgabetool Handbuch fuer LektorInnen
$this->phrasen['dms_link/abgabetoolStudentHandbuch']='https://wiki.fhcomplete.info/doku.php?id=cis:abgabetool_fuer_studierende'; //Abgabetool Handbuch fuer Studierende
$this->phrasen['dms_link/abgabetoolAssistenzHandbuch']='https://wiki.fhcomplete.info/doku.php?id=cis:abgabetool_fuer_lektoren'; //Abgabetool Handbuch fuer Assistenz
?>
+9 -1
View File
@@ -1,5 +1,6 @@
<?php
$this->phrasen['abgabetool/abgabeLektorenbereich']='Consegna portale lettori';
$this->phrasen['abgabetool/aeltereParbeitBenoten']='Thesis handed in for older semester, please use word form for assessment!';
$this->phrasen['abgabetool/abgabeStudentenbereich']='consegna portale studente';
$this->phrasen['abgabetool/abgabetermine']='scadenze consegna';
$this->phrasen['abgabetool/abgabetool']='Strumenti di consegna';
@@ -28,10 +29,12 @@ $this->phrasen['abgabetool/englischeSchlagwoerter']='parole chiave inglesi';
$this->phrasen['abgabetool/erklaerungNichtAkzeptiert']='dichiarazione non accettata';
$this->phrasen['abgabetool/fehlerBetreuerNichtGefundenKeinMail']='Impossibile trovare il relatore. Nessuna email spedita';
$this->phrasen['abgabetool/fehlerMail']='errore di spedizione della email!';
$this->phrasen['abgabetool/fehlerMailBegutachter']='Errore di trasmissione della mail al (primo) esaminatore';
$this->phrasen['abgabetool/fehlerMailBegutachter']='Errore di trasmissione della mail al primo esaminatore';
$this->phrasen['abgabetool/fehlerMailZweitBegutachter']='Errore di trasmissione della mail al secondo esaminatore';
$this->phrasen['abgabetool/fehlerMailStudent']='errore di spedizione della mai agli studenti!';
$this->phrasen['abgabetool/fehlerTerminEintragen']='scadenza non è stata registrata!';
$this->phrasen['abgabetool/fehlerTerminLoeschen']='Errore in sede di cancellazione della scadenza!';
$this->phrasen['abgabetool/fehlerAktualitaetProjektarbeit']='Error when checking if current thesis';
$this->phrasen['abgabetool/fix']='fisso';
$this->phrasen['abgabetool/fixerAbgabetermin']='scadenza consegna inderogabile';
$this->phrasen['abgabetool/gelesenUndAkzeptiert']='Letto e accettato';
@@ -68,4 +71,9 @@ $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']='Resend access token to second assessor';
$this->phrasen['abgabetool/zweitbetreuerMailSenden']='Send mail to second assessor (%s)';
$this->phrasen['abgabetool/zweitbegutachterMailGesendet']='Mail sent to second assessor (%s)';
$this->phrasen['abgabetool/zweitBegutachterEmailFehlt']='Second assessor has no delivery mail adress!';
?>
Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

+54 -1
View File
@@ -4465,6 +4465,59 @@ if($result = $db->db_query("SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE
}
}
// Add column zugangstoken to tbl_projektbetreuer
if(!$result = @$db->db_query("SELECT zugangstoken FROM lehre.tbl_projektbetreuer LIMIT 1"))
{
$qry = "ALTER TABLE lehre.tbl_projektbetreuer ADD COLUMN zugangstoken VARCHAR(32);
COMMENT ON COLUMN lehre.tbl_projektbetreuer.zugangstoken IS 'Zugangstoken zur Projektarbeitsbewertung fuer externe Betreuer';
ALTER TABLE lehre.tbl_projektbetreuer ADD CONSTRAINT uk_tbl_projektbetreuer_zugangstoken UNIQUE (zugangstoken);";
if(!$db->db_query($qry))
echo '<strong>lehre.tbl_projektbetreuer: '.$db->db_last_error().'</strong><br>';
else
echo '<br>lehre.tbl_projektbetreuer: Spalte zugangstoken hinzugefuegt';
}
// Add column zugangstoken_gueltigbis to tbl_projektbetreuer
if(!$result = @$db->db_query("SELECT zugangstoken_gueltigbis FROM lehre.tbl_projektbetreuer LIMIT 1"))
{
$qry = "ALTER table lehre.tbl_projektbetreuer ADD COLUMN zugangstoken_gueltigbis date;
COMMENT ON COLUMN lehre.tbl_projektbetreuer.zugangstoken_gueltigbis IS 'Gueligkeitsdatum fuer Zugangstoken zur Projektarbeitsbewertung fuer externe Betreuer';";
if(!$db->db_query($qry))
echo '<strong>lehre.tbl_projektbetreuer: '.$db->db_last_error().'</strong><br>';
else
echo '<br>lehre.tbl_projektbetreuer: Spalte zugangstoken_gueltigbis hinzugefuegt';
}
// App 'projektarbeitsbeurteilung' hinzufügen
if($result = $db->db_query("SELECT 1 FROM system.tbl_app WHERE app='projektarbeitsbeurteilung'"))
{
if($db->db_num_rows($result)==0)
{
$qry = "INSERT INTO system.tbl_app(app) VALUES('projektarbeitsbeurteilung');";
if(!$db->db_query($qry))
echo '<strong>App: '.$db->db_last_error().'</strong><br>';
else
echo '<br>Neue App projektarbeitsbeurteilung in system.tbl_app hinzugefügt';
}
}
// UPDATE Berechtigung für lehre.tbl_projektbetreuer für web user hinzufügen
if($result = @$db->db_query("SELECT * FROM information_schema.role_table_grants WHERE table_name='tbl_projektbetreuer' AND table_schema='lehre' AND grantee='web' AND privilege_type='UPDATE'"))
{
if($db->db_num_rows($result)==0)
{
$qry = "GRANT UPDATE ON lehre.tbl_projektbetreuer TO web;";
if(!$db->db_query($qry))
echo '<strong>Projektbetreuer Berechtigungen: '.$db->db_last_error().'</strong><br>';
else
echo '<br>Web User: update fuer lehre.tbl_projektbetreuer berechtigt';
}
}
// Add column dms_id, studiensemester_kurzbz, anmerkung_student und empfehlung_anrechnung
// Change genehmigt_von and begruendung_id to be NULLABLE
if(!$result = @$db->db_query("SELECT dms_id FROM lehre.tbl_anrechnung"))
@@ -4809,7 +4862,7 @@ $tabellen=array(
"lehre.tbl_notenschluesselzuordnung" => array("notenschluesselzuordnung_id","notenschluessel_kurzbz","lehrveranstaltung_id","studienplan_id","oe_kurzbz","studiensemester_kurzbz"),
"lehre.tbl_note" => array("note","bezeichnung","anmerkung","farbe","positiv","notenwert","aktiv","lehre","offiziell","bezeichnung_mehrsprachig","lkt_ueberschreibbar"),
"lehre.tbl_projektarbeit" => array("projektarbeit_id","projekttyp_kurzbz","titel","lehreinheit_id","student_uid","firma_id","note","punkte","beginn","ende","faktor","freigegeben","gesperrtbis","stundensatz","gesamtstunden","themenbereich","anmerkung","updateamum","updatevon","insertamum","insertvon","ext_id","titel_english","seitenanzahl","abgabedatum","kontrollschlagwoerter","schlagwoerter","schlagwoerter_en","abstract", "abstract_en", "sprache","final"),
"lehre.tbl_projektbetreuer" => array("person_id","projektarbeit_id","betreuerart_kurzbz","note","faktor","name","punkte","stunden","stundensatz","updateamum","updatevon","insertamum","insertvon","ext_id","vertrag_id"),
"lehre.tbl_projektbetreuer" => array("person_id","projektarbeit_id","betreuerart_kurzbz","note","faktor","name","punkte","stunden","stundensatz","updateamum","updatevon","insertamum","insertvon","ext_id","vertrag_id", "zugangstoken", "zugangstoken_gueltigbis"),
"lehre.tbl_projekttyp" => array("projekttyp_kurzbz","bezeichnung","aktiv"),
"lehre.tbl_pruefung" => array("pruefung_id","lehreinheit_id","student_uid","mitarbeiter_uid","note","pruefungstyp_kurzbz","datum","anmerkung","insertamum","insertvon","updateamum","updatevon","ext_id","pruefungsanmeldung_id","vertrag_id", "punkte"),
"lehre.tbl_pruefungstyp" => array("pruefungstyp_kurzbz","beschreibung","abschluss","sort"),
File diff suppressed because it is too large Load Diff