Merge branch 'master' into cleanci

This commit is contained in:
Paolo
2019-05-10 10:36:21 +02:00
37 changed files with 844 additions and 1064 deletions
@@ -293,80 +293,114 @@ class ReihungstestJob extends CLI_Controller
}
}
/**
* runRemindApplicantsOfPlacementTestJob
/*
* Sends an email to all applicants of a placement test to remind them 3 working days before
*
* @param integer $degreeProgram. Kennzahl of Degree Program to check
* @param string $bcc. Optional. BCC-Mailadress to send the Mails to
* @param string $from. Optional. Sender-Mailadress shown to recipient
*/
public function runRemindApplicantsOfPlacementTestJob()
public function remindApplicantsOfPlacementTest()
{
// Get placement tests with testdate within 3 working days
$degreeProgram = $this->input->get('degreeprogram');
$bcc = $this->input->get('bcc');
$from = $this->input->get('from');
// Check if today +3 days is working day
$todayPlus3 = date('Y-m-d', strtotime("+3 days"));
if (getWorkingDays($todayPlus3, $todayPlus3) == 0)
// Encode Params
if ($bcc != '')
{
// If not increase counting days till next working day
for ($i = 3; $i < 100; $i++)
$bcc = urldecode($bcc);
}
if ($from != '')
{
$from = urldecode($from);
}
// Get placement tests with testdate within the next 2 weeks
$resultNextTestDates = $this->ReihungstestModel->getNextPlacementtests($degreeProgram, 14);
if (hasData($resultNextTestDates))
{
$nextTestDates = $resultNextTestDates->retval;
$enddate = '';
// Loop through the dates
foreach ($nextTestDates as $testDates)
{
$dateToCheck = date('Y-m-d', strtotime("+".$i." days"));
if (getWorkingDays($dateToCheck, $dateToCheck) == 1)
$workingdays = 0;
$testsOndate = array();
// Deduct days till 3 working days are reached
for ($i = 1; ; $i++)
{
$nextWorkingDay = $dateToCheck;
break;
if (isDateWorkingDay($testDates->datum, $i) === true)
{
$workingdays++;
}
if ($workingdays == 3)
{
$enddate = date("Y-m-d", strtotime("$testDates->datum -".$i." days"));
break;
}
else
{
continue;
}
}
}
}
else
{
$nextWorkingDay = date('Y-m-d', strtotime("+3 days"));
}
// Check if a placement test happens on $nextWorkingDay
$result = $this->ReihungstestModel->getTestsOnDate($nextWorkingDay, 11000);
// If $enddate is today -> load all tests of $testDates->datum
if (date("Y-m-d", strtotime($enddate)) == date('Y-m-d'))
{
$resultTestsOnDate = $this->ReihungstestModel->getTestsOnDate($testDates->datum, $degreeProgram);
$testsOndate = array();
if (hasData($resultTestsOnDate))
{
$testsOndate = $resultTestsOnDate->retval;
}
elseif (isError($resultTestsOnDate))
{
show_error($resultTestsOnDate->error);
}
}
if (hasData($result))
{
$testsOndate = $result->retval;
}
elseif (isError($result))
{
show_error($result->error);
}
if (!isEmptyArray($testsOndate))
{
foreach ($testsOndate as $reihungstest)
{
// Loads applicants of a test
$applicants = $this->ReihungstestModel->getApplicantsOfPlacementTest($reihungstest->reihungstest_id);
$applicants_arr = array();
if (hasData($applicants))
{
$applicants_arr = $applicants->retval;
}
elseif (isError($applicants))
{
show_error($applicants->error);
}
foreach ($testsOndate as $reihungstest)
{
// Loads applicants of a test
$applicants = $this->ReihungstestModel->getApplicantsOfPlacementTest($reihungstest->reihungstest_id);
foreach ($applicants_arr as $applicant)
{
$mailcontent_data_arr = array();
$mailcontent_data_arr['anrede'] = $applicant->anrede;
$mailcontent_data_arr['nachname'] = $applicant->nachname;
$mailcontent_data_arr['vorname'] = $applicant->vorname;
$mailcontent_data_arr['rt_datum'] = date_format(date_create($reihungstest->datum), 'd.m.Y');
$mailcontent_data_arr['rt_uhrzeit'] = date_format(date_create($reihungstest->uhrzeit), 'H:i');
$mailcontent_data_arr['rt_raum'] = $applicant->planbezeichnung;
$mailcontent_data_arr['wegbeschreibung'] = $applicant->lageplan;
if (hasData($applicants))
{
$applicants_arr = $applicants->retval;
}
elseif (isError($applicants))
{
show_error($applicants->error);
}
foreach ($applicants_arr as $applicant)
{
$mailcontent_data_arr = array();
$mailcontent_data_arr['anrede'] = $applicant->anrede;
$mailcontent_data_arr['nachname'] = $applicant->nachname;
$mailcontent_data_arr['vorname'] = $applicant->vorname;
$mailcontent_data_arr['rt_datum'] = date_format(date_create($reihungstest->datum), 'd.m.Y');
$mailcontent_data_arr['rt_uhrzeit'] = date_format(date_create($reihungstest->uhrzeit), 'H:i');
$mailcontent_data_arr['rt_raum'] = $applicant->planbezeichnung;
$mailcontent_data_arr['wegbeschreibung'] = $applicant->lageplan;
sendSanchoMail(
'Sancho_RemindApplicantsOfTest',
$mailcontent_data_arr,
array($applicant->email,'[email protected]'),
'Ihre Anmeldung zum Reihungstest - Reminder / Your registration for the placement test - Reminder');
sendSanchoMail(
'Sancho_RemindApplicantsOfTest',
$mailcontent_data_arr,
$applicant->email,
'Ihre Anmeldung zum Reihungstest - Reminder / Your registration for the placement test - Reminder',
DEFAULT_SANCHO_HEADER_IMG,
DEFAULT_SANCHO_FOOTER_IMG,
$from,
'',
$bcc);
}
}
}
}
}
}
+9 -1
View File
@@ -133,6 +133,11 @@ class Gradelist extends Auth_Controller
if (in_array($row_status->status_kurzbz,
array('Student','Diplomand','Incoming','Abbrecher','Unterbrecher','Absolvent')))
{
// Wenn das Semester schon vorhanden ist dann ueberspringen
// (bei mehreren Statuseintraegen im selben Semester (zB Absolvent / Diplomand)
if(isset($courses['semester'][$row_status->studiensemester_kurzbz]))
continue;
// LVs fuer das Semester holen lt Studienplan
$lvtree = $this->studienplanlib->getLehrveranstaltungTree(
$row_status->studienplan_id,
@@ -184,7 +189,10 @@ class Gradelist extends Auth_Controller
$courses['semester'][$row_noten->studiensemester_kurzbz]['lvs_nonstpl'][] = array(
'lehrveranstaltung_id' => $row_noten->lehrveranstaltung_id,
'lehrtyp_kurzbz' => $result_lv->retval[0]->lehrtyp_kurzbz,
'lehrform_kurzbz' => $result_lv->retval[0]->lehrform_kurzbz,
'pflicht' => false,
'sws' => $result_lv->retval[0]->sws,
'zeugnis' => $result_lv->retval[0]->zeugnis,
'bezeichnung' => $result_lv->retval[0]->bezeichnung,
'ects' => $result_lv->retval[0]->ects,
'note' => $row_noten->note,
@@ -316,7 +324,7 @@ class Gradelist extends Auth_Controller
);
}
if ($row['childs'])
if (isset($row['childs']))
{
$childgrades = $this->getGrades($row['childs']);
$grades = array_merge($grades, $childgrades);
+47 -87
View File
@@ -169,98 +169,58 @@ function isEmptyArray($array)
}
/**
* The function returns the number of business days between two dates and it skips the (static) holidays
* @param string $startDate Date (YYYY-MM-DD) to start counting from (included)
* @param string $endDate Date (YYYY-MM-DD) to end counting (included)
* @param array $dynamic_holidays Optional. Static holidays that have the same date every year are included automatically.
* You can give an array with dates (YYYY-MM-DD) that should be included furthermore
* @return integer Number of working days between $startDate and $endDate
* The function checks if a date is a working day (true) or a holiday (false)
* @param string $date Date (YYYY-MM-DD) to check if working day or holiday
* @param string $days Optional. Number of days to deduct from $date
* @return boolean True, if $date is a working day, false if not
*/
function getWorkingDays($startDate, $endDate, $dynamic_holidays = array())
function isDateWorkingDay($date, $days = null)
{
//Get year of $startDate
$startYear = substr($startDate, 0, 4);
//Get year of $endDate
$endYear = substr($endDate, 0, 4);
$datediff = $endYear - $startYear;
// Array of static Austrian holidays
$austrian_holidays = array();
for ($i = 0; $i <= $datediff; $i++)
//Get year of $resultDate
$startYear = substr($date, 0, 4);
$austrian_holidays[] = $startYear.'-01-01'; // Neujahr
$austrian_holidays[] = $startYear.'-01-06'; // 3 Könige
$austrian_holidays[] = $startYear.'-05-01'; // Staatsfeiertag
$austrian_holidays[] = $startYear.'-08-15'; // Maria Himmelfahrt
$austrian_holidays[] = $startYear.'-10-26'; // Nationalfeiertag
$austrian_holidays[] = $startYear.'-11-01'; // Allerheiligen
$austrian_holidays[] = $startYear.'-12-08'; // Maria Empfängnis
$austrian_holidays[] = $startYear.'-12-25'; // Weihnachten
$austrian_holidays[] = $startYear.'-12-26'; // Stefanitag
$ostersonntag = date("Y-m-d", easter_date($startYear));
//Ostermontag
$austrian_holidays[] = date("Y-m-d", strtotime($ostersonntag. "+ 1 days")); // Ostersonntag + 1
//Christi Himmelfahrt
$austrian_holidays[] = date("Y-m-d", strtotime($ostersonntag. "+ 39 days")); // Ostersonntag + 39
//Pfingstmontag
$austrian_holidays[] = date("Y-m-d", strtotime($ostersonntag. "+ 50 days")); // Ostersonntag + 50
//Fronleichnam
$austrian_holidays[] = date("Y-m-d", strtotime($ostersonntag. "+ 60 days")); // Ostersonntag + 60
if ($days != '')
{
$austrian_holidays[] = $startYear.'-01-01'; // Neujahr
$austrian_holidays[] = $startYear.'-01-06'; // 3 Könige
$austrian_holidays[] = $startYear.'-05-01'; // Staatsfeiertag
$austrian_holidays[] = $startYear.'-08-15'; // Maria Himmelfahrt
$austrian_holidays[] = $startYear.'-10-26'; // Nationalfeiertag
$austrian_holidays[] = $startYear.'-11-01'; // Allerheiligen
$austrian_holidays[] = $startYear.'-12-08'; // Maria Empfängnis
$austrian_holidays[] = $startYear.'-12-25'; // Weihnachten
$austrian_holidays[] = $startYear.'-12-26'; // Stefanitag
$startYear++;
if (date("w", strtotime("$date -".$days." days")) == 0
|| date("w", strtotime("$date -".$days." days")) == 6
|| in_array(date("Y-m-d", strtotime("$date -".$days." days")), $austrian_holidays))
return false;
else
return true;
}
if (count($dynamic_holidays) > 0)
else
{
$austrian_holidays = array_merge($austrian_holidays, $dynamic_holidays);
if (date("w", strtotime($date)) == 0
|| date("w", strtotime($date)) == 6
|| in_array(date("Y-m-d", strtotime($date)), $austrian_holidays))
return false;
else
return true;
}
// do strtotime calculations just once
$endDate = strtotime($endDate);
$startDate = strtotime($startDate);
//The total number of days between the two dates. We compute the no. of seconds and divide it to 60*60*24
//We add one to inlude both dates in the interval.
$days = ($endDate - $startDate) / 86400 + 1;
$no_full_weeks = floor($days / 7);
$no_remaining_days = fmod($days, 7);
//It will return 1 if it's Monday,.. ,7 for Sunday
$the_first_day_of_week = date("N", $startDate);
$the_last_day_of_week = date("N", $endDate);
//---->The two can be equal in leap years when february has 29 days, the equal sign is added here
//In the first case the whole interval is within a week, in the second case the interval falls in two weeks.
if ($the_first_day_of_week <= $the_last_day_of_week)
{
if ($the_first_day_of_week <= 6 && 6 <= $the_last_day_of_week) $no_remaining_days--;
if ($the_first_day_of_week <= 7 && 7 <= $the_last_day_of_week) $no_remaining_days--;
}
else {
// (edit by Tokes to fix an edge case where the start day was a Sunday
// and the end day was NOT a Saturday)
// the day of the week for start is later than the day of the week for end
if ($the_first_day_of_week == 7) {
// if the start date is a Sunday, then we definitely subtract 1 day
$no_remaining_days--;
if ($the_last_day_of_week == 6) {
// if the end date is a Saturday, then we subtract another day
$no_remaining_days--;
}
}
else {
// the start date was a Saturday (or earlier), and the end date was (Mon..Fri)
// so we skip an entire weekend and subtract 2 days
$no_remaining_days -= 2;
}
}
//The no. of business days is: (number of weeks between the two dates) * (5 working days) + the remainder
//---->february in none leap years gave a remainder of 0 but still calculated weekends between first and last day, this is one way to fix it
$workingDays = $no_full_weeks * 5;
if ($no_remaining_days > 0 )
{
$workingDays += $no_remaining_days;
}
//We subtract the holidays
foreach($austrian_holidays as $key=>$value)
{
$time_stamp=strtotime($value);
//If the holiday doesn't fall in weekend
if ($startDate <= $time_stamp && $time_stamp <= $endDate && date("N",$time_stamp) != 6 && date("N",$time_stamp) != 7)
$workingDays--;
}
return $workingDays;
}
+6
View File
@@ -32,7 +32,10 @@ class StudienplanLib
$treeitem = array(
'lehrveranstaltung_id' => $row->lehrveranstaltung_id,
'lehrtyp_kurzbz' => $row->lehrtyp_kurzbz,
'lehrform_kurzbz' => $row->lehrform_kurzbz,
'sws' => $row->sws,
'pflicht' => $row->pflicht,
'zeugnis' => $row->zeugnis,
'bezeichnung' => $row->bezeichnung,
'ects' => $row->ects
);
@@ -57,7 +60,10 @@ class StudienplanLib
$treeitem = array(
'lehrveranstaltung_id' => $row->lehrveranstaltung_id,
'lehrtyp_kurzbz' => $row->lehrtyp_kurzbz,
'lehrform_kurzbz' => $row->lehrform_kurzbz,
'sws' => $row->sws,
'pflicht' => $row->pflicht,
'zeugnis' => $row->zeugnis,
'bezeichnung' => $row->bezeichnung,
'ects' => $row->ects
);
@@ -474,22 +474,23 @@ class Reihungstest_model extends DB_Model
}
/**
* Loads the date of the next placement test to the given degree program
* @param integer $studiengang_kz Kennzahl of degree program to load the next placement test date
* @return string Returns date of the next placement test
* Loads the dates of the next placement tests within $days days to the given degree program
* @param integer $studiengang_kz Kennzahl of degree program to load the next placement tests
* @param integer $days Number of days in the future to load
* @return string Returns dates of the next placement test
*/
public function getNextPlacementtestDate($studiengang_kz)
public function getNextPlacementtests($studiengang_kz, $days)
{
$query = '
SELECT *
FROM PUBLIC.tbl_reihungstest
WHERE studiengang_kz = ?
AND datum > now()
AND datum <= now() + interval ?
ORDER BY datum ASC
LIMIT 1
';
return $this->execQuery($query, array($studiengang_kz));
return $this->execQuery($query, array($studiengang_kz, $days.' days'));
}
/**
@@ -7,6 +7,12 @@ else
<tr class="gradelist_row_<?php echo $course['lehrtyp_kurzbz']; ?> gradelist_row_depth_<?php echo $depth; ?>">
<td><?php echo $course['bezeichnung']; ?></td>
<td align="right"><?php echo (isset($course['ects'])?$course['ects']:''); ?></td>
<!--
<td align="right"><?php echo (isset($course['sws'])?$course['sws']:''); ?></td>
<td align="right"><?php echo (isset($course['lehrform_kurzbz'])?$course['lehrform_kurzbz']:''); ?></td>
<td align="right"><?php echo (isset($course['pflicht'])?($course['pflicht']?'Ja':'Nein'):''); ?></td>
<td align="right"><?php echo (isset($course['zeugnis'])?($course['zeugnis']?'Ja':'Nein'):''); ?></td>
-->
<td class="<?php echo $gradeclass; ?>">
<?php
if (isset($course['note']) && isset($grades[$course['note']]['anmerkung']))
@@ -38,7 +38,13 @@
<thead>
<tr>
<th><?php echo $this->p->t('lehre','lehrveranstaltung');?></th>
<th><?php echo $this->p->t('lehre','ects');?></th>
<th style="text-align: right"><?php echo $this->p->t('lehre','ects');?></th>
<!--
<th>SWS</th>
<th>Lehrform</th>
<th>Pflichtfach</th>
<th>Zeugnis</th>
-->
<th><?php echo $this->p->t('lehre','note');?></th>
</tr>
</thead>
@@ -79,6 +85,12 @@
<tr>
<th><?php echo $this->p->t('lehre','lehrveranstaltung');?></th>
<th><?php echo $this->p->t('lehre','ects');?></th>
<!--
<th>SWS</th>
<th>Lehrform</th>
<th>Pflichtfach</th>
<th>Zeugnis</th>
-->
<th><?php echo $this->p->t('lehre','note');?></th>
</tr>
</thead>
@@ -1,6 +1,6 @@
<div id="dragAndDropFieldsArea" class="drag-and-drop-fields-area"></div>
<div>
<div class="add-filter-div">
<span class="filter-span-label">
<?php echo ucfirst($this->p->t('filter', 'feldHinzufuegen')); ?>:
</span>
+19 -19
View File
@@ -22,7 +22,7 @@
*/
/*******************************************************************************************************
* abgabe_lektor
* abgabe_lektor ist die Lektorenmaske des Abgabesystems
* abgabe_lektor ist die Lektorenmaske des Abgabesystems
* fuer Diplom- und Bachelorarbeiten
*******************************************************************************************************/
@@ -37,7 +37,7 @@ require_once('../../../include/benutzerberechtigung.class.php');
if (!$db = new basis_db())
die('Fehler beim Herstellen der Datenbankverbindung');
$getuid=get_uid();
$rechte = new benutzerberechtigung();
$rechte->getBerechtigungen($getuid);
@@ -55,29 +55,29 @@ $p = new phrasen($sprache);
$htmlstr = "";
$showall=isset($_GET['showall']);
$sql_query = "SELECT
$sql_query = "SELECT
*
FROM
FROM
(SELECT tbl_person.vorname, tbl_person.nachname, tbl_studiengang.typ, tbl_studiengang.kurzbz,
tbl_projektarbeit.projekttyp_kurzbz, tbl_projekttyp.bezeichnung, tbl_projektarbeit.titel, tbl_projektarbeit.projektarbeit_id,
tbl_projektbetreuer.betreuerart_kurzbz, tbl_benutzer.uid, tbl_student.matrikelnr, tbl_lehreinheit.studiensemester_kurzbz
FROM lehre.tbl_projektarbeit LEFT JOIN lehre.tbl_projektbetreuer using(projektarbeit_id)
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_student on(public.tbl_benutzer.uid=public.tbl_student.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 lehre.tbl_lehreinheit using(lehreinheit_id)
LEFT JOIN lehre.tbl_lehrveranstaltung using(lehrveranstaltung_id)
LEFT JOIN public.tbl_studiengang on(lehre.tbl_lehrveranstaltung.studiengang_kz=public.tbl_studiengang.studiengang_kz)
LEFT JOIN lehre.tbl_projekttyp USING (projekttyp_kurzbz)
WHERE (projekttyp_kurzbz='Bachelor' OR projekttyp_kurzbz='Diplom')
AND tbl_projektbetreuer.person_id IN (SELECT person_id FROM public.tbl_benutzer
WHERE public.tbl_benutzer.person_id=lehre.tbl_projektbetreuer.person_id
AND tbl_projektbetreuer.person_id IN (SELECT person_id FROM public.tbl_benutzer
WHERE public.tbl_benutzer.person_id=lehre.tbl_projektbetreuer.person_id
AND public.tbl_benutzer.uid=".$db->db_add_param($getuid).")
".($showall?'':' AND public.tbl_benutzer.aktiv AND lehre.tbl_projektarbeit.note IS NULL ')."
AND (betreuerart_kurzbz='Betreuer' OR betreuerart_kurzbz='Begutachter' OR betreuerart_kurzbz='Erstbegutachter'
OR betreuerart_kurzbz='Zweitbegutachter' OR betreuerart_kurzbz='Erstbetreuer')
ORDER BY tbl_projektarbeit.projektarbeit_id, betreuerart_kurzbz desc) as xy
AND (betreuerart_kurzbz='Betreuer' OR betreuerart_kurzbz='Begutachter' OR betreuerart_kurzbz='Erstbegutachter'
OR betreuerart_kurzbz='Zweitbegutachter' OR betreuerart_kurzbz='Erstbetreuer')
ORDER BY tbl_projektarbeit.projektarbeit_id, betreuerart_kurzbz desc) as xy
ORDER BY nachname";
if(!$erg=$db->db_query($sql_query))
@@ -141,22 +141,22 @@ echo '
return true;
return false;
}
$(document).ready(function()
{
$(document).ready(function()
{
$("#t1").tablesorter(
{
sortList: [[4,0]],
widgets: ["zebra"]
});
});
});
</script>
</head>
<body>';
echo "<h1><div style='float: left'>".$p->t('abgabetool/ueberschrift')." ($getuid) </div><div style='text-align:right'><a href='../../../cms/dms.php?id=".$p->t('dms_link/abgabetoolLektorHandbuch')."' target='_blank'><img src='../../../skin/images/information.png' alt='Anleitung' title='Anleitung BaDa-Abgabe' border=0>&nbsp;".$p->t('global/handbuch')."</a></div></h1>";
echo "<h1><div style='float: left'>".$p->t('abgabetool/ueberschrift')." ($getuid) </div><div style='text-align:right'><a href='".$p->t('dms_link/abgabetoolLektorHandbuch')."' target='_blank'><img src='../../../skin/images/information.png' alt='Anleitung' title='Anleitung Abgabetool' border=0>&nbsp;".$p->t('global/handbuch')."</a></div></h1>";
echo $htmlstr;
+39 -40
View File
@@ -36,7 +36,7 @@ $p = new phrasen($sprache);
if (!$db = new basis_db())
die($p->t('global/fehlerBeimOeffnenDerDatenbankverbindung'));
$getuid=get_uid();
$uid=$getuid;
@@ -46,31 +46,31 @@ if(isset($_GET['uid']))
$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)
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)
@@ -78,11 +78,11 @@ if(isset($_GET['uid']))
$allowed=true;
}
}
if(!$allowed)
{
die($p->t('abgabetool/keineBerechtigungStudentenansicht'));
}
}
}
$htmlstr = '';
$htmlstr1 = '';
@@ -90,33 +90,32 @@ $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,
$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)
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'
OR tbl_projektbetreuer.betreuerart_kurzbz='Zweitbegutachter')
AND tbl_projektarbeit.student_uid=".$db->db_add_param($uid)."
AND public.tbl_benutzer.aktiv
AND lehre.tbl_projektarbeit.note IS NULL
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';
@@ -161,8 +160,8 @@ else
$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)
$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))
@@ -171,7 +170,7 @@ else
{
$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
else
{
$htmlstr.="UID unknown!";
}
@@ -201,14 +200,14 @@ echo '
<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()
{
$(document).ready(function()
{
$("#t1").tablesorter(
{
sortList: [[4,0]],
widgets: ["zebra"]
});
});
});
</script>
</head>
@@ -217,7 +216,7 @@ echo '
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='../../../cms/dms.php?id=".$p->t('dms_link/abgabetoolStudentHandbuch')."' target='_blank'><img src='../../../skin/images/information.png' alt='Anleitung' title='Anleitung BaDa-Abgabe' border=0>&nbsp;".$p->t('global/handbuch')."</a></div>";
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>
+8 -4
View File
@@ -477,12 +477,14 @@ function drawTree($tree, $depth)
}
else
{
echo '<span>'.$p->t('studienplan/offen').'</span>';
if ($row_tree->benotung)
echo '<span>'.$p->t('studienplan/offen').'</span>';
}
}
else
{
echo '<span>'.$p->t('studienplan/offen').'</span>';
if ($row_tree->benotung)
echo '<span>'.$p->t('studienplan/offen').'</span>';
}
}
//check if compatible course has grade
@@ -498,7 +500,8 @@ function drawTree($tree, $depth)
}
else
{
echo '<span>'.$p->t('studienplan/offen').'</span>';
if ($row_tree->benotung)
echo '<span>'.$p->t('studienplan/offen').'</span>';
}
}
echo '</td>';
@@ -729,7 +732,8 @@ function checkKompatibleLvs($kompatibleLVs, $student, $row_tree, $noten_arr, $no
}
else
{
echo '<span>'.$p->t('studienplan/offen').'</span>';
if ($row_tree->benotung)
echo '<span>'.$p->t('studienplan/offen').'</span>';
}
}
}
+31 -12
View File
@@ -109,7 +109,10 @@ echo '
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml; charset=UTF-8" />
<link rel="stylesheet" href="../../vendor/twbs/bootstrap/dist/css/bootstrap.min.css" type="text/css"/>
<link href="../../skin/style.css.php" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="../../vendor/components/jquery/jquery.min.js"></script>
<script type="text/javascript" src="../../vendor/twbs/bootstrap/dist/js/bootstrap.min.js"></script>
<script language="Javascript" type="text/javascript">
//<![CDATA[
function killChildNodes(an_element)
@@ -179,7 +182,7 @@ echo '
</script>
</head>
<body>
<body class='testtool-content'>
<?php
if(!isset($_SESSION['pruefling_id']))
die($p->t('testtool/bitteZuerstAnmelden'));
@@ -358,7 +361,7 @@ if($result_pruefling = $db->db_query($qry_pruefling))
{
if($row_pruefling = $db->db_fetch_object($result_pruefling))
{
$info = "$row_pruefling->vorname $row_pruefling->nachname, $row_pruefling->bezeichnung $row_pruefling->stg_bez";
$info = "$row_pruefling->vorname $row_pruefling->nachname";
}
}
@@ -397,16 +400,35 @@ if($levelgebiet)
</tr>
</table>';
$fortschrittsbalken .= '<span class="smallb"><b> '.$aktuell.' / '.$max.'</b> ['.number_format($psolved,1,'.','').'%]</span>';
}
//Zeit des Gebietes holen
echo '<table width="100%"><tr><td valign="top" width="50%">'.$info.'</td><td align="center">'.$fortschrittsbalken.'</td><td width="50%"></td></tr><tr><td colspan="3">';
echo '
<table width="100%">
<tr>
<td valign="top" width="50%">TeilnehmerIn: '.$info.'</td>
</tr>
<tr>
<td align="center">'.$fortschrittsbalken.'</td>
</tr>
<tr>
<td width="50%"></td>
</tr>
<tr>
<td>';
if($demo)
{
//Wenn es sich um ein Demobeispiel handelt, dann wird die Maximale Gesamtzeit angezeigt
echo "<input type=\"button\" value=\"".$p->t("testtool/gebietStarten")."\" onclick=\"GebietStarten('".$db->convert_html_chars($gebiet->bezeichnung)."','".$stunde."','".$minute."','".$sekunde."','".$gebiet_id."')\" /> ";
echo '<center>'.$p->t('testtool/bearbeitungszeit').': '.$stunde.'h '.$minute.'m '.$sekunde.'s</center>';
echo
$p->t('testtool/bearbeitungszeit').': '.$stunde.'h '.$minute.'m '.$sekunde.'s';
echo '
</td>
</tr>
<tr>
<td>
';
echo "
<input type=\"button\" class='btn btn-default btn-testtool' value=\"".$p->t("testtool/gebietStarten")."\" onclick=\"GebietStarten('".$db->convert_html_chars($gebiet->bezeichnung)."','".$stunde."','".$minute."','".$sekunde."','".$gebiet_id."')\" /> ";
}
else
{
@@ -630,7 +652,7 @@ if($frage->frage_id!='')
if(!$demo)
{
echo '<input style="width:180px; white-space:normal" type="submit" name="submitantwort" value="'.$p->t('testtool/speichernUndWeiter').'" />';
echo '<input style="width:180px; white-space:normal" class="btn btn-default btn-testtool" type="submit" name="submitantwort" value="'.$p->t('testtool/speichernUndWeiter').'" />';
}
else
{
@@ -639,7 +661,7 @@ if($frage->frage_id!='')
if($nextfrage)
{
echo " <a href='$PHP_SELF?gebiet_id=$gebiet_id&amp;frage_id=$nextfrage' class='Item'>".$p->t("testtool/demo")."</a>";
echo " <a href='$PHP_SELF?gebiet_id=$gebiet_id&amp;frage_id=$nextfrage' role='button' class='btn btn-default btn-testtool'>".$p->t("testtool/demo")."</a>";
}
else
{
@@ -655,7 +677,7 @@ if($frage->frage_id!='')
if($row->anzahl>1)
{
//Bei Demos den Weiter-Button nur anzeigen, wenn ausser der Startseite noch andere Demoseiten vorhanden sind
echo " <a href='$PHP_SELF?gebiet_id=$gebiet_id' class='Item'>".$p->t("testtool/zurueckZurStartseite")."</a>";
echo " <a href='$PHP_SELF?gebiet_id=$gebiet_id' role='button' class='btn btn-default btn-testtool'>".$p->t("testtool/zurueckZurStartseite")."</a>";
}
}
}
@@ -670,9 +692,6 @@ else
echo "<br/><br/><br/><center><b>".$p->t("testtool/startDrueckenUmZuBeginnen")."</b></center>";
}
?>
</body>
+2 -2
View File
@@ -6,11 +6,11 @@
<link href="../../skin/style.css.php" rel="stylesheet" type="text/css">
</head>
<frameset rows="77,*,1" cols="*" frameborder="NO" border="0" framespacing="0">
<frameset rows="13%,*" cols="*" frameborder="NO" border="0" framespacing="0">
<frame src="topbar.php" name="topbar" scrolling="NO" noresize>
<frameset rows="*" cols="200,*" framespacing="0" frameborder="NO" border="0">
<frame id="menu_testtool" src="menu.php" name="menu" scrolling="AUTO" noresize>
<frame id="content_testtool" style="padding-left: 10px;" src="login.php" name="content">
<frame id="content_testtool" style="padding: 20px 50px 0px 50px; overflow: hidden;" src="login.php" name="content">
</frameset>
<noframes>
<body>
+240 -165
View File
@@ -318,10 +318,13 @@ if(isset($_POST['save']) && isset($_SESSION['prestudent_id']))
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" href="../../vendor/twbs/bootstrap/dist/css/bootstrap.min.css" type="text/css"/>
<link href="../../skin/style.css.php" rel="stylesheet" type="text/css">
<link rel="stylesheet" href="../../skin/jquery.css" type="text/css"/>
<script type="text/javascript" src="../../include/js/jquery1.9.min.js"></script>
<script type="text/javascript" src="../../include/js/jquery1.9.min.js"></script>
<link rel="stylesheet" type="text/css" href="../../skin/jquery-ui-1.9.2.custom.min.css"/>
<script type="text/javascript" src="../../vendor/components/jquery/jquery.min.js"></script>
<script type="text/javascript" src="../../vendor/twbs/bootstrap/dist/js/bootstrap.min.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
@@ -360,189 +363,261 @@ if(isset($_POST['save']) && isset($_SESSION['prestudent_id']))
?>
</head>
<body scroll="no" style="margin-top: 40px; padding: 0px 50px 0px 50px; overflow: hidden">
<body scroll="no" class='testtool-content'>
<?php
//echo '<h1>'.$p->t('testtool/startseite').'</h1>';
//REIHUNGSTEST STARTSEITE (nach Login)
if (isset($prestudent_id))
{
if (isset($prestudent_id))
{
$prestudent = new prestudent($prestudent_id);
$stg_obj = new studiengang($prestudent->studiengang_kz);
$pruefling = new pruefling();
$typ = new studiengang($prestudent->studiengang_kz);
$typ->getStudiengangTyp($stg_obj->typ);
$prestudent = new prestudent($prestudent_id);
$stg_obj = new studiengang($prestudent->studiengang_kz);
$pruefling = new pruefling();
$typ = new studiengang($prestudent->studiengang_kz);
$typ->getStudiengangTyp($stg_obj->typ);
// STG mit der höchsten Prio ermitteln
$ps = new Prestudent();
// STG mit der höchsten Prio ermitteln
$ps = new Prestudent();
// * prinzipiell STG der session übernehmem
$firstPrio_studiengang_kz = $prestudent->studiengang_kz;;
// * prinzipiell STG der session übernehmem
$firstPrio_studiengang_kz = $prestudent->studiengang_kz;;
// * wenn STG des eingeloggten Prestudenten vom Typ Bachelor ist, dann höchste Prio aller
// Bachelor-STG ermitteln, an denen die Person noch interessiert ist
if ($typ->typ == 'b')
// * wenn STG des eingeloggten Prestudenten vom Typ Bachelor ist, dann höchste Prio aller
// Bachelor-STG ermitteln, an denen die Person noch interessiert ist
if ($typ->typ == 'b')
{
$ps->getActualInteressenten($prestudent_id, true, 'b');
foreach($ps->result as $row_prio)
{
$ps->getActualInteressenten($prestudent_id, true, 'b');
foreach($ps->result as $row_prio)
{
if(isset($row_prio->studiengang_kz))
{
$firstPrio_studiengang_kz = $row_prio->studiengang_kz;
break;
}
}
}
// Sprachwahl zu STG mit höchster Prio ermitteln
$ablauf = new Ablauf();
$sprachwahl = false;
if ($ablauf->getAblaufVorgabeStudiengang($firstPrio_studiengang_kz) && is_bool($ablauf->result[0]->sprachwahl))
{
$sprachwahl = $ablauf->result[0]->sprachwahl;
}
//Prestudent Informationen
echo '<form method="GET">';
echo '<br>'.$p->t('testtool/begruessungstext').' <br/><br/>';
echo '<b>'.$p->t('zeitaufzeichnung/id').'</b>: '.$_SESSION['prestudent_id'].'<br/>';
echo '<b>'.$p->t('global/name').'</b>: '.$_SESSION['vorname'].' '.$_SESSION['nachname'].'<br/>';
echo '<b>'.$p->t('global/geburtsdatum').'</b>: '.$date->formatDatum($_SESSION['gebdatum'],'d.m.Y').'<br/>';
// * wenn Prestudent an mehreren Bachelor-Studiengängen interessiert ist, dann alle STG anführen
if ($typ->typ == 'b')
{
$ps_arr = new Prestudent();
$ps_arr->getActualInteressenten($prestudent_id, false, 'b');
if (count($ps_arr->result) > 1)
if(isset($row_prio->studiengang_kz))
{
echo '<b>'.$p->t('global/studiengang'). "</b>: <br><br>";
// Jeweils letzten Status ermitteln (ob Interessent oder Abgewiesener)
foreach ($ps_arr->result as $ps_obj)
{
$ps_tmp = new Prestudent();
$ps_tmp->getLastStatus($ps_obj->prestudent_id);
$ps_obj->lastStatus = $ps_tmp->status_kurzbz; // letzten Status dem result array hinzufügen
}
// Falls Status 'Abgewiesene' vorhanden, nach hinten reihen
usort($ps_arr->result, function($a, $b){
return strcmp($b->lastStatus, $a->lastStatus); // Order by DESC
});
foreach ($ps_arr->result as $ps_obj)
{
$stg = new Studiengang($ps_obj->studiengang_kz);
if($ps_obj->lastStatus == 'Interessent')
{
echo "<li>". $ps_obj->typ_bz .' '. ($sprache_user == 'English' ? $stg->english : $stg->bezeichnung). '<br/>'. "</li>";
}
// wenn letzter Status 'Abgewiesener' ist, dann als solchen kennzeichnen
elseif($ps_obj->lastStatus == 'Abgewiesener')
{
echo "<li style='color: grey'>". $ps_obj->typ_bz .' '. ($sprache_user == 'English' ? $stg->english : $stg->bezeichnung). ' (- abgewiesen -)<br/>'. "</li>";
}
}
echo "<br>";
}
// * wenn Prestudent nur an einem Bachelor-Studiengang interessiert ist, dann nur den einen STG anführen
else
{
echo '<b>'.$p->t('global/studiengang').'</b>: '. $typ->bezeichnung.' '.($sprache_user=='English'?$stg_obj->english:$stg_obj->bezeichnung).'<br/><br/>';
$firstPrio_studiengang_kz = $row_prio->studiengang_kz;
break;
}
}
// * wenn Prestudent an einem Master-Studiengang interessiert ist, dann nur den einen STG anführen
else
}
// Sprachwahl zu STG mit höchster Prio ermitteln
$ablauf = new Ablauf();
$sprachwahl = false;
if ($ablauf->getAblaufVorgabeStudiengang($firstPrio_studiengang_kz) && is_bool($ablauf->result[0]->sprachwahl))
{
$sprachwahl = $ablauf->result[0]->sprachwahl;
}
//Prestudent Informationen
echo '
<h1 style="margin-top: -20px;">'. $p->t('testtool/begruessungstext'). '</h1><br/>
<p>'. $p->t('testtool/anmeldedaten'). '</p><br/>
';
echo '
<table class="table table-bordered">
<tr>
<td style="width: 50%;"><strong>'.$p->t('zeitaufzeichnung/id').'</strong></td>
<td>'.$_SESSION['prestudent_id'].'</td>
</tr>
<tr>
<td><strong>'.$p->t('global/name').'</strong></td>
<td>'.$_SESSION['vorname'].' '.$_SESSION['nachname'].'</td>
</tr>
<tr>
<td><strong>'.$p->t('global/geburtsdatum').'</strong></td>
<td>'.$date->formatDatum($_SESSION["gebdatum"],"d.m.Y").'</td>
</tr>
</table>
';
echo '<br>';
echo '
<p>'. $p->t('testtool/fuerFolgendeStgAngemeldet'). '</p><br>
<table class="table table-bordered">
<thead>
<tr>
<th>'. $p->t('global/studiengang'). '</th>
<th>Status</th>
<th>'. $p->t('testtool/reihungstest'). '</th>
</tr>
</thead>
<tbody>
';
// * wenn Prestudent an 1 - n Bachelor-Studiengängen interessiert ist, dann STG anführen
if ($typ->typ == 'b')
{
$ps_arr = new Prestudent();
$ps_arr->getActualInteressenten($prestudent_id, false, 'b');
if (count($ps_arr->result) > 0)
{
echo '<b>'.$p->t('global/studiengang').'</b>: '.$typ->bezeichnung.' '.($sprache_user=='English'?$stg_obj->english:$stg_obj->bezeichnung).'<br/><br/>';
// Jeweils letzten Status ermitteln (ob Interessent oder Abgewiesener)
foreach ($ps_arr->result as $ps_obj)
{
$ps_tmp = new Prestudent();
$ps_tmp->getLastStatus($ps_obj->prestudent_id);
$ps_obj->lastStatus = $ps_tmp->status_kurzbz; // letzten Status dem result array hinzufügen
}
// Falls Status 'Abgewiesene' vorhanden, nach hinten reihen
usort($ps_arr->result, function($a, $b){
return strcmp($b->lastStatus, $a->lastStatus); // Order by DESC
});
foreach ($ps_arr->result as $ps_obj)
{
echo '<tr>';
$stg = new Studiengang($ps_obj->studiengang_kz);
if($ps_obj->lastStatus == "Interessent")
{
echo '<td style="width: 50%;">'. $ps_obj->typ_bz .' '. ($sprache_user == 'English' ? $stg->english : $stg->bezeichnung). '</td>';
if($ps_obj->ausbildungssemester == '1')
{
echo '<td>'. $p->t('testtool/regulaererEinstieg'). ' (1. Semester)</td>';
echo '<td>Basic</td>';
}
elseif($ps_obj->ausbildungssemester == '3')
{
echo '<td>'. $p->t('testtool/Quereinsteiger'). ' (3.Semester)</td>';
echo '<td>Basic + '. $p->t('testtool/Quereinsteiger'). '</td>';
}
}
// wenn letzter Status \'Abgewiesener\' ist, dann als solchen kennzeichnen
elseif($ps_obj->lastStatus == "Abgewiesener")
{
echo '
<td class="text-muted">'. $ps_obj->typ_bz .' '. ($sprache_user == 'English' ? $stg->english : $stg->bezeichnung). '</td>
<td class="text-muted">'. $ps_obj->lastStatus. '</td>
<td class="text-muted">-</td>
';
}
echo '</tr>';
}
}
echo '</form>';
echo '<br><br>';
}
// * wenn Prestudent an einem Master-Studiengang interessiert ist, dann nur den einen STG anführen
else
{
// Letzten Status für des Prestudenten einholen
$ps_master = new Prestudent();
$ps_master->getLastStatus($prestudent_id);
echo '<td>'. $typ->bezeichnung.' '.($sprache_user=='English'?$stg_obj->english:$stg_obj->bezeichnung).'</td>';
echo '<td>'. $ps_master->status_kurzbz.'</td>';
echo '<td>Basic</td>';
}
if($pruefling->getPruefling($prestudent_id))
{
echo '<FORM accept-charset="UTF-8" action="'. $_SERVER['PHP_SELF'].'" method="post" enctype="multipart/form-data">';
echo '<input type="hidden" name="pruefling_id" value="'.$pruefling->pruefling_id.'">';
echo '<table>';
//echo '<tr><td>'.$p->t('global/semester').':</td><td><input type="text" name="semester" size="1" maxlength="1" value="'.$pruefling->semester.'">&nbsp;<input type="submit" name="save" value="Semester ändern"></td></tr>';
//echo '<tr><td>ID Nachweis:</td><td><INPUT type="text" maxsize="50" name="idnachweis" value="'.$pruefling->idnachweis.'"></td></tr>';
//echo '<tr><td></td><td><input type="submit" name="save" value="Semester ändern"></td>';
echo '</table>';
echo '</FORM>';
echo '
</tbody>
</table>
';
//Wenn die Sprachwahl fuer den priorisierten Studiengang aktiviert ist, dann die Sprachen anzeigen
if($sprachwahl==true)
{
//Liste der Sprachen, die in den Gebieten vorkommen koennen
$qry = "SELECT distinct sprache
FROM
testtool.tbl_pruefling
JOIN testtool.tbl_ablauf USING(studiengang_kz)
JOIN testtool.tbl_frage USING(gebiet_id)
JOIN testtool.tbl_frage_sprache USING(frage_id)
WHERE
tbl_pruefling.pruefling_id=".$db->db_add_param($pruefling->pruefling_id)."
ORDER BY sprache DESC";
echo $p->t('testtool/spracheDerTestfragen').':';
if($result = $db->db_query($qry))
echo '<br>';
if($pruefling->getPruefling($prestudent_id))
{
echo '<FORM accept-charset="UTF-8" action="'. $_SERVER['PHP_SELF'].'" method="post" enctype="multipart/form-data">';
echo '<input type="hidden" name="pruefling_id" value="'.$pruefling->pruefling_id.'">';
echo '<table>';
//echo '<tr><td>'.$p->t('global/semester').':</td><td><input type="text" name="semester" size="1" maxlength="1" value="'.$pruefling->semester.'">&nbsp;<input type="submit" name="save" value="Semester ändern"></td></tr>';
//echo '<tr><td>ID Nachweis:</td><td><INPUT type="text" maxsize="50" name="idnachweis" value="'.$pruefling->idnachweis.'"></td></tr>';
//echo '<tr><td></td><td><input type="submit" name="save" value="Semester ändern"></td>';
echo '</table>';
echo '</FORM>';
//Wenn die Sprachwahl fuer den priorisierten Studiengang aktiviert ist, dann die Sprachen anzeigen
if($sprachwahl==true)
{
//Liste der Sprachen, die in den Gebieten vorkommen koennen
$qry = "SELECT distinct sprache
FROM
testtool.tbl_pruefling
JOIN testtool.tbl_ablauf USING(studiengang_kz)
JOIN testtool.tbl_frage USING(gebiet_id)
JOIN testtool.tbl_frage_sprache USING(frage_id)
WHERE
tbl_pruefling.pruefling_id=".$db->db_add_param($pruefling->pruefling_id)."
ORDER BY sprache DESC";
if($result = $db->db_query($qry))
{
echo '
<p>'. $p->t('testtool/spracheDerTestfragen').':</p><br>
<div class="btn-group btn-group-justified" role="group" style="width: 50%">
';
while($row = $db->db_fetch_object($result))
{
while($row = $db->db_fetch_object($result))
{
if($_SESSION['sprache']==$row->sprache)
$selected='style="border:1px solid black;"';
else
$selected='';
echo " <a href='".$_SERVER['PHP_SELF']."?type=sprachechange&sprache=$row->sprache' class='Item' $selected><img src='bild.php?src=flag&amp;sprache=$row->sprache' alt='$row->sprache' title='$row->sprache'/></a>";
}
$selected = ($_SESSION['sprache'] == $row->sprache) ? 'active' : '';
$row_sprache = $row->sprache;
if ($sprache_user == 'German')
{
if($row->sprache == 'English')
{
$row_sprache = 'Englisch';
}
elseif ($row->sprache == 'German')
{
$row_sprache = 'Deutsch';
}
}
echo "
<div class='btn-group' role='group'>
<a role='button' class='btn btn-default $selected' href='". $_SERVER['PHP_SELF']. "?type=sprachechange&sprache=". $row->sprache. "'>$row_sprache</a>
</div>
";
}
}
echo '<br><br><br><b>'.$p->t('testtool/klickenSieAufEinTeilgebiet').'</b>';
if($pruefling->pruefling_id!='')
{
$_SESSION['pruefling_id']=$pruefling->pruefling_id;
echo '<script language="Javascript">parent.menu.location.reload()</script>';
}
}
else
{
echo '<span class="error">'.$p->t('testtool/keinPrueflingseintragVorhanden').'</span>';
}
}
else
{
//LOGIN FORM (Startseite vor Login)
$prestudent_id_dummy_student = (defined('PRESTUDENT_ID_DUMMY_STUDENT')?PRESTUDENT_ID_DUMMY_STUDENT:'');
echo '</div>';
}
}
echo '<form method="post">
<SELECT name="prestudent">';
echo '<OPTION value="'.$prestudent_id_dummy_student.'">'.$p->t('testtool/nameAuswaehlen').'</OPTION>\n';
foreach($ps->result as $prestd)
{
$stg = new studiengang();
$stg->load($prestd->studiengang_kz);
if(isset($_POST['prestudent']) && $prestd->prestudent_id==$_POST['prestudent'])
$selected = 'selected';
else
$selected='';
echo '<OPTION value="'.$prestd->prestudent_id.'" '.$selected.'>'.$prestd->nachname.' '.$prestd->vorname.' ('.(strtoupper($stg->typ.$stg->kurzbz)).')</OPTION>\n';
}
echo '</SELECT>';
echo '&nbsp; '.$p->t('global/geburtsdatum').': ';
echo '<input type="text" id="datepicker" size="12" name="gebdatum" value="'.$date->formatDatum($gebdatum,'d.m.Y').'">';
echo '&nbsp; <INPUT type="submit" value="'.$p->t('testtool/login').'" />';
echo '</form>';
echo '<br><br>';
echo '
<div class="well well-lg text-center">
<strong>'.$p->t('testtool/klickenSieAufEinTeilgebiet').'</strong>
</div>
';
if($pruefling->pruefling_id!='')
{
$_SESSION['pruefling_id']=$pruefling->pruefling_id;
//echo '<script language="Javascript">parent.menu.location.reload()</script>';
}
}
else
{
echo '<span class="error">'.$p->t('testtool/keinPrueflingseintragVorhanden').'</span>';
}
}
else
{
//LOGIN FORM (Startseite vor Login)
$prestudent_id_dummy_student = (defined('PRESTUDENT_ID_DUMMY_STUDENT')?PRESTUDENT_ID_DUMMY_STUDENT:'');
echo '<br /><br /><br />
<center>
<span style="font-size: 1.2em; font-style: italic;">'.$p->t('testtool/willkommenstext').'</span>
</center>';
}
echo '<form method="post">
<SELECT name="prestudent">';
echo '<OPTION value="'.$prestudent_id_dummy_student.'">'.$p->t('testtool/nameAuswaehlen').'</OPTION>\n';
foreach($ps->result as $prestd)
{
$stg = new studiengang();
$stg->load($prestd->studiengang_kz);
if(isset($_POST['prestudent']) && $prestd->prestudent_id==$_POST['prestudent'])
$selected = 'selected';
else
$selected='';
echo '<OPTION value="'.$prestd->prestudent_id.'" '.$selected.'>'.$prestd->nachname.' '.$prestd->vorname.' ('.(strtoupper($stg->typ.$stg->kurzbz)).')</OPTION>\n';
}
echo '</SELECT>';
echo '&nbsp; '.$p->t('global/geburtsdatum').': ';
echo '<input type="text" id="datepicker" size="12" name="gebdatum" value="'.$date->formatDatum($gebdatum,'d.m.Y').'">';
echo '<INPUT type="submit" value="'.$p->t('testtool/login').'" />';
echo '</form>';
echo '<br /><br /><br />
<center>
<span style="font-size: 1.2em; font-style: italic;">'.$p->t('testtool/willkommenstextTitel').'</span><br><br>
<span style="font-size: 1.2em; font-style: italic;">'.$p->t('testtool/willkommenstext').'</span>
</center>';
}
?>
</body>
+42 -6
View File
@@ -84,7 +84,7 @@ session_start();
<link href="../../skin/style.css.php" rel="stylesheet" type="text/css">
</head>
<body scroll="no" style="margin-top: 40px; overflow: hidden">
<body scroll="no">
<?php
if (isset($_SESSION['pruefling_id']))
{
@@ -102,12 +102,16 @@ if (isset($_SESSION['pruefling_id']))
// Link zur Einleitung
if ($content_id = $db->db_fetch_object($result))
{
if($content_id->content_id!='')
{
echo '
<tr><td class="ItemTesttool" style="margin-left: 20px;" nowrap>
<a class="ItemTesttool navButton" href="../../cms/content.php?content_id='.$content_id->content_id.'&sprache='.$sprache.'" target="content">'.$p->t('testtool/einleitung').'</a>
</td></tr>';
</td></tr>
';
}
}
echo '<tr><td style="padding-left: 20px;" nowrap>';
$studiengang_kz = (isset($_SESSION['studiengang_kz'])) ? $_SESSION['studiengang_kz'] : '';
@@ -279,7 +283,7 @@ if (isset($_SESSION['pruefling_id']))
$result = $db->db_query($qry);
$lastsemester = '';
$quereinsteiger_stg = '';
$gebiet_hasMathML = false; // true, wenn irgendein Gebiet eine/n Frage/Vorschlag im MathML-Format enthält
while($row = $db->db_fetch_object($result))
{
//Jedes Semester in einer eigenen Tabelle anzeigen
@@ -319,6 +323,13 @@ if (isset($_SESSION['pruefling_id']))
}
$gebiet = new gebiet();
// Prüfen, ob das Gebiet eine/n Frage/Vorschlag im MathML-Format enthält
if (!$gebiet_hasMathML) // sobald nur ein MathML Format gefunden, variable nicht mehr überschreiben
{
$gebiet_hasMathML = $gebiet->hasMathML($row->gebiet_id);
}
if($gebiet->check_gebiet($row->gebiet_id))
{
//Status der Gebiete Pruefen
@@ -335,7 +346,7 @@ if (isset($_SESSION['pruefling_id']))
{
//Gebiet gestartet aber noch nicht zu ende
$style='';
$class='ItemTesttoolAktiv';
$class='ItemTesttool ItemTesttoolAktiv';
}
else
{
@@ -349,7 +360,7 @@ if (isset($_SESSION['pruefling_id']))
{
//Gebiet ist zu Ende
$style='';
$class='ItemTesttoolBeendet';
$class='ItemTesttool ItemTesttoolBeendet';
}
}
}
@@ -397,4 +408,29 @@ else
}
?>
</body>
<script type="text/javascript">
// Get users Browser
var ua = navigator.userAgent;
// If Browser is any other than Mozilla Firefox and the test includes any MathML,
// show message to use Mozilla Firefox
if ((ua.indexOf("Firefox") > -1) == false)
{
let hasMathML = "<?php echo $gebiet_hasMathML; ?>";
let userLang = "<?php echo $sprache_user; ?>";
if (hasMathML == true)
{
if (userLang == 'German')
{
alert('BITTE VERWENDEN SIE DEN MOZILLA FIREFOX BROWSER!\n(Manche Prüfungsfragen werden sonst nicht korrekt dargestellt.)');
}
else if(userLang == 'English')
{
alert('PLEASE USE MOZILLA FIREFOX BROWSER!\n(Ohterwise some exam items will not be displayed correctly.)');
}
}
}
</script>
</html>
+19 -11
View File
@@ -69,7 +69,6 @@ if(isset($_GET['sprache_user']))
$sprache_user = getSpracheUser();
$p = new phrasen($sprache_user);
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
@@ -77,7 +76,11 @@ $p = new phrasen($sprache_user);
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link href="../../skin/style.css.php" rel="stylesheet" type="text/css">
<link rel="stylesheet" href="../../vendor/twbs/bootstrap/dist/css/bootstrap.min.css" type="text/css"/>
<script type="text/javascript" src="../../vendor/components/jquery/jquery.min.js"></script>
<script type="text/javascript" src="../../vendor/twbs/bootstrap/dist/js/bootstrap.min.js"></script>
</head>
<script type="text/javascript">
function changeSprache(sprache)
@@ -99,17 +102,22 @@ function changeSprache(sprache)
echo ' <table style="background-image: url(../../skin/images/header_testtool.png); background-repeat: repeat-x;" width="100%" height="100%" cellspacing="0" cellpadding="0">
<tr>
<td valign="top" align="left">
<a href="index.html" target="_top"><img class="header_logo" style="min-height:80%; left: 16px; top: 10%;" src="../../skin/styles/'.DEFAULT_STYLE.'/logo_250x130.png" alt="logo"></a>
<a href="index.html" target="_top"><img class="header_logo" style="min-height:65%; left: 16px; top: 10%;" src="../../skin/styles/'.DEFAULT_STYLE.'/logo_250x130.png" alt="logo"></a>
</td>
<td align="right">
<select style="text-align: left; color: #0086CC; border: 1;" name="select">';
$sprache = new sprache();
$sprache->getAll(true);
foreach($sprache->result as $row)
{
echo ' <option onclick="changeSprache(\''.$row->sprache.'\'); return false;" '.($row->sprache==$sprache_user?'selected':'').'>'.($row->bezeichnung_arr[getSprache()]).'&nbsp;&nbsp;</option>';
}
echo ' </select>&nbsp;&nbsp;</div>
<td valign="middle">
<div class="form-group form-inline pull-right">
<!-- <label for="select-sprache">Sprache Menü:&nbsp;&nbsp;</label>-->
<select id="select-sprache" class="form-control" style="width: 170px; margin-right: 50px;" onchange="if (typeof(this.value) != \'undefined\') changeSprache(this.value)">';
$sprache = new sprache();
$sprache->getAll(true);
foreach($sprache->result as $row)
{
echo ' <option value="'. $row->sprache. '" '.($row->sprache==$sprache_user?'selected':'').'>'.($row->bezeichnung_arr[getSprache()]).'&nbsp;&nbsp;</option>';
}
echo '
</select>
</div>
</td>
</tr>
</table>';
?>
+16 -2
View File
@@ -4027,6 +4027,7 @@ if(!$error)
}
$warnung_zu_viele_teilnehmer = false;
$warnung_raumzuordnungentfernt = false;
if($reihungstest->reihungstest_id != $rt_id)
{
// Wenn ein neuer Reihungstesttermin ausgewählt wird, dann wird geprueft ob
@@ -4043,6 +4044,12 @@ if(!$error)
}
if($max_teilnehmer!='' && $aktuelle_anzahl >= $max_teilnehmer)
$warnung_zu_viele_teilnehmer = true;
if ($reihungstest->ort_kurzbz != '')
{
$reihungstest->ort_kurzbz = '';
$warnung_raumzuordnungentfernt = true;
}
}
$reihungstest->reihungstest_id = $rt_id;
$reihungstest->person_id = $person_id;
@@ -4063,8 +4070,15 @@ if(!$error)
{
$return = false;
$error = true;
$errormsg = 'Achtung - die Maximalanzahl der Teilnehmer wurde überschritten;'.
' Prüfen Sie ob genug Platz zur Verfügung steht - Zuteilung wurde erfolgreich gespeichert';
$errormsg .= ' - Achtung - die Maximalanzahl der Teilnehmer wurde überschritten;'.
' Prüfen Sie ob genug Platz zur Verfügung steht';
}
if ($warnung_raumzuordnungentfernt)
{
$return = false;
$error = true;
$errormsg .= ' - Achtung - Die Person war bereits einem Raum für den Reihungstest zugeordnet.'.
'Die Raumzuordnung wurde entfernt.';
}
}
else
-463
View File
@@ -1,463 +0,0 @@
<?php
/*
Copyright (c) 2002-2010, Michael Bretterklieber <[email protected]>
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
3. The names of the authors may not be used to endorse or promote products
derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
This code cannot simply be copied and put under the GNU Public License or
any other GPL-like (LGPL, GPL2) License.
$Id: CHAP.php 302857 2010-08-28 21:12:59Z mbretter $
*/
require_once 'PEAR.php';
/**
* Classes for generating packets for various CHAP Protocols:
* CHAP-MD5: RFC1994
* MS-CHAPv1: RFC2433
* MS-CHAPv2: RFC2759
*
* @package Crypt_CHAP
* @author Michael Bretterklieber <[email protected]>
* @access public
* @version $Revision: 302857 $
*/
/**
* class Crypt_CHAP
*
* Abstract base class for CHAP
*
* @package Crypt_CHAP
*/
class Crypt_CHAP extends PEAR
{
/**
* Random binary challenge
* @var string
*/
var $challenge = null;
/**
* Binary response
* @var string
*/
var $response = null;
/**
* User password
* @var string
*/
var $password = null;
/**
* Id of the authentication request. Should incremented after every request.
* @var integer
*/
var $chapid = 1;
/**
* Constructor
*
* Generates a random challenge
* @return void
*/
function Crypt_CHAP()
{
$this->PEAR();
$this->generateChallenge();
}
/**
* Generates a random binary challenge
*
* @param string $varname Name of the property
* @param integer $size Size of the challenge in Bytes
* @return void
*/
function generateChallenge($varname = 'challenge', $size = 8)
{
$this->$varname = '';
for ($i = 0; $i < $size; $i++) {
$this->$varname .= pack('C', 1 + mt_rand() % 255);
}
return $this->$varname;
}
/**
* Generates the response. Overwrite this.
*
* @return void
*/
function challengeResponse()
{
}
}
/**
* class Crypt_CHAP_MD5
*
* Generate CHAP-MD5 Packets
*
* @package Crypt_CHAP
*/
class Crypt_CHAP_MD5 extends Crypt_CHAP
{
/**
* Generates the response.
*
* CHAP-MD5 uses MD5-Hash for generating the response. The Hash consists
* of the chapid, the plaintext password and the challenge.
*
* @return string
*/
function challengeResponse()
{
return pack('H*', md5(pack('C', $this->chapid) . $this->password . $this->challenge));
}
}
/**
* class Crypt_CHAP_MSv1
*
* Generate MS-CHAPv1 Packets. MS-CHAP doesen't use the plaintext password, it uses the
* NT-HASH wich is stored in the SAM-Database or in the smbpasswd, if you are using samba.
* The NT-HASH is MD4(str2unicode(plaintextpass)).
* You need the hash extension for this class.
*
* @package Crypt_CHAP
*/
class Crypt_CHAP_MSv1 extends Crypt_CHAP
{
/**
* Wether using deprecated LM-Responses or not.
* 0 = use LM-Response, 1 = use NT-Response
* @var bool
*/
var $flags = 1;
/**
* Constructor
*
* Loads the hash extension
* @return void
*/
function Crypt_CHAP_MSv1()
{
$this->Crypt_CHAP();
$this->loadExtension('hash');
}
/**
* Generates the NT-HASH from the given plaintext password.
*
* @access public
* @return string
*/
function ntPasswordHash($password = null)
{
if (isset($password)) {
return pack('H*',hash('md4', $this->str2unicode($password)));
} else {
return pack('H*',hash('md4', $this->str2unicode($this->password)));
}
}
/**
* Converts ascii to unicode.
*
* @access public
* @return string
*/
function str2unicode($str)
{
$uni = '';
$str = (string) $str;
for ($i = 0; $i < strlen($str); $i++) {
$a = ord($str{$i}) << 8;
$uni .= sprintf("%X", $a);
}
return pack('H*', $uni);
}
/**
* Generates the NT-Response.
*
* @access public
* @return string
*/
function challengeResponse()
{
return $this->_challengeResponse();
}
/**
* Generates the NT-Response.
*
* @access public
* @return string
*/
function ntChallengeResponse()
{
return $this->_challengeResponse(false);
}
/**
* Generates the LAN-Manager-Response.
*
* @access public
* @return string
*/
function lmChallengeResponse()
{
return $this->_challengeResponse(true);
}
/**
* Generates the response.
*
* Generates the response using DES.
*
* @param bool $lm wether generating LAN-Manager-Response
* @access private
* @return string
*/
function _challengeResponse($lm = false)
{
if ($lm) {
$hash = $this->lmPasswordHash();
} else {
$hash = $this->ntPasswordHash();
}
while (strlen($hash) < 21) {
$hash .= "\0";
}
$td = mcrypt_module_open(MCRYPT_DES, '', MCRYPT_MODE_ECB, '');
$iv = mcrypt_create_iv (mcrypt_enc_get_iv_size($td), MCRYPT_RAND);
$key = $this->_desAddParity(substr($hash, 0, 7));
mcrypt_generic_init($td, $key, $iv);
$resp1 = mcrypt_generic($td, $this->challenge);
mcrypt_generic_deinit($td);
$key = $this->_desAddParity(substr($hash, 7, 7));
mcrypt_generic_init($td, $key, $iv);
$resp2 = mcrypt_generic($td, $this->challenge);
mcrypt_generic_deinit($td);
$key = $this->_desAddParity(substr($hash, 14, 7));
mcrypt_generic_init($td, $key, $iv);
$resp3 = mcrypt_generic($td, $this->challenge);
mcrypt_generic_deinit($td);
mcrypt_module_close($td);
return $resp1 . $resp2 . $resp3;
}
/**
* Generates the LAN-Manager-HASH from the given plaintext password.
*
* @access public
* @return string
*/
function lmPasswordHash($password = null)
{
$plain = isset($password) ? $password : $this->password;
$plain = substr(strtoupper($plain), 0, 14);
while (strlen($plain) < 14) {
$plain .= "\0";
}
return $this->_desHash(substr($plain, 0, 7)) . $this->_desHash(substr($plain, 7, 7));
}
/**
* Generates an irreversible HASH.
*
* @access private
* @return string
*/
function _desHash($plain)
{
$key = $this->_desAddParity($plain);
$td = mcrypt_module_open(MCRYPT_DES, '', MCRYPT_MODE_ECB, '');
$iv = mcrypt_create_iv (mcrypt_enc_get_iv_size($td), MCRYPT_RAND);
mcrypt_generic_init($td, $key, $iv);
$hash = mcrypt_generic($td, 'KGS!@#$%');
mcrypt_generic_deinit($td);
mcrypt_module_close($td);
return $hash;
}
/**
* Adds the parity bit to the given DES key.
*
* @access private
* @param string $key 7-Bytes Key without parity
* @return string
*/
function _desAddParity($key)
{
static $odd_parity = array(
1, 1, 2, 2, 4, 4, 7, 7, 8, 8, 11, 11, 13, 13, 14, 14,
16, 16, 19, 19, 21, 21, 22, 22, 25, 25, 26, 26, 28, 28, 31, 31,
32, 32, 35, 35, 37, 37, 38, 38, 41, 41, 42, 42, 44, 44, 47, 47,
49, 49, 50, 50, 52, 52, 55, 55, 56, 56, 59, 59, 61, 61, 62, 62,
64, 64, 67, 67, 69, 69, 70, 70, 73, 73, 74, 74, 76, 76, 79, 79,
81, 81, 82, 82, 84, 84, 87, 87, 88, 88, 91, 91, 93, 93, 94, 94,
97, 97, 98, 98,100,100,103,103,104,104,107,107,109,109,110,110,
112,112,115,115,117,117,118,118,121,121,122,122,124,124,127,127,
128,128,131,131,133,133,134,134,137,137,138,138,140,140,143,143,
145,145,146,146,148,148,151,151,152,152,155,155,157,157,158,158,
161,161,162,162,164,164,167,167,168,168,171,171,173,173,174,174,
176,176,179,179,181,181,182,182,185,185,186,186,188,188,191,191,
193,193,194,194,196,196,199,199,200,200,203,203,205,205,206,206,
208,208,211,211,213,213,214,214,217,217,218,218,220,220,223,223,
224,224,227,227,229,229,230,230,233,233,234,234,236,236,239,239,
241,241,242,242,244,244,247,247,248,248,251,251,253,253,254,254);
$bin = '';
for ($i = 0; $i < strlen($key); $i++) {
$bin .= sprintf('%08s', decbin(ord($key{$i})));
}
$str1 = explode('-', substr(chunk_split($bin, 7, '-'), 0, -1));
$x = '';
foreach($str1 as $s) {
$x .= sprintf('%02s', dechex($odd_parity[bindec($s . '0')]));
}
return pack('H*', $x);
}
/**
* Generates the response-packet.
*
* @param bool $lm wether including LAN-Manager-Response
* @access private
* @return string
*/
function response($lm = false)
{
$ntresp = $this->ntChallengeResponse();
if ($lm) {
$lmresp = $this->lmChallengeResponse();
} else {
$lmresp = str_repeat ("\0", 24);
}
// Response: LM Response, NT Response, flags (0 = use LM Response, 1 = use NT Response)
return $lmresp . $ntresp . pack('C', !$lm);
}
}
/**
* class Crypt_CHAP_MSv2
*
* Generate MS-CHAPv2 Packets. This version of MS-CHAP uses a 16 Bytes authenticator
* challenge and a 16 Bytes peer Challenge. LAN-Manager responses no longer exists
* in this version. The challenge is already a SHA1 challenge hash of both challenges
* and of the username.
*
* @package Crypt_CHAP
*/
class Crypt_CHAP_MSv2 extends Crypt_CHAP_MSv1
{
/**
* The username
* @var string
*/
var $username = null;
/**
* The 16 Bytes random binary peer challenge
* @var string
*/
var $peerChallenge = null;
/**
* The 16 Bytes random binary authenticator challenge
* @var string
*/
var $authChallenge = null;
/**
* Constructor
*
* Generates the 16 Bytes peer and authentication challenge
* @return void
*/
function Crypt_CHAP_MSv2()
{
$this->Crypt_CHAP_MSv1();
$this->generateChallenge('peerChallenge', 16);
$this->generateChallenge('authChallenge', 16);
}
/**
* Generates a hash from the NT-HASH.
*
* @access public
* @param string $nthash The NT-HASH
* @return string
*/
function ntPasswordHashHash($nthash)
{
return pack('H*',hash('md4', $nthash));
}
/**
* Generates the challenge hash from the peer and the authenticator challenge and
* the username. SHA1 is used for this, but only the first 8 Bytes are used.
*
* @access public
* @return string
*/
function challengeHash()
{
return substr(pack('H*',hash('sha1', $this->peerChallenge . $this->authChallenge . $this->username)), 0, 8);
}
/**
* Generates the response.
*
* @access public
* @return string
*/
function challengeResponse()
{
$this->challenge = $this->challengeHash();
return $this->_challengeResponse();
}
}
?>
@@ -1,119 +0,0 @@
--TEST--
Crypt_CHAP: simple test
--SKIPIF--
<?php if (!extension_loaded("hash")) echo 'skip'; ?>
--FILE--
<?php
/*
Copyright (c) 2003-2007, Michael Bretterklieber <[email protected]>
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
3. The names of the authors may not be used to endorse or promote products
derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
This code cannot simply be copied and put under the GNU Public License or
any other GPL-like (LGPL, GPL2) License.
$Id: chaptest.php 231819 2007-03-14 07:39:07Z mbretter $
*/
chdir (dirname(__FILE__));
if (file_exists('../CHAP.php')) {
require_once '../CHAP.php';
} else {
require_once 'Crypt/CHAP.php';
}
echo "CHAP-MD5 TEST\n";
$crpt = new Crypt_CHAP_MD5;
$crpt->password = 'MyPw';
$crpt->chapid = 1;
$crpt->challenge = pack('H*', '102DB5DF085D3041');
printf ("ChallResp : %s\n", bin2hex($crpt->challengeResponse()));
echo "\n";
echo "CHAP-MD5 TEST 2\n";
$crpt = new Crypt_CHAP_MD5;
$crpt->password = 'sepp';
$crpt->chapid = 1;
$crpt->challenge = pack('H*', '102DB5DF085D3041');
printf ("ChallResp : %s\n", bin2hex($crpt->challengeResponse()));
echo "\n";
echo "MS-CHAPv1 str2unicode\n";
$crpt = new Crypt_CHAP_MSv1;
printf("Passed 123 as Number:%s\n", bin2hex($crpt->str2unicode(123)));
printf("Passed 123 as String:%s\n", bin2hex($crpt->str2unicode('123')));
echo "\n";
echo "MS-CHAPv1 TEST\n";
$crpt->password = 'MyPw';
$crpt->challenge = pack('H*', '102DB5DF085D3041');
$unipw = $crpt->str2unicode($crpt->password);
printf ("Unicode PW: %s\n", bin2hex($unipw));
printf ("NT HASH : %s\n", bin2hex($crpt->ntPasswordHash()));
printf ("NT Resp : %s\n", bin2hex($crpt->challengeResponse()));
printf ("LM HASH : %s\n", bin2hex($crpt->lmPasswordHash()));
printf ("LM Resp : %s\n", bin2hex($crpt->lmChallengeResponse()));
//printf ("Response : %s\nexpected : unknown\n", bin2hex($crpt->response()));
echo "\n";
echo "MS-CHAPv2 TEST\n";
$crpt = new Crypt_CHAP_MSv2;
$crpt->username = 'User';
$crpt->password = 'clientPass';
printf ("Username : %s\n", bin2hex($crpt->username));
$crpt->authChallenge = pack('H*', '5b5d7c7d7b3f2f3e3c2c602132262628');
$crpt->peerChallenge = pack('H*', '21402324255E262A28295F2B3A337C7E');
$nthash = $crpt->ntPasswordHash();
printf ("NT HASH : %s\n", bin2hex($nthash));
$nthashhash = $crpt->ntPasswordHashHash($nthash);
printf ("NT HASH-HASH : %s\n", bin2hex($nthashhash));
printf ("ChallResp : %s\n", bin2hex($crpt->challengeResponse()));
printf ("Challenge : %s\n", bin2hex($crpt->challenge));
echo "\n";
?>
--EXPECT--
CHAP-MD5 TEST
ChallResp : 8f028814450d66d94c72331ef455a172
CHAP-MD5 TEST 2
ChallResp : d39bfaf5d6855a948c8c81a85947502c
MS-CHAPv1 str2unicode
Passed 123 as Number:310032003300
Passed 123 as String:310032003300
MS-CHAPv1 TEST
Unicode PW: 4d00790050007700
NT HASH : fc156af7edcd6c0edde3337d427f4eac
NT Resp : 4e9d3c8f9cfd385d5bf4d3246791956ca4c351ab409a3d61
LM HASH : 75ba30198e6d1975aad3b435b51404ee
LM Resp : 91881d0152ab0c33c524135ec24a95ee64e23cdc2d33347d
MS-CHAPv2 TEST
Username : 55736572
NT HASH : 44ebba8d5312b8d611474411f56989ae
NT HASH-HASH : 41c00c584bd2d91c4017a2a12fa59f3f
ChallResp : 82309ecd8d708b5ea08faa3981cd83544233114a3d85d6df
Challenge : d02e4386bce91226
+18 -9
View File
@@ -855,11 +855,17 @@ function encryptData($value,$key)
return false;
}
$text = $value;
$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
$crypttext = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $text, MCRYPT_MODE_ECB, $iv);
return trim(safe_b64encode($crypttext));
require_once(dirname(__FILE__)."/../vendor/autoload.php");
$cipher = new phpseclib\Crypt\Rijndael(phpseclib\Crypt\Rijndael::MODE_ECB);
$cipher->setKey($key);
$cipher->disablePadding();
$length = strlen($value);
$pad = 32 - ($length % 32);
$value = str_pad($value, $length + $pad, chr(0));
$cipher->setBlockLength(256);
return trim(safe_b64encode($cipher->encrypt($value)));
}
function decryptData($value,$key)
@@ -869,11 +875,14 @@ function decryptData($value,$key)
return false;
}
require_once(dirname(__FILE__)."/../vendor/autoload.php");
$crypttext = safe_b64decode($value);
$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
$decrypttext = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key, $crypttext, MCRYPT_MODE_ECB, $iv);
return trim($decrypttext);
$cipher = new phpseclib\Crypt\Rijndael(phpseclib\Crypt\Rijndael::MODE_ECB);
$cipher->disablePadding();
$cipher->setBlockLength(256);
$cipher->setKey($key);
return trim($cipher->decrypt($crypttext));
}
function clearHtmlTags($text)
+63
View File
@@ -825,5 +825,68 @@ class gebiet extends basis_db
return true;
}
}
/**
* Prueft, ob das Gebiet zumindest eine Frage oder einen Vorschlag im MathML Format hat.
* @param $gebiet_id
* return true, wenn Gebiet eine/n Frage/Vorschlag im MathML Format enthält.
*/
public function hasMathML($gebiet_id)
{
if (is_numeric($gebiet_id))
{
$qry = '
WITH
fragen AS (
SELECT DISTINCT
frage_id
FROM
testtool.tbl_frage
JOIN
testtool.tbl_gebiet USING (gebiet_id)
WHERE
tbl_gebiet.gebiet_id = '. $this->db_add_param($gebiet_id, FHC_INTEGER). '
),
vorschlaege AS (
SELECT DISTINCT
vorschlag_id
FROM
testtool.tbl_vorschlag
JOIN
fragen USING (frage_id)
)
SELECT
1
FROM
testtool.tbl_frage_sprache
JOIN
fragen USING (frage_id)
WHERE
SUBSTRING(text, \'MathML\') IS NOT NULL
UNION
SELECT
1
FROM
testtool.tbl_vorschlag_sprache
JOIN
vorschlaege USING (vorschlag_id)
WHERE
SUBSTRING(text, \'MathML\') IS NOT NULL
';
if($result = $this->db_query($qry))
{
return ($this->db_num_rows($result) > 0);
}
}
else
{
$this->errormsg = 'Eine numerische gebiet_id muss übergeben werden.';
return false;
}
}
}
?>
-1
View File
@@ -21,7 +21,6 @@
* Funktionen zum Pruefen der Passwort Policy und setzen des Passworts
*/
require_once(dirname(__FILE__).'/../addon.class.php');
//require_once(dirname(__FILE__).'/../Crypt_CHAP-1.5.0/CHAP.php');
// die aktiven Addons werden durchsucht, ob eines davon eine eigene UID Generierung vorsieht
// falls ja, wird die Version des Addons genommen, ansonsten die Default Generierung
+4 -2
View File
@@ -69,10 +69,12 @@ $this->phrasen['abgabetool/fehlerTerminVorbei']='Die Abgabefrist für diesen Ter
$this->phrasen['abgabetool/eidesstattlicheErklaerung']='Ich erkläre hiermit an Eides statt, dass ich die vorliegende Arbeit selbständig angefertigt habe.
Die aus fremden Quellen direkt oder indirekt übernommenen Gedanken sind als solche kenntlich gemacht.
Die Arbeit wurde bisher weder in gleicher noch in ähnlicher Form einer anderen Prüfungsbehörde vorgelegt und auch noch nicht veröffentlicht.<br>
Die Arbeit wurde bisher weder in gleicher noch in ähnlicher Form einer anderen Prüfungsbehörde vorgelegt und auch noch nicht veröffentlicht.<br><br>
Ich räume der Fachhochschule Technikum Wien das Recht ein, das/die übermittelte/n Dokument/e elektronisch zu speichern und in Datennetzen öffentlich zugänglich zu machen.
Ich räume der Fachhochschule Technikum Wien ferner das Recht zur Konvertierung zum Zwecke der Langzeitarchivierung unter Beachtung der Bewahrung des Inhalts ein.
Ich erkläre außerdem, dass von mir die urheber- und lizenzrechtliche Seite (Copyright) geklärt wurde und Rechte Dritter der Publikation nicht entgegenstehen.';
Ich erkläre außerdem, dass von mir die urheber- und lizenzrechtliche Seite (Copyright) geklärt wurde und Rechte Dritter der Publikation nicht entgegenstehen.<br><br>
Bei den Master Arbeiten dürfen ausschließlich Dokumente hochgeladen werden, bei denen die `Eidesstattliche Erklärung´ nicht unterschrieben ist (Datenschutz).
Sollten Sie trotzdem die `Eidesstattliche Erklärung´ samt Unterschrift hochladen, wird seitens der FH Technikum Wien davon ausgegangen, dass Sie keinen Wert auf Schutz Ihrer Unterschrift legen.';
$this->phrasen['abgabetool/gelesenUndAkzeptiert']='Gelesen und akzeptiert';
$this->phrasen['abgabetool/erklaerungNichtAkzeptiert']='Erklärung nicht akzeptiert';
$this->phrasen['abgabetool/downloadProjektarbeit']='Dokument herunterladen';
+3 -3
View File
@@ -7,9 +7,6 @@ $this->phrasen['dms_link/cisHandbuch']='764'; //CIS-Handbuch, welches im Head-Fr
$this->phrasen['dms_link/benotungstoolHandbuch']='32'; //Handbuch Benotungstool
$this->phrasen['dms_link/moodleHandbuch']='33'; //Moodle Handbuch
$this->phrasen['dms_link/moodleHandbuch24']='1426'; //Moodle Handbuch
$this->phrasen['dms_link/abgabetoolLektorHandbuch']='28'; //Abgabetool Handbuch fuer LektorInnen
$this->phrasen['dms_link/abgabetoolStudentHandbuch']='27'; //Abgabetool Handbuch fuer Studierende
$this->phrasen['dms_link/abgabetoolAssistenzHandbuch']='28'; //Abgabetool Handbuch fuer Assistenz
$this->phrasen['dms_link/iconPDF']='46'; //PDF Icon
$this->phrasen['dms_link/bedienungsanleitungMailverteiler']='1474'; //Bedienungsanleitung Mailverteiler
$this->phrasen['dms_link/berechtigungskonzeptMailverteiler']='1475'; //Berechtigungskonzept Mailverteiler
@@ -36,4 +33,7 @@ $this->phrasen['dms_link/lvevaluierungMitarbeiterCMS']=''; //Beschreibung des Ab
//Links auf externe Seiten
$this->phrasen['dms_link/dokuwikiGesamtnote']='http://fhcomplete.technikum-wien.at/dokuwiki/doku.php?id=cis:gesamtnote'; //Link ins Dokuwiki zur Anleitung Gesamtnote
$this->phrasen['dms_link/abgabetoolLektorHandbuch']='https://fhcomplete.technikum-wien.at/dokuwiki/doku.php?id=cis:abgabetool_fuer_lektoren'; //Abgabetool Handbuch fuer LektorInnen
$this->phrasen['dms_link/abgabetoolStudentHandbuch']='https://fhcomplete.technikum-wien.at/dokuwiki/doku.php?id=cis:abgabetool_fuer_studierende'; //Abgabetool Handbuch fuer Studierende
$this->phrasen['dms_link/abgabetoolAssistenzHandbuch']='https://fhcomplete.technikum-wien.at/dokuwiki/doku.php?id=cis:abgabetool_fuer_lektoren'; //Abgabetool Handbuch fuer Assistenz
?>
+8 -4
View File
@@ -4,10 +4,12 @@ $this->phrasen['testtool/login']='Login';
$this->phrasen['testtool/tag']='Tag';
$this->phrasen['testtool/monat']='Monat';
$this->phrasen['testtool/jahr']='Jahr';
$this->phrasen['testtool/willkommenstext']='Herzlich Willkommen zum Reihungstest.<br /><br />
Bitte warten Sie mit dem Login auf die Anweisung der Aufsichtsperson.<br /><br />
$this->phrasen['testtool/willkommenstextTitel']='Herzlich Willkommen zum Reihungstest';
$this->phrasen['testtool/willkommenstext']='Bitte warten Sie mit dem Login auf die Anweisung der Aufsichtsperson.<br /><br />
Wir wünschen Ihnen einen erfolgreichen Start ins Studium.';
$this->phrasen['testtool/nameAuswaehlen']='Name auswählen...';
$this->phrasen['testtool/reihungstest']= 'Reihungstest';
$this->phrasen['testtool/regulaererEinstieg']='Regulärer Einstieg';
$this->phrasen['testtool/quereinstieg']='(Quereinstieg)';
$this->phrasen['testtool/quereinsteiger']='Quereinsteiger';
$this->phrasen['testtool/basic']='Basic';
@@ -16,11 +18,12 @@ $this->phrasen['testtool/reihungstestNichtFreigeschalten']='Der zuteilte Reihung
$this->phrasen['testtool/reihungstestKannNichtGeladenWerden']='Der Reihungstest dem Sie zugeteilt sind, kann nicht geladen werden';
$this->phrasen['testtool/geburtsdatumStimmtNichtUeberein']='Ihr Geburtsdatum stimmt nicht mit unseren Daten überein. Bitte wenden Sie sich an die Aufsichtsperson';
$this->phrasen['testtool/home']='Home';
$this->phrasen['testtool/klickenSieAufEinTeilgebiet']='Klicken Sie links auf ein Teilgebiet';
$this->phrasen['testtool/klickenSieAufEinTeilgebiet']='Zum Starten klicken Sie bitte links auf ein Teilgebiet.<br>Wir wünschen Ihnen viel Erfolg!';
$this->phrasen['testtool/gebietStarten']='Gebiet starten';
$this->phrasen['testtool/startseite']='Startseite';
$this->phrasen['testtool/zurueckZurStartseite']='Zurück zur Startseite';
$this->phrasen['testtool/begruessungstext']='Willkommen zum Reihungstest der Fachhochschule Technikum Wien. Sie sind mit folgenden Daten angemeldet:';
$this->phrasen['testtool/begruessungstext']="Willkommen zum Reihungstest der Fachhochschule Technikum Wien!";
$this->phrasen['testtool/anmeldedaten']= "Sie sind mit folgenden Daten angemeldet:";
$this->phrasen['testtool/keineAntwort']='Keine Antwort';
$this->phrasen['testtool/speichernUndWeiter']='Speichern und weiter';
$this->phrasen['testtool/alleFragenBeantwortet']='GLÜCKWUNSCH! \n\nSie haben alle Fragen in der zur Verfügung stehenden Zeit beantwortet. \nNutzen Sie die verbleibende Zeit, um Ihre Antworten zu kontrollieren oder fahren Sie mit dem nächsten Teilgebiet fort';
@@ -42,4 +45,5 @@ $this->phrasen['testtool/dieseFrageIstNichtFuerSieBestimmt']='Diese Frage ist ni
$this->phrasen['testtool/fehlerBeimSpeichernDerErstansicht']='Fehler beim Speichern der Erstansicht';
$this->phrasen['testtool/startDrueckenUmZuBeginnen']='Um dieses Teilgebiet zu starten, drücken Sie bitte links oben auf <b>Gebiet starten</b>.';
$this->phrasen['testtool/keinPrueflingseintragVorhanden']='Kein Prüflingseintrag vorhanden';
$this->phrasen['testtool/fuerFolgendeStgAngemeldet']='Für folgende Studiengänge haben Sie sich angemeldet:';
?>
+4 -2
View File
@@ -69,10 +69,12 @@ $this->phrasen['abgabetool/fehlerTerminVorbei']='The deadline for this upload ha
$this->phrasen['abgabetool/eidesstattlicheErklaerung']='I confirm that this paper is entirely my own work.
All sources and quotations have been fully acknowledged in the appropriate places with adequate footnotes and citations.
Quotations have been properly acknowledged and marked with appropriate punctuation. The works consulted are listed in the bibliography.
This paper has not been submitted to another examination panel in the same or a similar form, and has not been published.<br>
This paper has not been submitted to another examination panel in the same or a similar form, and has not been published.<br><br>
I grant the University Of Applied Sciences Technikum Wien the right to store the uploaded file(s) in electronic form and to make them publicly available in data networks.
I further grant the University of Applied Sciences Technikum Wien the right to convert the file(s) for long term preservation purposes.
I declare that copyright and licensing issues related to my work have been resolved and that therefore no rights on the part of any third parties impede the publication.';
I declare that copyright and licensing issues related to my work have been resolved and that therefore no rights on the part of any third parties impede the publication.<br><br>
Bei den Master Arbeiten dürfen ausschließlich Dokumente hochgeladen werden, bei denen die `Eidesstattliche Erklärung´ nicht unterschrieben ist (Datenschutz).
Sollten Sie trotzdem die `Eidesstattliche Erklärung´ samt Unterschrift hochladen, wird seitens der FH Technikum Wien davon ausgegangen, dass Sie keinen Wert auf Schutz Ihrer Unterschrift legen.';
$this->phrasen['abgabetool/gelesenUndAkzeptiert']='Read and accepted';
$this->phrasen['abgabetool/erklaerungNichtAkzeptiert']='Declaration not accepted';
$this->phrasen['abgabetool/downloadProjektarbeit']='Download File';
+4 -4
View File
@@ -7,9 +7,6 @@ $this->phrasen['dms_link/cisHandbuch']='825'; //CIS-Handbuch, welches im Head-Fr
$this->phrasen['dms_link/benotungstoolHandbuch']='824'; //Handbuch Benotungstool
$this->phrasen['dms_link/moodleHandbuch']='33'; //Moodle Handbuch
$this->phrasen['dms_link/moodleHandbuch24']='1426'; //Moodle Handbuch
$this->phrasen['dms_link/abgabetoolLektorHandbuch']='874'; //Abgabetool Handbuch fuer LektorInnen
$this->phrasen['dms_link/abgabetoolStudentHandbuch']='875'; //Abgabetool Handbuch fuer Studierende
$this->phrasen['dms_link/abgabetoolAssistenzHandbuch']='874'; //Abgabetool Handbuch fuer Assistenz
$this->phrasen['dms_link/iconPDF']='46'; //PDF Icon
$this->phrasen['dms_link/bedienungsanleitungMailverteiler']='1474'; //Bedienungsanleitung Mailverteiler
$this->phrasen['dms_link/berechtigungskonzeptMailverteiler']='1475'; //Berechtigungskonzept Mailverteiler
@@ -31,4 +28,7 @@ $this->phrasen['dms_link/anleitungMailverteiler']='7578'; //Anleitung für die B
//Links auf externe Seiten
$this->phrasen['dms_link/dokuwikiGesamtnote']='http://fhcomplete.technikum-wien.at/dokuwiki/doku.php?id=cis:gesamtnote'; //Link ins Dokuwiki zur Anleitung Gesamtnote
?>
$this->phrasen['dms_link/abgabetoolLektorHandbuch']='https://fhcomplete.technikum-wien.at/dokuwiki/doku.php?id=cis:abgabetool_fuer_lektoren'; //Abgabetool Handbuch fuer LektorInnen
$this->phrasen['dms_link/abgabetoolStudentHandbuch']='https://fhcomplete.technikum-wien.at/dokuwiki/doku.php?id=cis:abgabetool_fuer_studierende'; //Abgabetool Handbuch fuer Studierende
$this->phrasen['dms_link/abgabetoolAssistenzHandbuch']='https://fhcomplete.technikum-wien.at/dokuwiki/doku.php?id=cis:abgabetool_fuer_lektoren'; //Abgabetool Handbuch fuer Assistenz
?>
+8 -4
View File
@@ -4,10 +4,12 @@ $this->phrasen['testtool/login']='Login';
$this->phrasen['testtool/tag']='Day';
$this->phrasen['testtool/monat']='Month';
$this->phrasen['testtool/jahr']='Year';
$this->phrasen['testtool/willkommenstext']='Welcome to the placement test.<br /><br />
Please wait for the tutor\'s instructions before you log in.<br /><br />
$this->phrasen['testtool/willkommenstextTitel']='Welcome to the placement test.';
$this->phrasen['testtool/willkommenstext']='Please wait for the tutor\'s instructions before you log in.<br /><br />
We wish you a good start to your studies.';
$this->phrasen['testtool/nameAuswaehlen']='Choose name...';
$this->phrasen['testtool/reihungstest']= 'Placement test';
$this->phrasen['testtool/regulaererEinstieg']='Regular entry';
$this->phrasen['testtool/quereinstieg']='(Lateral entry)';
$this->phrasen['testtool/quereinsteiger']='Lateral entry';
$this->phrasen['testtool/basic']='Basic';
@@ -16,11 +18,12 @@ $this->phrasen['testtool/reihungstestNichtFreigeschalten']='The entrance examina
$this->phrasen['testtool/reihungstestKannNichtGeladenWerden']='The entrance examination assigned to you can not be loaded.';
$this->phrasen['testtool/geburtsdatumStimmtNichtUeberein']='Your date of birth does not correspond to the data we have. Please speak to the supervisor. ';
$this->phrasen['testtool/home']='Home';
$this->phrasen['testtool/klickenSieAufEinTeilgebiet']='Select a topic on the left side';
$this->phrasen['testtool/klickenSieAufEinTeilgebiet']='Select a topic on the left side.<br>';
$this->phrasen['testtool/gebietStarten']='Start section';
$this->phrasen['testtool/startseite']='Startpage';
$this->phrasen['testtool/zurueckZurStartseite']='Back to startpage';;
$this->phrasen['testtool/begruessungstext']='Welcome to the placement test of the UAS Technikum Wien. <br/>You are logged in with the following data:';
$this->phrasen['testtool/begruessungstext']='Welcome to the placement test of the UAS Technikum Wien!';
$this->phrasen['testtool/anmeldedaten']= "You are logged in with the following data:";
$this->phrasen['testtool/keineAntwort']='No Answer';
$this->phrasen['testtool/speichernUndWeiter']='Save and next';
$this->phrasen['testtool/alleFragenBeantwortet']='CONGRATULATIONS!\n\nYou have answered all the questions in the time allowed.\n Use the remaining time to check your answers or continue to the next section.';
@@ -42,4 +45,5 @@ $this->phrasen['testtool/dieseFrageIstNichtFuerSieBestimmt']='This question is n
$this->phrasen['testtool/fehlerBeimSpeichernDerErstansicht']='Error in saving the initial view';
$this->phrasen['testtool/startDrueckenUmZuBeginnen']='To start this section, please click on <b>Start section</b> in the top left corner.';
$this->phrasen['testtool/keinPrueflingseintragVorhanden']='No candidate entry available.';
$this->phrasen['testtool/fuerFolgendeStgAngemeldet']='You have applied for the following degree programs:';
?>
+11 -3
View File
@@ -22,15 +22,23 @@
.drag-and-drop-fields-area {
height: 50px;
display: inline;
}
.drag-and-drop-fields-span {
border: 1px solid black;
border-radius: 7px;
margin-left: 3px;
margin-right: 3px;
padding: 10px;
/*margin-left: 3px;*/
margin-right: 6px;
margin-bottom: 10px;
padding: 5px 10px;
top: 10px;
display: inline-block;
}
.add-filter-div
{
margin-top: 10px;
}
.drag-and-drop-fields-span:hover {
+5 -2
View File
@@ -560,6 +560,7 @@ var InfocenterDetails = {
var ausbildungssemester = receiverPrestudentstatus.ausbildungssemester;
var studiengangbezeichnung = receiverPrestudentstatus.studiengangbezeichnung;
var studiengangbezeichnung_englisch = receiverPrestudentstatus.studiengangbezeichnung_englisch;
var orgform = typeof receiverPrestudentstatus.orgform === 'string' ? receiverPrestudentstatus.orgform : "";
var msgvars = {};
if (rtfreigabe)
@@ -572,7 +573,8 @@ var InfocenterDetails = {
msgvars = {
'ausbildungssemester': ausbildungssemester,
'studiengangbezeichnung': studiengangbezeichnung,
'studiengangbezeichnung_englisch': studiengangbezeichnung_englisch
'studiengangbezeichnung_englisch': studiengangbezeichnung_englisch,
'orgform': orgform
};
InfocenterDetails.sendFreigabeMessage(prestudent_id, RTFREIGABE_MESSAGE_VORLAGE_QUER_KURZ, msgvars);
@@ -587,7 +589,8 @@ var InfocenterDetails = {
msgvars = {
'ausbildungssemester': ausbildungssemester,
'studiengangbezeichnung': studiengangbezeichnung,
'studiengangbezeichnung_englisch': studiengangbezeichnung_englisch
'studiengangbezeichnung_englisch': studiengangbezeichnung_englisch,
'orgform': orgform
};
vorlage = RTFREIGABE_MESSAGE_VORLAGE_QUER
}
+11
View File
@@ -25,6 +25,12 @@ body.main /* Workaround fuer Farbverlauf im IE statt ShadowBox */
padding:0px;
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#cccccc',endColorstr='#ffffff');
}
body.testtool-content
{
/*/padding: 0px 50px 0px 50px;*/
overflow: hidden;
width: 50%;
}
html
{
height: 100%;
@@ -81,6 +87,11 @@ li.ui-menu-item
{
list-style-image:none;
}
.btn-testtool
{
width: 200px;
margin-top: 20px;
}
#menue
{
bottom: 2%;
-1
View File
@@ -83,7 +83,6 @@ printValue("php-xsl", extension_loaded('xsl'));
printValue("php-gd", extension_loaded('gd'));
printValue("php-pgsql", extension_loaded('pgsql'));
printValue("php-ldap", extension_loaded('ldap'));
printValue("php-mcrypt", extension_loaded('mcrypt'));
printValue("php-mbstring", extension_loaded('mbstring'));
printValue("php-soap", extension_loaded('soap'));
printValue("php-curl", extension_loaded('curl'));
+1
View File
@@ -353,6 +353,7 @@ $filters = array(
{"name": "fakultaet"},
{"name": "datum"},
{"name": "uhrzeit"},
{"name": "anmeldefrist"},
{"name": "oeffentlich"},
{"name": "studiengaenge"},
{"name": "freie_plaetze"},
+33 -3
View File
@@ -447,7 +447,17 @@ xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn
</table:table-cell>
<table:table-cell table:style-name="Tabelle3.A1" office:value-type="string">
<text:p text:style-name="P2">
<text:span text:style-name="T4"><xsl:value-of select="studiensemester_beginn"/></text:span></text:p>
<text:span text:style-name="T4">
<!-- Deutsches "Sommersemester" auf englisches "Summersemester" ändern -->
<xsl:choose>
<xsl:when test="substring(studiensemester_beginn, 1, 6)='Sommer'">
Summer<xsl:value-of select="substring(studiensemester_beginn,7)" />
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="studiensemester_beginn"/>
</xsl:otherwise>
</xsl:choose>
</text:span></text:p>
</table:table-cell>
</table:table-row>
<table:table-row table:style-name="Tabelle3.1">
@@ -456,7 +466,17 @@ xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn
</table:table-cell>
<table:table-cell table:style-name="Tabelle3.A1" office:value-type="string">
<text:p text:style-name="P2">
<text:span text:style-name="T4"><xsl:value-of select="studiensemester_aktuell"/></text:span></text:p>
<text:span text:style-name="T4">
<!-- Deutsches "Sommersemester" auf englisches "Summersemester" ändern -->
<xsl:choose>
<xsl:when test="substring(studiensemester_aktuell, 1, 6)='Sommer'">
Summer<xsl:value-of select="substring(studiensemester_aktuell,7)" />
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="studiensemester_aktuell"/>
</xsl:otherwise>
</xsl:choose>
</text:span></text:p>
</table:table-cell>
</table:table-row>
<table:table-row table:style-name="Tabelle3.1">
@@ -502,7 +522,17 @@ xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn
</table:table-cell>
<table:table-cell table:style-name="Tabelle3.A1" office:value-type="string">
<text:p text:style-name="P2">
<text:span text:style-name="T4"><xsl:value-of select="voraussichtlichLetztesStudiensemester"/></text:span></text:p>
<text:span text:style-name="T4">
<!-- Deutsches "Sommersemester" auf englisches "Summersemester" ändern -->
<xsl:choose>
<xsl:when test="substring(voraussichtlichLetztesStudiensemester, 1, 6)='Sommer'">
Summer<xsl:value-of select="substring(voraussichtlichLetztesStudiensemester,7)" />
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="voraussichtlichLetztesStudiensemester"/>
</xsl:otherwise>
</xsl:choose>
</text:span></text:p>
</table:table-cell>
</table:table-row>
<table:table-row table:style-name="Tabelle3.1">
+4 -4
View File
@@ -105,7 +105,7 @@ if(!$erg=$db->db_query($sql_query))
else
{
//$htmlstr .= "<form name='formular'><input type='hidden' name='check' value=''></form>";
$htmlstr .= "<form name='multitermin' action='abgabe_assistenz_multitermin.php' title='Serientermin' target='al_detail' method='POST'>";
$htmlstr .= "<form name='multitermin' action='abgabe_assistenz_multitermin.php' target='al_detail' method='POST'>";
//$htmlstr .= "<table id='t1' class='liste table-autosort:5 table-stripeclass:alternate table-autostripe'>\n";
$htmlstr .= "<table id='t1' class='tablesorter'>\n";
$htmlstr .= "<thead><tr class='liste'>\n";
@@ -154,9 +154,9 @@ else
OR tbl_projektbetreuer.betreuerart_kurzbz = 'Betreuer'
OR tbl_projektbetreuer.betreuerart_kurzbz = 'Begutachter'
)
UNION
SELECT '' AS first,
trim(COALESCE(nachname, '') || ', ' || COALESCE(titelpre, '') || ' ' || COALESCE(vorname, '') || ' ' || COALESCE(titelpost, '')) AS second,
PUBLIC.tbl_mitarbeiter.mitarbeiter_uid,
@@ -451,7 +451,7 @@ function btserienmail(trenner, stgbez)
<body class="background_main">
<?php
echo "<h2><div style='float:left'>Bachelor-/Masterarbeitsbetreuungen (Studiengang $stg_kz, $stgbez)</div><div style='text-align: right;'><a href='../../cms/dms.php?id=".$p->t('dms_link/abgabetoolAssistenzHandbuch')."' target='_blank'><img src='../../skin/images/information.png' alt='Anleitung' title='Anleitung BaDa-Abgabe' border=0>&nbsp;Handbuch</a></div></h2>";
echo "<h2><div style='float:left'>Bachelor-/Masterarbeitsbetreuungen (Studiengang $stg_kz, $stgbez)</div><div style='text-align: right;'><a href='".$p->t('dms_link/abgabetoolAssistenzHandbuch')."' target='_blank'><img src='../../skin/images/information.png' alt='Anleitung' title='Anleitung Abgabetool' border=0>&nbsp;Handbuch</a></div></h2>";
echo $htmlstr;
?>
+64 -19
View File
@@ -828,27 +828,43 @@ if ($punkteUebertragen)
// Checken, ob schon Bewerberstatus vorhanden ist
if (!$prestudent->load_rolle($array['prestudent_id'], 'Bewerber', $prestudentrolle->studiensemester_kurzbz, $prestudentrolle->ausbildungssemester))
{
$prestudent->new = true;
$prestudent->prestudent_id = $array['prestudent_id'];
$prestudent->status_kurzbz = 'Bewerber';
$prestudent->studiensemester_kurzbz = $prestudentrolle->studiensemester_kurzbz;
$prestudent->ausbildungssemester = $prestudentrolle->ausbildungssemester;
$prestudent->datum =date('Y-m-d');
$prestudent->insertamum = date('Y-m-d H:i:s');
$prestudent->insertvon = $user;
$prestudent->orgform_kurzbz = $prestudentrolle->orgform_kurzbz;
$prestudent->bestaetigtam = $prestudentrolle->bestaetigtam;
$prestudent->bestaetigtvon = $prestudentrolle->bestaetigtvon;
$prestudent->bewerbung_abgeschicktamum = $prestudentrolle->bewerbung_abgeschicktamum;
$prestudent->studienplan_id = $prestudentrolle->studienplan_id;
if (!$prestudent->save_rolle())
// Checken, ob Abgewiesener-Status vorhanden ist
if (!$prestudent->load_rolle($array['prestudent_id'], 'Abgewiesener', $prestudentrolle->studiensemester_kurzbz, $prestudentrolle->ausbildungssemester))
{
$msg_error .= '<br>Fehler beim speichern des Bewerberstatus für Prestudent '.$array['prestudent_id'].': ' . $prestudent->errormsg;
// Um einen Bewerberstatus zu setzen, muss "reihungstestangetreten" true sein
if ($prestudent->reihungstestangetreten == true)
{
$prestudent->new = true;
$prestudent->prestudent_id = $array['prestudent_id'];
$prestudent->status_kurzbz = 'Bewerber';
$prestudent->studiensemester_kurzbz = $prestudentrolle->studiensemester_kurzbz;
$prestudent->ausbildungssemester = $prestudentrolle->ausbildungssemester;
$prestudent->datum = date('Y-m-d');
$prestudent->insertamum = date('Y-m-d H:i:s');
$prestudent->insertvon = $user;
$prestudent->orgform_kurzbz = $prestudentrolle->orgform_kurzbz;
$prestudent->bestaetigtam = '';
$prestudent->bestaetigtvon = '';
$prestudent->bewerbung_abgeschicktamum = '';
$prestudent->studienplan_id = $prestudentrolle->studienplan_id;
if (!$prestudent->save_rolle())
{
$msg_error .= '<br>Fehler beim speichern des Bewerberstatus für Prestudent '.$array['prestudent_id'].': '.$prestudent->errormsg;
}
else
{
$count_success_bewerber++;
}
}
else
{
$msg_error .= '<br>Fehler beim speichern des Bewerberstatus für Prestudent '.$array['prestudent_id'].'. Zuerst muss "Reihungstestverfahren absolviert" gesetzt sein.';
}
}
else
{
$count_success_bewerber++;
$msg_error .= '<br>Fehler beim speichern des Bewerberstatus für Prestudent '.$array['prestudent_id'].'. Es ist bereits ein Abgewiesener-Status vorhanden';
}
}
else
@@ -2125,6 +2141,30 @@ else
{
$("#uebertragenOptions").toggle(300);
});
if($("#uebertragenOptionGesamtpunkte").not(":checked"))
{
$("#div_checkbox_bewerber").addClass("disabled");
$("#div_checkbox_bewerber").find("label").addClass("text-muted");
$("#div_checkbox_bewerber").find("label").prop("title", "Erst \"Gesamtpunkte\" und \"Reihungsverfahren absolviert\" setzen");
$("#uebertragenOptionBewerber").prop("disabled", true);
}
$("#uebertragenOptionGesamtpunkte").on("click", function(e)
{
if($(this).is(":checked"))
{
$("#div_checkbox_bewerber").removeClass("disabled");
$("#div_checkbox_bewerber").find("label").removeClass("text-muted");
$("#uebertragenOptionBewerber").prop("disabled", false);
}
else
{
$("#div_checkbox_bewerber").addClass("disabled");
$("#div_checkbox_bewerber").find("label").addClass("text-muted");
$("#div_checkbox_bewerber").find("label").prop("title", "Erst \"Gesamtpunkte\" und \"Reihungsverfahren absolviert\" setzen");
$("#uebertragenOptionBewerber").prop("disabled", true);
}
});
});
function deleteResult(prestudent_id, gebiet_id, name, gebiet_bezeichnung)
@@ -2387,6 +2427,11 @@ else
alert("Bitte wählen Sie mindestens einen Eintrag aus der Liste");
return false;
}
else if ($("#uebertragenOptionBewerber:checked").length === 1 && $("#uebertragenOptionGesamtpunkte:checked").length !== 1)
{
alert("Um den Bewerberstatus setzen zu können, muss \"Gesamtpunkte\" und \"Reihungsverfahren absolviert\" gesetzt sein");
return false;
}
else
{
//if (confirm("Setzt bei allen markierten Personen \'Zum Reihungstest angetreten\' und informiert die entsprechende Studiengangsassistenz. Wollen Sie fortfahren?"))
@@ -2745,8 +2790,8 @@ else
<div class="checkbox">
<label><input type="checkbox" id="uebertragenOptionGesamtpunkte" value="">"Gesamtpunkte" und "Reihungsverfahren absolviert" setzen</label>
</div>
<div class="checkbox">
<label><input type="checkbox" id="uebertragenOptionBewerber" value="">Zu Bewerber machen</label>
<div id="div_checkbox_bewerber" class="checkbox">
<label class="checkbox_bewerber"><input type="checkbox" id="uebertragenOptionBewerber" value="">Zu Bewerber machen</label>
</div>
<button type="button" class="btn btn-success" onclick="punkteUebertragen('.$reihungstest.')" id="punkteUebertragenButton" style="margin-left: 10px">Jetzt übertragen</button>
</div>
@@ -2341,12 +2341,12 @@ $studienplaene_list = implode(',', array_keys($studienplaene_arr));
if ($rechte->isBerechtigt('lehre/reihungstest', $stg_rechtecheck->oe_kurzbz, 'sui'))
{
echo '<input id="studienplan_id" type="hidden" name="studienplan_id" value="">';
echo '<input id="studienplan_autocomplete" type="text" name="studienplan" size="40" placeholder="Weiterer Studienplan" value="">';
echo '<input id="studienplan_autocomplete" type="text" name="studienplan" size="50" placeholder="Weiterer Studienplan" value="">';
echo '<button type="submit" name="speichern"><img src="../../skin/images/list-add.png" alt="Studienplan hinzufügen" height="13px"></button>';
}
else
{
echo 'Keine Berechtigung zum Zuteilen von Studienplänen';
echo '<input id="studienplan_autocomplete" type="text" name="studienplan" size="50" placeholder="Keine Berechtigung zum Zuteilen von Studienplänen" value="" disabled>';
}
echo '</td>';
echo '</tr>';
@@ -2384,7 +2384,7 @@ $studienplaene_list = implode(',', array_keys($studienplaene_arr));
}
else
{
echo '<td colspan="2">Keine Berechtigung zum Zuteilen von Räumen</td>';
echo '<td colspan="2"><input id="ort" type="text" name="ort_kurzbz" size="50" placeholder="Keine Berechtigung zum Zuteilen von Räumen" value="" disabled></td>';
}
$orte = new Reihungstest();
$orte->getOrteReihungstest($reihungstest->reihungstest_id);