Terminliste und Export bei Studierenden, Mitarbeitern und Lehrveranstaltungen/Lehreinheiten

This commit is contained in:
oesi
2015-06-04 09:32:01 +02:00
parent 4453c2cf4c
commit d544aae0d1
14 changed files with 641 additions and 0 deletions
@@ -759,6 +759,12 @@ function LeAuswahl()
document.getElementById('lehrveranstaltung-tab-lvangebot').collapsed=false;
LvAngebotLoad(lehrveranstaltung_id);
if(document.getElementById('lehrveranstaltung-tabs').selectedItem==document.getElementById('lehrveranstaltung-tab-termine'))
{
// Termine Laden
document.getElementById('lehrveranstaltung-termine').setAttribute('src','termine.xul.php?lehrveranstaltung_id='+lehrveranstaltung_id);
}
LeDetailDisableFields(true);
//Details zuruecksetzen
LeDetailReset();
@@ -779,6 +785,12 @@ function LeAuswahl()
//LV-Angebot Tab ausblenden
document.getElementById('lehrveranstaltung-tab-lvangebot').collapsed=true;
if(document.getElementById('lehrveranstaltung-tabs').selectedItem==document.getElementById('lehrveranstaltung-tab-termine'))
{
// Termine Laden
document.getElementById('lehrveranstaltung-termine').setAttribute('src','termine.xul.php?lehreinheit_id='+lehreinheit_id);
}
document.getElementById('lehrveranstaltung-toolbar-neu').disabled=true;
document.getElementById('lehrveranstaltung-toolbar-del').disabled=false;
@@ -2327,3 +2339,29 @@ function LvAngebotNew()
LvAngebotReset();
LvAngebotGruppeTreeRefresh();
}
/**
* Laedt die Termine einer Lehrveranstaltung/Lehreinheit wenn auf den Tab gewechselt wird
*/
function LehrveranstaltungTermineIFrameLoad()
{
var tree = document.getElementById('lehrveranstaltung-tree');
if (tree.currentIndex==-1)
return;
try
{
//Ausgewaehlte Lehreinheit holen
var col = tree.columns ? tree.columns["lehrveranstaltung-treecol-lehreinheit_id"] : "lehrveranstaltung-treecol-lehreinheit_id";
var lehreinheit_id=tree.view.getCellText(tree.currentIndex,col);
var col = tree.columns ? tree.columns["lehrveranstaltung-treecol-lehrveranstaltung_id"] : "lehrveranstaltung-treecol-lehrveranstaltung_id";
var lehrveranstaltung_id=tree.view.getCellText(tree.currentIndex,col);
if(lehreinheit_id!='')
document.getElementById('lehrveranstaltung-termine').setAttribute('src','termine.xul.php?lehreinheit_id='+lehreinheit_id);
else
document.getElementById('lehrveranstaltung-termine').setAttribute('src','termine.xul.php?lehrveranstaltung_id='+lehrveranstaltung_id);
}
catch(e)
{}
}
@@ -248,6 +248,7 @@ echo '<?xul-overlay href="'.APP_ROOT.'content/lvplanung/lehrveranstaltungnotenov
<tab id="lehrveranstaltung-tab-noten" label="Noten" />
<tab id="lehrveranstaltung-tab-notizen" label="Notizen" />
<tab id="lehrveranstaltung-tab-lvangebot" label="LV-Angebot" />
<tab id="lehrveranstaltung-tab-termine" label="Termine" onclick="LehrveranstaltungTermineIFrameLoad()"/>
</tabs>
<tabpanels id="lehrveranstaltung-tabpanels-main" flex="1">
<vbox id="lehrveranstaltung-detail" />
@@ -257,6 +258,7 @@ echo '<?xul-overlay href="'.APP_ROOT.'content/lvplanung/lehrveranstaltungnotenov
<box class="Notiz" flex="1" id="lehrveranstaltung-box-notizen"/>
</vbox>
<vbox id="lehrveranstaltung-lvangebot" />
<iframe id="lehrveranstaltung-termine" src="" style="margin-top:10px;" />
</tabpanels>
</tabbox>
</vbox>
@@ -601,6 +601,13 @@ function MitarbeiterAuswahl()
// ***** BETRIEBSMITTEL *****
document.getElementById('mitarbeiter-betriebsmittel').setAttribute('src','betriebsmitteloverlay.xul.php?person_id='+person_id+'&uid='+uid);
if(document.getElementById('mitarbeiter-tabs').selectedItem==document.getElementById('mitarbeiter-tab-termine'))
{
// ***** Termine *****
document.getElementById('mitarbeiter-termine').setAttribute('src','termine.xul.php?mitarbeiter_uid='+uid);
}
// **** VERWENDUNG ****
verwendungtree = document.getElementById('mitarbeiter-tree-verwendung');
url='<?php echo APP_ROOT;?>rdf/bisverwendung.rdf.php?uid='+uid+"&"+gettimestamp();
@@ -1885,3 +1892,13 @@ function MitarbeiterShowPersonendetails()
person_id = document.getElementById('mitarbeiter-detail-textbox-person_id').value;
window.open('<?php echo APP_ROOT ?>vilesci/personen/personendetails.php?id='+person_id,'Personendetails','');
}
function MitarbeiterTermineIFrameLoad()
{
uid = document.getElementById('mitarbeiter-detail-textbox-uid').value;
if(uid!='')
{
url = 'termine.xul.php?mitarbeiter_uid='+uid+'&ts='+gettimestamp();
document.getElementById('mitarbeiter-termine').setAttribute('src',url);
}
}
@@ -258,6 +258,7 @@ echo '<?xul-overlay href="'.APP_ROOT.'content/mitarbeiter/mitarbeitervertragover
echo '<tab id="mitarbeiter-tab-vertrag" label="Verträge" />';
?>
<tab id="mitarbeiter-tab-termine" label="Termine" onclick="MitarbeiterTermineIFrameLoad()" />
</tabs>
<tabpanels id="mitarbeiter-tabpanels-main" flex="1">
<vbox id="mitarbeiter-detail-stammdaten" style="margin-top:10px;" />
@@ -271,6 +272,7 @@ echo '<?xul-overlay href="'.APP_ROOT.'content/mitarbeiter/mitarbeitervertragover
if($rechte->isBerechtigt('vertrag/mitarbeiter'))
echo '<vbox id="mitarbeiter-vertrag" style="margin-top:10px;" />';
?>
<iframe id="mitarbeiter-termine" src="" style="margin-top:10px;" />
</tabpanels>
</tabbox>
</vbox>
+128
View File
@@ -0,0 +1,128 @@
<?php
/* Copyright (C) 2015 fhcomplete.org
*
* 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>
*/
/**
* Exportiert die Termine von Lehreinheiten/Lehrveranstaltung/Studierenden/Mitarbeitern
*/
require_once('../../config/vilesci.config.inc.php');
require_once('../../include/rdf.class.php');
require_once('../../include/basis_db.class.php');
require_once('../../include/functions.inc.php');
require_once('../../include/benutzerberechtigung.class.php');
require_once('../../include/variable.class.php');
require_once('../../include/lehrstunde.class.php');
require_once('../../include/datum.class.php');
require_once('../../include/stunde.class.php');
require_once('../../include/Excel/excel.php');
$user = get_uid();
$variable = new variable();
$variable->loadVariables($user);
$rechte = new benutzerberechtigung();
$rechte->getBerechtigungen($user);
if(!$rechte->isBerechtigt('assistenz') && !$rechte->isBerechtigt('lvplan') && !$rechte->isBerechtigt('admin'))
die($rechte->errormsg);
$stunde = new stunde();
$stunde->loadAll();
$stunden_arr=array();
foreach($stunde->stunden as $row)
{
$stunden_arr[$row->stunde]['beginn']=$row->beginn->format('H:i');
$stunden_arr[$row->stunde]['ende']=$row->ende->format('H:i');
}
$datum_obj = new datum();
$lehrveranstaltung_id = filter_input(INPUT_GET, 'lehrveranstaltung_id');
$lehreinheit_id = filter_input(INPUT_GET, 'lehreinheit_id');
$mitarbeiter_uid = filter_input(INPUT_GET,'mitarbeiter_uid');
$student_uid = filter_input(INPUT_GET,'student_uid');
$db = new basis_db();
$lehrstunde = new lehrstunde();
//$variable->variable->db_stpl_table
$lehrstunde->getStundenplanData('stundenplan', $lehrveranstaltung_id, $variable->variable->semester_aktuell, $lehreinheit_id, $mitarbeiter_uid, $student_uid);
function writecol($zeile, $i, $content)
{
global $worksheet, $maxlength;
$worksheet->write($zeile, $i, $content);
if(mb_strlen($content)>$maxlength[$i])
$maxlength[$i]=mb_strlen($content);
}
$maxlength= array();
$zeile=1;
// Creating a workbook
$workbook = new Spreadsheet_Excel_Writer();
// sending HTTP headers
$workbook->send("Termine". "_" . date("d_m_Y") . ".xls");
$workbook->setVersion(8);
// Creating a worksheet
$worksheet =& $workbook->addWorksheet("Termine");
$worksheet->setInputEncoding('utf-8');
$format_bold =& $workbook->addFormat();
$format_bold->setBold();
$format_title =& $workbook->addFormat();
$format_title->setBold();
// let's merge
$format_title->setAlign('merge');
//Zeilenueberschriften ausgeben
$headline=array('Datum','Von','Bis','Ort','Lektoren','Gruppen','Lehrfach','StundeVon','StundeBis');
$i=0;
foreach ($headline as $title)
{
$worksheet->write(0,$i,$title, $format_bold);
$maxlength[$i]=mb_strlen($title);
$i++;
}
foreach($lehrstunde->result as $row)
{
$i=0;
writecol($zeile, $i++, $datum_obj->formatDatum($row->datum,'d.m.Y'));
writecol($zeile, $i++, $stunden_arr[$row->stundevon]['beginn']);
writecol($zeile, $i++, $stunden_arr[$row->stundebis]['ende']);
writecol($zeile, $i++, implode(',',$row->orte));
writecol($zeile, $i++, implode(',',$row->lektoren));
writecol($zeile, $i++, implode(',',$row->gruppen));
writecol($zeile, $i++, $row->lehrfach_bezeichnung);
writecol($zeile, $i++, $row->stundevon);
writecol($zeile, $i++, $row->stundebis);
$zeile++;
}
//Die Breite der Spalten setzen
foreach($maxlength as $i=>$breite)
$worksheet->setColumn($i, $i, $breite+2);
$workbook->close();
?>
+2
View File
@@ -369,6 +369,7 @@ else
<tab id="student-tab-gruppen" label="Gruppen" onclick="StudentGruppenLoadData();"/>
<tab id="student-tab-funktionen" label="Funktionen" onclick="StudentFunktionIFrameLoad();"/>
<tab id="student-tab-notizen" label="Notizen"/>
<tab id="student-tab-termine" label="Termine" onclick="StudentTermineIFrameLoad();"/>
</tabs>
<tabpanels id="student-tabpanels-main" flex="1">
<vbox id="student-detail" style="margin-top:10px;" />
@@ -392,6 +393,7 @@ else
<vbox id="student-box-notiz">
<box class="Notiz" flex="1" id="student-box-notizen"/>
</vbox>
<iframe id="student-termine" src="" style="margin-top:10px;" />
</tabpanels>
</tabbox>
</vbox>
+20
View File
@@ -1525,6 +1525,13 @@ function StudentAuswahl()
url = '<?php echo APP_ROOT; ?>content/funktionen.xul.php?uid='+uid;
document.getElementById('student-funktionen').setAttribute('src',url);
}
// ***** Termine *****
if(document.getElementById('student-content-tabs').selectedItem==document.getElementById('student-tab-termine'))
{
document.getElementById('student-termine').setAttribute('src','termine.xul.php?student_uid='+uid);
}
}
// Notizen laden
@@ -5289,6 +5296,19 @@ function StudentFunktionIFrameLoad()
}
}
// ****
// * Laedt den Termine IFrame
// ****
function StudentTermineIFrameLoad()
{
uid = document.getElementById('student-detail-textbox-uid').value;
if(uid!='')
{
url = 'termine.xul.php?student_uid='+uid+'&ts='+gettimestamp();
document.getElementById('student-termine').setAttribute('src',url);
}
}
// ****
// * Funktionen IFrame ins leere zeigen lassen
// ****
+75
View File
@@ -0,0 +1,75 @@
<?php
/* Copyright (C) 2015 fhcomplete.org
*
* 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>
*/
require_once('../config/vilesci.config.inc.php');
?>
// ********** FUNKTIONEN ********** //
var TermineLehreinheitID='';
var TermineLehrveranstaltungID='';
var TermineMitarbeiterUID='';
var TermineStudentUID='';
// ****
// * Laedt die Trees
// ****
function loadTermine(lehreinheit_id, lehrveranstaltung_id, mitarbeiter_uid, student_uid)
{
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
TermineLehreinheitID=lehreinheit_id;
TermineLehrveranstaltungID=lehrveranstaltung_id;
TermineMitarbeiterUID=mitarbeiter_uid;
TermineStudentUID=student_uid;
//Termine laden
url = "<?php echo APP_ROOT; ?>rdf/termine.rdf.php?ts="+gettimestamp();
if(lehreinheit_id!='')
url=url+"&lehreinheit_id="+lehreinheit_id;
if(lehrveranstaltung_id!='')
url=url+"&lehrveranstaltung_id="+lehrveranstaltung_id;
if(mitarbeiter_uid!='')
url=url+"&mitarbeiter_uid="+mitarbeiter_uid;
if(student_uid!='')
url=url+"&student_uid="+student_uid;
var treeTermine=document.getElementById('termine-tree');
//Alte DS entfernen
var oldDatasources = treeTermine.database.GetDataSources();
while(oldDatasources.hasMoreElements())
{
treeTermine.database.RemoveDataSource(oldDatasources.getNext());
}
var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService);
var TerminTreeDatasource = rdfService.GetDataSource(url);
TerminTreeDatasource.QueryInterface(Components.interfaces.nsIRDFRemoteDataSource);
treeTermine.database.AddDataSource(TerminTreeDatasource);
}
/**
* Exportiert die Termine
*/
function TermineExport()
{
var url = 'statistik/termine.xls.php?lehreinheit_id='+TermineLehreinheitID+'&lehrveranstaltung_id='+TermineLehrveranstaltungID+'&mitarbeiter_uid='+TermineMitarbeiterUID+'&student_uid='+TermineStudentUID;
window.open(url);
}
+130
View File
@@ -0,0 +1,130 @@
<?php
/* Copyright (C) 2015 fhcomplete.org
*
* 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>
*/
header("Cache-Control: no-cache");
header("Cache-Control: post-check=0, pre-check=0",false);
header("Expires Mon, 26 Jul 1997 05:00:00 GMT");
header("Pragma: no-cache");
header("Content-type: application/vnd.mozilla.xul+xml");
require_once('../config/vilesci.config.inc.php');
echo '<?xml version="1.0" encoding="UTF-8"?>'."\n";
echo '<?xml-stylesheet href="'.APP_ROOT.'skin/tempus.css" type="text/css"?>';
echo '<?xml-stylesheet href="'.APP_ROOT.'content/bindings.css" type="text/css"?>';
$lehreinheit_id = filter_input(INPUT_GET, 'lehreinheit_id');
$lehrveranstaltung_id = filter_input(INPUT_GET, 'lehrveranstaltung_id');
$mitarbeiter_uid = filter_input(INPUT_GET,'mitarbeiter_uid');
$student_uid = filter_input(INPUT_GET,'student_uid');
?>
<window id="termine-window" title="termine"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
onload="loadTermine(<?php echo "'".$lehreinheit_id."','".$lehrveranstaltung_id."','".$mitarbeiter_uid."','".$student_uid."'"; ?>);"
>
<script type="application/x-javascript" src="<?php echo APP_ROOT; ?>content/termine.js.php" />
<script type="application/x-javascript" src="<?php echo APP_ROOT; ?>content/functions.js.php" />
<script type="application/x-javascript" src="<?php echo APP_ROOT; ?>content/phpRequest.js.php" />
<vbox flex="1">
<groupbox id="termine-groupbox-termine" flex="1">
<caption label="Termine" />
<hbox flex="1">
<tree id="termine-tree" seltype="single" hidecolumnpicker="false" flex="1"
datasources="rdf:null" ref="http://www.technikum-wien.at/termine"
persist="hidden, height"
>
<treecols>
<treecol id="termine-treecol-datum" label="Datum" flex="1" hidden="false"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/termine/rdf#datum_iso" onclick="termineTreeSort()"/>
<splitter class="tree-splitter"/>
<treecol id="termine-treecol-stundevon" label="Stunde Von" flex="1" hidden="true"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/termine/rdf#stundevon" onclick="termineTreeSort()"/>
<splitter class="tree-splitter"/>
<treecol id="termine-treecol-stundebis" label="Stunde Bis" flex="1" hidden="true"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/termine/rdf#stundebis" onclick="termineTreeSort()"/>
<splitter class="tree-splitter"/>
<treecol id="termine-treecol-uhrzeitvon" label="Von" flex="1" hidden="false"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/termine/rdf#uhrzeitvon" onclick="termineTreeSort()"/>
<splitter class="tree-splitter"/>
<treecol id="termine-treecol-uhrzeitbis" label="Bis" flex="1" hidden="false"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/termine/rdf#uhrzeitbis" onclick="termineTreeSort()"/>
<splitter class="tree-splitter"/>
<treecol id="termine-treecol-gruppen" label="Gruppen" flex="3" hidden="false"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/termine/rdf#gruppen" onclick="termineTreeSort()"/>
<splitter class="tree-splitter"/>
<treecol id="termine-treecol-ort" label="Ort" flex="2" hidden="false"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/termine/rdf#ort" onclick="termineTreeSort()"/>
<splitter class="tree-splitter"/>
<treecol id="termine-treecol-lektor" label="Lektor" flex="2" hidden="false"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/termine/rdf#lektor" onclick="termineTreeSort()"/>
<splitter class="tree-splitter"/>
<treecol id="termine-treecol-lehrfach" label="Lehrfach" flex="4" hidden="false"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/termine/rdf#lehrfach" onclick="termineTreeSort()"/>
<splitter class="tree-splitter"/>
<treecol id="termine-treecol-anwesend" label="Anwesend" flex="1" hidden="false"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/termine/rdf#anwesend" onclick="termineTreeSort()"/>
<splitter class="tree-splitter"/>
<treecol id="termine-treecol-datum_iso" label="DatumISO" flex="1" hidden="true"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/termine/rdf#datum_iso" onclick="termineTreeSort()"/>
<splitter class="tree-splitter"/>
</treecols>
<template>
<rule>
<treechildren>
<treeitem uri="rdf:*">
<treerow>
<treecell label="rdf:http://www.technikum-wien.at/termine/rdf#datum" />
<treecell label="rdf:http://www.technikum-wien.at/termine/rdf#stundevon" />
<treecell label="rdf:http://www.technikum-wien.at/termine/rdf#stundebis" />
<treecell label="rdf:http://www.technikum-wien.at/termine/rdf#uhrzeitvon" />
<treecell label="rdf:http://www.technikum-wien.at/termine/rdf#uhrzeitbis" />
<treecell label="rdf:http://www.technikum-wien.at/termine/rdf#gruppen" />
<treecell label="rdf:http://www.technikum-wien.at/termine/rdf#ort" />
<treecell label="rdf:http://www.technikum-wien.at/termine/rdf#lektor" />
<treecell label="rdf:http://www.technikum-wien.at/termine/rdf#lehrfach" />
<treecell label="rdf:http://www.technikum-wien.at/termine/rdf#anwesend" />
<treecell label="rdf:http://www.technikum-wien.at/termine/rdf#datum_iso" />
</treerow>
</treeitem>
</treechildren>
</rule>
</template>
</tree>
</hbox>
</groupbox>
<button label="Exportieren" oncommand="TermineExport()"/>
</vbox>
</window>
+35
View File
@@ -349,4 +349,39 @@ class anwesenheit extends basis_db
return 'green';
}
}
/**
* Prueft ob Anwesenheiten erfasst wurden
* @param $lehreinheit_id ID der Lehreinheit
* @param $datum Datum
* @param $uid UID des Studierenden
* @return boolean true wenn vorhanden, sonst false
*/
public function AnwesenheitExists($lehreinheit_id, $datum, $uid=null)
{
$qry = "SELECT
1
FROM
campus.tbl_anwesenheit
WHERE
anwesend=true
AND lehreinheit_id=".$this->db_add_param($lehreinheit_id)."
AND datum=".$this->db_add_param($datum);
if($uid!='')
$qry.=" AND uid=".$this->db_add_param($uid);
if($result = $this->db_query($qry))
{
if($this->db_num_rows($result)>0)
return true;
else
return false;
}
else
{
$this->errormsg = 'Fehler beim Laden der Daten';
return false;
}
}
}
+1
View File
@@ -65,6 +65,7 @@ abstract class db extends basis
abstract function db_parse_bool($var);
abstract function db_implode4SQL($var);
abstract function db_getResultJSON($result = null);
abstract function db_parse_array($var);
/**
+76
View File
@@ -891,6 +891,82 @@ class lehrstunde extends basis_db
}
return $result;
}
public function getStundenplanData($db_stpl_table, $lehrveranstaltung_id=null, $studiensemester_kurzbz=null, $lehreinheit_id=null, $mitarbeiter_uid=null, $student_uid=null)
{
$qry = "SELECT
stpl.datum, min(stpl.stunde) as stundevon, max(stpl.stunde) as stundebis,
stpl.lehreinheit_id, lehrfach.bezeichnung as lehrfach_bezeichnung,
array_agg(
CASE WHEN gruppe_kurzbz is not null THEN gruppe_kurzbz
ELSE (SELECT UPPER(typ || kurzbz) FROM public.tbl_studiengang WHERE studiengang_kz=stpl.studiengang_kz) || COALESCE(stpl.semester,'0') || COALESCE(stpl.verband,'') || COALESCE(stpl.gruppe,'')
END) as gruppen, array_agg(mitarbeiter_uid) as lektoren,
array_agg(ort_kurzbz) as orte
FROM
lehre.tbl_".$db_stpl_table." as stpl
JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
JOIN lehre.tbl_lehrveranstaltung as lehrfach ON(tbl_lehreinheit.lehrfach_id=lehrfach.lehrveranstaltung_id)
WHERE ";
if($lehrveranstaltung_id!='')
{
$qry.=" lehreinheit_id in(SELECT lehreinheit_id FROM lehre.tbl_lehreinheit
WHERE lehrveranstaltung_id=".$this->db_add_param($lehrveranstaltung_id)."
AND studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz).")";
}
elseif($lehreinheit_id!='')
{
$qry.=" lehreinheit_id=".$this->db_add_param($lehreinheit_id);
}
elseif($mitarbeiter_uid!='')
{
$qry.=" mitarbeiter_uid=".$this->db_add_param($mitarbeiter_uid)." AND lehreinheit_id IN(
SELECT
lehreinheit_id
FROM
lehre.tbl_lehreinheitmitarbeiter
JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
WHERE mitarbeiter_uid=".$this->db_add_param($mitarbeiter_uid)." AND studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz).")";
}
elseif($student_uid!='')
{
$qry.=" lehreinheit_id in (
SELECT
lehreinheit_id
FROM
campus.vw_student_lehrveranstaltung
WHERE
uid=".$this->db_add_param($student_uid)." AND studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz).")";
}
else
return false;
$qry.="GROUP BY stpl.datum, stpl.unr, stpl.lehreinheit_id, lehrfach.bezeichnung
ORDER BY stpl.datum, min(stpl.stunde), stpl.unr, stpl.lehreinheit_id";
if($result = $this->db_query($qry))
{
while($row = $this->db_fetch_object($result))
{
$obj = new stdClass();
$obj->datum = $row->datum;
$obj->stundevon = $row->stundevon;
$obj->stundebis = $row->stundebis;
$obj->gruppen = array_unique($this->db_parse_array($row->gruppen));
$obj->lektoren = array_unique($this->db_parse_array($row->lektoren));
$obj->orte = array_unique($this->db_parse_array($row->orte));
$obj->lehrfach_bezeichnung = $row->lehrfach_bezeichnung;
$obj->lehreinheit_id = $row->lehreinheit_id;
$this->result[] = $obj;
}
return true;
}
else
return false;
}
}
?>
+18
View File
@@ -342,5 +342,23 @@ class basis_db extends db
}
return $string;
}
/**
* Erstellt aus einem DB Array ein PHP Array
* @param $var DB Result Array Spalte
* @return php array
*/
public function db_parse_array($var)
{
if ($var == '')
return;
preg_match_all('/(?<=^\{|,)(([^,"{]*)|\s*"((?:[^"\\\\]|\\\\(?:.|[0-9]+|x[0-9a-f]+))*)"\s*)(,|(?<!^\{)(?=\}$))/i', $var, $matches, PREG_SET_ORDER);
$values = [];
foreach ($matches as $match)
{
$values[] = $match[3] != '' ? stripcslashes($match[3]) : (strtolower($match[2]) == 'null' ? null : $match[2]);
}
return $values;
}
}
?>
+97
View File
@@ -0,0 +1,97 @@
<?php
/* Copyright (C) 2015 fhcomplete.org
*
* 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 <oesi@technikum-wien.at>
*/
require_once('../config/vilesci.config.inc.php');
require_once('../include/rdf.class.php');
require_once('../include/basis_db.class.php');
require_once('../include/functions.inc.php');
require_once('../include/benutzerberechtigung.class.php');
require_once('../include/variable.class.php');
require_once('../include/lehrstunde.class.php');
require_once('../include/datum.class.php');
require_once('../include/stunde.class.php');
require_once('../include/anwesenheit.class.php');
$user = get_uid();
$rechte = new benutzerberechtigung();
$rechte->getBerechtigungen($user);
if(!$rechte->isBerechtigt('assistenz') && !$rechte->isBerechtigt('lvplan') && !$rechte->isBerechtigt('admin'))
die($rechte->errormsg);
$variable = new variable();
$variable->loadVariables($user);
$stunde = new stunde();
$stunde->loadAll();
$stunden_arr=array();
foreach($stunde->stunden as $row)
{
$stunden_arr[$row->stunde]['beginn']=$row->beginn->format('H:i');
$stunden_arr[$row->stunde]['ende']=$row->ende->format('H:i');
}
$datum_obj = new datum();
$oRdf = new rdf('TERMINE','http://www.technikum-wien.at/termine');
$lehrveranstaltung_id = filter_input(INPUT_GET, 'lehrveranstaltung_id');
$lehreinheit_id = filter_input(INPUT_GET, 'lehreinheit_id');
$mitarbeiter_uid = filter_input(INPUT_GET,'mitarbeiter_uid');
$student_uid = filter_input(INPUT_GET,'student_uid');
$oRdf->sendHeader();
$db = new basis_db();
$lehrstunde = new lehrstunde();
//$variable->variable->db_stpl_table
$lehrstunde->getStundenplanData('stundenplan', $lehrveranstaltung_id, $variable->variable->semester_aktuell, $lehreinheit_id, $mitarbeiter_uid, $student_uid);
$i=0;
if(isset($lehrstunde->result) && is_array($lehrstunde->result))
{
foreach($lehrstunde->result as $row)
{
$i=$oRdf->newObjekt($i);
$oRdf->obj[$i]->setAttribut('datum',$datum_obj->formatDatum($row->datum,'d.m.Y'),true);
$oRdf->obj[$i]->setAttribut('stundevon',$row->stundevon,true);
$oRdf->obj[$i]->setAttribut('stundebis',$row->stundebis,true);
$oRdf->obj[$i]->setAttribut('uhrzeitvon',$stunden_arr[$row->stundevon]['beginn'],true);
$oRdf->obj[$i]->setAttribut('uhrzeitbis',$stunden_arr[$row->stundebis]['ende'],true);
$oRdf->obj[$i]->setAttribut('gruppen',implode(',',$row->gruppen),true);
$oRdf->obj[$i]->setAttribut('lektor',implode(',',$row->lektoren),true);
$oRdf->obj[$i]->setAttribut('ort',implode(',',$row->orte),true);
$oRdf->obj[$i]->setAttribut('lehrfach',$row->lehrfach_bezeichnung,true);
$oRdf->obj[$i]->setAttribut('lehreinheit_id',$row->lehreinheit_id,true);
$anwesenheit = new anwesenheit();
if($anwesenheit->AnwesenheitExists($row->lehreinheit_id, $row->datum, $student_uid))
$anwesend='Ja';
else
$anwesend='Nein';
$oRdf->obj[$i]->setAttribut('anwesend',$anwesend,true);
$oRdf->obj[$i]->setAttribut('datum_iso',$row->datum,true);
$oRdf->addSequence($i);
$i++;
}
}
$oRdf->sendRdfText();
?>