Merge branch 'master' into ciauth

This commit is contained in:
Paolo
2019-03-13 18:15:41 +01:00
55 changed files with 2087 additions and 919 deletions
+1
View File
@@ -18,6 +18,7 @@
- **[CORE]** Infocenter Seite hinzugefügt zur zentralen Verwaltung und ZGV Prüfung von Interessenten
- **[CORE]** Unterstützung für Matrikelnummern und BPK - Anbindung an den Datenverbund
- **[CORE]** Digitale Signatur für Dokumente
- **[FAS]** Direkte Zuordnung von Personen zu Lehreinheiten für Wiederholer, Incoming, etc
### CHANGED
- **[CORE]** Berechtigungsprüfung wurde angepasst damit deaktivierte Benutzer keine Berechtigungen mehr haben
@@ -21,7 +21,11 @@ class Mitarbeiter extends APIv1_Controller
*/
public function __construct()
{
parent::__construct(array('Mitarbeiter' => 'basis/mitarbeiter:rw'));
parent::__construct(array(
'Mitarbeiter' => 'basis/mitarbeiter:rw',
'Update' => 'basis/mitarbeiter:rw'
)
);
// Load model MitarbeiterModel
$this->load->model('ressource/mitarbeiter_model', 'MitarbeiterModel');
@@ -71,6 +75,41 @@ class Mitarbeiter extends APIv1_Controller
}
}
/**
* Updates an Employee Record
*
* @return json Response Object
*/
public function postUpdate()
{
if ($this->_validate($this->post()))
{
if (isset($this->post()['mitarbeiter_uid']))
{
$result_load = $this->MitarbeiterModel->load($this->post()['mitarbeiter_uid']);
if(isSuccess($result_load) && hasData($result_load))
{
$result = $this->MitarbeiterModel->update($this->post()['mitarbeiter_uid'], $this->post());
$this->response($result, REST_Controller::HTTP_OK);
}
else
{
$result = error('mitarbeiter_uid not found');
$this->response($result, REST_Controller::HTTP_INTERNAL_SERVER_ERROR);
}
}
else
{
$result = error('Parameter mitarbeiter_uid is missing');
$this->response($result, REST_Controller::HTTP_INTERNAL_SERVER_ERROR);
}
}
else
{
$this->response();
}
}
private function _validate($mitarbeiter = NULL)
{
return true;
@@ -42,7 +42,9 @@ class ReihungstestJob extends FHC_Controller
// Load models
$this->load->model('crm/Reihungstest_model', 'ReihungstestModel');
$this->load->model('crm/RtStudienplan_model', 'RtStudienplanModel');
$this->load->model('organisation/Studiengang_model', 'StudiengangModel');
$this->load->model('organisation/Studienplan_model', 'StudienplanModel');
// Load helpers
$this->load->helper('hlp_sancho_helper');
@@ -489,4 +491,85 @@ class ReihungstestJob extends FHC_Controller
return $content_data_arr;
}
/**
* Checks the upcoming placement tests if there are correct studyplans assigned
* If there are invalid studyplans assigned (outdated because there exists a new version),
* it tries to find a better one and assigns it additionaly
*/
public function correctStudienplan()
{
// get all placement tests with incorrect studyplan
$qry = "
SELECT
tbl_reihungstest.reihungstest_id,
tbl_studienplan.studienplan_id,
tbl_reihungstest.studiensemester_kurzbz,
tbl_studienordnung.studiengang_kz
FROM
public.tbl_reihungstest
JOIN public.tbl_rt_studienplan ON(tbl_rt_studienplan.reihungstest_id=tbl_reihungstest.reihungstest_id)
JOIN lehre.tbl_studienplan USING(studienplan_id)
JOIN lehre.tbl_studienordnung USING(studienordnung_id)
WHERE
NOT EXISTS(
SELECT 1 FROM lehre.tbl_studienplan_semester
WHERE studienplan_id=tbl_rt_studienplan.studienplan_id
AND tbl_studienplan_semester.studiensemester_kurzbz=tbl_reihungstest.studiensemester_kurzbz
)
AND tbl_reihungstest.datum >= now()
AND NOT EXISTS(
SELECT
1
FROM
public.tbl_rt_studienplan rtstp
JOIN lehre.tbl_studienplan stp USING(studienplan_id)
JOIN lehre.tbl_studienordnung sto USING(studienordnung_id)
JOIN lehre.tbl_studienplan_semester stpsem USING(studienplan_id)
WHERE
sto.studiengang_kz=tbl_studienordnung.studiengang_kz
AND rtstp.reihungstest_id=tbl_reihungstest.reihungstest_id
AND stpsem.studiensemester_kurzbz=tbl_reihungstest.studiensemester_kurzbz
)
";
$db = new DB_Model();
$result_rt = $db->execReadOnlyQuery($qry);
if(hasdata($result_rt))
{
foreach ($result_rt->retval as $row_rt)
{
// find an active studyplan for the same degree program with is valid in this semester
$result_stpl = $this->StudienplanModel->getStudienplaeneBySemester(
$row_rt->studiengang_kz,
$row_rt->studiensemester_kurzbz
);
if(hasData($result_stpl))
{
foreach($result_stpl->retval as $row_stpl)
{
// Add new Studyplan to RtStudienplan if missing
$rt_studienplan = $this->RtStudienplanModel->loadWhere(array(
"reihungstest_id" => $row_rt->reihungstest_id,
"studienplan_id" => $row_stpl->studienplan_id
));
if(!hasData($rt_studienplan))
{
echo "\nAdding StudienplanId: $row_stpl->studienplan_id";
echo " to ReihungstestId: $row_rt->reihungstest_id";
$this->RtStudienplanModel->insert(array(
"reihungstest_id" => $row_rt->reihungstest_id,
"studienplan_id" => $row_stpl->studienplan_id
));
}
}
}
}
}
}
}
@@ -10,5 +10,72 @@ class Lehreinheit_model extends DB_Model
parent::__construct();
$this->dbTable = 'lehre.tbl_lehreinheit';
$this->pk = 'lehreinheit_id';
$this->load->model('education/lehrveranstaltung_model', 'LehrveranstaltungModel');
$this->load->model('education/lehreinheitgruppe_model', 'LehreinheitgruppeModel');
$this->load->model('education/lehreinheitmitarbeiter_model', 'LehreinheitmitarbeiterModel');
}
/**
* Gets Lehreinheiten for a Lehrveranstaltung in a Studiensemester.
* Includes Lehrfach, Lehreinheitgruppen and Lektoren.
* @param $lehrveranstaltung_id
* @param $studiensemester
* @return array with Lehreinheiten and their Lehreinheitgruppen
*/
public function getLesForLv($lehrveranstaltung_id, $studiensemester)
{
$lehreinheiten = array();
$les = $this->loadWhere(
array('lehrveranstaltung_id' => $lehrveranstaltung_id,
'studiensemester_kurzbz' => $studiensemester)
);
if (hasData($les))
{
$this->LehrveranstaltungModel->addSelect('kurzbz, bezeichnung');
foreach ($les->retval as $le)
{
$lehrfach = $this->LehrveranstaltungModel->load($le->lehrfach_id);
if (hasData($lehrfach))
{
$letoadd = $le;
$letoadd->lehrfach_bezeichnung = $lehrfach->retval[0]->bezeichnung;
$letoadd->lehrfach_kurzbz = $lehrfach->retval[0]->kurzbz;
// add lehreinheitgruppen, each lehreinheitid
// having (maybe multiple) lehreinheitgruppen
$letoadd->lehreinheitgruppen = array();
$lehreinheitgruppen = $this->LehreinheitgruppeModel->loadWhere(array('lehreinheit_id' => $le->lehreinheit_id));
if (hasData($lehreinheitgruppen))
{
foreach ($lehreinheitgruppen->retval as $lehreinheitgruppe)
{
$letoadd->lehreinheitgruppen[] = array(
'semester' => $lehreinheitgruppe->semester,
'verband' => $lehreinheitgruppe->verband,
'gruppe' => $lehreinheitgruppe->gruppe
);
}
}
// add lektoren
$letoadd->lektoren = array();
$lehreinheitmitarbeiter = $this->LehreinheitmitarbeiterModel->loadWhere(array('lehreinheit_id' => $le->lehreinheit_id));
if (hasData($lehreinheitmitarbeiter))
{
foreach ($lehreinheitmitarbeiter->retval as $lehreinheitma)
{
$letoadd->lektoren[] = $lehreinheitma->mitarbeiter_uid;
}
}
$lehreinheiten[] = $letoadd;
}
}
}
return $lehreinheiten;
}
}
@@ -10,15 +10,258 @@ class Lehreinheitgruppe_model extends DB_Model
parent::__construct();
$this->dbTable = 'lehre.tbl_lehreinheitgruppe';
$this->pk = 'lehreinheitgruppe_id';
$this->load->model('education/lehreinheit_model', 'LehreinheitModel');
$this->load->model('organisation/studiengang_model', 'StudiengangModel');
$this->load->model('organisation/gruppe_model', 'GruppeModel');
$this->load->model('person/benutzergruppe_model', 'BenutzergruppeModel');
}
/**
* Gets group directly assigned to a Lehreinheit
* @param $lehreinheit_id
* @return array
*/
public function getDirectGroup($lehreinheit_id)
{
$this->addJoin('public.tbl_gruppe', 'gruppe_kurzbz');
return $this->loadWhere(array(
return $this->loadWhere(
array(
'tbl_gruppe.direktinskription' => true,
'lehreinheit_id' => $lehreinheit_id
)
);
}
/**
* Gets direct group assignment, consisting of lehreinheitgruppe, gruppe and benutzergruppe
* @param $uid
* @param $lehreinheit_id
* @return array
*/
public function getDirectGroupAssignment($uid, $lehreinheit_id)
{
$this->addJoin('public.tbl_gruppe', 'gruppe_kurzbz');
$this->addJoin('public.tbl_benutzergruppe', 'gruppe_kurzbz');
return $this->loadWhere(array(
'tbl_gruppe.direktinskription' => true,
'lehreinheit_id' => $lehreinheit_id,
'tbl_benutzergruppe.uid' => $uid
)
);
}
/**
* Directly assigns a user to a Lehreinheit (Lehreinheitgruppe, Benutzergruppe).
* Creates own "hidden" group if necessary.
* @param $uid of the student to assign
* @param $lehreinheit_id
* @return array error or success
*/
public function direktUserAdd($uid, $lehreinheit_id)
{
$result = success('User added successfully to group');
$directgroup = $this->getDirectGroup($lehreinheit_id);
$lehreinheit = $this->LehreinheitModel->load($lehreinheit_id);
$loggedInUser = getAuthUID();
if (hasData($lehreinheit))
{
if (hasData($directgroup))
{
$gruppe_kurzbz = $directgroup->retval[0]->gruppe_kurzbz;
}
else
{
// Es gibt keine direkte Gruppe zu dieser LE
// es wird eine erstellt und zugewiesen
$lva = $this->LehrveranstaltungModel->load($lehreinheit->retval[0]->lehrveranstaltung_id);
if (hasData($lva))
{
$lvadata = $lva->retval[0];
$studiengang = $this->StudiengangModel->load($lvadata->studiengang_kz);
if (hasData($studiengang))
{
$gruppe_kurzbz = 'GRP_'.$lehreinheit_id;
$studiengangdata = $studiengang->retval[0];
$kuerzel = mb_strtoupper($studiengangdata->typ.$studiengangdata->kurzbz);
$bezeichnung = $kuerzel.' '.$lvadata->semester.' '.$lvadata->kurzbz;
$gruppe = $this->GruppeModel->load($gruppe_kurzbz);
if (!hasData($gruppe))
{
$groupdata = array(
'gruppe_kurzbz' => $gruppe_kurzbz,
'studiengang_kz' => $lvadata->studiengang_kz,
'semester' => $lvadata->semester,
'bezeichnung' => $bezeichnung,
'aktiv' => true,
'mailgrp' => false,
'sichtbar' => true,
'generiert' => false,
'insertamum' => date('Y-m-d H:i:s'),
'insertvon' => $loggedInUser,
'orgform_kurzbz' => $lvadata->orgform_kurzbz,
'direktinskription' => true
);
$groupadd = $this->GruppeModel->insert($groupdata);
if (isError($groupadd))
return error('Error when inserting Gruppe');
}
$lehreinheitgruppedata = array(
'lehreinheit_id' => $lehreinheit->retval[0]->lehreinheit_id,
'gruppe_kurzbz' => $gruppe_kurzbz,
'studiengang_kz' => $lvadata->studiengang_kz,
'semester' => $lvadata->semester,
'insertamum' => date('Y-m-d H:i:s'),
'insertvon' => $loggedInUser
);
$lehreinheitgruppeadd = $this->insert($lehreinheitgruppedata);
if (isError($lehreinheitgruppeadd))
$result = error('Error when inserting Lehreinheit');
}
}
}
if (isset($gruppe_kurzbz) && !isEmptyString($gruppe_kurzbz))
{
$benutzergruppe = $this->BenutzergruppeModel->load(array(
'uid' => $uid,
'gruppe_kurzbz' => $gruppe_kurzbz
));
if (!hasData($benutzergruppe))
{
$benutzergruppedata = array(
'uid' => $uid,
'gruppe_kurzbz' => $gruppe_kurzbz,
'studiensemester_kurzbz' => $lehreinheit->retval[0]->studiensemester_kurzbz,
'insertamum' => date('Y-m-d H:i:s'),
'insertvon' => $loggedInUser
);
$benutzergruppeadd = $this->BenutzergruppeModel->insert($benutzergruppedata);
if (isError($benutzergruppeadd))
$result = error('Error when inserting Benutzergruppe');
}
}
}
else
{
return error('No Lehreinheit found');
}
return $result;
}
/**
* Deletes direct assignment of a student to a Lehreinheit
* @param $uid of the assigned student
* @param $lehreinheit_id
* @return array error or success
*/
public function direktUserDelete($uid, $lehreinheit_id)
{
$result = success('User deleted successfully');
$lehreinheit = $this->LehreinheitModel->load($lehreinheit_id);
if (hasData($lehreinheit))
{
$directgroup = $this->getDirectGroup($lehreinheit_id);
if (hasData($directgroup))
{
$gruppe_kurzbz = $directgroup->retval[0]->gruppe_kurzbz;
// delete benutzer assignment
$deleteresp = $this->BenutzergruppeModel->delete(array('uid' => $uid, 'gruppe_kurzbz' => $gruppe_kurzbz));
if (hasData($deleteresp))
{
$uids = $this->BenutzergruppeModel->loadWhere(
array(
'gruppe_kurzbz' => $gruppe_kurzbz,
'studiensemester_kurzbz' => $lehreinheit->retval[0]->studiensemester_kurzbz)
);
if (isSuccess($uids) && !hasData($uids))
{
// group is empty and can be deleted
// delete from Lehreinheit
$this->delete($directgroup->retval[0]->lehreinheitgruppe_id);
$studplandevqry = "
SELECT
*
FROM
lehre.tbl_stundenplandev
WHERE
gruppe_kurzbz=?
LIMIT 1";
$studplandevres = $this->execQuery($studplandevqry, array('gruppe_kurzbz' => $gruppe_kurzbz));
if (isSuccess($studplandevres))
{
if (hasData($studplandevres))
{
$studplandevdelqry = "
DELETE FROM lehre.tbl_stundenplandev
WHERE gruppe_kurzbz=?";
$studplandevdelres = $this->execQuery($studplandevdelqry, array('gruppe_kurzbz' => $gruppe_kurzbz));
if (!hasData($studplandevdelres))
$result = error('Studienplan entry could not be deleted');
}
else
{
$lehreinheitgrupperes = $this->load(array('gruppe_kurzbz' => $gruppe_kurzbz));
if (isSuccess($lehreinheitgrupperes) && !hasData($lehreinheitgrupperes))
{
$benutzergruppegrupperes = $this->BenutzergruppeModel->load(array('gruppe_kurzbz' => $gruppe_kurzbz));
if (isSuccess($benutzergruppegrupperes) && !hasData($benutzergruppegrupperes))
{
// delete group if not in Studienplandev. If in Studienplan, deleted next day after cronjob.
$gruppedelres = $this->GruppeModel->delete($gruppe_kurzbz);
if (!hasData($gruppedelres))
{
$result = error('Gruppe could not be deleted');
}
}
}
}
}
else
{
$result = error('Error when querying Studienplan');
}
}
}
else
{
$result = error('Benutzergruppe could not be deleted');
}
}
else
{
$result = error('No direct group found for Lehreinheit');
}
}
else
{
$result = error('No Lehreinheit found');
}
return $result;
}
}
@@ -132,8 +132,10 @@ class Lehrveranstaltung_model extends DB_Model
UPPER(tbl_studiengang.typ::varchar(1) || tbl_studiengang.kurzbz) as kuerzel, tbl_studiengang.orgform_kurzbz, vw_student_lehrveranstaltung.semester, vw_student_lehrveranstaltung.studiensemester_kurzbz, vw_student_lehrveranstaltung.bezeichnung
FROM
campus.vw_student_lehrveranstaltung JOIN public.tbl_benutzer USING(uid)
JOIN public.tbl_person USING(person_id) LEFT JOIN public.tbl_student ON(uid=student_uid)
campus.vw_student_lehrveranstaltung
JOIN public.tbl_benutzer USING(uid)
JOIN public.tbl_person USING(person_id)
LEFT JOIN public.tbl_student ON(uid=student_uid)
LEFT JOIN public.tbl_mitarbeiter ON(uid=mitarbeiter_uid)
LEFT JOIN public.tbl_studentlehrverband USING(student_uid,studiensemester_kurzbz)
LEFT JOIN lehre.tbl_zeugnisnote on(vw_student_lehrveranstaltung.lehrveranstaltung_id=tbl_zeugnisnote.lehrveranstaltung_id AND tbl_zeugnisnote.student_uid=tbl_student.student_uid AND tbl_zeugnisnote.studiensemester_kurzbz=tbl_studentlehrverband.studiensemester_kurzbz)
@@ -171,4 +173,34 @@ class Lehrveranstaltung_model extends DB_Model
return $this->execQuery($query, array($lehrveranstaltung_id, $studiensemester_kurzbz));
}
/**
* Gets Lehrveranstaltungen of a student
* @param $student_uid
* @param null $studiensemester_kurzbz
* @return array|null
*/
public function getLvsByStudent($student_uid, $studiensemester_kurzbz = null)
{
$params = array($student_uid);
$qry = "SELECT * FROM lehre.tbl_lehrveranstaltung
WHERE lehrveranstaltung_id IN(SELECT lehrveranstaltung_id FROM campus.vw_student_lehrveranstaltung
WHERE uid=?";
if (isset($studiensemester_kurzbz))
{
$qry .= " AND studiensemester_kurzbz=?";
$params[] = $studiensemester_kurzbz;
}
$qry .= ") OR lehrveranstaltung_id IN(SELECT lehrveranstaltung_id FROM lehre.tbl_zeugnisnote WHERE student_uid=?";
$params[] = $student_uid;
if (isset($studiensemester_kurzbz))
{
$qry .= " AND studiensemester_kurzbz=?";
$params[] = $studiensemester_kurzbz;
}
$qry .= ") ORDER BY semester, bezeichnung";
return $this->execQuery($qry, $params);
}
}
@@ -10,5 +10,6 @@ class Benutzergruppe_model extends DB_Model
parent::__construct();
$this->dbTable = 'public.tbl_benutzergruppe';
$this->pk = array('gruppe_kurzbz', 'uid');
$this->hasSequence = false;
}
}
+6 -3
View File
@@ -40,6 +40,9 @@ if (!$db = new basis_db())
$uid=get_uid();
$rechte = new benutzerberechtigung();
$rechte->getBerechtigungen($uid);
// Variablen uebernehmen
if (isset($_GET['type']))
$type=$_GET['type'];
@@ -331,12 +334,12 @@ if (isset($reserve) && $raumres)
$stpl = new stundenplan('stundenplan');
$stpldev = new stundenplan('stundenplandev');
if(!$stpl->isBelegt($ort_kurzbz, $datum_res, $stunde)
&& !$stpldev->isBelegt($ort_kurzbz, $datum_res, $stunde))
if((!$stpl->isBelegt($ort_kurzbz, $datum_res, $stunde)
&& !$stpldev->isBelegt($ort_kurzbz, $datum_res, $stunde)) || $rechte->isBerechtigt('lehre/reservierungAdvanced'))
{
$reservierung = new reservierung();
if(!$reservierung->isReserviert($ort_kurzbz, $datum_res, $stunde))
if(!$reservierung->isReserviert($ort_kurzbz, $datum_res, $stunde) || $rechte->isBerechtigt('lehre/reservierungAdvanced'))
{
if (empty($_REQUEST['titel']) && empty($_REQUEST['beschreibung']))
echo "<br>".$p->t('lvplan/titelUndBeschreibungFehlt')."! <br>";
+53 -50
View File
@@ -302,60 +302,63 @@ if (in_array($stsem, $stsem_arr))
else
echo '<p class="error">'.$p->t('tools/keinStatusImStudiensemester',array($stsem)).'</p>';
$akte = new akte();
echo '<h2>' . $p->t('tools/abschlussdokumente') . '</h2>';
echo '<table><tr>';
echo '<td style=" background-color: #fcf8e3;
color: #8a6d3b;
padding: .75rem 1.25rem;
margin-bottom: 1rem;
border: 1px solid #faf2cc;
border-radius: .25rem;">'.$p->t('tools/warnungDruckDigitaleSignatur').'</td>';
echo '</tr></table>';
if($akte->getArchiv($student_studiengang->person_id, null, true) && count($akte->result)>0)
if (!defined('CIS_DOKUMENTE_SELFSERVICE') || CIS_DOKUMENTE_SELFSERVICE)
{
echo '
<table class="tablesorter2" style="width:auto;">
<thead>
<tr>
<th></th>
<th>'.$p->t('tools/erstelldatum').'</th>
<th>'.$p->t('tools/dokument').'</th>
</tr>
</thead>
<tbody>
';
$akte = new akte();
echo '<h2>' . $p->t('tools/abschlussdokumente') . '</h2>';
echo '<table><tr>';
echo '<td style=" background-color: #fcf8e3;
color: #8a6d3b;
padding: .75rem 1.25rem;
margin-bottom: 1rem;
border: 1px solid #faf2cc;
border-radius: .25rem;">'.$p->t('tools/warnungDruckDigitaleSignatur').'</td>';
echo '</tr></table>';
$datum_obj = new datum();
foreach($akte->result as $row)
if($akte->getArchiv($student_studiengang->person_id, null, true) && count($akte->result)>0)
{
$pfad = 'dokumente.php?action=download&id='.$row->akte_id.'&uid='.$uid;
echo '<tr>';
echo '<td><img src="../../../skin/images/pdfpic.gif" /></td>';
echo '<td>'.$datum_obj->formatDatum($row->erstelltam,'d.m.Y').'</td>';
echo '<td><a href="'.$pfad.'">'.$row->bezeichnung.'</a></td>';
echo '</tr>';
}
echo '
<table class="tablesorter2" style="width:auto;">
<thead>
<tr>
<th></th>
<th>'.$p->t('tools/erstelldatum').'</th>
<th>'.$p->t('tools/dokument').'</th>
</tr>
</thead>
<tbody>
';
echo '</tbody></table>';
}
else
{
echo '
<table class="tablesorter2" style="width:auto;">
<thead>
<tr>
<th></th>
<th>'.$p->t('tools/erstelldatum').'</th>
<th>'.$p->t('tools/dokument').'</th>
</tr>
</thead>
<tbody>
';
echo '<td colspan="3">'.$p->t('tools/nochKeineAbschlussdokumenteVorhanden').'</td>';
echo '</tbody></table>';
$datum_obj = new datum();
foreach($akte->result as $row)
{
$pfad = 'dokumente.php?action=download&id='.$row->akte_id.'&uid='.$uid;
echo '<tr>';
echo '<td><img src="../../../skin/images/pdfpic.gif" /></td>';
echo '<td>'.$datum_obj->formatDatum($row->erstelltam,'d.m.Y').'</td>';
echo '<td><a href="'.$pfad.'">'.$row->bezeichnung.'</a></td>';
echo '</tr>';
}
echo '</tbody></table>';
}
else
{
echo '
<table class="tablesorter2" style="width:auto;">
<thead>
<tr>
<th></th>
<th>'.$p->t('tools/erstelldatum').'</th>
<th>'.$p->t('tools/dokument').'</th>
</tr>
</thead>
<tbody>
';
echo '<td colspan="3">'.$p->t('tools/nochKeineAbschlussdokumenteVorhanden').'</td>';
echo '</tbody></table>';
}
}
echo '</body>
</html>
+2 -2
View File
@@ -91,12 +91,12 @@ $fieldheadings = array(
if ($rechte->isBerechtigt('basis/servicezeitaufzeichnung'))
{
$za_simple = 0;
$activities = array('Design', 'Operativ', 'Betrieb', 'Pause', 'LehreIntern', 'LehreExtern', 'Arztbesuch', 'DienstreiseMT', 'Behoerde', 'Ersatzruhe');
$activities = array('Design', 'Operativ', 'Betrieb', 'Pause', 'LehreIntern', 'Arztbesuch', 'DienstreiseMT', 'Behoerde', 'Ersatzruhe');
}
else
{
$za_simple = 1;
$activities = array('Arbeit', 'Pause', 'LehreIntern', 'LehreExtern', 'Arztbesuch', 'DienstreiseMT', 'Behoerde', 'Ersatzruhe');
$activities = array('Arbeit', 'Pause', 'LehreIntern', 'Arztbesuch', 'DienstreiseMT', 'Behoerde', 'Ersatzruhe');
}
$activities_str = "'".implode("','", $activities)."'";
+57 -9
View File
@@ -27,6 +27,8 @@ require_once('../../include/person.class.php');
require_once('../../include/prestudent.class.php');
require_once('../../include/pruefling.class.php');
require_once('../../include/studiengang.class.php');
require_once('../../include/studienplan.class.php');
require_once('../../include/ablauf.class.php');
require_once('../../include/reihungstest.class.php');
require_once('../../include/sprache.class.php');
require_once '../../include/phrasen.class.php';
@@ -174,10 +176,51 @@ if (isset($_POST['prestudent']) && isset($gebdatum))
$_SESSION['sprache']=$stg_obj->sprache;
$_SESSION['semester']=$semester;
// STG und Studienplan mit der höchsten Prio ermitteln
$ps->getActualInteressenten($_POST['prestudent'], true);
$firstPrio_studienplan_id = array_column($ps->result, 'studienplan_id');
$firstPrio_studienplan_id = array_shift($firstPrio_studienplan_id);
$firstPrio_studiengang_kz = array_column($ps->result, 'studiengang_kz');
$firstPrio_studiengang_kz = array_shift($firstPrio_studiengang_kz);
// Sprachvorgaben zu STG mit höchster Prio ermitteln
// * 1. Sprache über Ablauf Vorgaben ermitteln
$ablauf = new Ablauf();
$ablauf->getAblaufVorgabeStudiengang($firstPrio_studiengang_kz);
$rt_sprache = $ablauf->result[0]->sprache;
// * 2. falls keine Sprache vorhanden -> Sprache über Studienplan ermitteln
if (empty($rt_sprache))
{
$stpl = new Studienplan();
$stpl->loadStudienplan($firstPrio_studienplan_id);
$rt_sprache = $stpl->sprache;
}
// * 3. falls keine Sprache vorhanden -> Sprache über Studiengang ermitteln
if (empty($rt_sprache))
{
$stg = new Studiengang($firstPrio_studiengang_kz);
$rt_sprache = $stg->sprache;
}
// * 4. Sprache setzen. Falls keine Sprache vorhanden -> DEFAULT language verwenden
if (empty($rt_sprache))
{
$_SESSION['sprache'] = DEFAULT_LANGUAGE;
}
else
{
$_SESSION['sprache'] = $rt_sprache;
}
}
else
{
echo '<span class="error">'.$p->t('testtool/reihungstestNichtFreigeschalten').'</span>';
{
echo '<span class="error">'.$p->t('testtool/reihungstestNichtFreigeschalten').'</span>';
}
}
else
@@ -311,12 +354,17 @@ if(isset($_POST['save']) && isset($_SESSION['prestudent_id']))
$typ = new studiengang($prestudent->studiengang_kz);
$typ->getStudiengangTyp($stg_obj->typ);
//Sprachwahl des Studiengangs
$qry = "SELECT sprachwahl FROM testtool.tbl_ablauf_vorgaben WHERE studiengang_kz=".$db->db_add_param($prestudent->studiengang_kz)." LIMIT 1";
$result = $db->db_query($qry);
$sprachwahl = $db->db_fetch_object($result);
$sprachwahl = $db->db_parse_bool($sprachwahl->sprachwahl);
// STG mit der höchsten Prio ermitteln
$ps = new Prestudent();
$ps->getActualInteressenten($prestudent_id, true);
$firstPrio_studiengang_kz = array_column($ps->result, 'studiengang_kz');
$firstPrio_studiengang_kz = array_shift($firstPrio_studiengang_kz);
// Sprachwahl zu STG mit höchster Prio ermitteln
$ablauf = new Ablauf();
$ablauf->getAblaufVorgabeStudiengang($firstPrio_studiengang_kz);
$sprachwahl = $ablauf->result[0]->sprachwahl;
//Prestudent Informationen und Logout
echo '<form method="GET">';
echo '<br>'.$p->t('testtool/begruessungstext').' <br/><br/>';
@@ -339,7 +387,7 @@ if(isset($_POST['save']) && isset($_SESSION['prestudent_id']))
echo '</table>';
echo '</FORM>';
//Wenn die Sprachwahl fuer diesen Studiengang aktiviert ist, dann die Sprachen anzeigen
//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
+125 -2
View File
@@ -70,7 +70,7 @@ if(isset($_GET['sprache_user']))
setSpracheUser(DEFAULT_LANGUAGE);
}
$sprache_user = getSpracheUser();
$sprache_user = getSpracheUser();
$p = new phrasen($sprache_user);
$sprache = getSprache();
@@ -103,7 +103,130 @@ if (isset($_SESSION['pruefling_id']))
$sprache_mehrsprachig = new sprache();
$bezeichnung_mehrsprachig = $sprache_mehrsprachig->getSprachQuery('bezeichnung_mehrsprachig');
$qry = "SELECT vw_ablauf.*, ".$bezeichnung_mehrsprachig." FROM testtool.vw_ablauf JOIN testtool.tbl_gebiet USING (gebiet_id) WHERE studiengang_kz=".$db->db_add_param($_SESSION['studiengang_kz'])." ORDER BY semester,reihung";
/**
* Spaltennamen-Aliase extrahieren um sie im Outer-Select verwenden zu können
* $bezeichnung_mehrsprachig liefert: bezeichnung_mehrsprachig[1] as bezeichnung_mehrsprachig_1,...
* $bezeichnung_mehrsprachig_sel liefert: bezeichnung_mehrsprachig_1, bezeichnung_mehrsprachig_2,...
*/
$bezeichnung_mehrsprachig_sel = explode(",", $bezeichnung_mehrsprachig);
foreach ($bezeichnung_mehrsprachig_sel as &$bm)
{
$bm = strrchr($bm, ' as ');
}
$bezeichnung_mehrsprachig_sel = implode(', ', $bezeichnung_mehrsprachig_sel);
/**
* Reihungstestgebiete der Person ermitteln; Zusammenfassen, falls RT für mehrere Studien
* 1. Aktuelle Prestudenten zur Person über den Prüfling ermitteln,
* 2. Einstiegssemester (Erstsemester/Quereinsteiger) und Studienplan pro Prestudent ermitteln,
* 3. RT-Gebiete falls vorhanden über Studienplan, sonst über STG ermitteln
* 4. Für Quereinsteiger zusätzlich auch Erstsemestrigen-Gebiete
*/
$qry = "
WITH prestudent_data AS
(
SELECT DISTINCT ON (prestudent_id)
prestudent_id,
studienplan_id,
studiengang_kz,
ausbildungssemester AS semester
FROM
public.tbl_prestudentstatus
JOIN
public.tbl_prestudent USING (prestudent_id)
WHERE
tbl_prestudent.person_id = (
SELECT
person_id
FROM
public.tbl_prestudent
WHERE
prestudent_id = ".$db->db_add_param($_SESSION['prestudent_id'])."
)
-- Filter only future studiensemester (incl. actual one)
AND
studiensemester_kurzbz IN (
SELECT
studiensemester_kurzbz
FROM
public.tbl_studiensemester
WHERE
ende > now()
)
AND
status_kurzbz = 'Interessent'
-- Order to get last semester when using distinct on
ORDER BY
prestudent_id,
datum DESC,
tbl_prestudentstatus.insertamum DESC,
tbl_prestudentstatus.ext_id DESC
)
SELECT DISTINCT
semester,
gebiet_id,
bezeichnung,
". $bezeichnung_mehrsprachig_sel. "
FROM
(
(SELECT
prestudent_data.semester AS ps_sem,
gebiet_id,
bezeichnung,
tbl_ablauf.studienplan_id,
tbl_ablauf.studiengang_kz,
tbl_ablauf.semester,
tbl_ablauf.reihung,
".$bezeichnung_mehrsprachig. "
FROM
prestudent_data
JOIN
testtool.tbl_ablauf USING (studiengang_kz)
JOIN
testtool.tbl_gebiet USING (gebiet_id)
WHERE
(prestudent_data.semester= 1 AND tbl_ablauf.semester = 1)
OR
(prestudent_data.semester= 3 AND tbl_ablauf.semester IN (1,3))
)
UNION
(
SELECT
prestudent_data.semester AS ps_sem,
gebiet_id,
bezeichnung,
tbl_ablauf.studienplan_id,
tbl_ablauf.studiengang_kz,
tbl_ablauf.semester,
tbl_ablauf.reihung,
". $bezeichnung_mehrsprachig. "
FROM
prestudent_data
JOIN
testtool.tbl_ablauf USING (studienplan_id)
JOIN
testtool.tbl_gebiet USING (gebiet_id)
WHERE
(prestudent_data.semester= 1 AND tbl_ablauf.semester = 1)
OR
(prestudent_data.semester= 3 AND tbl_ablauf.semester IN (1,3))
)
ORDER BY
reihung
) temp
ORDER BY
semester
";
$result = $db->db_query($qry);
$lastsemester = '';
+3
View File
@@ -210,6 +210,9 @@ define('CIS_DOKUMENTE_STUDIENBUCHLBATT_DRUCKEN',true);
//Gibt an, ob die Studienerfolgsbestätigung im CIS gedruckt werden kann
define('CIS_DOKUMENTE_STUDIENERFOLGSBESTAETIGUNG_DRUCKEN',true);
//Gibt an, ob die archivierten Self-Service Dokumente im CIS heruntergeladen werden koennen
define('CIS_DOKUMENTE_SELFSERVICE', true);
//**** INFOSCREEN ****
//Gibt an, ob der Lageplan im Infoterminal angezeigt werden soll.
define('CIS_INFOSCREEN_LAGEPLAN_ANZEIGEN',true);
+4
View File
@@ -104,6 +104,10 @@ define('FAS_PRUEFUNG_BEI_NOTENEINGABE_ANLEGEN',false);
//oder Prozentpunkte uebernommen werden true=Punkte, false=Prozentpunkte
define('FAS_REIHUNGSTEST_PUNKTE', false);
// Legt fest, welche Reihungstestgebiete bei der Berechnung der Gesamtpunkte NICHT einbezogen werden.
// array(gebiet_id1, gebiet_id2,...)
define('FAS_REIHUNGSTEST_EXCLUDE_GEBIETE', array());
// Legt fest ob Messages im FAS angezeigt werden true|false
define('FAS_MESSAGES',false);
+3
View File
@@ -45,6 +45,9 @@ define('CIS_ROOT', 'http://www.fhcomlete.org/build/');
// Externe Funktionen - Unterordner im Include-Verzeichnis
define('EXT_FKT_PATH', 'tw');
// Bezeichnung des Campus
define('CAMPUS_NAME','');
// Fuer Mails etc
define('DOMAIN', 'example.com');
+1 -1
View File
@@ -1698,7 +1698,7 @@ if(!$error)
}
else
{
$errormsg = $benutergruppe->errormsg;
$errormsg = $benutzergruppe->errormsg;
$return = false;
}
}
@@ -228,7 +228,7 @@ echo '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>';
<textbox id="lehrveranstaltung-detail-textbox-startkw" width="50" disabled="true"/>
<label value=" Stundenblockung " />
<textbox id="lehrveranstaltung-detail-textbox-stundenblockung" width="50" disabled="true" />
<label value=" Wochenrythmus " />
<label value=" Wochenrhythmus " />
<textbox id="lehrveranstaltung-detail-textbox-wochenrythmus" width="50" disabled="true"/>
</hbox>
@@ -1457,6 +1457,11 @@ function LeGruppeDirektAdd()
alert("Lehreinheit wurde nicht gefunden. Daten wurden nicht gespeichert!");
return;
}
if(user == '')
{
alert("Bitte wählen sie zuerst einen Eintrag aus");
return;
}
var req = new phpRequest('lvplanung/lehrveranstaltungDBDML.php','','');
+1 -1
View File
@@ -184,7 +184,7 @@ echo '<?xul-overlay href="'.APP_ROOT.'content/lvplanung/stpl-details-overlay.xul
<row>
<label value="rdf:http://www.technikum-wien.at/lehreinheit-lvplan/rdf#lektor" />
<label value="WR: rdf:http://www.technikum-wien.at/lehreinheit-lvplan/rdf#wochenrythmus Bl: rdf:http://www.technikum-wien.at/lehreinheit-lvplan/rdf#stundenblockung"
tooltiptext="Wochenrythmus" />
tooltiptext="Wochenrhythmus" />
</row>
<row>
<label value="Offen: rdf:http://www.technikum-wien.at/lehreinheit-lvplan/rdf#offenestunden / rdf:http://www.technikum-wien.at/lehreinheit-lvplan/rdf#semesterstunden"
+1 -1
View File
@@ -549,7 +549,7 @@ elseif ($aktion=='lva_multi_set')
if (count($wochenrythmus)==1)
$wochenrythmus=$wr;
else
$error_msg.='Wochenrythmus ist nicht eindeutig!';
$error_msg.='Wochenrhythmus ist nicht eindeutig!';
$count=0;
$rest=$offenestunden;
if ($rest<=0)
+1 -1
View File
@@ -189,7 +189,7 @@ $worksheet->write($zeile,++$spalte,"Planstunden", $format_bold);
$maxlength[$spalte]=11;
$worksheet->write($zeile,++$spalte,"Stundenblockung", $format_bold);
$maxlength[$spalte]=15;
$worksheet->write($zeile,++$spalte,"Wochenrythmus", $format_bold);
$worksheet->write($zeile,++$spalte,"Wochenrhythmus", $format_bold);
$maxlength[$spalte]=13;
$worksheet->write($zeile,++$spalte,"Raum", $format_bold);
$maxlength[$spalte]=4;
+4
View File
@@ -242,6 +242,8 @@ function AufnahmeTermineAuswahl()
var teilgenommen = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#teilgenommen" ));
var punkte = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#punkte" ));
var studienplan_id = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#studienplan_id" ));
var endpunkte_inkl_gebiete = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#endpunkte_inkl_gebiete" ));
var endpunkte_exkl_gebiete = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#endpunkte_exkl_gebiete" ));
document.getElementById('aufnahmetermine-textbox-rt_person_id').value=rt_person_id;
document.getElementById('aufnahmetermine-textbox-person_id').value=person_id;
@@ -255,6 +257,8 @@ function AufnahmeTermineAuswahl()
document.getElementById('aufnahmetermine-checkbox-teilgenommen').checked=false;
document.getElementById('aufnahmetermine-textbox-punkte').value=punkte;
document.getElementById('aufnahmetermine-menulist-studienplan').value=studienplan_id;
document.getElementById('aufnahmetermine-textbox-endpunkte-inkl-gebiete').value = endpunkte_inkl_gebiete;
document.getElementById('aufnahmetermine-textbox-endpunkte-exkl-gebiete').value = endpunkte_exkl_gebiete;
}
function AufnahmeTermineNeu()
+13 -1
View File
@@ -293,7 +293,19 @@ echo ']>
<toolbarbutton id="aufnahmetermine-button-reihungstest-punktesync" image="../../skin/images/transmit.png" tooltiptext="Reihungstest Ergebnis holen" onclick="AufnahemTermineReihungstestPunkteTransmit()"/>
<spacer flex="1" />
</hbox>
</row>
</row>
<row>
<label value="Punkte inkl. Physik" control="aufnahmetermine-textbox-endpunkte-inkl-gebiete" />
<hbox>
<textbox id="aufnahmetermine-textbox-endpunkte-inkl-gebiete" readonly="true" maxlength="8" size="6"/>
</hbox>
</row>
<row>
<label value="Punkte exkl. Physik" control="aufnahmetermine-textbox-endpunkte-exkl-gebiete" />
<hbox>
<textbox id="aufnahmetermine-textbox-endpunkte-exkl-gebiete" readonly="true" maxlength="8" size="6"/>
</hbox>
</row>
</rows>
</grid>
<hbox>
@@ -293,7 +293,7 @@ echo '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>';
<box class="Datum" id="student-abschlusspruefung-datum-datum" disabled="true"/>
</vbox>
</row>
<row>
<row id="student-abschlusspruefung-datum-uhrzeit-row">
<vbox>
<label value="Uhrzeit" control="student-abschlusspruefung-datum-uhrzeit" />
</vbox>
+2 -2
View File
@@ -864,7 +864,7 @@ function StudentProjektbetreuerDetailReset()
document.getElementById('student-projektbetreuer-textbox-faktor').value='1';
document.getElementById('student-projektbetreuer-textbox-name').value='';
document.getElementById('student-projektbetreuer-menulist-note').value='';
document.getElementById('student-projektbetreuer-textbox-punkte').value='0.0';
if(document.getElementById('student-projektarbeit-menulist-projekttyp').value=='Diplom')
@@ -874,7 +874,7 @@ function StudentProjektbetreuerDetailReset()
}
else if(document.getElementById('student-projektarbeit-menulist-projekttyp').value=='Bachelor')
{
document.getElementById('student-projektbetreuer-textbox-stunden').value='3.0';
document.getElementById('student-projektbetreuer-textbox-stunden').value='4.0';
document.getElementById('student-projektbetreuer-menulist-betreuerart').value='Begutachter';
}
else if(document.getElementById('student-projektarbeit-menulist-projekttyp').value=='Praktikum')
+1 -1
View File
@@ -567,7 +567,7 @@ class ablauf extends basis_db
$obj->ablauf_vorgaben_id = $row->ablauf_vorgaben_id;
$obj->studiengang_kz = $row->studiengang_kz;
$obj->sprache = $row->sprache;
$obj->sprachwahl = $row->sprachwahl;
$obj->sprachwahl = $this->db_parse_bool($row->sprachwahl);
$obj->content_id = $row->content_id;
$this->result[]= $obj;
+1 -1
View File
@@ -194,7 +194,7 @@ class firma extends basis_db
$this->db_add_param($this->aktiv, FHC_BOOLEAN).','.
$this->db_add_param($this->finanzamt, FHC_INTEGER).','.
$this->db_add_param($this->partner_code).','.
$this->db_add_param($this->lieferant, FHC_INTEGER).'); ';
$this->db_add_param($this->lieferant, FHC_BOOLEAN).'); ';
}
else
{
+1
View File
@@ -137,6 +137,7 @@ class organisationseinheit extends basis_db
$this->mailverteiler = $this->db_parse_bool($row->mailverteiler);
$this->lehre = $this->db_parse_bool($row->lehre);
$this->standort_id = $row->standort_id;
$this->freigabegrenze = $row->freigabegrenze;
}
else
{
+29
View File
@@ -994,4 +994,33 @@ class person extends basis_db
return false;
}
}
/**
* Laedt eine Person anhand der Matrikelnummer
*
* @param $matr_nr Matrikelnummer
* @return boolean true wenn ok, false im Fehlerfall.
*/
public function getPersonByMatrNr($matr_nr)
{
$qry = "SELECT person_id FROM public.tbl_person WHERE matr_nr=".$this->db_add_param($matr_nr);
if($result = $this->db_query($qry))
{
if($row = $this->db_fetch_object($result))
{
return $this->load($row->person_id);
}
else
{
$this->errormsg = 'Person nicht gefunden';
return false;
}
}
else
{
$this->errormsg = 'Fehler beim Laden der Daten';
return false;
}
}
}
+90
View File
@@ -420,6 +420,96 @@ class prestudent extends person
return true;
}
/**
* Laedt über einen Prestudenten alle anderen Prestudenten einer Person, die aktuell an STG interessiert sind.
* @integer $prestudent_id Prestudent ID, über die alle weiteren Prestudenten ermittelt werden sollen.
* @boolean $prio Wenn true, dann wird nur der Prestudent mit dem am höchsten priorisierten Studiengang zurückgegeben.
* return Objekt-Array mit allen Prestudenten einer Person, die aktuell an STG interessiert sind.
*/
public function getActualInteressenten($prestudent_id, $prio = false)
{
if (is_numeric($prestudent_id))
{
$qry = "
SELECT DISTINCT ON (priorisierung, prestudent_id)
priorisierung,
prestudent_id,
studienplan_id,
studiengang_kz,
ausbildungssemester
FROM
public.tbl_prestudentstatus
JOIN
public.tbl_prestudent USING (prestudent_id)
WHERE
tbl_prestudent.person_id = (
SELECT
person_id
FROM
public.tbl_prestudent
WHERE
prestudent_id = ". $this->db_add_param($prestudent_id). "
)
-- Filter only future studiensemester (incl. actual one)
AND
studiensemester_kurzbz IN (
SELECT
studiensemester_kurzbz
FROM
public.tbl_studiensemester
WHERE
ende > now()
)
AND
status_kurzbz = 'Interessent'
-- Order to get the very last status and highest prio on top
ORDER BY
priorisierung NULLS LAST,
prestudent_id,
datum DESC,
tbl_prestudentstatus.insertamum DESC,
tbl_prestudentstatus.ext_id DESC
" ;
if ($prio)
{
$qry .= "
LIMIT 1
";
}
if($this->db_query($qry))
{
while($row = $this->db_fetch_object())
{
$obj = new stdClass();
$obj->prestudent_id = $row->prestudent_id;
$obj->studienplan_id = $row->studienplan_id;
$obj->studiengang_kz = $row->studiengang_kz;
$obj->ausbildungssemester = $row->ausbildungssemester;
$this->result[] = $obj;
}
return true;
}
else
{
$this->errormsg = 'Fehler beim Laden der Daten';
return false;
}
}
else
{
$this->errormsg = 'prestudent_id muss numerisch sein.';
return false;
}
}
/**
* Laedt die Rolle(n) eines Prestudenten
*/
+14 -1
View File
@@ -313,12 +313,25 @@ class pruefling extends basis_db
* @param $person_id ID der Person.
* @param $punkte Wenn true werden Punkte geliefert, sonst Prozentsumme.
* @param $reihungstest_id ID des Reihungstests.
* @param $has_excluded_gebiete Wenn true werden die Punkte der Fragengebiete, die im config-array
* definiert sind, bei der Berechnung der Endpunkte nicht berücksichtigt.
* @return Endpunkte des Reihungstests oder False wenn keine Punkte vorhanden
*/
public function getReihungstestErgebnisPerson($person_id, $punkte=false, $reihungstest_id=null)
public function getReihungstestErgebnisPerson($person_id, $punkte=false, $reihungstest_id=null, $has_excluded_gebiete = false)
{
$qry = "SELECT * FROM testtool.vw_auswertung
WHERE person_id=".$this->db_add_param($person_id, FHC_INTEGER);
if ($has_excluded_gebiete)
{
if (defined('FAS_REIHUNGSTEST_EXCLUDE_GEBIETE') && !empty(FAS_REIHUNGSTEST_EXCLUDE_GEBIETE))
{
$exclude_gebiet_id_arr = FAS_REIHUNGSTEST_EXCLUDE_GEBIETE;
$exclude_gebiet_id_toString = implode(', ', $exclude_gebiet_id_arr);
$qry .= " AND gebiet_id NOT IN (". $exclude_gebiet_id_toString. ")";
}
}
$ergebnis=0;
if(!is_null($reihungstest_id))
+482 -451
View File
@@ -1,451 +1,482 @@
<?php
/* Copyright (C) 20012 FH Technikum-Wien
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* Authors: Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at> and
*/
/**
* Klasse Service
*
*/
require_once(dirname(__FILE__).'/basis_db.class.php');
class service extends basis_db
{
public $new;
public $result = array();
//Tabellenspalten
public $service_id; // bigint
public $bezeichnung; // varchar(64)
public $beschreibung; // text
public $ext_id; // bigint
public $oe_kurzbz; // varchar(32)
public $content_id; // integer
public $design_uid; // varchar(32)
public $betrieb_uid; // varchar(32)
public $operativ_uid; // varchar(32)
/**
* Konstruktor - Laedt optional ein Service
* @param $service_id
*/
public function __construct($service_id=null)
{
parent::__construct();
if(!is_null($service_id))
$this->load($service_id);
}
/**
* Laedt ein Service mit der uebergebenen ID
*
* @param $service_id
* @return boolean
*/
public function load($service_id)
{
if(!is_numeric($service_id))
{
$this->errormsg = 'Service ID ist ungueltig';
return false;
}
$qry = "SELECT * FROM public.tbl_service WHERE service_id=".$this->db_add_param($service_id, FHC_INTEGER);
if($result = $this->db_query($qry))
{
if($row = $this->db_fetch_object($result))
{
$this->service_id = $row->service_id;
$this->bezeichnung = $row->bezeichnung;
$this->beschreibung = $row->beschreibung;
$this->ext_id = $row->ext_id;
$this->oe_kurzbz = $row->oe_kurzbz;
$this->content_id = $row->content_id;
$this->design_uid = $row->design_uid;
$this->betrieb_uid = $row->betrieb_uid;
$this->operativ_uid = $row->operativ_uid;
return true;
}
else
{
$this->errormsg = 'Service mit dieser ID exisitert nicht';
return false;
}
}
else
{
$this->errormsg = 'Fehler beim Laden des Service';
return false;
}
}
/**
* Laedt alle vorhandenen Services
*/
public function getAll()
{
$qry = "SELECT * FROM public.tbl_service ORDER BY oe_kurzbz, bezeichnung";
if($result = $this->db_query($qry))
{
while($row = $this->db_fetch_object($result))
{
$obj = new service();
$obj->service_id = $row->service_id;
$obj->bezeichnung = $row->bezeichnung;
$obj->beschreibung = $row->beschreibung;
$obj->ext_id = $row->ext_id;
$obj->oe_kurzbz = $row->oe_kurzbz;
$obj->content_id = $row->content_id;
$obj->design_uid = $row->design_uid;
$obj->betrieb_uid = $row->betrieb_uid;
$obj->operativ_uid = $row->operativ_uid;
$this->result[] = $obj;
}
return true;
}
else
{
$this->errormsg='Fehler beim Laden der Daten';
return false;
}
}
/**
* Sucht ein Service
*
* @param $suchstring
*/
public function search($suchstring)
{
$qry = "SELECT * FROM public.tbl_service WHERE 1=1 ";
foreach($suchstring as $value)
$qry.="AND (lower(beschreibung::text) like lower('%".$this->db_escape($value)."%')
OR lower(beschreibung::text) like lower('%".$this->db_escape(htmlentities($value,ENT_NOQUOTES,'UTF-8'))."%'))";
$qry.=" ORDER BY oe_kurzbz, bezeichnung";
if($result = $this->db_query($qry))
{
while($row = $this->db_fetch_object($result))
{
$obj = new service();
$obj->service_id = $row->service_id;
$obj->bezeichnung = $row->bezeichnung;
$obj->beschreibung = $row->beschreibung;
$obj->ext_id = $row->ext_id;
$obj->oe_kurzbz = $row->oe_kurzbz;
$obj->content_id = $row->content_id;
$obj->design_uid = $row->design_uid;
$obj->betrieb_uid = $row->betrieb_uid;
$obj->operativ_uid = $row->operativ_uid;
$this->result[] = $obj;
}
return true;
}
else
{
$this->errormsg='Fehler beim Laden der Daten';
return false;
}
}
/**
* Laedt alle vorhandenen Services, sortiert nach den am haeufigsten vom User in der Zeitaufzeichnung verwendeten
*
* <p>Optionaler Zeitraum (Tage in die Vergangenheit), in denen das Service vorkommt<br>
* Optionale Anzahl an Ereignissen im angegebenen Zeitraum, um das Service zu beruecksichtigen</p>
*
* @param string $user uid
* @param integer $zeitraum Anzahl Tage in die Vergangenheit, die fuer das Auftreten des Service beruecksichtigt werden sollen
* @param integer $anzahl_ereignisse default: 3 Wie oft soll dieses Service mindestens in $zeitraum vorkommen, um beruecksichtigt zu werden
*/
public function getFrequentServices($user, $zeitraum=null, $anzahl_ereignisse='3')
{
if(!is_numeric($anzahl_ereignisse))
{
$this->errormsg = 'anzahl_ereignisse muss eine gueltige Zahl sein';
return false;
}
if (!is_null($zeitraum) && $zeitraum>0 && is_numeric($zeitraum))
$zeit = "AND tbl_zeitaufzeichnung.start>=(now()::date-$zeitraum)";
else
$zeit = "";
$qry = " SELECT tbl_service.*, count(tbl_zeitaufzeichnung.service_id)
FROM campus.tbl_zeitaufzeichnung
JOIN public.tbl_service USING (service_id)
WHERE tbl_zeitaufzeichnung.uid=".$this->db_add_param($user)."
$zeit
GROUP BY tbl_service.service_id HAVING COUNT(*) > $anzahl_ereignisse
UNION
SELECT tbl_service.*, '0' AS anzahl
FROM public.tbl_service
ORDER BY count DESC,bezeichnung,oe_kurzbz";
if($result = $this->db_query($qry))
{
while($row = $this->db_fetch_object($result))
{
$obj = new service();
$obj->service_id = $row->service_id;
$obj->bezeichnung = $row->bezeichnung;
$obj->beschreibung = $row->beschreibung;
$obj->ext_id = $row->ext_id;
$obj->oe_kurzbz = $row->oe_kurzbz;
$obj->anzahl = $row->count;
$obj->content_id = $row->content_id;
$obj->design_uid = $row->design_uid;
$obj->betrieb_uid = $row->betrieb_uid;
$obj->operativ_uid = $row->operativ_uid;
$this->result[] = $obj;
}
return true;
}
else
{
$this->errormsg='Fehler beim Laden der Daten';
return false;
}
}
/**
* Laedt die Services der uebergebenen OE
*
* @param string $oe_kurzbz OE_Kurzbezeichnung der zu suchenden Services.
* @param integer $content_id Default: null. Wenn true, werden nur OEs mit eingetragener Content_id zurückgegeben.
* Wenn content_id übergeben wird, wird nur das entsprechende Service zurückgegeben.
*/
public function getServicesOrganisationseinheit($oe_kurzbz, $content_id=null)
{
$qry = 'SELECT
*
FROM
public.tbl_service
WHERE
oe_kurzbz='.$this->db_add_param($oe_kurzbz);
if (!is_null($content_id) && is_numeric($content_id))
$qry.= ' AND content_id='.$this->db_add_param($content_id);
elseif ($content_id==true)
$qry.= ' AND (content_id IS NOT NULL OR ext_id IS NOT NULL)';
else
$qry.= '';
$qry.= ' ORDER BY bezeichnung';
if($result = $this->db_query($qry))
{
while($row = $this->db_fetch_object($result))
{
$obj = new service();
$obj->service_id = $row->service_id;
$obj->bezeichnung = $row->bezeichnung;
$obj->beschreibung = $row->beschreibung;
$obj->ext_id = $row->ext_id;
$obj->oe_kurzbz = $row->oe_kurzbz;
$obj->content_id = $row->content_id;
$obj->design_uid = $row->design_uid;
$obj->betrieb_uid = $row->betrieb_uid;
$obj->operativ_uid = $row->operativ_uid;
$this->result[] = $obj;
}
return true;
}
else
{
$this->errormsg='Fehler beim Laden der Daten';
return false;
}
}
/**
* Laedt die Services der uebergebenen OE und alle Services, die dieser OE untergliedert sind
*
* @param string $oe_kurzbz
* @param string $order Default: oe_kurzbz,bezeichnung
* @param integer $content_id Default: null. Wenn true, werden nur OEs mit eingetragener Content_id zurückgegeben.
* Wenn content_id übergeben wird, wird nur das entsprechende Service zurückgegeben.
*/
public function getSubServicesOrganisationseinheit($oe_kurzbz, $order='oe_kurzbz,bezeichnung', $content_id=null)
{
$qry = 'SELECT
*
FROM
public.tbl_service
WHERE
oe_kurzbz IN (SELECT oe_kurzbz FROM public.tbl_organisationseinheit WHERE oe_parent_kurzbz='.$this->db_add_param($oe_kurzbz).')';
if (!is_null($content_id) && is_numeric($content_id))
$qry.= ' AND content_id='.$this->db_add_param($content_id);
elseif ($content_id==true)
$qry.= ' AND content_id IS NOT NULL';
else
$qry.= '';
if (!is_null($order))
$qry.= ' ORDER BY '.$order;
if($result = $this->db_query($qry))
{
while($row = $this->db_fetch_object($result))
{
$obj = new service();
$obj->service_id = $row->service_id;
$obj->bezeichnung = $row->bezeichnung;
$obj->beschreibung = $row->beschreibung;
$obj->ext_id = $row->ext_id;
$obj->oe_kurzbz = $row->oe_kurzbz;
$obj->content_id = $row->content_id;
$obj->design_uid = $row->design_uid;
$obj->betrieb_uid = $row->betrieb_uid;
$obj->operativ_uid = $row->operativ_uid;
$this->result[] = $obj;
}
return true;
}
else
{
$this->errormsg='Fehler beim Laden der Daten';
return false;
}
}
/**
* Prueft die Daten vor dem Speichern
* @return boolean
*/
public function validate()
{
return true;
}
/**
* Speichert ein Service
* @param $new
*/
public function save($new=null)
{
if(is_null($new))
$new = $this->new;
if(!$this->validate())
return false;
if($new)
{
$qry = "BEGIN;INSERT INTO public.tbl_service (bezeichnung, beschreibung, oe_kurzbz, content_id, ext_id, design_uid, betrieb_uid, operativ_uid)
VALUES(".
$this->db_add_param($this->bezeichnung).','.
$this->db_add_param($this->beschreibung).','.
$this->db_add_param($this->oe_kurzbz).','.
$this->db_add_param($this->content_id).','.
$this->db_add_param($this->ext_id).','.
$this->db_add_param($this->design_uid).','.
$this->db_add_param($this->betrieb_uid).','.
$this->db_add_param($this->operativ_uid).');';
}
else
{
$qry = 'UPDATE public.tbl_service SET'.
' bezeichnung = '.$this->db_add_param($this->bezeichnung).','.
' beschreibung = '.$this->db_add_param($this->beschreibung).','.
' oe_kurzbz = '.$this->db_add_param($this->oe_kurzbz).','.
' content_id = '.$this->db_add_param($this->content_id).','.
' ext_id = '.$this->db_add_param($this->ext_id).','.
' design_uid = '.$this->db_add_param($this->design_uid).','.
' betrieb_uid = '.$this->db_add_param($this->betrieb_uid).','.
' operativ_uid = '.$this->db_add_param($this->operativ_uid).
' WHERE service_id='.$this->db_add_param($this->service_id, FHC_INTEGER).';';
}
if($this->db_query($qry))
{
if($new)
{
$qry = "SELECT currval('public.seq_service_service_id') as id";
if($result = $this->db_query($qry))
{
if($row = $this->db_fetch_object($result))
{
$this->service_id = $row->id;
$this->db_query('COMMIT;');
return true;
}
else
{
$this->errormsg = 'Fehler beim Auslesen der Sequence';
$this->db_query('ROLLBACK');
return false;
}
}
else
{
$this->errormsg = 'Fehler beim Auslesen der Sequence';
$this->db_query('ROLLBACK');
return false;
}
}
else
return true;
}
else
{
$this->errormsg = 'Fehler beim Speichern der Daten';
return false;
}
}
/**
* Loescht einen Service
* @param $service_id
*/
public function delete($service_id)
{
if(!is_numeric($service_id))
{
$this->errormsg='ID ist ungueltig';
return false;
}
$qry = "DELETE FROM public.tbl_service WHERE service_id=".$this->db_add_param($service_id);
if($this->db_query($qry))
return true;
else
{
$this->errormsg = 'Fehler beim Loeschen des Service';
return false;
}
}
}
?>
<?php
/* Copyright (C) 20012 FH Technikum-Wien
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* Authors: Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at> and
*/
/**
* Klasse Service
*
*/
require_once(dirname(__FILE__).'/basis_db.class.php');
class service extends basis_db
{
public $new;
public $result = array();
//Tabellenspalten
public $service_id; // bigint
public $bezeichnung; // varchar(64)
public $beschreibung; // text
public $ext_id; // bigint
public $oe_kurzbz; // varchar(32)
public $content_id; // integer
public $design_uid; // varchar(32)
public $betrieb_uid; // varchar(32)
public $operativ_uid; // varchar(32)
public $servicekategorie_kurzbz; // varchar(32)
/**
* Konstruktor - Laedt optional ein Service
* @param $service_id
*/
public function __construct($service_id=null)
{
parent::__construct();
if(!is_null($service_id))
$this->load($service_id);
}
/**
* Laedt ein Service mit der uebergebenen ID
*
* @param $service_id
* @return boolean
*/
public function load($service_id)
{
if(!is_numeric($service_id))
{
$this->errormsg = 'Service ID ist ungueltig';
return false;
}
$qry = "SELECT * FROM public.tbl_service WHERE service_id=".$this->db_add_param($service_id, FHC_INTEGER);
if($result = $this->db_query($qry))
{
if($row = $this->db_fetch_object($result))
{
$this->service_id = $row->service_id;
$this->bezeichnung = $row->bezeichnung;
$this->beschreibung = $row->beschreibung;
$this->ext_id = $row->ext_id;
$this->oe_kurzbz = $row->oe_kurzbz;
$this->content_id = $row->content_id;
$this->design_uid = $row->design_uid;
$this->betrieb_uid = $row->betrieb_uid;
$this->operativ_uid = $row->operativ_uid;
$this->servicekategorie_kurzbz = $row->servicekategorie_kurzbz;
return true;
}
else
{
$this->errormsg = 'Service mit dieser ID exisitert nicht';
return false;
}
}
else
{
$this->errormsg = 'Fehler beim Laden des Service';
return false;
}
}
/**
* Laedt alle vorhandenen Services
*/
public function getAll()
{
$qry = "SELECT * FROM public.tbl_service ORDER BY oe_kurzbz, bezeichnung";
if($result = $this->db_query($qry))
{
while($row = $this->db_fetch_object($result))
{
$obj = new service();
$obj->service_id = $row->service_id;
$obj->bezeichnung = $row->bezeichnung;
$obj->beschreibung = $row->beschreibung;
$obj->ext_id = $row->ext_id;
$obj->oe_kurzbz = $row->oe_kurzbz;
$obj->content_id = $row->content_id;
$obj->design_uid = $row->design_uid;
$obj->betrieb_uid = $row->betrieb_uid;
$obj->operativ_uid = $row->operativ_uid;
$obj->servicekategorie_kurzbz = $row->servicekategorie_kurzbz;
$this->result[] = $obj;
}
return true;
}
else
{
$this->errormsg='Fehler beim Laden der Daten';
return false;
}
}
/**
* Sucht ein Service
*
* @param $suchstring
*/
public function search($suchstring)
{
$qry = "SELECT * FROM public.tbl_service WHERE 1=1 ";
foreach($suchstring as $value)
$qry.="AND (lower(beschreibung::text) like lower('%".$this->db_escape($value)."%')
OR lower(beschreibung::text) like lower('%".$this->db_escape(htmlentities($value,ENT_NOQUOTES,'UTF-8'))."%'))";
$qry.=" ORDER BY oe_kurzbz, bezeichnung";
if($result = $this->db_query($qry))
{
while($row = $this->db_fetch_object($result))
{
$obj = new service();
$obj->service_id = $row->service_id;
$obj->bezeichnung = $row->bezeichnung;
$obj->beschreibung = $row->beschreibung;
$obj->ext_id = $row->ext_id;
$obj->oe_kurzbz = $row->oe_kurzbz;
$obj->content_id = $row->content_id;
$obj->design_uid = $row->design_uid;
$obj->betrieb_uid = $row->betrieb_uid;
$obj->operativ_uid = $row->operativ_uid;
$obj->servicekategorie_kurzbz = $row->servicekategorie_kurzbz;
$this->result[] = $obj;
}
return true;
}
else
{
$this->errormsg='Fehler beim Laden der Daten';
return false;
}
}
/**
* Laedt alle vorhandenen Services, sortiert nach den am haeufigsten vom User in der Zeitaufzeichnung verwendeten
*
* <p>Optionaler Zeitraum (Tage in die Vergangenheit), in denen das Service vorkommt<br>
* Optionale Anzahl an Ereignissen im angegebenen Zeitraum, um das Service zu beruecksichtigen</p>
*
* @param string $user uid
* @param integer $zeitraum Anzahl Tage in die Vergangenheit, die fuer das Auftreten des Service beruecksichtigt werden sollen
* @param integer $anzahl_ereignisse default: 3 Wie oft soll dieses Service mindestens in $zeitraum vorkommen, um beruecksichtigt zu werden
*/
public function getFrequentServices($user, $zeitraum=null, $anzahl_ereignisse='3')
{
if(!is_numeric($anzahl_ereignisse))
{
$this->errormsg = 'anzahl_ereignisse muss eine gueltige Zahl sein';
return false;
}
if (!is_null($zeitraum) && $zeitraum>0 && is_numeric($zeitraum))
$zeit = "AND tbl_zeitaufzeichnung.start>=(now()::date-$zeitraum)";
else
$zeit = "";
$qry = " SELECT tbl_service.*, count(tbl_zeitaufzeichnung.service_id)
FROM campus.tbl_zeitaufzeichnung
JOIN public.tbl_service USING (service_id)
WHERE tbl_zeitaufzeichnung.uid=".$this->db_add_param($user)."
$zeit
GROUP BY tbl_service.service_id HAVING COUNT(*) > $anzahl_ereignisse
UNION
SELECT tbl_service.*, '0' AS anzahl
FROM public.tbl_service
ORDER BY count DESC,bezeichnung,oe_kurzbz";
if($result = $this->db_query($qry))
{
while($row = $this->db_fetch_object($result))
{
$obj = new service();
$obj->service_id = $row->service_id;
$obj->bezeichnung = $row->bezeichnung;
$obj->beschreibung = $row->beschreibung;
$obj->ext_id = $row->ext_id;
$obj->oe_kurzbz = $row->oe_kurzbz;
$obj->anzahl = $row->count;
$obj->content_id = $row->content_id;
$obj->design_uid = $row->design_uid;
$obj->betrieb_uid = $row->betrieb_uid;
$obj->operativ_uid = $row->operativ_uid;
$obj->servicekategorie_kurzbz = $row->servicekategorie_kurzbz;
$this->result[] = $obj;
}
return true;
}
else
{
$this->errormsg='Fehler beim Laden der Daten';
return false;
}
}
/**
* Laedt die Services der uebergebenen OE
*
* @param string $oe_kurzbz OE_Kurzbezeichnung der zu suchenden Services.
* @param integer $content_id Default: null. Wenn true, werden nur OEs mit eingetragener Content_id zurückgegeben.
* Wenn content_id übergeben wird, wird nur das entsprechende Service zurückgegeben.
*/
public function getServicesOrganisationseinheit($oe_kurzbz, $content_id=null)
{
$qry = 'SELECT
*
FROM
public.tbl_service
WHERE
oe_kurzbz='.$this->db_add_param($oe_kurzbz);
if (!is_null($content_id) && is_numeric($content_id))
$qry.= ' AND content_id='.$this->db_add_param($content_id);
elseif ($content_id==true)
$qry.= ' AND (content_id IS NOT NULL OR ext_id IS NOT NULL)';
else
$qry.= '';
$qry.= ' ORDER BY bezeichnung';
if($result = $this->db_query($qry))
{
while($row = $this->db_fetch_object($result))
{
$obj = new service();
$obj->service_id = $row->service_id;
$obj->bezeichnung = $row->bezeichnung;
$obj->beschreibung = $row->beschreibung;
$obj->ext_id = $row->ext_id;
$obj->oe_kurzbz = $row->oe_kurzbz;
$obj->content_id = $row->content_id;
$obj->design_uid = $row->design_uid;
$obj->betrieb_uid = $row->betrieb_uid;
$obj->operativ_uid = $row->operativ_uid;
$obj->servicekategorie_kurzbz = $row->servicekategorie_kurzbz;
$this->result[] = $obj;
}
return true;
}
else
{
$this->errormsg='Fehler beim Laden der Daten';
return false;
}
}
/**
* Laedt die Services der uebergebenen OE und alle Services, die dieser OE untergliedert sind
*
* @param string $oe_kurzbz
* @param string $order Default: oe_kurzbz,bezeichnung
* @param integer $content_id Default: null. Wenn true, werden nur OEs mit eingetragener Content_id zurückgegeben.
* Wenn content_id übergeben wird, wird nur das entsprechende Service zurückgegeben.
*/
public function getSubServicesOrganisationseinheit($oe_kurzbz, $order='oe_kurzbz,bezeichnung', $content_id=null)
{
$qry = 'SELECT
*
FROM
public.tbl_service
WHERE
oe_kurzbz IN (SELECT oe_kurzbz FROM public.tbl_organisationseinheit WHERE oe_parent_kurzbz='.$this->db_add_param($oe_kurzbz).')';
if (!is_null($content_id) && is_numeric($content_id))
$qry.= ' AND content_id='.$this->db_add_param($content_id);
elseif ($content_id==true)
$qry.= ' AND content_id IS NOT NULL';
else
$qry.= '';
if (!is_null($order))
$qry.= ' ORDER BY '.$order;
if($result = $this->db_query($qry))
{
while($row = $this->db_fetch_object($result))
{
$obj = new service();
$obj->service_id = $row->service_id;
$obj->bezeichnung = $row->bezeichnung;
$obj->beschreibung = $row->beschreibung;
$obj->ext_id = $row->ext_id;
$obj->oe_kurzbz = $row->oe_kurzbz;
$obj->content_id = $row->content_id;
$obj->design_uid = $row->design_uid;
$obj->betrieb_uid = $row->betrieb_uid;
$obj->operativ_uid = $row->operativ_uid;
$obj->servicekategorie_kurzbz = $row->servicekategorie_kurzbz;
$this->result[] = $obj;
}
return true;
}
else
{
$this->errormsg='Fehler beim Laden der Daten';
return false;
}
}
/**
* Prueft die Daten vor dem Speichern
* @return boolean
*/
public function validate()
{
return true;
}
/**
* Speichert ein Service
* @param $new
*/
public function save($new=null)
{
if(is_null($new))
$new = $this->new;
if(!$this->validate())
return false;
if($new)
{
$qry = "BEGIN;INSERT INTO public.tbl_service (bezeichnung, beschreibung, oe_kurzbz, content_id, ext_id,
design_uid, betrieb_uid, operativ_uid, servicekategorie_kurzbz)
VALUES(".
$this->db_add_param($this->bezeichnung).','.
$this->db_add_param($this->beschreibung).','.
$this->db_add_param($this->oe_kurzbz).','.
$this->db_add_param($this->content_id).','.
$this->db_add_param($this->ext_id).','.
$this->db_add_param($this->design_uid).','.
$this->db_add_param($this->betrieb_uid).','.
$this->db_add_param($this->operativ_uid).','.
$this->db_add_param($this->servicekategorie_kurzbz).');';
}
else
{
$qry = 'UPDATE public.tbl_service SET'.
' bezeichnung = '.$this->db_add_param($this->bezeichnung).','.
' beschreibung = '.$this->db_add_param($this->beschreibung).','.
' oe_kurzbz = '.$this->db_add_param($this->oe_kurzbz).','.
' content_id = '.$this->db_add_param($this->content_id).','.
' ext_id = '.$this->db_add_param($this->ext_id).','.
' design_uid = '.$this->db_add_param($this->design_uid).','.
' betrieb_uid = '.$this->db_add_param($this->betrieb_uid).','.
' operativ_uid = '.$this->db_add_param($this->operativ_uid).','.
' servicekategorie_kurzbz = '.$this->db_add_param($this->servicekategorie_kurzbz).
' WHERE service_id='.$this->db_add_param($this->service_id, FHC_INTEGER).';';
}
if($this->db_query($qry))
{
if($new)
{
$qry = "SELECT currval('public.seq_service_service_id') as id";
if($result = $this->db_query($qry))
{
if($row = $this->db_fetch_object($result))
{
$this->service_id = $row->id;
$this->db_query('COMMIT;');
return true;
}
else
{
$this->errormsg = 'Fehler beim Auslesen der Sequence';
$this->db_query('ROLLBACK');
return false;
}
}
else
{
$this->errormsg = 'Fehler beim Auslesen der Sequence';
$this->db_query('ROLLBACK');
return false;
}
}
else
return true;
}
else
{
$this->errormsg = 'Fehler beim Speichern der Daten';
return false;
}
}
/**
* Loescht einen Service
* @param $service_id
*/
public function delete($service_id)
{
if(!is_numeric($service_id))
{
$this->errormsg='ID ist ungueltig';
return false;
}
$qry = "DELETE FROM public.tbl_service WHERE service_id=".$this->db_add_param($service_id);
if($this->db_query($qry))
return true;
else
{
$this->errormsg = 'Fehler beim Loeschen des Service';
return false;
}
}
public function getKategorieArray()
{
$kategorien = array();
$qry = 'SELECT * FROM public.tbl_servicekategorie ORDER BY sort';
if($result = $this->db_query($qry))
{
while($row = $this->db_fetch_object($result))
{
$kategorien[$row->servicekategorie_kurzbz] = $row->bezeichnung;
}
return $kategorien;
}
else
{
$this->errormsg = 'Fehler beim Laden der Daten';
return false;
}
}
}
?>
+9 -3
View File
@@ -567,11 +567,17 @@ class student extends benutzer
* @param studiengang_kz
* @return true wenn ok, false im Fehlerfall
*/
public function load_person($person_id, $studiengang_kz)
public function load_person($person_id, $studiengang_kz = null)
{
$qry = "SELECT tbl_student.* FROM public.tbl_benutzer JOIN public.tbl_student ON(uid=student_uid)
WHERE person_id=".$this->db_add_param($person_id, FHC_INTEGER)." AND studiengang_kz=".$this->db_add_param($studiengang_kz, FHC_INTEGER)."
ORDER BY prestudent_id DESC LIMIT 1";
WHERE person_id=".$this->db_add_param($person_id, FHC_INTEGER);
if($studiengang_kz != '')
{
$qry .= " AND studiengang_kz=".$this->db_add_param($studiengang_kz, FHC_INTEGER);
}
$qry .= " ORDER BY prestudent_id DESC LIMIT 1";
if($this->db_query($qry))
{
+1 -1
View File
@@ -129,7 +129,7 @@ $menu=array
),
'Stammdaten'=> array
(
'name'=>'Stammdaten', 'opener'=>'true', 'hide'=>'true', 'permissions'=>array('admin','lv-plan','support','basis/berechtigung','basis/variable','basis/studiengang','basis/ort','basis/firma','basis/fhausweis','basis/infoscreen'), 'image'=>'vilesci_stammdaten.png',
'name'=>'Stammdaten', 'opener'=>'true', 'hide'=>'true', 'permissions'=>array('admin','lv-plan','support','basis/berechtigung','basis/variable','basis/studiengang','basis/ort','basis/firma','basis/fhausweis','basis/infoscreen','basis/organisationseinheit'), 'image'=>'vilesci_stammdaten.png',
'link'=>'left.php?categorie=Stammdaten', 'target'=>'nav',
'Betriebsmittel'=>array('name'=>'Betriebsmittel', 'link'=>'stammdaten/betriebsmittel_frameset.php', 'target'=>'main','permissions'=>array('basis/betriebsmittel')),
'Reihungstest'=>array('name'=>'Reihungstest', 'link'=>'stammdaten/reihungstestverwaltung.php', 'target'=>'main','permissions'=>array('admin','assistenz')),
+16 -5
View File
@@ -645,6 +645,7 @@ class wochenplan extends basis_db
die($this->db_last_error());
$result_stunde = $this->db_result;
$num_rows_stunde = $this->db_num_rows($result_stunde);
$raumReservierbar = true;
$stundenplandev_belegt = array();
// Formularbeginn wenn Lektor
@@ -670,7 +671,10 @@ class wochenplan extends basis_db
}
}
else
$raumres=false;
{
$raumres = false;
$raumReservierbar = false;
}
}
//Tabelle zeichnen
@@ -696,6 +700,8 @@ class wochenplan extends basis_db
if (!date("w",$this->datum))
$this->datum=jump_day($this->datum,1);
$datum=$datum_mon=$this->datum;
$rechte = new benutzerberechtigung();
$rechte->getBerechtigungen($user_uid);
for ($i=1; $i<=TAGE_PRO_WOCHE; $i++)
{
@@ -887,7 +893,7 @@ class wochenplan extends basis_db
}
// Ausgabe einer Stunde im Raster (HTML)
echo ' <td nowrap valign="top">';
echo ' <td nowrap valign="top" align="center">';
foreach($uEinheiten as $key=>$uEinheit)
{
@@ -945,6 +951,8 @@ class wochenplan extends basis_db
}
echo '</A></DIV>';
}
if ($rechte->isBerechtigt('lehre/reservierungAdvanced', null, 'sui'))
echo '<INPUT type="checkbox" name="reserve'.$i.'_'.$j.'" value="'.date("Y-m-d",$datum).'">';
echo '</td>'.$this->crlf;
}
}
@@ -978,9 +986,6 @@ class wochenplan extends basis_db
echo ' <td>'.$p->t('global/titel').':</td><td><input onchange="if (this.value.length>0 && document.getElementById(\'beschreibung\').value.length<1) {document.getElementById(\'beschreibung\').value=document.getElementById(\'titel\').value;document.getElementById(\'beschreibung\').focus();};" type="text" id="titel" name="titel" size="10" maxlength="10" value="" /></td> '.$this->crlf;
echo ' <td>'.$p->t('global/beschreibung').':</td><td colspan="6"> <input onchange="if (this.value.length<1 && document.getElementById(\'titel\').value.length>0) {alert(\'Achtung! Speichern nur mit Beschreibung moeglich!\');this.focus();};" type="text" id="beschreibung" name="beschreibung" size="20" maxlength="32" value="" /> </td>'.$this->crlf;
$rechte = new benutzerberechtigung();
$rechte->getBerechtigungen($user_uid);
//Pruefen ob die erweiterte Reservierungsrechte vorhanden sind
if ($rechte->isBerechtigt('lehre/reservierung', null, 'sui'))
{
@@ -1109,6 +1114,12 @@ class wochenplan extends basis_db
echo '</tr></table></form>';
echo ' <a href="stpl_reserve_list.php">'.$p->t('lvplan/reservierungenLoeschen').' </a>';
}
elseif ($this->type=='ort' && $raumReservierbar == false)
{
echo '<table><tr><td><br>';
echo '<span style="color: orange">'.$p->t('lvplan/raumNichtReservierbar').'</span>';
echo '</td></tr></table>';
}
else
{
if ($this->type=='ort')
+1
View File
@@ -98,4 +98,5 @@ $this->phrasen['lvplan/status']='Status';
$this->phrasen['lvplan/automatischeMail']='Dies ist eine automatische Mail!';
$this->phrasen['lvplan/folgendeAenderungen']='Es haben sich folgende Aenderungen in Ihrem LV-Plan ergeben:';
$this->phrasen['lvplan/reserviertInDev']='reserviert<br>für<br>lehre';
$this->phrasen['lvplan/raumNichtReservierbar']='Die Möglichkeit der Reservierung ist für diesen Raum deaktiviert.';
?>
+2 -2
View File
@@ -1,5 +1,5 @@
<!ENTITY window.title "Tempus">
<!ENTITY window.version "3.2a">
<!ENTITY window.title "Tempus">
<!ENTITY window.version "3.3">
<!ENTITY menu-file.label "Datei">
+1
View File
@@ -97,4 +97,5 @@ $this->phrasen['lvplan/status']='Status';
$this->phrasen['lvplan/automatischeMail']='This is an automatic email!';
$this->phrasen['lvplan/folgendeAenderungen']='There have been the following changes in your Schedule:';
$this->phrasen['lvplan/reserviertInDev']='not<br>available';
$this->phrasen['lvplan/raumNichtReservierbar']='Reservation is disabled for this room.';
?>
+66
View File
@@ -18,6 +18,7 @@
* Authors: Andreas Oesterreicher <oesi@technikum-wien.at>
*/
require_once('../config/vilesci.config.inc.php');
require_once('../config/global.config.inc.php');
require_once('../include/rdf.class.php');
require_once('../include/basis_db.class.php');
require_once('../include/functions.inc.php');
@@ -25,6 +26,7 @@ require_once('../include/benutzerberechtigung.class.php');
require_once('../include/datum.class.php');
require_once('../include/benutzer.class.php');
require_once('../include/prestudent.class.php');
require_once('../include/pruefling.class.php');
require_once('../include/reihungstest.class.php');
require_once('../include/studienplan.class.php');
require_once('../include/studienordnung.class.php');
@@ -92,6 +94,36 @@ if($prestudent_id!='')
$zuordnung_fuer_selben_studiengang[] = $row->rt_person_id;
$stsem_arr[] = $reihungstest_obj_arr[$row->reihungstest_id]->studiensemester_kurzbz;
}
// Reale (nicht von Assistenz überarbeitete) Gesamtpunkte des RT laden; ggf. ohne bestimmte Fragengebiete
$pruefling = new Pruefling();
// * Gesamtpunkte inklusive alle Fragengebiete
$endpunkte_inkl_gebiete = 0;
$endpunkte_exkl_gebiete = 0;
if(defined('FAS_REIHUNGSTEST_PUNKTE') && FAS_REIHUNGSTEST_PUNKTE)
{
$endpunkte_inkl_gebiete = $pruefling->getReihungstestErgebnisPerson($row->person_id, true, $row->reihungstest_id);
}
else
{
$endpunkte_inkl_gebiete = $pruefling->getReihungstestErgebnisPerson($row->person_id, false, $row->reihungstest_id);
}
// * ggf. Gesamtpunkte exklusive bestimmte Fragengebiete
if (defined('FAS_REIHUNGSTEST_EXCLUDE_GEBIETE') && !empty(FAS_REIHUNGSTEST_EXCLUDE_GEBIETE))
{
if(defined('FAS_REIHUNGSTEST_PUNKTE') && FAS_REIHUNGSTEST_PUNKTE)
{
$endpunkte_exkl_gebiete = $pruefling->getReihungstestErgebnisPerson($row->person_id, true, $row->reihungstest_id, true);
}
else
{
$endpunkte_exkl_gebiete = $pruefling->getReihungstestErgebnisPerson($row->person_id, false, $row->reihungstest_id, true);
}
}
$row->endpunkte_inkl_gebiete = round($endpunkte_inkl_gebiete, 2);
$row->endpunkte_exkl_gebiete = round($endpunkte_exkl_gebiete, 2);
}
if(count($stsem_arr) > 0)
{
@@ -111,6 +143,38 @@ elseif($rt_person_id!='')
{
$reihungstest_obj_arr[$reihungstest->reihungstest_id] = new reihungstest();
$reihungstest_obj_arr[$reihungstest->reihungstest_id]->load($reihungstest->reihungstest_id);
// Reale (nicht von Assistenz überarbeitete) Gesamtpunkte des RT laden; ggf. ohne bestimmte Fragengebiete
$pruefling = new Pruefling();
// * Gesamtpunkte inklusive alle Fragengebiete
$endpunkte_inkl_gebiete = 0;
$endpunkte_exkl_gebiete = 0;
if(defined('FAS_REIHUNGSTEST_PUNKTE') && FAS_REIHUNGSTEST_PUNKTE)
{
$endpunkte_inkl_gebiete = $pruefling->getReihungstestErgebnisPerson($reihungstest->person_id, true, $reihungstest->reihungstest_id);
}
else
{
$endpunkte_inkl_gebiete = $pruefling->getReihungstestErgebnisPerson($reihungstest->person_id, false, $reihungstest->reihungstest_id);
}
// * ggf. Gesamtpunkte exklusive bestimmte Fragengebiete
if (defined('FAS_REIHUNGSTEST_EXCLUDE_GEBIETE') && !empty(FAS_REIHUNGSTEST_EXCLUDE_GEBIETE))
{
if(defined('FAS_REIHUNGSTEST_PUNKTE') && FAS_REIHUNGSTEST_PUNKTE)
{
$endpunkte_exkl_gebiete = $pruefling->getReihungstestErgebnisPerson($reihungstest->person_id, true, $reihungstest->reihungstest_id, true);
}
else
{
$endpunkte_exkl_gebiete = $pruefling->getReihungstestErgebnisPerson($reihungstest->person_id, false, $reihungstest->reihungstest_id, true);
}
}
$reihungstest->endpunkte_inkl_gebiete = round($endpunkte_inkl_gebiete, 2);
$reihungstest->endpunkte_exkl_gebiete = round($endpunkte_exkl_gebiete, 2);
drawrow($reihungstest);
}
else
@@ -162,6 +226,8 @@ function drawrow($row)
$oRdf->obj[$i]->setAttribut('studiensemester',$reihungstest_obj->studiensemester_kurzbz,true);
$oRdf->obj[$i]->setAttribut('datum',$datum_obj->formatDatum($reihungstest_obj->datum,'d.m.Y'),true);
$oRdf->obj[$i]->setAttribut('datum_iso',$reihungstest_obj->datum,true);
$oRdf->obj[$i]->setAttribut('endpunkte_inkl_gebiete', $row->endpunkte_inkl_gebiete, true);
$oRdf->obj[$i]->setAttribut('endpunkte_exkl_gebiete', $row->endpunkte_exkl_gebiete, true);
// Es wird der neueste Reihungstest im Studiengang des Prestudenten markiert damit im FAS erkennbar ist welches
// Eintraege zur Punkteberechnung verwendet werden
+1 -1
View File
@@ -41,7 +41,7 @@ if (mb_strlen($filter) < 3)
die('Filter muss mindestens 3 Zeichen lang sein');
$benutzer = new student();
$benutzer->getTab($filter);
$benutzer->getTab($filter, 'nachname, vorname');
$studiengang = new studiengang();
$studiengang->getAll(null, false);
+4 -1
View File
@@ -389,7 +389,7 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml")
$abschlussbeurteilung='';
// Hole Datum der Sponsion -> wenn keine vorhanden nimm aktuelles datum
$qry = "SELECT
sponsion, tbl_abschlussbeurteilung.bezeichnung_english, datum
sponsion, tbl_abschlussbeurteilung.bezeichnung_english, datum, pruefungstyp_kurzbz
FROM
lehre.tbl_abschlusspruefung
JOIN lehre.tbl_abschlussbeurteilung USING(abschlussbeurteilung_kurzbz)
@@ -400,6 +400,7 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml")
$sponsion_datum = date('d.m.Y');
$abschlusspruefungsdatum = '';
$abschlussbeurteilung='';
$pruefungstyp_kurzbz='';
if($db->db_query($qry))
{
@@ -408,8 +409,10 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml")
$sponsion_datum = $datum->formatDatum($row1->sponsion, 'd.m.Y');
$abschlusspruefungsdatum = $datum->formatDatum($row1->datum, 'd.m.Y');
$abschlussbeurteilung = $row1->bezeichnung_english;
$pruefungstyp_kurzbz = $row1->pruefungstyp_kurzbz;
}
}
echo " <pruefungstyp_kurzbz>$pruefungstyp_kurzbz</pruefungstyp_kurzbz>";
echo " <abschlussbeurteilung>$abschlussbeurteilung</abschlussbeurteilung>";
echo " <abschlusspruefungsdatum>$abschlusspruefungsdatum</abschlusspruefungsdatum>";
echo " <sponsion_datum>$sponsion_datum</sponsion_datum>";
+1 -1
View File
@@ -419,7 +419,7 @@ function drawLehrauftrag($uid)
$lv[$anzahl_lvs]['lehreinheit_id'] = (isset($row->projektarbeit_id)?$kuerzel.$row->projektarbeit_id:' ');
$lv[$anzahl_lvs]['lehrveranstaltung'] = 'Betreuung '.$row->vorname.' '.$row->nachname;
$lv[$anzahl_lvs]['fachbereich'] = (isset($row->oe_kurzbz) && array_key_exists($row->oe_kurzbz, $fb_arr)?$fb_arr[$row->oe_kurzbz]:' ');
$lv[$anzahl_lvs]['fachbereich'] = (isset($row->oe_kurzbz) && array_key_exists($row->oe_kurzbz, $oe_arr)?$oe_arr[$row->oe_kurzbz]:' ');
$lv[$anzahl_lvs]['gruppe'] = ' ';
$lv[$anzahl_lvs]['stunden'] = (isset($row->stunden)?number_format($row->stunden,2):' ');
$lv[$anzahl_lvs]['satz'] = (isset($row->stundensatz)?$row->stundensatz:' ');
-1
View File
@@ -438,7 +438,6 @@ $oRdf->sendHeader();
$oRdf->obj[$i]->setAttribut('startkw',$row_le->start_kw);
$oRdf->obj[$i]->setAttribut('raumtyp',$row_le->raumtyp);
$oRdf->obj[$i]->setAttribut('raumtypalternativ',$row_le->raumtypalternativ);
$oRdf->obj[$i]->setAttribut('anmerkung',$row_le->anmerkung);
$oRdf->obj[$i]->setAttribut('unr',$row_le->unr);
$oRdf->obj[$i]->setAttribut('lvnr',$row_le->lvnr);
$oRdf->obj[$i]->setAttribut('gruppen',$grp);
+258 -227
View File
@@ -1,227 +1,258 @@
<?php
/* Copyright (C) 2010 Technikum-Wien
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* Authors: Karl Burkhart <burkhart@technikum-wien.at>.
*/
require_once('../config/vilesci.config.inc.php');
require_once('../include/student.class.php');
require_once('../include/benutzer.class.php');
require_once('../include/adresse.class.php');
require_once('../include/person.class.php');
require_once('../include/webservicelog.class.php');
ini_set("soap.wsdl_cache_enabled", "0");
$SOAPServer = new SoapServer(APP_ROOT."/soap/semesterticket.wsdl.php?".microtime(true));
$SOAPServer->addFunction("verifyData");
$SOAPServer->handle();
$fehler = '';
/**
*
* Nimmt Anfrage entgegen und überprüft ob Student auch wirklich Student ist (anhand Matrikelnummer)
* @param $parameters
*/
function verifyData($parameters)
{
global $fehler;
class foo{};
$obj = new foo();
if (!$db = new basis_db())
die('Es konnte keine Verbindung zum Server aufgebaut werden.');
// Eintrag in der LogTabelle anlegen
$log = new webservicelog();
$log->request_data = file_get_contents('php://input');
$log->webservicetyp_kurzbz = 'wienerlinien';
$log->request_id = $parameters->token;
$log->beschreibung = "Semesterticketanfrage";
$log->save(true);
if(!validateRequest($parameters))
{
$obj->result = 'false';
$obj->fehler = $fehler;
}
else
{
$student = new student();
$student_uid = $student->getUidFromMatrikelnummer($parameters->Matrikelnummer);
// überprüfe ob Benutzer aktiv ist
$benutzer = new benutzer();
$benutzer->load($student_uid);
if(!$benutzer->bnaktiv)
{
$obj->result = 'false';
$obj->fehler ='1';
return $obj;
}
// überprüfe vorname
if($benutzer->vorname != $parameters->Vorname)
{
// es wurde keine übereinstimmung gefunden
$obj->result = 'false';
$obj->fehler = '6';
return $obj;
}
if($benutzer->nachname != $parameters->Name)
{
// es wurde keine übereinstimmung gefunden
$obj->result = 'false';
$obj->fehler = '7';
return $obj;
}
// Überprüfe PLZ
$adresse = new adresse();
$adresse->load_pers($benutzer->person_id);
$foundAdr = false;
foreach($adresse->result as $adr)
{
if($adr->plz == $parameters->Postleitzahl && $adr->typ == 'h')
$foundAdr = true;
}
if($foundAdr == false)
{
// es wurde keine übereinstimmung gefunden
$obj->result = 'false';
$obj->fehler = '5';
return $obj;
}
// Überprüfe Geburtsdatum
$person = new person();
$person->load($benutzer->person_id);
if($person->gebdatum != $parameters->Geburtsdatum)
{
$obj->result = 'false';
$obj->fehler = '4';
return $obj;
}
// hole prestudentID
$student->load($student_uid);
if($student->prestudent_id == '')
{
// es wurde kein student gefunden
$obj->result = 'false';
$obj->fehler = '3';
return $obj;
}
// Übergabe von studiensemester -> z.b 11W, 12S auf WS2011, SS2012
$year = mb_substr($parameters->Semesterkuerzel, 0,2);
$semester = mb_substr($parameters->Semesterkuerzel,2,1);
if($semester == 'S')
{
$semester = 'SS';
}
else if($semester == 'W')
{
$semester= 'WS';
}
else
{
// ungültiges Semester
$obj->result = 'false';
$obj->fehler = '8';
return $obj;
}
$studiensemester = $semester.'20'.$year;
// letzten Status holen
$qry = "Select public.get_rolle_prestudent ('".$student->prestudent_id."', '".$studiensemester."')";
if($db->db_query($qry))
{
if($row = $db->db_fetch_object())
{
$status=$row->get_rolle_prestudent;
}
}
// Status Student und Diplomand gültig
if($status == 'Student' || $status == 'Diplomand')
{
$obj->result = 'true';
$obj->fehler = '';
}
else
{
$obj->result = 'false';
$obj->fehler ='1';
}
}
return $obj;
}
/**
*
* Prüft die übergebenen Parameter auf Richtigkeit
* @param $parameter
*/
function validateRequest($parameter)
{
/**
* Fehlercodes
* 1: Kein aufrechtes Studium
* 2: Fehlerhafter Request
* 3: Student wurde nicht gefunden
* 4: Fehler Geburtsdatum
* 5: Fehler Postleitzahl
* 6: Fehler Vorname
* 7: Fehler Nachname
* 8: Fehler Semester
* 9: Fehler Matrikelnummer
*/
global $fehler;
if(mb_strlen($parameter->Postleitzahl) > 10)
{
$fehler = '5';
return false;
}
if(mb_strlen($parameter->Vorname) > 255)
{
$fehler = '6';
return false;
}
if(mb_strlen($parameter->Name) > 255)
{
$fehler = '7';
return false;
}
if(mb_strlen($parameter->Matrikelnummer) >15 || $parameter->Matrikelnummer == '')
{
$fehler = '9';
return false;
}
return true;
}
?>
<?php
/* Copyright (C) 2010 Technikum-Wien
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* Authors: Karl Burkhart <burkhart@technikum-wien.at>.
*/
require_once('../config/vilesci.config.inc.php');
require_once('../include/student.class.php');
require_once('../include/benutzer.class.php');
require_once('../include/adresse.class.php');
require_once('../include/person.class.php');
require_once('../include/webservicelog.class.php');
ini_set("soap.wsdl_cache_enabled", "0");
$SOAPServer = new SoapServer(APP_ROOT."/soap/semesterticket.wsdl.php?".microtime(true));
$SOAPServer->addFunction("verifyData");
$SOAPServer->handle();
$fehler = '';
/**
*
* Nimmt Anfrage entgegen und überprüft ob Student auch wirklich Student ist (anhand Matrikelnummer)
* @param $parameters
*/
function verifyData($parameters)
{
global $fehler;
$obj = new stdClass();
if (!$db = new basis_db())
die('Es konnte keine Verbindung zum Server aufgebaut werden.');
// Eintrag in der LogTabelle anlegen
$log = new webservicelog();
$log->request_data = file_get_contents('php://input');
$log->webservicetyp_kurzbz = 'wienerlinien';
$log->request_id = $parameters->Token;
$log->beschreibung = "Semesterticketanfrage";
$log->save(true);
if(!validateRequest($parameters))
{
$obj->result = 'false';
$obj->fehler = $fehler;
}
else
{
// nach Personenkennzeichen suchen
$student = new student();
$student_uid = $student->getUidFromMatrikelnummer($parameters->Matrikelnummer);
$studenten_arr = array();
if($student_uid !== false)
{
// überprüfe ob Benutzer aktiv ist
$benutzer = new benutzer();
$benutzer->load($student_uid);
if(!$benutzer->bnaktiv)
{
$obj->result = 'false';
$obj->fehler ='1';
return $obj;
}
$person = new person();
if(!$person->load($benutzer->person_id))
{
$obj->result = 'false';
$obj->fehler ='3';
return $obj;
}
$studenten_arr[] = $student_uid;
}
else
{
// nach richtiger Matrikelnummer suchen
$person = new person();
if(!$person->getPersonByMatrNr($parameters->Matrikelnummer))
{
$obj->result = 'false';
$obj->fehler = '9';
return $obj;
}
// Aktive Accounts der Person laden
$benutzer = new benutzer();
$benutzer->getBenutzerFromPerson($person->person_id);
foreach($benutzer->result as $row)
{
$studenten_arr[] = $row->uid;
}
}
// überprüfe vorname
if($person->vorname != $parameters->Vorname)
{
// es wurde keine übereinstimmung gefunden
$obj->result = 'false';
$obj->fehler = '6';
return $obj;
}
if($person->nachname != $parameters->Name)
{
// es wurde keine übereinstimmung gefunden
$obj->result = 'false';
$obj->fehler = '7';
return $obj;
}
// Überprüfe PLZ
$adresse = new adresse();
$adresse->load_pers($person->person_id);
$foundAdr = false;
foreach($adresse->result as $adr)
{
if($adr->plz == $parameters->Postleitzahl && $adr->typ == 'h')
$foundAdr = true;
}
if($foundAdr == false)
{
// es wurde keine übereinstimmung gefunden
$obj->result = 'false';
$obj->fehler = '5';
return $obj;
}
// Überprüfe Geburtsdatum
if($person->gebdatum != $parameters->Geburtsdatum)
{
$obj->result = 'false';
$obj->fehler = '4';
return $obj;
}
foreach($studenten_arr as $student_uid)
{
// hole prestudentID
if(!$student->load($student_uid))
continue;
// Übergabe von studiensemester -> z.b 11W, 12S auf WS2011, SS2012
$year = mb_substr($parameters->Semesterkuerzel, 0,2);
$semester = mb_substr($parameters->Semesterkuerzel,2,1);
if($semester == 'S')
{
$semester = 'SS';
}
else if($semester == 'W')
{
$semester= 'WS';
}
else
{
// ungültiges Semester
$obj->result = 'false';
$obj->fehler = '8';
return $obj;
}
$studiensemester = $semester.'20'.$year;
// letzten Status holen
$qry = "Select public.get_rolle_prestudent ('".$student->prestudent_id."', '".$studiensemester."')";
if($db->db_query($qry))
{
if($row = $db->db_fetch_object())
{
$status=$row->get_rolle_prestudent;
}
}
// Status Student und Diplomand gültig
if($status == 'Student' || $status == 'Diplomand')
{
$obj->result = 'true';
$obj->fehler = '';
return $obj;
}
else
{
continue;
}
}
// es wurde kein passender student gefunden
$obj->result = 'false';
$obj->fehler = '1';
return $obj;
}
return $obj;
}
/**
*
* Prüft die übergebenen Parameter auf Richtigkeit
* @param $parameter
*/
function validateRequest($parameter)
{
/**
* Fehlercodes
* 1: Kein aufrechtes Studium
* 2: Fehlerhafter Request
* 3: Student wurde nicht gefunden
* 4: Fehler Geburtsdatum
* 5: Fehler Postleitzahl
* 6: Fehler Vorname
* 7: Fehler Nachname
* 8: Fehler Semester
* 9: Fehler Matrikelnummer
*/
global $fehler;
if(mb_strlen($parameter->Postleitzahl) > 10)
{
$fehler = '5';
return false;
}
if(mb_strlen($parameter->Vorname) > 255)
{
$fehler = '6';
return false;
}
if(mb_strlen($parameter->Name) > 255)
{
$fehler = '7';
return false;
}
if(mb_strlen($parameter->Matrikelnummer) >15 || $parameter->Matrikelnummer == '')
{
$fehler = '9';
return false;
}
return true;
}
?>
+2
View File
@@ -154,8 +154,10 @@ $berechtigungen = array(
array('lehre/reihungstest','Reihungstestverwaltung'),
array('lehre/reihungstestOeffentlich','Erlaubt das Veröffentlichen von Reihungstests (Sichtbarkeit für BewerberInnen)'),
array('lehre/reihungstestOrt','Erlaubt die Zuteilung von Raeumen zu Reihungstests'),
array('lehre/reihungstestAufsicht','RT-Aufsichtspersonen dürfen zB Tests freischalten, Personen hinzufügen, Antworten löschen'),
array('lehre/reservierung','erweiterte Reservierung inkl. Lektorauswahl, Stg, Sem und Gruppe'),
array('lehre/reservierung:begrenzt','normale Raumreservierung im CIS'),
array('lehre/reservierungAdvanced','Unbegrenztes Einfügen von Reservierungen auch über bestehende'),
array('lehre/studienordnung','Studienordnung'),
array('lehre/studienordnungInaktiv','Studienordnung Inaktiv'),
array('lehre/studienplan','Studienplan'),
+41 -1
View File
@@ -2728,6 +2728,45 @@ if(!$result = @$db->db_query('SELECT lehrfach_oe_kurzbz FROM campus.vw_lehreinhe
echo '<br>campus.vw_lehreinheit lehrfach_oe_kurzbz added, fachbereich_kurzbz removed';
}
// Berechtigungen fuer web User auf testtool.tbl_kategorie
if($result = @$db->db_query("SELECT * FROM information_schema.role_table_grants WHERE table_name='tbl_kategorie' AND table_schema='testtool' AND grantee='web' AND privilege_type='SELECT'"))
{
if($db->db_num_rows($result)==0)
{
$qry = "GRANT SELECT, INSERT, UPDATE, DELETE ON testtool.tbl_kategorie TO web;";
if(!$db->db_query($qry))
echo '<strong>Testtool Berechtigungen: '.$db->db_last_error().'</strong><br>';
else
echo '<br>Web User fuer testtool.tbl_kategorie berechtigt';
}
}
// Kategorisierung von Services
if(!$result = @$db->db_query("SELECT * FROM public.tbl_servicekategorie LIMIT 1"))
{
$qry = "CREATE TABLE public.tbl_servicekategorie(
servicekategorie_kurzbz varchar(32) NOT NULL,
bezeichnung varchar(256),
sort smallint
);
ALTER TABLE public.tbl_servicekategorie ADD CONSTRAINT pk_servicekategorie PRIMARY KEY (servicekategorie_kurzbz);
GRANT SELECT ON public.tbl_servicekategorie TO vilesci;
GRANT SELECT ON public.tbl_servicekategorie TO web;
ALTER TABLE public.tbl_service ADD COLUMN servicekategorie_kurzbz varchar(32);
ALTER TABLE public.tbl_service ADD CONSTRAINT fk_service_servicekategorie FOREIGN KEY (servicekategorie_kurzbz) REFERENCES public.tbl_servicekategorie (servicekategorie_kurzbz) ON DELETE RESTRICT ON UPDATE CASCADE;
INSERT INTO public.tbl_servicekategorie(servicekategorie_kurzbz, bezeichnung, sort) VALUES('kritisch','Kritisch', 1);
INSERT INTO public.tbl_servicekategorie(servicekategorie_kurzbz, bezeichnung, sort) VALUES('normal','für täglichen Betrieb nicht kritisch', 2);
INSERT INTO public.tbl_servicekategorie(servicekategorie_kurzbz, bezeichnung, sort) VALUES('unkritisch','unkritisch für Lehrbetrieb', 3);
";
if(!$db->db_query($qry))
echo '<strong>Servicekategorie: '.$db->db_last_error().'</strong><br>';
else
echo '<br>Servicekategorie zu Services hinzugefügt';
}
// *** Pruefung und hinzufuegen der neuen Attribute und Tabellen
echo '<H2>Pruefe Tabellen und Attribute!</H2>';
@@ -2941,7 +2980,8 @@ $tabellen=array(
"public.tbl_status" => array("status_kurzbz","beschreibung","anmerkung","ext_id","bezeichnung_mehrsprachig"),
"public.tbl_status_grund" => array("statusgrund_id","status_kurzbz","aktiv","bezeichnung_mehrsprachig","beschreibung"),
"public.tbl_semesterwochen" => array("semester","studiengang_kz","wochen"),
"public.tbl_service" => array("service_id", "bezeichnung","beschreibung","ext_id","oe_kurzbz","content_id","design_uid","betrieb_uid","operativ_uid"),
"public.tbl_service" => array("service_id", "bezeichnung","beschreibung","ext_id","oe_kurzbz","content_id","design_uid","betrieb_uid","operativ_uid","servicekategorie_kurzbz"),
"public.tbl_servicekategorie" => array("servicekategorie_kurzbz", "bezeichnung","sort"),
"public.tbl_sprache" => array("sprache","locale","flagge","index","content","bezeichnung"),
"public.tbl_standort" => array("standort_id","adresse_id","kurzbz","bezeichnung","insertvon","insertamum","updatevon","updateamum","ext_id", "firma_id","code"),
"public.tbl_statistik" => array("statistik_kurzbz","bezeichnung","url","gruppe","sql","content_id","insertamum","insertvon","updateamum","updatevon","berechtigung_kurzbz","publish","preferences"),
+7 -7
View File
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
>
@@ -345,7 +345,7 @@ xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn
<text:sequence-decl text:display-outline-level="0" text:name="Text"/>
<text:sequence-decl text:display-outline-level="0" text:name="Drawing"/>
</text:sequence-decls>
<!-- Wichtig für Mehrfachdruck (mehrere Studenten ausgewählt): Wenn ein Element (in diesem Fall Stempel und Unterschriftenblock) relativ zur SEITE ausgerichtet werden soll,
<!-- Wichtig für Mehrfachdruck (mehrere Studenten ausgewählt): Wenn ein Element (in diesem Fall Stempel und Unterschriftenblock) relativ zur SEITE ausgerichtet werden soll,
muss für jedes Dokument (jeder neue Durchlauf der Schleife) ein draw:frame-Tag definiert werden. Diese müssen ALLE VOR den ersten text:p-Elementen stehen.
Deshalb wirde erst die Schleife für die draw:frames aufgerufen, dann folg tder Inhalt -->
<xsl:if test="position()=1">
@@ -471,8 +471,8 @@ xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn
<table:table-cell table:style-name="Tabelle1.D7" office:value-type="string">
<text:p text:style-name="P9">-</text:p>
</table:table-cell>
</table:table-row>
<xsl:apply-templates select="fussnote"/>
</table:table-row>
<xsl:apply-templates select="fussnote"/>
</table:table>
<text:p text:style-name="P26"/>
<text:p text:style-name="P22">¹ 1 Semester period per week = 45 minutes</text:p>
@@ -480,7 +480,7 @@ xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn
<text:p text:style-name="P22">
<text:tab/>Participated with success (met), passed (b), successfully completed (ea), not successfully completed (nea), did not participate (nt), participated(tg)</text:p>
<text:p text:style-name="P7"/>
<xsl:if test="abschlusspruefung_typ">
<xsl:if test="abschlusspruefung_typ and abschlusspruefung_typ!='lgabschluss'">
<table:table table:name="Tabelle2" table:style-name="Tabelle2">
<table:table-column table:style-name="Tabelle2.A"/>
<table:table-column table:style-name="Tabelle2.B"/>
@@ -498,7 +498,7 @@ xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn
<xsl:if test="abschlusspruefung_typ='Diplom'" >
<text:p text:style-name="P8">Master's Examination on <xsl:value-of select="abschlusspruefung_datum" /></text:p>
</xsl:if>
</table:table-cell>
<table:table-cell table:style-name="Tabelle2.B2" office:value-type="string">
<text:p text:style-name="P8"><xsl:value-of select="abschlusspruefung_note_english" /></text:p>
@@ -524,7 +524,7 @@ xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn
<xsl:choose>
<xsl:when test="bisio_von">
<text:p text:style-name="P12">International Semester Abroad: <xsl:value-of select="bisio_von"/>-<xsl:value-of select="bisio_bis"/>, at <xsl:value-of select="bisio_ort"/>, <xsl:value-of select="bisio_universitaet"/></text:p>
<text:p text:style-name="P12">All credits earned during the International Semester Abroad (ISA) are fully credited for the
<text:p text:style-name="P12">All credits earned during the International Semester Abroad (ISA) are fully credited for the
<xsl:value-of select="../semester"/>
<xsl:choose>
<xsl:when test="../semester=1">
+6 -6
View File
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
>
@@ -342,7 +342,7 @@ xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn
<text:sequence-decl text:display-outline-level="0" text:name="Text"/>
<text:sequence-decl text:display-outline-level="0" text:name="Drawing"/>
</text:sequence-decls>
<!-- Wichtig für Mehrfachdruck (mehrere Studenten ausgewählt): Wenn ein Element (in diesem Fall Stempel und Unterschriftenblock) relativ zur SEITE ausgerichtet werden soll,
<!-- Wichtig für Mehrfachdruck (mehrere Studenten ausgewählt): Wenn ein Element (in diesem Fall Stempel und Unterschriftenblock) relativ zur SEITE ausgerichtet werden soll,
muss für jedes Dokument (jeder neue Durchlauf der Schleife) ein draw:frame-Tag definiert werden. Diese müssen ALLE VOR den ersten text:p-Elementen stehen.
Deshalb wirde erst die Schleife für die draw:frames aufgerufen, dann folg tder Inhalt -->
<xsl:if test="position()=1">
@@ -454,15 +454,15 @@ xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn
<table:table-cell table:style-name="Tabelle1.D7" office:value-type="string">
<text:p text:style-name="P9">-</text:p>
</table:table-cell>
</table:table-row>
<xsl:apply-templates select="fussnote"/>
</table:table-row>
<xsl:apply-templates select="fussnote"/>
</table:table>
<text:p text:style-name="P26"/>
<text:p text:style-name="P22">Notenstufen:<text:tab/>Sehr gut (1), Gut (2), Befriedigend (3), Genügend (4), Nicht genügend (5), mit Erfolg teilgenommen (met), nicht teilgenommen (nt), teilgenommen(tg),</text:p>
<text:p text:style-name="P22">
<text:tab/>angerechnet (ar), nicht beurteilt (nb), bestanden (b), erfolgreich absolviert (ea), nicht erfolgreich absolviert (nea)</text:p>
<text:p text:style-name="P7"/>
<xsl:if test="abschlusspruefung_typ">
<xsl:if test="abschlusspruefung_typ and abschlusspruefung_typ!='lgabschluss'">
<table:table table:name="Tabelle2" table:style-name="Tabelle2">
<table:table-column table:style-name="Tabelle2.A"/>
<table:table-column table:style-name="Tabelle2.B"/>
@@ -480,7 +480,7 @@ xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn
<xsl:if test="abschlusspruefung_typ='Diplom'" >
<text:p text:style-name="P8">Masterprüfung vom <xsl:value-of select="abschlusspruefung_datum" /></text:p>
</xsl:if>
</table:table-cell>
<table:table-cell table:style-name="Tabelle2.B2" office:value-type="string">
<text:p text:style-name="P8"><xsl:value-of select="abschlusspruefung_note" /></text:p>
+12 -13
View File
@@ -1104,7 +1104,7 @@ xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn
</style:style>
<style:style style:name="P55" style:family="paragraph" style:parent-style-name="Heading_20_4" style:master-page-name="Standard">
<style:text-properties style:use-window-font-color="true"/>
</style:style>
</style:style>
<style:style style:name="P56" style:family="paragraph" style:parent-style-name="Heading_20_4" style:master-page-name="Convert_20_1">
<style:paragraph-properties style:page-number="auto"/>
<style:text-properties style:use-window-font-color="true" fo:language="en" fo:country="US"/>
@@ -1282,7 +1282,7 @@ xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn
</office:document-content>
</xsl:template>
<xsl:template match="supplement">
<text:sequence-decls xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0">
<text:sequence-decl text:display-outline-level="0" text:name="Illustration"/>
<text:sequence-decl text:display-outline-level="0" text:name="Table"/>
@@ -2383,15 +2383,15 @@ xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn
<text:p text:style-name="P25"><text:span text:style-name="T14">Neben den ordentlichen Studien, die oben beschrieben wurden, gibt es auch außerordentliche Studien, die an Universitäten entweder ein Universitätslehrgang oder der Besuch einzelner Lehrveranstaltungen, im Fachhochschulbereich ein Lehrgang zur Weiterbildung oder der Besuch einzelner Lehrveranstaltungen und an Pädagogischen Hochschulen ein Hochschullehrgang sein können.</text:span></text:p>
<text:p text:style-name="P24"/>
<text:p text:style-name="P41">Bachelorstudium</text:p>
<text:p text:style-name="P24">Die Zulassung zu einem Bachelorstudium erfolgt auf der Grundlage eines österreichischen oder gleichwertigen ausländischen Reifezeugnisses, eines Zeugnisses über die Studienberechtigungsprüfung oder eines Zeugnisses über die Berufsreifeprüfung, in künstlerischen Studien auf der Grundlage einer Zulassungsprüfung. Die Zulassung zu einem Fachhochschul-Bachelorstudiengang kann auch auf der Grundlage einer einschlägigen beruflichen Qualifikation erfolgen. In einigen Bachelorstudien an Universitäten, in den meisten Fachhochschul-Bachelorstudiengängen und in Bachelorstudien an Pädagogischen Hochschulen findet ein Auswahlverfahren statt.</text:p>
<text:p text:style-name="P24">Die Zulassung zu einem Bachelorstudium erfolgt auf der Grundlage eines österreichischen oder gleichwertigen ausländischen Reifezeugnisses, eines Zeugnisses über die Studienberechtigungsprüfung oder eines Zeugnisses über die Berufsreifeprüfung, in künstlerischen Studien auf der Grundlage einer Zulassungsprüfung. Die Zulassung zu einem Fachhochschul-Bachelorstudiengang kann auch auf der Grundlage einer einschlägigen beruflichen Qualifikation erfolgen. In einigen Bachelorstudien an Universitäten, in den meisten Fachhochschul-Bachelorstudiengängen und in Bachelorstudien an Pädagogischen Hochschulen findet ein Auswahlverfahren statt.</text:p>
<text:p text:style-name="P24">Die Fächer/Module und ihre Inhalte sind im Curriculum festgelegt. In der Regel sind zwei Bachelorarbeiten im Rahmen von Lehrveranstaltungen abzufassen. Fachhochschul-Bachelorstudiengänge, Bachelorstudien an Pädagogischen Hochschulen und einige Bachelorstudien an Universitäten umfassen ein angeleitetes Praktikum. Das Studium kann mit einer Bachelorprüfung abgeschlossen werden.</text:p>
<text:p text:style-name="P24"/>
<text:p text:style-name="P41"><text:soft-page-break/>Masterstudium</text:p>
<text:p text:style-name="P24">Die Zulassung zu einem Masterstudium erfolgt auf der Grundlage eines abgeschlossenen facheinschlägigen Bachelorstudiums oder gleichwertigen postsekundären Abschlusses. In einigen Studien findet ein Auswahlverfahren statt</text:p>
<text:p text:style-name="P24">Die Zulassung zu einem Masterstudium erfolgt auf der Grundlage eines abgeschlossenen facheinschlägigen Bachelorstudiums oder gleichwertigen postsekundären Abschlusses. In einigen Studien findet ein Auswahlverfahren statt</text:p>
<text:p text:style-name="P24">Die Fächer/Module und ihre Inhalte sind im Curriculum festgelegt. Ein Schwerpunkt des Studiums liegt auf der Erstellung der Masterarbeit. Das Studium wird mit einer Masterprüfung abgeschlossen. Die Zulassung zur Masterprüfung setzt die Approbation der Masterarbeit voraus.</text:p>
<text:p text:style-name="P24"/>
<text:p text:style-name="P41">Diplomstudium</text:p>
<text:p text:style-name="P24">Die Zulassung zu einem Diplomstudium erfolgt auf der Grundlage eines österreichischen oder gleichwertigen ausländischen Reifezeugnisses, eines Zeugnisses über die Studienberechtigungsprüfung oder eines Zeugnisses über die Berufsreifeprüfung, in künstlerischen Studien auf der Grundlage einer Zulassungsprüfung. Die Zulassung zu einem Fachhochschul-Diplomstudiengang kann auch auf der Grundlage einer einschlägigen beruflichen Qualifikation erfolgen. In einigen Studien (z.B. Humanmedizin und Zahnmedizin sowie in Fachhochschul-Diplomstudiengängen) findet ein Auswahlverfahren statt.</text:p>
<text:p text:style-name="P24">Die Zulassung zu einem Diplomstudium erfolgt auf der Grundlage eines österreichischen oder gleichwertigen ausländischen Reifezeugnisses, eines Zeugnisses über die Studienberechtigungsprüfung oder eines Zeugnisses über die Berufsreifeprüfung, in künstlerischen Studien auf der Grundlage einer Zulassungsprüfung. Die Zulassung zu einem Fachhochschul-Diplomstudiengang kann auch auf der Grundlage einer einschlägigen beruflichen Qualifikation erfolgen. In einigen Studien (z.B. Humanmedizin und Zahnmedizin sowie in Fachhochschul-Diplomstudiengängen) findet ein Auswahlverfahren statt.</text:p>
<text:p text:style-name="P24">Das Studium kann in Studienabschnitte unterteilt sein. Die Dauer jedes Studienabschnitts, die Fächer und ihre Inhalte sind im Curriculum festgelegt. Sie gliedern sich in Pflichtfächer und Wahlfächer. Jeder Studienabschnitt wird mit einer Diplomprüfung abgeschlossen. Fachhochschul-Diplomstudiengänge und einige Diplomstudien an Universitäten umfassen ein angeleitetes Praktikum. Die Zulassung zur letzten Diplomprüfung setzt die Approbation der Diplomarbeit voraus.</text:p>
<text:p text:style-name="P24"/>
<text:p text:style-name="P24"/>
@@ -2569,13 +2569,13 @@ xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn
<text:p text:style-name="P53">The <text:span text:style-name="T14">new system</text:span> is based on the distinction between undergraduate and graduate studies. Upon completion of an undergraduate programme (<text:span text:style-name="T15">Bachelorstudium</text:span> at universities and university colleges of education or, respectively, <text:span text:style-name="T15">Fachhochschul-Bachelorstudiengang</text:span> at universities of applied sciences, comprising 180 to 240 ECTS credits), a bachelors degree (designation: "Bachelor of/in ..." ) is awarded. Upon completion of a graduate program (<text:span text:style-name="T15">Masterstudium</text:span> at universities and university colleges of education or, respectively, <text:span text:style-name="T15">Fachhochschul-Masterstudiengang</text:span> at universities of applied sciences, comprising 60 to 120 ECTS credits), a masters degree (designation: "Master of/in ..." ) is awarded. In the fields of engineering, the designation of the masters degree can also be "Diplom-Ingenieur/in".</text:p>
</text:list-item>
<text:list-item>
<text:p text:style-name="P53">Under the auspices of the <text:span text:style-name="T14">older system</text:span> of diploma degree programmes (<text:span text:style-name="T15">Diplomstudien</text:span>), the first degree awarded is the diploma degree (<text:span text:style-name="T15">Diplomgrad</text:span>). An Austrian higher secondary school leaving certificate or its equivalent is the general qualification necessary for enrolling in a diploma degree programme; conclusion of a diploma degree programme entitles degree holders to enrol in doctoral programmes. A diploma degree (<text:span text:style-name="T15">Diplomgrad</text:span>) is awarded by Austrian universities after a course of study consisting of 240 to 360 ECTS credits. Full degree titles are gender specific designations: <text:span text:style-name="T15">Magister</text:span> for men; <text:span text:style-name="T15">Magistra</text:span> for women. Degree titles also include a general description of the field of study in which they were obtained, e.g. <text:span text:style-name="T15">Magister philosophiae</text:span>. In the fields of engineering, the degree titles are <text:span text:style-name="T15">Diplom-Ingenieur/in</text:span>.
<text:p text:style-name="P53">Under the auspices of the <text:span text:style-name="T14">older system</text:span> of diploma degree programmes (<text:span text:style-name="T15">Diplomstudien</text:span>), the first degree awarded is the diploma degree (<text:span text:style-name="T15">Diplomgrad</text:span>). An Austrian higher secondary school leaving certificate or its equivalent is the general qualification necessary for enrolling in a diploma degree programme; conclusion of a diploma degree programme entitles degree holders to enrol in doctoral programmes. A diploma degree (<text:span text:style-name="T15">Diplomgrad</text:span>) is awarded by Austrian universities after a course of study consisting of 240 to 360 ECTS credits. Full degree titles are gender specific designations: <text:span text:style-name="T15">Magister</text:span> for men; <text:span text:style-name="T15">Magistra</text:span> for women. Degree titles also include a general description of the field of study in which they were obtained, e.g. <text:span text:style-name="T15">Magister philosophiae</text:span>. In the fields of engineering, the degree titles are <text:span text:style-name="T15">Diplom-Ingenieur/in</text:span>.
Degrees awarded in medicine and dentistry are exceptions to the above. The first degrees awarded after the completion of these degree programmes consisting of 360 ECTS credits are <text:span text:style-name="T15">Doctor medicinae universae</text:span> and <text:span text:style-name="T15">Doctor medicinae dentalis</text:span>, respectively.</text:p>
<text:p text:style-name="P53">Graduates of university of applied sciences programmes that consist of 240 to 300 ECTS credits are awarded, analogous to university studies, a university of applied science diploma degree (<text:span text:style-name="T15">Fachhochschul-Diplomgrad</text:span>) contingent upon <text:soft-page-break/>discipline: either a <text:span text:style-name="T15">Diplom-Ingenieur/in (FH)</text:span> for fields of engineering or <text:span text:style-name="T15">Magister/Magistra (FH)</text:span> in other fields of study.</text:p>
</text:list-item>
</text:list>
<text:p text:style-name="P17"/>
<text:p text:style-name="P17">The study programmes for teachers qualifications are offered jointly between universities and university colleges of education.</text:p>
<text:p text:style-name="P17">The study programmes for teachers qualifications are offered jointly between universities and university colleges of education.</text:p>
<text:p text:style-name="P17"/>
<text:p text:style-name="P17">Recipients of the diploma degrees from the old system or masters degrees from the new system (including the ones awarded in both cases by the universities of applied sciences) are entitled to enrol in doctoral programmes (<text:span text:style-name="T15">Doktoratsstudium</text:span>) at universities. A doctoral degree with the designation either <text:span text:style-name="T15">"Doktor/in"</text:span> or "Doctor of Philosophy" (PhD) is awarded upon completion of a doctoral programme with a minimum duration of three years.</text:p>
<text:p text:style-name="P17"/>
@@ -2674,8 +2674,8 @@ xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn
</table:table-row>
</table:table>
<text:p text:style-name="P17"/>
<text:p text:style-name="P75">Grades for comprehensive examinations, i.e. examinations covering materials from various subjects:</text:p>
<table:table table:name="Table15" table:style-name="Table15">
<table:table-column table:style-name="Table15.B" />
@@ -2703,13 +2703,13 @@ xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn
<text:p text:style-name="P75">Source:</text:p>
<text:p text:style-name="P75">Federal Ministry of Science, Research and Economy, Unit VI/7</text:p>
<!-- <text:p text:style-name="P75">Unit VI/7</text:p>-->
<text:p text:style-name="P48">
<draw:frame xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:xlink="http://www.w3.org/1999/xlink" draw:style-name="fr2" draw:name="graphics3" text:anchor-type="paragraph" svg:width="17cm" svg:height="24.042cm" draw:z-index="14" >
<draw:image xlink:href="Pictures/100000000000092300000CECE56EC0B3.tif" xlink:type="simple" xlink:show="embed" xlink:actuate="onLoad"/>
</draw:frame>
</text:p>
<text:p><text:span text:style-name="T12">TRANSCRIPT OF RECORDS</text:span></text:p>
@@ -2793,7 +2793,7 @@ xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn
<text:soft-page-break/>
</text:p>
<text:p text:style-name="P22"/>
<xsl:if test="abschlusspruefungsdatum != ''">
<xsl:if test="abschlusspruefungsdatum != '' and pruefungstyp_kurzbz!='lgabschluss'">
<table:table table:name="Table16" table:style-name="Table16">
<table:table-column table:style-name="Table16.A" table:number-columns-repeated="2" />
<table:table-row>
@@ -2943,4 +2943,3 @@ xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn
</xsl:template>
</xsl:stylesheet>
+108 -50
View File
@@ -103,12 +103,18 @@ xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0"
<style:style style:name="Tabelle1.A1" style:family="table-cell">
<style:table-cell-properties fo:padding="0.097cm" fo:border-left="0.05pt solid #000000" fo:border-right="none" fo:border-top="0.05pt solid #000000" fo:border-bottom="0.05pt solid #000000"/>
</style:style>
<style:style style:name="Tabelle1.A1_2" style:family="table-cell">
<style:table-cell-properties fo:padding="0.097cm" fo:border-left="0.05pt solid #000000" fo:border-right="0.05pt solid #000000" fo:border-top="0.05pt solid #000000" fo:border-bottom="0.05pt solid #000000"/>
</style:style>
<style:style style:name="Tabelle1.G1" style:family="table-cell">
<style:table-cell-properties fo:padding="0.097cm" fo:border="0.05pt solid #000000"/>
</style:style>
<style:style style:name="Tabelle1.A2" style:family="table-cell">
<style:table-cell-properties fo:padding-left="0.07cm" fo:padding-right="0.07cm" fo:padding-top="0.05cm" fo:padding-bottom="0.05cm" fo:border-left="0.05pt solid #000000" fo:border-right="none" fo:border-top="none" fo:border-bottom="0.05pt solid #000000"/>
</style:style>
<style:style style:name="Tabelle1.A2_2" style:family="table-cell">
<style:table-cell-properties fo:padding-left="0.07cm" fo:padding-right="0.07cm" fo:padding-top="0.05cm" fo:padding-bottom="0.05cm" fo:border-left="0.05pt solid #000000" fo:border-right="0.05pt solid #000000" fo:border-top="none" fo:border-bottom="0.05pt solid #000000"/>
</style:style>
<style:style style:name="Tabelle1.G2" style:family="table-cell">
<style:table-cell-properties fo:padding-left="0.07cm" fo:padding-right="0.07cm" fo:padding-top="0.05cm" fo:padding-bottom="0.05cm" fo:border-left="0.05pt solid #000000" fo:border-right="0.05pt solid #000000" fo:border-top="none" fo:border-bottom="0.05pt solid #000000"/>
</style:style>
@@ -393,8 +399,16 @@ xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0"
<table:table-column table:style-name="Tabelle1.C"/>
<table:table-column table:style-name="Tabelle1.D"/>
<table:table-column table:style-name="Tabelle1.E"/>
<table:table-column table:style-name="Tabelle1.F"/>
<table:table-column table:style-name="Tabelle1.G"/>
<!-- Wenn LektorInnen bei inkludierte_lehre einen Wert stehen haben, werden die Spalten "Satz" und "Brutto" nicht angezeigt -->
<xsl:choose>
<xsl:when test="mitarbeiter/inkludierte_lehre != ''">
</xsl:when>
<xsl:otherwise>
<table:table-column table:style-name="Tabelle1.F"/>
<table:table-column table:style-name="Tabelle1.G"/>
</xsl:otherwise>
</xsl:choose>
<table:table-row>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="P12">ID</text:p>
@@ -409,15 +423,34 @@ xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0"
<text:p text:style-name="P10">Gruppe<text:span text:style-name="T2">(n)</text:span>
</text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="P13">Std.</text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="P10">Satz</text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.G1" office:value-type="string">
<text:p text:style-name="P10">Brutto</text:p>
</table:table-cell>
<!-- Wenn LektorInnen bei inkludierte_lehre einen Wert stehen haben, wird die Spalte "Satz" nicht angezeigt
Deshalb braucht die Spalte "Std" einen border auf der rechten Seite (deshalb anderer style_name) -->
<xsl:choose>
<xsl:when test="mitarbeiter/inkludierte_lehre != ''">
<table:table-cell table:style-name="Tabelle1.A1_2" office:value-type="string">
<text:p text:style-name="P13">Std.</text:p>
</table:table-cell>
</xsl:when>
<xsl:otherwise>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="P13">Std.</text:p>
</table:table-cell>
</xsl:otherwise>
</xsl:choose>
<!-- Wenn LektorInnen bei inkludierte_lehre einen Wert stehen haben, werden die Spalten "Satz" und "Brutto" nicht angezeigt -->
<xsl:choose>
<xsl:when test="mitarbeiter/inkludierte_lehre != ''">
<!--<text:p text:style-name="P10">Satz</text:p>-->
</xsl:when>
<xsl:otherwise>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="P10">Satz</text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.G1" office:value-type="string">
<text:p text:style-name="P10">Brutto</text:p>
</table:table-cell>
</xsl:otherwise>
</xsl:choose>
</table:table-row>
<xsl:apply-templates select="lehreinheit"/>
@@ -435,23 +468,35 @@ xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0"
<table:table-cell table:style-name="Tabelle1.A2" office:value-type="string">
<text:p text:style-name="P11">Summe:</text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A2" office:value-type="string">
<text:p text:style-name="P11"><xsl:value-of select="gesamtstunden" /></text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A2" office:value-type="string">
<text:p text:style-name="P9"/>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.G2" office:value-type="string">
<xsl:choose>
<xsl:when test="mitarbeiter/inkludierte_lehre != ''">
<text:p text:style-name="P11">€ 0,00</text:p>
</xsl:when>
<xsl:otherwise>
<text:p text:style-name="P11"> <xsl:value-of select="gesamtbetrag" /></text:p>
</xsl:otherwise>
</xsl:choose>
<!-- Wenn LektorInnen bei inkludierte_lehre einen Wert stehen haben, wird die Spalte "Satz" nicht angezeigt
Deshalb braucht die Spalte "Summe" einen border auf der rechten Seite (deshalb anderer style_name) -->
<xsl:choose>
<xsl:when test="mitarbeiter/inkludierte_lehre != ''">
<table:table-cell table:style-name="Tabelle1.A2_2" office:value-type="string">
<text:p text:style-name="P11"><xsl:value-of select="gesamtstunden" /></text:p>
</table:table-cell>
</xsl:when>
<xsl:otherwise>
<table:table-cell table:style-name="Tabelle1.A2" office:value-type="string">
<text:p text:style-name="P11"><xsl:value-of select="gesamtstunden" /></text:p>
</table:table-cell>
</xsl:otherwise>
</xsl:choose>
</table:table-cell>
<!-- Wenn LektorInnen bei inkludierte_lehre einen Wert stehen haben, wird die Spalte Bruttosumme nicht angezeigt -->
<xsl:choose>
<xsl:when test="mitarbeiter/inkludierte_lehre != ''">
<!--<text:p text:style-name="P2">0.00</text:p>-->
</xsl:when>
<xsl:otherwise>
<table:table-cell table:style-name="Tabelle1.A2" office:value-type="string">
<text:p text:style-name="P9"/>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.G2" office:value-type="string">
<text:p text:style-name="P11"><xsl:value-of select="gesamtbetrag" /></text:p>
</table:table-cell>
</xsl:otherwise>
</xsl:choose>
</table:table-row>
</table:table>
<text:p text:style-name="P19"/>
@@ -518,31 +563,44 @@ xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0"
<xsl:apply-templates select="gruppen_getrennt"/>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A2" office:value-type="string">
<text:p text:style-name="P3"><xsl:value-of select="stunden" /></text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A2" office:value-type="string">
<!-- Wenn LektorInnen bei inkludierte_lehre einen Wert stehen haben, wird am Lehrauftrag bei Stundensatz und Brutto 0 ausgegeben-->
<xsl:choose>
<xsl:when test="../mitarbeiter/inkludierte_lehre != ''">
<text:p text:style-name="P2">0.00</text:p>
</xsl:when>
<xsl:otherwise>
<!-- Wenn LektorInnen bei inkludierte_lehre einen Wert stehen haben, wird die Spalte "Satz" nicht angezeigt
Deshalb braucht die Spalte "Std" einen border auf der rechten Seite (deshalb anderer style_name) -->
<xsl:choose>
<xsl:when test="../mitarbeiter/inkludierte_lehre != ''">
<table:table-cell table:style-name="Tabelle1.A2_2" office:value-type="string">
<text:p text:style-name="P3"><xsl:value-of select="stunden" /></text:p>
</table:table-cell>
</xsl:when>
<xsl:otherwise>
<table:table-cell table:style-name="Tabelle1.A2" office:value-type="string">
<text:p text:style-name="P3"><xsl:value-of select="stunden" /></text:p>
</table:table-cell>
</xsl:otherwise>
</xsl:choose>
<!-- Wenn LektorInnen bei inkludierte_lehre einen Wert stehen haben, wird die Spalte "Satz" nicht angezeigt -->
<xsl:choose>
<xsl:when test="../mitarbeiter/inkludierte_lehre != ''">
<!--<text:p text:style-name="P2">0.00</text:p>-->
</xsl:when>
<xsl:otherwise>
<table:table-cell table:style-name="Tabelle1.A2" office:value-type="string">
<text:p text:style-name="P2"><xsl:value-of select="satz" /></text:p>
</xsl:otherwise>
</xsl:choose>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.G2" office:value-type="string">
<!-- Wenn LektorInnen bei inkludierte_lehre einen Wert stehen haben, wird am Lehrauftrag bei Stundensatz und Brutto 0 ausgegeben-->
<xsl:choose>
<xsl:when test="../mitarbeiter/inkludierte_lehre != ''">
<text:p text:style-name="P3">€ 0,00</text:p>
</xsl:when>
<xsl:otherwise>
</table:table-cell>
</xsl:otherwise>
</xsl:choose>
<!-- Wenn LektorInnen bei inkludierte_lehre einen Wert stehen haben, wird die Spalte "Brutto" nicht angezeigt -->
<xsl:choose>
<xsl:when test="../mitarbeiter/inkludierte_lehre != ''">
<!--<text:p text:style-name="P3">€ 0,00</text:p>-->
</xsl:when>
<xsl:otherwise>
<table:table-cell table:style-name="Tabelle1.G2" office:value-type="string">
<text:p text:style-name="P3"><xsl:value-of select="brutto" /></text:p>
</xsl:otherwise>
</xsl:choose>
</table:table-cell>
</table:table-cell>
</xsl:otherwise>
</xsl:choose>
</table:table-row>
</xsl:template>
+108 -49
View File
@@ -103,12 +103,18 @@ xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0"
<style:style style:name="Tabelle1.A1" style:family="table-cell">
<style:table-cell-properties fo:padding="0.097cm" fo:border-left="0.05pt solid #000000" fo:border-right="none" fo:border-top="0.05pt solid #000000" fo:border-bottom="0.05pt solid #000000"/>
</style:style>
<style:style style:name="Tabelle1.A1_2" style:family="table-cell">
<style:table-cell-properties fo:padding="0.097cm" fo:border-left="0.05pt solid #000000" fo:border-right="0.05pt solid #000000" fo:border-top="0.05pt solid #000000" fo:border-bottom="0.05pt solid #000000"/>
</style:style>
<style:style style:name="Tabelle1.G1" style:family="table-cell">
<style:table-cell-properties fo:padding="0.097cm" fo:border="0.05pt solid #000000"/>
</style:style>
<style:style style:name="Tabelle1.A2" style:family="table-cell">
<style:table-cell-properties fo:padding-left="0.07cm" fo:padding-right="0.07cm" fo:padding-top="0.05cm" fo:padding-bottom="0.05cm" fo:border-left="0.05pt solid #000000" fo:border-right="none" fo:border-top="none" fo:border-bottom="0.05pt solid #000000"/>
</style:style>
<style:style style:name="Tabelle1.A2_2" style:family="table-cell">
<style:table-cell-properties fo:padding-left="0.07cm" fo:padding-right="0.07cm" fo:padding-top="0.05cm" fo:padding-bottom="0.05cm" fo:border-left="0.05pt solid #000000" fo:border-right="0.05pt solid #000000" fo:border-top="none" fo:border-bottom="0.05pt solid #000000"/>
</style:style>
<style:style style:name="Tabelle1.G2" style:family="table-cell">
<style:table-cell-properties fo:padding-left="0.07cm" fo:padding-right="0.07cm" fo:padding-top="0.05cm" fo:padding-bottom="0.05cm" fo:border-left="0.05pt solid #000000" fo:border-right="0.05pt solid #000000" fo:border-top="none" fo:border-bottom="0.05pt solid #000000"/>
</style:style>
@@ -386,8 +392,16 @@ xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0"
<table:table-column table:style-name="Tabelle1.C"/>
<table:table-column table:style-name="Tabelle1.D"/>
<table:table-column table:style-name="Tabelle1.E"/>
<table:table-column table:style-name="Tabelle1.F"/>
<table:table-column table:style-name="Tabelle1.G"/>
<!-- Wenn LektorInnen bei inkludierte_lehre einen Wert stehen haben, werden die Spalten "Satz" und "Brutto" nicht angezeigt -->
<xsl:choose>
<xsl:when test="mitarbeiter/inkludierte_lehre != ''">
</xsl:when>
<xsl:otherwise>
<table:table-column table:style-name="Tabelle1.F"/>
<table:table-column table:style-name="Tabelle1.G"/>
</xsl:otherwise>
</xsl:choose>
<table:table-row>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="P12">ID</text:p>
@@ -402,15 +416,34 @@ xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0"
<text:p text:style-name="P10">Gruppe<text:span text:style-name="T2">(n)</text:span>
</text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="P13">Std.</text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="P10">Satz</text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.G1" office:value-type="string">
<text:p text:style-name="P10">Brutto</text:p>
</table:table-cell>
<!-- Wenn LektorInnen bei inkludierte_lehre einen Wert stehen haben, wird die Spalte "Satz" nicht angezeigt
Deshalb braucht die Spalte "Std" einen border auf der rechten Seite (deshalb anderer style_name) -->
<xsl:choose>
<xsl:when test="mitarbeiter/inkludierte_lehre != ''">
<table:table-cell table:style-name="Tabelle1.A1_2" office:value-type="string">
<text:p text:style-name="P13">Std.</text:p>
</table:table-cell>
</xsl:when>
<xsl:otherwise>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="P13">Std.</text:p>
</table:table-cell>
</xsl:otherwise>
</xsl:choose>
<!-- Wenn LektorInnen bei inkludierte_lehre einen Wert stehen haben, werden die Spalten "Satz" und "Brutto" nicht angezeigt -->
<xsl:choose>
<xsl:when test="mitarbeiter/inkludierte_lehre != ''">
<!--<text:p text:style-name="P10">Satz</text:p>-->
</xsl:when>
<xsl:otherwise>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="P10">Satz</text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.G1" office:value-type="string">
<text:p text:style-name="P10">Brutto</text:p>
</table:table-cell>
</xsl:otherwise>
</xsl:choose>
</table:table-row>
<xsl:apply-templates select="lehreinheit"/>
@@ -428,22 +461,35 @@ xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0"
<table:table-cell table:style-name="Tabelle1.A2" office:value-type="string">
<text:p text:style-name="P11">Summe:</text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A2" office:value-type="string">
<text:p text:style-name="P11"><xsl:value-of select="gesamtstunden" /></text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A2" office:value-type="string">
<text:p text:style-name="P9"/>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.G2" office:value-type="string">
<xsl:choose>
<xsl:when test="mitarbeiter/inkludierte_lehre != ''">
<text:p text:style-name="P11">€ 0,00</text:p>
</xsl:when>
<xsl:otherwise>
<!-- Wenn LektorInnen bei inkludierte_lehre einen Wert stehen haben, wird die Spalte "Satz" nicht angezeigt
Deshalb braucht die Spalte "Summe" einen border auf der rechten Seite (deshalb anderer style_name) -->
<xsl:choose>
<xsl:when test="mitarbeiter/inkludierte_lehre != ''">
<table:table-cell table:style-name="Tabelle1.A2_2" office:value-type="string">
<text:p text:style-name="P11"><xsl:value-of select="gesamtstunden" /></text:p>
</table:table-cell>
</xsl:when>
<xsl:otherwise>
<table:table-cell table:style-name="Tabelle1.A2" office:value-type="string">
<text:p text:style-name="P11"><xsl:value-of select="gesamtstunden" /></text:p>
</table:table-cell>
</xsl:otherwise>
</xsl:choose>
<!-- Wenn LektorInnen bei inkludierte_lehre einen Wert stehen haben, wird die Spalte Bruttosumme nicht angezeigt -->
<xsl:choose>
<xsl:when test="mitarbeiter/inkludierte_lehre != ''">
<!--<text:p text:style-name="P2">0.00</text:p>-->
</xsl:when>
<xsl:otherwise>
<table:table-cell table:style-name="Tabelle1.A2" office:value-type="string">
<text:p text:style-name="P9"/>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.G2" office:value-type="string">
<text:p text:style-name="P11"><xsl:value-of select="gesamtbetrag" /></text:p>
</xsl:otherwise>
</xsl:choose>
</table:table-cell>
</table:table-cell>
</xsl:otherwise>
</xsl:choose>
</table:table-row>
</table:table>
<text:p text:style-name="P19"/>
@@ -510,31 +556,44 @@ xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0"
<xsl:apply-templates select="gruppen_getrennt"/>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A2" office:value-type="string">
<text:p text:style-name="P3"><xsl:value-of select="stunden" /></text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A2" office:value-type="string">
<!-- Wenn LektorInnen bei inkludierte_lehre einen Wert stehen haben, wird am Lehrauftrag bei Stundensatz und Brutto 0 ausgegeben-->
<xsl:choose>
<xsl:when test="../mitarbeiter/inkludierte_lehre != ''">
<text:p text:style-name="P2">0.00</text:p>
</xsl:when>
<xsl:otherwise>
<!-- Wenn LektorInnen bei inkludierte_lehre einen Wert stehen haben, wird die Spalte "Satz" nicht angezeigt
Deshalb braucht die Spalte "Std" einen border auf der rechten Seite (deshalb anderer style_name) -->
<xsl:choose>
<xsl:when test="../mitarbeiter/inkludierte_lehre != ''">
<table:table-cell table:style-name="Tabelle1.A2_2" office:value-type="string">
<text:p text:style-name="P3"><xsl:value-of select="stunden" /></text:p>
</table:table-cell>
</xsl:when>
<xsl:otherwise>
<table:table-cell table:style-name="Tabelle1.A2" office:value-type="string">
<text:p text:style-name="P3"><xsl:value-of select="stunden" /></text:p>
</table:table-cell>
</xsl:otherwise>
</xsl:choose>
<!-- Wenn LektorInnen bei inkludierte_lehre einen Wert stehen haben, wird die Spalte "Satz" nicht angezeigt -->
<xsl:choose>
<xsl:when test="../mitarbeiter/inkludierte_lehre != ''">
<!--<text:p text:style-name="P2">0.00</text:p>-->
</xsl:when>
<xsl:otherwise>
<table:table-cell table:style-name="Tabelle1.A2" office:value-type="string">
<text:p text:style-name="P2"><xsl:value-of select="satz" /></text:p>
</xsl:otherwise>
</xsl:choose>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.G2" office:value-type="string">
<!-- Wenn LektorInnen bei inkludierte_lehre einen Wert stehen haben, wird am Lehrauftrag bei Stundensatz und Brutto 0 ausgegeben-->
<xsl:choose>
<xsl:when test="../mitarbeiter/inkludierte_lehre != ''">
<text:p text:style-name="P3">€ 0,00</text:p>
</xsl:when>
<xsl:otherwise>
</table:table-cell>
</xsl:otherwise>
</xsl:choose>
<!-- Wenn LektorInnen bei inkludierte_lehre einen Wert stehen haben, wird die Spalte "Brutto" nicht angezeigt -->
<xsl:choose>
<xsl:when test="../mitarbeiter/inkludierte_lehre != ''">
<!--<text:p text:style-name="P3">€ 0,00</text:p>-->
</xsl:when>
<xsl:otherwise>
<table:table-cell table:style-name="Tabelle1.G2" office:value-type="string">
<text:p text:style-name="P3"><xsl:value-of select="brutto" /></text:p>
</xsl:otherwise>
</xsl:choose>
</table:table-cell>
</table:table-cell>
</xsl:otherwise>
</xsl:choose>
</table:table-row>
</xsl:template>
+2 -2
View File
@@ -37,7 +37,7 @@ $datum_obj = new datum();
$rechte = new benutzerberechtigung();
$rechte->getBerechtigungen($uid);
if(!$rechte->isBerechtigt('lehre/reservierung', null, 'sui'))
if(!$rechte->isBerechtigt('lehre/reservierungAdvanced', null, 'sui'))
die('<span class="error">Sie haben keine Berechtigung für diese Seite</span>');
$stgid=(isset($_REQUEST['stgid'])?$_REQUEST['stgid']:0);
@@ -247,7 +247,7 @@ echo '
<hr>
</form>';
if($rechte->isBerechtigt('lehre/reservierung', null, 'sui'))
if($rechte->isBerechtigt('lehre/reservierungAdvanced', null, 'sui'))
{
if ($type=="save")
{
+44 -12
View File
@@ -41,14 +41,14 @@ echo '
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link href="../../skin/vilesci.css" rel="stylesheet" type="text/css">
<link rel="stylesheet" type="text/css" href="../../skin/jquery-ui-1.9.2.custom.min.css">
<script type="text/javascript" src="../../vendor/jquery/jqueryV1/jquery-1.12.4.min.js"></script>
<script type="text/javascript" src="../../vendor/christianbach/tablesorter/jquery.tablesorter.min.js"></script>
<script type="text/javascript" src="../../vendor/components/jqueryui/jquery-ui.min.js"></script>
<link href="../../skin/vilesci.css" rel="stylesheet" type="text/css">';
include('../../include/meta/jquery.php');
include('../../include/meta/jquery-tablesorter.php');
echo ' <script type="text/javascript" src="../../vendor/components/jqueryui/jquery-ui.min.js"></script>
<script type="text/javascript" src="../../include/js/jquery.ui.datepicker.translation.js"></script>
<script type="text/javascript" src="../../vendor/jquery/sizzle/sizzle.js"></script>
<script language="Javascript">
$(function() {
$("a.ui-widget-content").draggable({revert: true, helper: \'clone\'});
@@ -66,7 +66,6 @@ echo '
window.location.href="'.$_SERVER['PHP_SELF'].'?action=updateparent&kurzbz="+kurzbz+"&parent_kurzbz="+parent_kurzbz;
}
});
});
</script>
<style>
@@ -95,7 +94,9 @@ echo '
<h2>Organisationseinheiten</h2>
<table width="100%">
<tr>
<td><span style="font-size: small">Zuordnung kann per Drag&amp;Drop geändert werden!</font></td>
<td><span style="font-size: small">Zuordnung kann per Drag&amp;Drop geändert werden!</span><br>
...Freigabegrenze hinterlegt (siehe Tooltip)<br>
<span style="color: green">L</span>...Leitung hinterlegt (siehe Tooltip)</td>
<td align="right"><a href="'.$_SERVER['PHP_SELF'].'?action=neu">Neue Organisationseinheit anlegen</a></td>
</tr>
</table>
@@ -368,12 +369,43 @@ function display($arr)
echo '<br>';
}
//echo '<span class="ui-widget-content" style=" padding: 0px; margin:0px;'.$aktivstyle.'" >';
echo '<a href="'.$_SERVER['PHP_SELF'].'?action=edit&kurzbz='.$obj->oe_kurzbz.'" style="'.$aktivstyle.'" class="Item ui-widget-content" id="'.$obj->oe_kurzbz.'">';
echo $obj->organisationseinheittyp_kurzbz.' - ';
if($obj->organisationseinheittyp_kurzbz=='Institut')
echo $obj->oe_kurzbz;
{
$bezeichnung = substr($obj->organisationseinheittyp_kurzbz, 0, 1).substr($obj->organisationseinheittyp_kurzbz, -1).' - '.$obj->oe_kurzbz;
}
else
echo $obj->bezeichnung;
{
$bezeichnung = substr($obj->organisationseinheittyp_kurzbz, 0, 1).substr($obj->organisationseinheittyp_kurzbz, -1).' - '.$obj->bezeichnung;
}
$leitung = array();
$bnfunktion = new benutzerfunktion();
$bnfunktion->getBenutzerFunktionen('Leitung', $obj->oe_kurzbz);
foreach ($bnfunktion->result AS $funktion)
{
$mitarbeiter = new mitarbeiter($funktion->uid);
$leitung[] = $mitarbeiter->vorname.' '.$mitarbeiter->nachname;
}
$leitung = array_unique($leitung);
$title = $obj->organisationseinheittyp_kurzbz.' - '.$obj->bezeichnung;
if (count($leitung) > 0)
{
$bezeichnung .= ' <span style="color: green">L</span>';
$title .= "\nLeitung(en): ".implode(',',$leitung); // Keep double-quotes to display linebreak in title-attribute
}
if ($obj->freigabegrenze != '')
{
$bezeichnung .= ' <span title="Freigabegrenze €'.$obj->freigabegrenze.'" style="color: black">€</span>';
$title .= "\nFreigabegrenze: €".$obj->freigabegrenze; // Keep double-quotes to display linebreak in title-attribute
}
echo '<a href="'.$_SERVER['PHP_SELF'].'?action=edit&kurzbz='.$obj->oe_kurzbz.'"
style="'.$aktivstyle.'"
class="Item ui-widget-content"
title="'.$title.'"
id="'.$obj->oe_kurzbz.'">';
echo $bezeichnung;
echo '</a>';
//echo '</span>';
if(is_array($val) && count($val)>0)
+21
View File
@@ -98,6 +98,7 @@ $datum_obj = new datum();
$betrieb_uid = (isset($_POST['betrieb_uid'])?$_POST['betrieb_uid']:'');
$operativ_uid = (isset($_POST['operativ_uid'])?$_POST['operativ_uid']:'');
$ext_id = (isset($_POST['ext_id'])?$_POST['ext_id']:die('ext_id fehlt'));
$servicekategorie_kurzbz = (isset($_POST['servicekategorie_kurzbz'])?$_POST['servicekategorie_kurzbz']:'');
$new = (isset($_POST['new'])?$_POST['new']:'true');
if($new=='true')
{
@@ -116,6 +117,7 @@ $datum_obj = new datum();
$service->ext_id = $ext_id;
$service->oe_kurzbz = $oe_kurzbz;
$service->content_id = $content_id;
$service->servicekategorie_kurzbz = $servicekategorie_kurzbz;
if ($design_uid != '' || $betrieb_uid != '' || $operativ_uid != '')
{
@@ -182,6 +184,8 @@ $datum_obj = new datum();
break;
}
$servicekategorie_arr = $service->getKategorieArray();
echo '<form action="'.$_SERVER['PHP_SELF'].'?action=save" method="POST">';
echo '<input type="hidden" name="new" value="'.htmlspecialchars($new).'">';
echo '<input type="hidden" name="service_id" value="'.htmlspecialchars($service->service_id).'">';
@@ -213,6 +217,23 @@ $datum_obj = new datum();
echo ' <td>Beschreibung</td>';
echo ' <td><textarea name="beschreibung" cols="60" rows="5">'.htmlspecialchars($service->beschreibung).'</textarea></td>';
echo '</tr>';
echo '<tr>';
echo ' <td>Kategorie&nbsp;</td>';
echo ' <td>';
echo '<SELECT name="servicekategorie_kurzbz">';
echo '<OPTION value="">-- keine Auswahl --</OPTION>';
foreach($servicekategorie_arr as $key=>$value)
{
if($key==$service->servicekategorie_kurzbz)
$selected='selected';
else
$selected='';
echo '<OPTION value="'.$key.'" '.$selected.'>'.$value.'</OPTION>';
}
echo '</SELECT>';
echo ' </td>';
echo '<tr valign="top">';
echo ' <td>Design</td>';
echo ' <td><input type="text" id="design_uid" name="design_uid" class="benutzer_uid" size="32" maxlength="32" value="'.htmlspecialchars($service->design_uid).'"></td>';
+5 -4
View File
@@ -107,6 +107,8 @@ echo '</SELECT>
<input type="submit" value="Filtern" />
</form>';
$servicekategorie_arr = $service->getKategorieArray();
if($oe_kurzbz!='')
{
if(!$service->getServicesOrganisationseinheit($oe_kurzbz))
@@ -124,8 +126,7 @@ echo '<table class="tablesorter" id="myTable">
<th>Bezeichnung</th>
<th>Beschreibung</th>
<th>Organisationseinheit</th>
<th>Content_ID</th>
<th>Ext_ID</th>
<th>Kategorie</th>
<th>Design</th>
<th>Betrieb</th>
<th>Operativ</th>
@@ -141,8 +142,8 @@ foreach($service->result as $row)
echo '<td>',$row->bezeichnung,'</td>';
echo '<td>',$row->beschreibung,'</td>';
echo '<td>',$row->oe_kurzbz,'</td>';
echo '<td>',$row->content_id,'</td>';
echo '<td>',$row->ext_id,'</td>';
$title = (isset($servicekategorie_arr[$row->servicekategorie_kurzbz])?$servicekategorie_arr[$row->servicekategorie_kurzbz]:'');
echo '<td><span title="'.$service->convert_html_chars($title).'">',$row->servicekategorie_kurzbz,'</span></td>';
echo '<td>',$row->design_uid,'</td>';
echo '<td>',$row->betrieb_uid,'</td>';
echo '<td>',$row->operativ_uid,'</td>';