This commit is contained in:
Paminger
2015-12-14 12:53:23 +01:00
1162 changed files with 122315 additions and 19915 deletions
+26 -24
View File
@@ -23,7 +23,7 @@
* Klasse benutzerfunktion (FAS-Online)
* @create 04-12-2006
*/
require_once(dirname(__FILE__).'/basis_db.class.php');
require_once(dirname(__FILE__).'/basis_db.class.php');
class benutzerfunktion extends basis_db
{
@@ -57,7 +57,7 @@ class benutzerfunktion extends basis_db
public function __construct($benutzerfunktion_id=null)
{
parent::__construct();
if($benutzerfunktion_id != null)
$this->load($benutzerfunktion_id);
}
@@ -106,7 +106,7 @@ class benutzerfunktion extends basis_db
*/
public function benutzerfunktion_exists($uid, $benutzerfunktion)
{
$qry = "SELECT count(*) as anzahl FROM public.tbl_benutzerfunktion
$qry = "SELECT count(*) as anzahl FROM public.tbl_benutzerfunktion
WHERE uid=".$this->db_add_param($uid)." AND funktion_kurzbz=".$this->db_add_param($benutzerfunktion);
if($row = $this->db_fetch_object($this->db_query($qry)))
@@ -131,8 +131,8 @@ class benutzerfunktion extends basis_db
*/
public function getBenutzerFunktion($uid, $funktion_kurzbz, $oe_kurzbz)
{
$qry = "SELECT * FROM public.tbl_benutzerfunktion
WHERE uid=".$this->db_add_param($uid)." AND funktion_kurzbz=".$this->db_add_param($funktion_kurzbz)."
$qry = "SELECT * FROM public.tbl_benutzerfunktion
WHERE uid=".$this->db_add_param($uid)." AND funktion_kurzbz=".$this->db_add_param($funktion_kurzbz)."
AND oe_kurzbz=".$this->db_add_param($oe_kurzbz);
if($result = $this->db_query($qry))
@@ -168,7 +168,7 @@ class benutzerfunktion extends basis_db
return false;
}
}
/**
* Laedt mehrere BenutzerFunktionen
* @param funktion_kurzbz, studiengang_kz, semester
@@ -177,7 +177,7 @@ class benutzerfunktion extends basis_db
*/
public function getBenutzerFunktionen($funktion_kurzbz, $oe_kurzbz='', $semester='', $uid='')
{
$qry = "SELECT * FROM public.tbl_benutzerfunktion
$qry = "SELECT * FROM public.tbl_benutzerfunktion
WHERE funktion_kurzbz=".$this->db_add_param($funktion_kurzbz)."
AND (datum_bis >= now() OR datum_bis IS NULL)
AND (datum_von <= now() OR datum_von IS NULL)";
@@ -188,7 +188,7 @@ class benutzerfunktion extends basis_db
$qry.=" AND semester=".$this->db_add_param($semester);
if($uid!='')
$qry.=" AND uid=".$this->db_add_param($uid);
$qry.=" ORDER BY funktion_kurzbz, oe_kurzbz, semester";
if($result = $this->db_query($qry))
@@ -196,7 +196,7 @@ class benutzerfunktion extends basis_db
while($row = $this->db_fetch_object($result))
{
$obj = new benutzerfunktion();
$obj->benutzerfunktion_id = $row->benutzerfunktion_id;
$obj->fachbereich_kurzbz = $row->fachbereich_kurzbz;
$obj->uid = $row->uid;
@@ -211,9 +211,9 @@ class benutzerfunktion extends basis_db
$obj->datum_bis = $row->datum_bis;
$obj->bezeichnung = $row->bezeichnung;
$obj->wochenstunden = $row->wochenstunden;
$this->result[] = $obj;
}
return true;
}
@@ -283,7 +283,7 @@ class benutzerfunktion extends basis_db
$this->errormsg='Benutzerfunktion_id muss eine gueltige Zahl sein';
return false;
}
$qry = "DELETE FROM public.tbl_benutzerfunktion WHERE benutzerfunktion_id=".$this->db_add_param($benutzerfunktion_id, FHC_INTEGER);
if(!$this->db_query($qry))
{
@@ -293,7 +293,7 @@ class benutzerfunktion extends basis_db
else
return true;
}
/**
* Speichert den aktuellen Datensatz
* @return true wenn ok, false im Fehlerfall
@@ -379,13 +379,13 @@ class benutzerfunktion extends basis_db
$this->benutzerfunktion_id = $row->id;
$this->db_query('COMMIT;');
}
else
else
{
$this->errormsg = 'Fehler beim Auslesen der Sequence';
$this->db_query('ROLLBACK');
}
}
else
else
{
$this->errormsg = 'Fehler beim Auslesen der Sequence';
$this->db_query('ROLLBACK');
@@ -399,7 +399,7 @@ class benutzerfunktion extends basis_db
return false;
}
}
/**
* Lädt alle Benutzerfunktionen zu einer UID
* @param type $uid UID des Mitarbeiters
@@ -410,7 +410,7 @@ class benutzerfunktion extends basis_db
*/
public function getBenutzerFunktionByUid($uid, $funktion_kurzbz=null, $startZeitraum=null, $endeZeitraum=null)
{
$qry = "SELECT * FROM public.tbl_benutzerfunktion
$qry = "SELECT * FROM public.tbl_benutzerfunktion
WHERE uid=".$this->db_add_param($uid);
if(!is_null($funktion_kurzbz))
{
@@ -458,7 +458,7 @@ class benutzerfunktion extends basis_db
return false;
}
}
/**
* Laedt alle Benutzerfunktionen in einer Organisationseinheit
* @param $oe_kurzbz
@@ -470,7 +470,7 @@ class benutzerfunktion extends basis_db
*/
public function getOeFunktionen($oe_kurzbz, $funktionen_kurzbz=null, $startZeitraum=null, $endeZeitraum=null)
{
$qry = "SELECT * FROM public.tbl_benutzerfunktion
$qry = "SELECT * FROM public.tbl_benutzerfunktion
WHERE oe_kurzbz=".$this->db_add_param($oe_kurzbz);
if(!is_null($funktionen_kurzbz))
@@ -486,15 +486,15 @@ class benutzerfunktion extends basis_db
{
$qry .=' AND (datum_von IS NULL OR datum_von <='.$this->db_add_param($endeZeitraum).')';
}
$qry.=" ORDER BY bezeichnung, uid";
if($result = $this->db_query($qry))
{
while($row = $this->db_fetch_object($result))
{
$obj = new benutzerfunktion();
$obj->benutzerfunktion_id = $row->benutzerfunktion_id;
$obj->fachbereich_kurzbz = $row->fachbereich_kurzbz;
$obj->uid = $row->uid;
@@ -509,9 +509,9 @@ class benutzerfunktion extends basis_db
$obj->datum_bis = $row->datum_bis;
$obj->bezeichnung = $row->bezeichnung;
$obj->wochenstunden = $row->wochenstunden;
$this->result[] = $obj;
}
return true;
}
@@ -521,5 +521,7 @@ class benutzerfunktion extends basis_db
return false;
}
}
}
?>
+6 -2
View File
@@ -313,7 +313,7 @@ class betriebsmittelperson extends basis_db
* @param $betriebsmitteltyp Typ auf den gefiltert werden soll
* @return true wenn ok, false wenn Fehler
*/
public function getBetriebsmittelPerson($person_id, $betriebsmitteltyp=null)
public function getBetriebsmittelPerson($person_id, $betriebsmitteltyp=null, $order=null)
{
$this->result=array();
$this->errormsg = '';
@@ -326,7 +326,11 @@ class betriebsmittelperson extends basis_db
WHERE person_id=".$this->db_add_param($person_id, FHC_INTEGER);
if(!is_null($betriebsmitteltyp))
$qry.=" AND betriebsmitteltyp=".$this->db_add_param($betriebsmitteltyp);
$qry.=" ORDER BY betriebsmitteltyp, nummer";
if(!is_null($order))
$qry.=" ORDER BY ".$order;
else
$qry.=" ORDER BY betriebsmitteltyp, nummer";
if($this->db_query($qry))
{
+77 -21
View File
@@ -42,6 +42,9 @@ class dokument extends basis_db
public $ext_id;
public $onlinebewerbung;
public $bezeichnung_mehrsprachig;
public $dokumentbeschreibung_mehrsprachig;
/**
* Konstruktor - Laedt optional ein Dokument
* @param $dokument_kurzbz
@@ -216,15 +219,43 @@ class dokument extends basis_db
if($new)
{
$qry = 'INSERT INTO public.tbl_dokument(dokument_kurzbz, bezeichnung) VALUES('.
$this->db_add_param($this->dokument_kurzbz).','.
$this->db_add_param($this->bezeichnung).');';
$qry = 'INSERT INTO public.tbl_dokument(dokument_kurzbz, ';
foreach($this->bezeichnung_mehrsprachig as $key=>$value)
{
$idx = sprache::$index_arr[$key];
$qry.=" bezeichnung_mehrsprachig[$idx],";
}
foreach($this->dokumentbeschreibung_mehrsprachig as $key=>$value)
{
$idx = sprache::$index_arr[$key];
$qry.=" dokumentbeschreibung_mehrsprachig[$idx],";
}
$qry.='bezeichnung) VALUES('.
$this->db_add_param($this->dokument_kurzbz).',';
foreach($this->bezeichnung_mehrsprachig as $key=>$value)
$qry.=$this->db_add_param($value).',';
foreach($this->dokumentbeschreibung_mehrsprachig as $key=>$value)
$qry.=$this->db_add_param($value).',';
$this->db_add_param($this->bezeichnung).');';
}
else
{
$qry = 'UPDATE public.tbl_dokument SET '.
'bezeichnung = '.$this->db_add_param($this->bezeichnung).
'WHERE dokument_kurzbz = '.$this->db_add_param($this->dokument_kurzbz);
'bezeichnung = '.$this->db_add_param($this->bezeichnung).',';
foreach($this->bezeichnung_mehrsprachig as $key=>$value)
{
$idx = sprache::$index_arr[$key];
$qry.=" bezeichnung_mehrsprachig[$idx]=".$this->db_add_param($value).",";
}
foreach($this->dokumentbeschreibung_mehrsprachig as $key=>$value)
{
$idx = sprache::$index_arr[$key];
$qry.=" dokumentbeschreibung_mehrsprachig[$idx]=".$this->db_add_param($value).",";
}
$qry = mb_substr($qry,0,-1);
$qry.='WHERE dokument_kurzbz = '.$this->db_add_param($this->dokument_kurzbz);
}
if($this->db_query($qry))
@@ -455,7 +486,8 @@ class dokument extends basis_db
*/
public function loadDokumentStudiengang($dokument_kurzbz, $studiengang_kz)
{
$qry="SELECT * FROM public.tbl_dokumentstudiengang
$sprache = new sprache();
$qry="SELECT *,".$sprache->getSprachQuery('beschreibung_mehrsprachig')." FROM public.tbl_dokumentstudiengang
WHERE
studiengang_kz=".$this->db_add_param($studiengang_kz)."
AND dokument_kurzbz=".$this->db_add_param($dokument_kurzbz);
@@ -468,6 +500,7 @@ class dokument extends basis_db
$this->studiengang_kz = $row->studiengang_kz;
$this->onlinebewerbung = $this->db_parse_bool($row->onlinebewerbung);
$this->pflicht = $this->db_parse_bool($row->pflicht);
$this->beschreibung_mehrsprachig = $sprache->parseSprachResult('beschreibung_mehrsprachig',$row);
return true;
}
else
@@ -521,18 +554,35 @@ class dokument extends basis_db
{
if(!$this->existsDokumentStudiengang($this->dokument_kurzbz, $this->studiengang_kz))
{
$qry='INSERT INTO public.tbl_dokumentstudiengang (dokument_kurzbz, studiengang_kz, pflicht, onlinebewerbung)
$qry='INSERT INTO public.tbl_dokumentstudiengang (dokument_kurzbz, studiengang_kz,';
foreach($this->beschreibung_mehrsprachig as $key=>$value)
{
$idx = sprache::$index_arr[$key];
$qry.=" beschreibung_mehrsprachig[$idx],";
}
$qry.=' pflicht, onlinebewerbung)
VALUES ('.
$this->db_add_param($this->dokument_kurzbz).','.
$this->db_add_param($this->studiengang_kz,FHC_INTEGER).','.
$this->db_add_param($this->pflicht,FHC_BOOLEAN).','.
$this->db_add_param($this->studiengang_kz,FHC_INTEGER).',';
foreach($this->beschreibung_mehrsprachig as $key=>$value)
$qry.=$this->db_add_param($value).',';
$qry.= $this->db_add_param($this->pflicht,FHC_BOOLEAN).','.
$this->db_add_param($this->onlinebewerbung,FHC_BOOLEAN).')';
}
else
{
$qry = 'UPDATE public.tbl_dokumentstudiengang SET
onlinebewerbung='.$this->db_add_param($this->onlinebewerbung, FHC_BOOLEAN).',
pflicht='.$this->db_add_param($this->pflicht, FHC_BOOLEAN).'
onlinebewerbung='.$this->db_add_param($this->onlinebewerbung, FHC_BOOLEAN).',';
foreach($this->beschreibung_mehrsprachig as $key=>$value)
{
$idx = sprache::$index_arr[$key];
$qry.=" beschreibung_mehrsprachig[$idx]=".$this->db_add_param($value).",";
}
$qry.=' pflicht='.$this->db_add_param($this->pflicht, FHC_BOOLEAN).'
WHERE
dokument_kurzbz='.$this->db_add_param($this->dokument_kurzbz).'
AND studiengang_kz='.$this->db_add_param($this->studiengang_kz);
@@ -556,7 +606,11 @@ class dokument extends basis_db
*/
public function loadDokumenttyp($dokument_kurzbz)
{
$qry="SELECT * FROM public.tbl_dokument
$sprache = new sprache();
$bezeichnung_mehrsprachig = $sprache->getSprachQuery('bezeichnung_mehrsprachig');
$dokumentbeschreibung_mehrsprachig = $sprache->getSprachQuery('dokumentbeschreibung_mehrsprachig');
$qry="SELECT *, ".$bezeichnung_mehrsprachig.",".$dokumentbeschreibung_mehrsprachig." FROM public.tbl_dokument
WHERE dokument_kurzbz =".$this->db_add_param($dokument_kurzbz).";";
if($this->db_query($qry))
@@ -565,6 +619,8 @@ class dokument extends basis_db
{
$this->dokument_kurzbz = $row->dokument_kurzbz;
$this->bezeichnung = $row->bezeichnung;
$this->bezeichnung_mehrsprachig = $sprache->parseSprachResult('bezeichnung_mehrsprachig', $row);
$this->dokumentbeschreibung_mehrsprachig = $sprache->parseSprachResult('dokumentbeschreibung_mehrsprachig', $row);
return true;
}
}
@@ -623,7 +679,7 @@ class dokument extends basis_db
}
}
/**
* Liefert die Beschreibungstexte des uebergebenen Dokuments und der uebergebenen Studiengaenge
* @param array $studiengangs_kz Array mit den Studiengangskennzahlen
@@ -634,16 +690,16 @@ class dokument extends basis_db
$sprache = new sprache();
$dokumentbeschreibung_mehrsprachig = $sprache->getSprachQuery('dokumentbeschreibung_mehrsprachig');
$beschreibung_mehrsprachig = $sprache->getSprachQuery('beschreibung_mehrsprachig');
$qry = " SELECT DISTINCT dokument_kurzbz, studiengang_kz,
$dokumentbeschreibung_mehrsprachig, $beschreibung_mehrsprachig
FROM public.tbl_dokumentstudiengang
JOIN public.tbl_dokument using (dokument_kurzbz)
$qry = " SELECT DISTINCT dokument_kurzbz, studiengang_kz,
$dokumentbeschreibung_mehrsprachig, $beschreibung_mehrsprachig
FROM public.tbl_dokumentstudiengang
JOIN public.tbl_dokument using (dokument_kurzbz)
WHERE dokument_kurzbz=".$this->db_add_param($dokument_kurzbz, FHC_STRING)."
AND (dokumentbeschreibung_mehrsprachig IS NOT NULL OR beschreibung_mehrsprachig IS NOT NULL)
AND studiengang_kz IN (".implode(",", $studiengangs_kz).")
ORDER BY studiengang_kz";
if($result = $this->db_query($qry))
{
while($row = $this->db_fetch_object($result))
@@ -663,7 +719,7 @@ class dokument extends basis_db
$this->errormsg="Fehler bei der Abfrage aufgetreten";
return false;
}
}
/**
@@ -700,7 +756,7 @@ class dokument extends basis_db
$this->errormsg = 'Studiengang_kz ist ungueltig';
return false;
}
$qry = "SELECT
*
FROM
+393 -393
View File
@@ -1,393 +1,393 @@
<?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> and
*/
require_once(dirname(__FILE__).'/vorlage.class.php');
require_once(dirname(__FILE__).'/addon.class.php');
require_once(dirname(__FILE__).'/studiengang.class.php');
class dokument_export
{
private $content_xsl; // XSL Vorlage fuer content.xml
private $styles_xsl; // XSL Vorlage fuer styles.xml
private $xml_data; // XML Daten
private $vorlage; // Vorlage Objekt
private $vorlage_file; // Vorlage ODT/ODS in das hineingezippt wird
private $outputformat; // Datentyp des Ausgabefiles
private $filename; // Dateiname des Ausgabefiles
private $temp_filename;
private $temp_folder;
private $images=array();
/**
* Konstruktor
*/
public function __construct($vorlage, $oe_kurzbz=0, $version=null)
{
//Vorlage aus der Datenbank holen
$this->vorlage = new vorlage();
if(!$this->vorlage->getAktuelleVorlage($oe_kurzbz, $vorlage, $version))
die('Keine Dokumentenvorlage gefunden');
$this->content_xsl = new DOMDocument;
if(!$this->content_xsl->loadXML($this->vorlage->text))
die('unable to load xsl');
// Style Vorlage laden falls vorhanden
if($this->vorlage->style!='')
{
$this->styles_xsl = new DOMDocument;
if(!$this->styles_xsl->loadXML($vorlage->style))
die('unable to load styles xsl');
}
switch($this->vorlage->mimetype)
{
case 'application/vnd.oasis.opendocument.text':
$this->outputformat = 'odt';
$this->vorlage_file = $this->vorlage->vorlage_kurzbz.'.odt';
break;
case 'application/vnd.oasis.opendocument.spreadsheet':
$this->outputformat = 'ods';
$this->vorlage_file = $this->vorlage->vorlage_kurzbz.'.ods';
break;
default:
$this->outputformat = 'pdf';
$this->vorlage_file = $this->vorlage->vorlage_kurzbz.'.odt';
}
if($this->vorlage->bezeichnung!='')
$this->filename = $this->vorlage->bezeichnung;
else
$this->filename = $this->vorlage->vorlage_kurzbz;
}
/**
* Laedt die XML Daten fuer die XSL Transformation anhand eines Arrays
* @param $data Array mit Daten
* @param $root Bezeichnung des Root Nodes
* @return boolean true
*/
public function addDataArray($data, $root)
{
$this->xml_data = new DOMDocument;
$this->xml_data->loadXML($this->ConvertArrayToXML($data,$root));
return true;
}
/**
* XML Daten fuer die XSL Transformation
* @param $xml
* @return boolean true
*/
public function addDataXML($xml)
{
$this->xml_data = new DOMDocument;
$this->xml_data->loadXML($xml);
return true;
}
/**
* URL zu XML Datei die fuer XSLTransformation verwendet werden soll
* @param $xml URL zu XML
* @param $params GET Parameter die an XML URL uebergeben werden
* @return boolean true
*/
public function addDataURL($xml, $params)
{
$xml_found = false;
$addons = new addon();
foreach($addons->aktive_addons as $addon)
{
$xmlfile = DOC_ROOT.'addons/'.$addon.'/rdf/'.$xml;
if(file_exists($xmlfile))
{
$xml_found = true;
$xml_url = XML_ROOT.'../addons/'.$addon.'/rdf/'.$xml.'?'.$params;
break;
}
}
if(!$xml_found)
$xml_url=XML_ROOT.$xml.'?'.$params;
// Load the XML source
$this->xml_data = new DOMDocument;
if(!$this->xml_data->load($xml_url))
die('unable to load xml: '.$xml_url);
return true;
}
/**
* Fuegt ein Bild zum Dokument hinzu
* @param $path Pfad zum Bild im Filesystem
* @param $name Name des Bildes das es im Dokument haben soll ohne Pfad (zB 1.png)
* @param $contenttype Contenttype des Bilds (zB image/png)
*/
public function addImage($path, $name, $contenttype)
{
$this->images[]=array('path'=>$path,'name'=>$name,'contenttype'=>$contenttype);
}
/**
* Erstellt das ODT Dokument inklusive Bilder und konvertiert es ins gewuenschte Format
* @param $outputformat ODT, PDF, DOC
* @return true wenn ok
*/
public function create($outputformat=null)
{
if(!is_null($outputformat))
$this->outputformat=$outputformat;
// content.xml erstellen
$proc = new XSLTProcessor;
$proc->importStyleSheet($this->content_xsl);
$contentbuffer = $proc->transformToXml($this->xml_data);
$this->temp_folder = '/tmp/fhcunoconv-'.uniqid();
mkdir($this->temp_folder);
chdir($this->temp_folder);
file_put_contents('content.xml', $contentbuffer);
// styles.xml erstellen
if(!is_null($this->styles_xsl))
{
$style_proc = new XSLTProcessor;
$style_proc->importStyleSheet($this->styles_xsl);
$stylesbuffer = $style_proc->transformToXml($this->xml_data);
file_put_contents('styles.xml', $stylesbuffer);
}
// Template holen
$vorlage_found=false;
$addons = new addon();
foreach($addons->aktive_addons as $addon)
{
$zipfile = DOC_ROOT.'addons/'.$addon.'/system/vorlage_zip/'.$this->vorlage_file;
if(file_exists($zipfile))
{
$vorlage_found=true;
break;
}
}
if(!$vorlage_found)
$zipfile = DOC_ROOT.'system/vorlage_zip/'.$this->vorlage_file;
$tempname_zip = 'out.zip';
if(!copy($zipfile, $tempname_zip))
die('copy failed');
exec("zip $tempname_zip content.xml");
if(!is_null($this->styles_xsl))
exec("zip $tempname_zip styles.xml");
// bilder hinzufuegen
if(count($this->images)>0)
{
// Unterordner fuer die Bilder erstellen
mkdir('Pictures');
// Manifest Datei holen
exec('unzip '.$tempname_zip.' META-INF/manifest.xml');
// Bild zur Manifest Datei hinzufuegen
$manifest = file_get_contents('META-INF/manifest.xml');
$manifest_xml = new DOMDocument;
if(!$manifest_xml->loadXML($manifest))
die('Manifest File ungueltig');
//root-node holen
$root = $manifest_xml->getElementsByTagName('manifest')->item(0);
foreach($this->images as $bild)
{
copy($bild['path'], 'Pictures/'.$bild['name']);
//Neues Element unterhalb des Root Nodes anlegen
$node = $manifest_xml->createElement("manifest:file-entry");
$node->setAttribute("manifest:full-path",'Pictures/'.$bild['name']);
$node->setAttribute("manifest:media-type",$bild['contenttype']);
$root->appendChild($node);
}
$out = $manifest_xml->saveXML();
//geaenderte Manifest Datei speichern und wieder ins Zip packen
file_put_contents('META-INF/manifest.xml', $out);
exec('zip '.$tempname_zip.' META-INF/*');
// Bilder zum ZIP-File hinzufuegen
exec("zip $tempname_zip Pictures/*");
}
clearstatcache();
switch($this->outputformat)
{
case 'pdf':
$this->temp_filename='out.pdf';
exec("unoconv -e IsSkipEmptyPages=false --stdout -f pdf $tempname_zip > ".$this->temp_filename, $out, $ret);
if($ret!=0)
{
$this->errormsg = 'Dokumentenkonvertierung ist derzeit nicht möglich. Bitte informieren Sie den Administrator';
return false;
}
break;
case 'doc':
$this->temp_filename='out.doc';
exec("unoconv -e IsSkipEmptyPages=false --stdout -f doc $tempname_zip > ".$this->temp_filename, $out, $ret);
if($ret!=0)
{
$this->errormsg = 'Dokumentenkonvertierung ist derzeit nicht möglich. Bitte informieren Sie den Administrator';
return false;
}
break;
case 'odt':
default:
$this->temp_filename = $tempname_zip;
}
return true;
}
/**
* Liefert das Dokument mit den passenden Headern zum Download oder als ReturnValue
* @param $download wenn true werden Header gesendet und das Dokument ausgeliefert
* wenn false wird es als Returnwert zurueckgeliefert
* @return boolean true oder Dokument
*/
public function output($download=true)
{
$fsize = filesize($this->temp_filename);
if(!$handle = fopen($this->temp_filename,'r'))
die('load failed');
if($download)
{
switch($this->outputformat)
{
case 'pdf':
header('Content-type: application/pdf');
header('Content-Disposition: attachment; filename="'.$this->filename.'.pdf"');
header('Content-Length: '.$fsize);
break;
case 'doc':
header('Content-type: application/vnd.ms-word');
header('Content-Disposition: attachment; filename="'.$this->filename.'.doc"');
header('Content-Length: '.$fsize);
break;
case 'odt':
header('Content-type: application/vnd.oasis.opendocument.text');
header('Content-Disposition: attachment; filename="'.$this->filename.'.odt"');
header('Content-Length: '.$fsize);
break;
}
while (!feof($handle))
{
echo fread($handle, 8192);
}
fclose($handle);
return true;
}
else
{
$data = fread($handle, filesize($file));
fclose($handle);
return $data;
}
}
/**
* Loescht die Temporaeren Dateien die angelegt wurden
* @return boolean true
*/
public function close()
{
unlink('content.xml');
if($this->styles_xsl!='')
unlink('styles.xml');
unlink('out.zip');
unlink($this->temp_filename);
if(count($this->images)>0)
{
unlink('META-INF/manifest.xml');
foreach($this->images as $bild)
unlink('Pictures/'.$bild['name']);
rmdir('Pictures');
rmdir('META-INF');
}
rmdir($this->temp_folder);
return true;
}
/**
* Konvertiert das Array in ein XML
* @param $data PHP Array mit den Daten
* @param $rootElement Bezeichnung des XML Wurzelelements
* @param $xml_data SimpleXMLElement fuer Rekursionsaufloesung
* @return xml
*/
private function ConvertArrayToXML($data, $rootElement=null, $xml_data=null )
{
$_xml_data = $xml_data;
if ($_xml_data === null)
$_xml_data = new SimpleXMLElement($rootElement !== null ? '<'.$rootElement.' />' : '<root/>');
foreach( $data as $key => $value )
{
if( is_array($value) )
{
if( is_numeric($key) )
{
$key = 'item'.$key; //dealing with <0/>..<n/> issues
$this->ConvertArrayToXML($value, null, $_xml_data);
}
else
{
$subnode = $_xml_data->addChild($key);
$this->ConvertArrayToXML($value, null, $subnode);
}
}
else
$_xml_data->addChild("$key",htmlspecialchars("$value"));
}
return $_xml_data->asXML();
}
}
?>
<?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> and
*/
require_once(dirname(__FILE__).'/vorlage.class.php');
require_once(dirname(__FILE__).'/addon.class.php');
require_once(dirname(__FILE__).'/studiengang.class.php');
class dokument_export
{
private $content_xsl; // XSL Vorlage fuer content.xml
private $styles_xsl; // XSL Vorlage fuer styles.xml
private $xml_data; // XML Daten
private $vorlage; // Vorlage Objekt
private $vorlage_file; // Vorlage ODT/ODS in das hineingezippt wird
private $outputformat; // Datentyp des Ausgabefiles
private $filename; // Dateiname des Ausgabefiles
private $temp_filename;
private $temp_folder;
private $images=array();
/**
* Konstruktor
*/
public function __construct($vorlage, $oe_kurzbz=0, $version=null)
{
//Vorlage aus der Datenbank holen
$this->vorlage = new vorlage();
if(!$this->vorlage->getAktuelleVorlage($oe_kurzbz, $vorlage, $version))
die('Keine Dokumentenvorlage gefunden');
$this->content_xsl = new DOMDocument;
if(!$this->content_xsl->loadXML($this->vorlage->text))
die('unable to load xsl');
// Style Vorlage laden falls vorhanden
if($this->vorlage->style!='')
{
$this->styles_xsl = new DOMDocument;
if(!$this->styles_xsl->loadXML($this->vorlage->style))
die('unable to load styles xsl');
}
switch($this->vorlage->mimetype)
{
case 'application/vnd.oasis.opendocument.text':
$this->outputformat = 'odt';
$this->vorlage_file = $this->vorlage->vorlage_kurzbz.'.odt';
break;
case 'application/vnd.oasis.opendocument.spreadsheet':
$this->outputformat = 'ods';
$this->vorlage_file = $this->vorlage->vorlage_kurzbz.'.ods';
break;
default:
$this->outputformat = 'pdf';
$this->vorlage_file = $this->vorlage->vorlage_kurzbz.'.odt';
}
if($this->vorlage->bezeichnung!='')
$this->filename = $this->vorlage->bezeichnung;
else
$this->filename = $this->vorlage->vorlage_kurzbz;
}
/**
* Laedt die XML Daten fuer die XSL Transformation anhand eines Arrays
* @param $data Array mit Daten
* @param $root Bezeichnung des Root Nodes
* @return boolean true
*/
public function addDataArray($data, $root)
{
$this->xml_data = new DOMDocument;
$this->xml_data->loadXML($this->ConvertArrayToXML($data,$root));
return true;
}
/**
* XML Daten fuer die XSL Transformation
* @param $xml
* @return boolean true
*/
public function addDataXML($xml)
{
$this->xml_data = new DOMDocument;
$this->xml_data->loadXML($xml);
return true;
}
/**
* URL zu XML Datei die fuer XSLTransformation verwendet werden soll
* @param $xml URL zu XML
* @param $params GET Parameter die an XML URL uebergeben werden
* @return boolean true
*/
public function addDataURL($xml, $params)
{
$xml_found = false;
$addons = new addon();
foreach($addons->aktive_addons as $addon)
{
$xmlfile = DOC_ROOT.'addons/'.$addon.'/rdf/'.$xml;
if(file_exists($xmlfile))
{
$xml_found = true;
$xml_url = XML_ROOT.'../addons/'.$addon.'/rdf/'.$xml.'?'.$params;
break;
}
}
if(!$xml_found)
$xml_url=XML_ROOT.$xml.'?'.$params;
// Load the XML source
$this->xml_data = new DOMDocument;
if(!$this->xml_data->load($xml_url))
die('unable to load xml: '.$xml_url);
return true;
}
/**
* Fuegt ein Bild zum Dokument hinzu
* @param $path Pfad zum Bild im Filesystem
* @param $name Name des Bildes das es im Dokument haben soll ohne Pfad (zB 1.png)
* @param $contenttype Contenttype des Bilds (zB image/png)
*/
public function addImage($path, $name, $contenttype)
{
$this->images[]=array('path'=>$path,'name'=>$name,'contenttype'=>$contenttype);
}
/**
* Erstellt das ODT Dokument inklusive Bilder und konvertiert es ins gewuenschte Format
* @param $outputformat ODT, PDF, DOC
* @return true wenn ok
*/
public function create($outputformat=null)
{
if(!is_null($outputformat))
$this->outputformat=$outputformat;
// content.xml erstellen
$proc = new XSLTProcessor;
$proc->importStyleSheet($this->content_xsl);
$contentbuffer = $proc->transformToXml($this->xml_data);
$this->temp_folder = '/tmp/fhcunoconv-'.uniqid();
mkdir($this->temp_folder);
chdir($this->temp_folder);
file_put_contents('content.xml', $contentbuffer);
// styles.xml erstellen
if(!is_null($this->styles_xsl))
{
$style_proc = new XSLTProcessor;
$style_proc->importStyleSheet($this->styles_xsl);
$stylesbuffer = $style_proc->transformToXml($this->xml_data);
file_put_contents('styles.xml', $stylesbuffer);
}
// Template holen
$vorlage_found=false;
$addons = new addon();
foreach($addons->aktive_addons as $addon)
{
$zipfile = DOC_ROOT.'addons/'.$addon.'/system/vorlage_zip/'.$this->vorlage_file;
if(file_exists($zipfile))
{
$vorlage_found=true;
break;
}
}
if(!$vorlage_found)
$zipfile = DOC_ROOT.'system/vorlage_zip/'.$this->vorlage_file;
$tempname_zip = 'out.zip';
if(!copy($zipfile, $tempname_zip))
die('copy failed');
exec("zip $tempname_zip content.xml");
if(!is_null($this->styles_xsl))
exec("zip $tempname_zip styles.xml");
// bilder hinzufuegen
if(count($this->images)>0)
{
// Unterordner fuer die Bilder erstellen
mkdir('Pictures');
// Manifest Datei holen
exec('unzip '.$tempname_zip.' META-INF/manifest.xml');
// Bild zur Manifest Datei hinzufuegen
$manifest = file_get_contents('META-INF/manifest.xml');
$manifest_xml = new DOMDocument;
if(!$manifest_xml->loadXML($manifest))
die('Manifest File ungueltig');
//root-node holen
$root = $manifest_xml->getElementsByTagName('manifest')->item(0);
foreach($this->images as $bild)
{
copy($bild['path'], 'Pictures/'.$bild['name']);
//Neues Element unterhalb des Root Nodes anlegen
$node = $manifest_xml->createElement("manifest:file-entry");
$node->setAttribute("manifest:full-path",'Pictures/'.$bild['name']);
$node->setAttribute("manifest:media-type",$bild['contenttype']);
$root->appendChild($node);
}
$out = $manifest_xml->saveXML();
//geaenderte Manifest Datei speichern und wieder ins Zip packen
file_put_contents('META-INF/manifest.xml', $out);
exec('zip '.$tempname_zip.' META-INF/*');
// Bilder zum ZIP-File hinzufuegen
exec("zip $tempname_zip Pictures/*");
}
clearstatcache();
switch($this->outputformat)
{
case 'pdf':
$this->temp_filename='out.pdf';
exec("unoconv -e IsSkipEmptyPages=false --stdout -f pdf $tempname_zip > ".$this->temp_filename, $out, $ret);
if($ret!=0)
{
$this->errormsg = 'Dokumentenkonvertierung ist derzeit nicht möglich. Bitte informieren Sie den Administrator';
return false;
}
break;
case 'doc':
$this->temp_filename='out.doc';
exec("unoconv -e IsSkipEmptyPages=false --stdout -f doc $tempname_zip > ".$this->temp_filename, $out, $ret);
if($ret!=0)
{
$this->errormsg = 'Dokumentenkonvertierung ist derzeit nicht möglich. Bitte informieren Sie den Administrator';
return false;
}
break;
case 'odt':
default:
$this->temp_filename = $tempname_zip;
}
return true;
}
/**
* Liefert das Dokument mit den passenden Headern zum Download oder als ReturnValue
* @param $download wenn true werden Header gesendet und das Dokument ausgeliefert
* wenn false wird es als Returnwert zurueckgeliefert
* @return boolean true oder Dokument
*/
public function output($download=true)
{
$fsize = filesize($this->temp_filename);
if(!$handle = fopen($this->temp_filename,'r'))
die('load failed');
if($download)
{
switch($this->outputformat)
{
case 'pdf':
header('Content-type: application/pdf');
header('Content-Disposition: attachment; filename="'.$this->filename.'.pdf"');
header('Content-Length: '.$fsize);
break;
case 'doc':
header('Content-type: application/vnd.ms-word');
header('Content-Disposition: attachment; filename="'.$this->filename.'.doc"');
header('Content-Length: '.$fsize);
break;
case 'odt':
header('Content-type: application/vnd.oasis.opendocument.text');
header('Content-Disposition: attachment; filename="'.$this->filename.'.odt"');
header('Content-Length: '.$fsize);
break;
}
while (!feof($handle))
{
echo fread($handle, 8192);
}
fclose($handle);
return true;
}
else
{
$data = fread($handle, filesize($file));
fclose($handle);
return $data;
}
}
/**
* Loescht die Temporaeren Dateien die angelegt wurden
* @return boolean true
*/
public function close()
{
unlink('content.xml');
if($this->styles_xsl!='')
unlink('styles.xml');
unlink('out.zip');
unlink($this->temp_filename);
if(count($this->images)>0)
{
unlink('META-INF/manifest.xml');
foreach($this->images as $bild)
unlink('Pictures/'.$bild['name']);
rmdir('Pictures');
rmdir('META-INF');
}
rmdir($this->temp_folder);
return true;
}
/**
* Konvertiert das Array in ein XML
* @param $data PHP Array mit den Daten
* @param $rootElement Bezeichnung des XML Wurzelelements
* @param $xml_data SimpleXMLElement fuer Rekursionsaufloesung
* @return xml
*/
private function ConvertArrayToXML($data, $rootElement=null, $xml_data=null )
{
$_xml_data = $xml_data;
if ($_xml_data === null)
$_xml_data = new SimpleXMLElement($rootElement !== null ? '<'.$rootElement.' />' : '<root/>');
foreach( $data as $key => $value )
{
if( is_array($value) )
{
if( is_numeric($key) )
{
$key = 'item'.$key; //dealing with <0/>..<n/> issues
$this->ConvertArrayToXML($value, null, $_xml_data);
}
else
{
$subnode = $_xml_data->addChild($key);
$this->ConvertArrayToXML($value, null, $subnode);
}
}
else
$_xml_data->addChild("$key",htmlspecialchars("$value"));
}
return $_xml_data->asXML();
}
}
?>
+13 -3
View File
@@ -52,6 +52,7 @@ class lehreinheit extends basis_db
public $updatevon; // varchar(16)
public $sprache; // varchar(16)
public $ext_id; // bigint
public $gewicht=1; // smallint
public $anz=0; //Zahler fuer erweiterte Attribute
public $mitarbeiter_uid=array();
@@ -112,6 +113,7 @@ class lehreinheit extends basis_db
$this->updateamum = $row->updateamum;
$this->updatevon = $row->updatevon;
$this->ext_id = $row->ext_id;
$this->gewicht = $row->gewicht;
return true;
}
else
@@ -242,6 +244,7 @@ class lehreinheit extends basis_db
$le_obj->updateamum = $row->updateamum;
$le_obj->updatevon = $row->updatevon;
$le_obj->ext_id = $row->ext_id;
$le_obj->gewicht = $row->gewicht;
$this->lehreinheiten[] = $le_obj;
}
@@ -354,6 +357,11 @@ class lehreinheit extends basis_db
return false;
}
if($this->gewicht!='' && !is_numeric($this->gewicht))
{
$this->errormsg = 'Gewicht muss eine gueltige Zahl sein';
return false;
}
return true;
}
@@ -383,7 +391,7 @@ class lehreinheit extends basis_db
//ToDo ID entfernen
$qry = 'BEGIN; INSERT INTO lehre.tbl_lehreinheit (lehrveranstaltung_id, studiensemester_kurzbz,
lehrfach_id, lehrform_kurzbz, stundenblockung, wochenrythmus,
start_kw, raumtyp, raumtypalternativ, lehre, anmerkung, unr, lvnr, insertamum, insertvon, updateamum, updatevon, sprache)
start_kw, raumtyp, raumtypalternativ, lehre, anmerkung, unr, lvnr, insertamum, insertvon, updateamum, updatevon, sprache, gewicht)
VALUES('.$this->db_add_param($this->lehrveranstaltung_id, FHC_INTEGER).','.
$this->db_add_param($this->studiensemester_kurzbz).','.
$this->db_add_param($this->lehrfach_id, FHC_INTEGER).','.
@@ -401,7 +409,8 @@ class lehreinheit extends basis_db
$this->db_add_param($this->insertvon).','.
$this->db_add_param($this->updateamum).','.
$this->db_add_param($this->updatevon).','.
$this->db_add_param($this->sprache).');';
$this->db_add_param($this->sprache).','.
$this->db_add_param($this->gewicht, FHC_INTEGER).');';
}
else
{
@@ -421,7 +430,8 @@ class lehreinheit extends basis_db
' lvnr='.$this->db_add_param($this->lvnr, FHC_INTEGER).','.
' updateamum='.$this->db_add_param($this->updateamum).','.
' updatevon='.$this->db_add_param($this->updatevon).','.
' sprache='.$this->db_add_param($this->sprache).' '.
' sprache='.$this->db_add_param($this->sprache).', '.
' gewicht='.$this->db_add_param($this->gewicht).' '.
" WHERE lehreinheit_id=".$this->db_add_param($this->lehreinheit_id, FHC_INTEGER).";";
}
+45
View File
@@ -489,4 +489,49 @@ class lehreinheitmitarbeiter extends basis_db
return $ret;
}
/**
* Laedt die Lektoren einer Lehrveranstlatung in einem Studiensemester
* @param lehrveranstaltung_id
* @param studiensemester_kurzbz
* @return array + true wenn ok / false im Fehlerfall
*/
public function getMitarbeiterLV($lehrveranstaltung_id, $studiensemester_kurzbz)
{
if(!is_numeric($lehrveranstaltung_id))
{
$this->errormsg = 'Lehreinheit_id ist ungueltig';
return false;
}
$qry = "SELECT
vw_mitarbeiter.uid, vorname, nachname, titelpre, titelpost
FROM
lehre.tbl_lehreinheitmitarbeiter
JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
JOIN campus.vw_mitarbeiter ON(tbl_lehreinheitmitarbeiter.mitarbeiter_uid=vw_mitarbeiter.uid)
WHERE
lehrveranstaltung_id=".$this->db_add_param($lehrveranstaltung_id, FHC_INTEGER)."
AND tbl_lehreinheit.studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz);
$qry .=" ORDER BY nachname, vorname;";
if($this->db_query($qry))
{
while($row = $this->db_fetch_object())
{
$obj = new stdClass();
$obj->vorname = $row->vorname;
$obj->nachname = $row->nachname;
$obj->uid = $row->uid;
$obj->titelpre = $row->titelpre;
$obj->titelpost = $row->titelpost;
$this->result[] = $obj;
}
return true;
}
return false;
}
}
+157 -110
View File
@@ -73,15 +73,15 @@ class lehrstunde extends basis_db
public function __construct()
{
parent::__construct();
$this->new=TRUE;
}
/**
/**
* @brief Einen Datensatz aus optional angegebener Stundenplan-Tabelle laden
* \param stundenplan_id ID in der Datenbank
* \param stpl_table Name der Tabelle in der DB
* \return Boolean, Fehlermeldung kommt in das Attribut errormsg
* @param stundenplan_id ID in der Datenbank
* @param stpl_table Name der Tabelle in der DB
* @return Boolean, Fehlermeldung kommt in das Attribut errormsg
*/
public function load($stundenplan_id,$stpl_table='stundenplandev')
{
@@ -91,16 +91,16 @@ class lehrstunde extends basis_db
$stpl_table='lehre.'.TABLE_BEGIN.$stpl_table;
$sql_query="SELECT * FROM $stpl_view WHERE $stpl_id=$stundenplan_id;";
//Datenbankabfrage
if (!$this->db_query($sql_query))
{
$this->errormsg=$sql_query.$this->db_last_error();
return false;
}
$this->anzahl = $this->db_num_rows();
//Daten uebernehmen
if ($this->anzahl!=1)
{
@@ -183,16 +183,16 @@ class lehrstunde extends basis_db
{
$stpl_id=$stpl_table.TABLE_ID;
$stpl_table='lehre.'.TABLE_BEGIN.$stpl_table;
$sql_query='UPDATE '.$stpl_table;
$sql_query.=" SET datum=".$this->db_add_param($this->datum).", stunde=".$this->db_add_param($this->stunde);
$sql_query.=", ort_kurzbz=".$this->db_add_param($this->ort_kurzbz).", mitarbeiter_uid=".$this->db_add_param($this->lektor_uid);
$sql_query.=", updateamum=".$this->db_add_param($this->updateamum).", updatevon=".$this->db_add_param($this->updatevon);
$sql_query.=" WHERE $stpl_id=".$this->db_add_param($this->stundenplan_id).";";
return $sql_query;
}
/**
* Datensatz aus DB entfernen
* @param id ID des Datensatzes in der Tabelle
@@ -208,7 +208,7 @@ class lehrstunde extends basis_db
// Delete SQL vorbereiten
$sql_query='DELETE FROM '.$stpl_table;
$sql_query.=" WHERE $stpl_id=".$this->db_add_param($id);
//Datenbankrequest
if (!$this->db_query($sql_query))
{
@@ -221,7 +221,7 @@ class lehrstunde extends basis_db
/**
* Laedt Lehrstunden
*
*
* @param type (student, lektor, lehrverband, gruppe, ort, ....)
* @param datum_von (inklusive) Startdatum der Abfrage
* @param datum_bis (exklusive) Enddatum der Abfrage
@@ -302,47 +302,68 @@ class lehrstunde extends basis_db
// Personendaten
if ($type=='student')
{
// Lehrverband ermitteln
$sql_query="SELECT studiengang_kz, semester, verband, gruppe FROM public.tbl_student WHERE student_uid=".$this->db_add_param($uid);
if (!$this->db_query($sql_query) )
// Bei Studierenden wird das passende Studiensemester ermittelt und das dazupassende
// naechstliegende Dadurch wird sichergestellt, dass Einheiten aus den Vorsemestern
// zB fuer Nachpruefungen oder Einheiten aus den Folgesemestern die vorgezogen werden
// auch im Plan sichtbar sind.
if (is_null($this->ss))
{
$studiensemester_obj = new studiensemester();
$this->ss = $studiensemester_obj->getSemesterFromDatum($datum_von,true);
$this->ssnext = $studiensemester_obj->getNearestTo($this->ss,$datum_von);
}
if(!isset($this->ssnext))
$this->ssnext = $this->ss;
// Lehrverbandszuordnungen der betreffenden Studiensemester laden
$sql_query="SELECT studiengang_kz, semester, verband, gruppe
FROM public.tbl_studentlehrverband
WHERE student_uid=".$this->db_add_param($uid)."
AND studiensemester_kurzbz in(".$this->db_add_param($this->ss).",".$this->db_add_param($this->ssnext).")";
$verbaende=array();
if($this->db_query($sql_query))
{
$num_rows=$this->db_num_rows();
if ($num_rows>0)
{
while($row = $this->db_fetch_object())
{
$verbaende[] = array('studiengang_kz'=>$row->studiengang_kz,
'sem'=>$row->semester,
'ver'=>$row->verband,
'grp'=>$row->gruppe);
}
}
}
else
{
$this->errormsg=$this->db_last_error();
return -2;
}
$num_rows=$this->db_num_rows();
if ($num_rows>0)
$row=$this->db_fetch_object();
else
{
$this->errormsg='Fehler: Student ('.$uid.') wurde nicht gefunden!';
return -2;
}
$studiengang_kz=$row->studiengang_kz;
$sem=$row->semester;
$ver=$row->verband;
$grp=$row->gruppe;
// Gruppen ermitteln
if (is_null($this->ss))
{
$studiensemester_obj = new studiensemester();
$this->ss=$studiensemester_obj->getNearest();
}
$sql_query="SELECT gruppe_kurzbz FROM public.tbl_benutzergruppe WHERE uid=".$this->db_add_param($uid)." AND (studiensemester_kurzbz=".$this->db_add_param($this->ss)." OR studiensemester_kurzbz IS NULL)";
// Spezialgruppen ermitteln zu denen die Person zugeteilt ist
$sql_query="SELECT
gruppe_kurzbz
FROM
public.tbl_benutzergruppe
WHERE
uid=".$this->db_add_param($uid)."
AND (studiensemester_kurzbz=".$this->db_add_param($this->ss)."
OR studiensemester_kurzbz=".$this->db_add_param($this->ssnext)."
OR studiensemester_kurzbz IS NULL)";
if (!$result_einheit=$this->db_query($sql_query))
{
$this->errormsg=$this->db_last_error($this->conn);
return false;
}
else
else
$num_rows_einheit=$this->db_num_rows($result_einheit);
}
// Stundenplandaten ermitteln
// Abfrage generieren
if ($type!='idList')
{
if($alle_unr_mitladen)
@@ -363,24 +384,50 @@ class lehrstunde extends basis_db
$sql_query.=" AND gruppe_kurzbz=".$this->db_add_param($gruppe_kurzbz);
elseif($type=='fachbereich')
$sql_query.=" AND fachbereich_kurzbz=".$this->db_add_param($fachbereich_kurzbz);
elseif($type=='student')
{
$sql_query.=" AND (";
if(is_array($verbaende) && count($verbaende)>0)
{
foreach($verbaende as $row_verbaende)
{
$studiengang_kz = $row_verbaende['studiengang_kz'];
$ver = $row_verbaende['ver'];
$sem = $row_verbaende['sem'];
$grp = $row_verbaende['grp'];
$sql_query.=" (studiengang_kz=".$this->db_add_param($studiengang_kz, FHC_INTEGER);
if ($sem!=null && $sem>=0 && $sem!='')
$sql_query.=" AND (semester=".$this->db_add_param($sem)." OR semester IS NULL)";
if ($ver!='0' && $ver!=null && $ver!='')
$sql_query.=" AND (verband=".$this->db_add_param($ver)." OR verband IS NULL OR verband='0' OR verband='')";
if ($grp!='0' && $grp!=null && $grp!='')
$sql_query.=" AND (gruppe=".$this->db_add_param($grp)." OR gruppe IS NULL OR gruppe='0' OR gruppe='')";
$sql_query.=" AND gruppe_kurzbz is null";
$sql_query.=") OR ";
}
}
$sql_query.=" 1!=1";
for ($i=0;$i<$num_rows_einheit;$i++)
{
$row=$this->db_fetch_object($result_einheit,$i);
$sql_query.=" OR gruppe_kurzbz=".$this->db_add_param($row->gruppe_kurzbz);
}
$sql_query.=')';
}
else
{
$sql_query.=" AND ( (studiengang_kz=".$this->db_add_param($studiengang_kz, FHC_INTEGER);
if ($sem!=null && $sem>=0 && $sem!='')
{
$sql_query.=" AND (semester=".$this->db_add_param($sem)." OR semester IS NULL";
if ($type=='student' && $sem>0)
$sql_query.=" OR semester=".$this->db_add_param(($sem+1));
$sql_query.=')';
}
$sql_query.=" AND (semester=".$this->db_add_param($sem)." OR semester IS NULL)";
if ($ver!='0' && $ver!=null && $ver!='')
$sql_query.=" AND (verband=".$this->db_add_param($ver)." OR verband IS NULL OR verband='0' OR verband='')";
if ($grp!='0' && $grp!=null && $grp!='')
$sql_query.=" AND (gruppe=".$this->db_add_param($grp)." OR gruppe IS NULL OR gruppe='0' OR gruppe='')";
if ($type=='student')
$sql_query.=' AND gruppe_kurzbz IS NULL';
$sql_query.=' )';
for ($i=0;$i<$num_rows_einheit;$i++)
{
$row=$this->db_fetch_object($result_einheit,$i);
@@ -390,7 +437,7 @@ class lehrstunde extends basis_db
}
$sql_query_orderby=' ORDER BY datum, stunde, studiengang_kz, semester, verband, gruppe, gruppe_kurzbz, uid';
$sql_query_stdplan.=$sql_query . $sql_query_lva . $sql_query_orderby;
// Wenn aktiviert, werden alle Stunden mit der gleichen UNR geladen die zur selben Zeit stattfinden
if($alle_unr_mitladen)
{
@@ -400,12 +447,12 @@ class lehrstunde extends basis_db
$sql_query_stdplan
)
SELECT
distinct $stpl_view_ohneschema.*
FROM
distinct $stpl_view_ohneschema.*
FROM
".$stpl_view.", lvplan
WHERE
$stpl_view_ohneschema.datum=lvplan.datum
AND $stpl_view_ohneschema.stunde=lvplan.stunde
$stpl_view_ohneschema.datum=lvplan.datum
AND $stpl_view_ohneschema.stunde=lvplan.stunde
AND $stpl_view_ohneschema.unr=lvplan.unr
ORDER BY datum, stunde, studiengang_kz, semester, verband, gruppe, gruppe_kurzbz, uid
";
@@ -420,7 +467,7 @@ class lehrstunde extends basis_db
$sql_query=mb_substr($sql_query,3);
$sql_query_stdplan.=' WHERE'.$sql_query;
}
//die($sql_query_stdplan);
//echo $sql_query_stdplan;
//Datenbankabfrage
if (!$this->db_query($sql_query_stdplan))
{
@@ -434,7 +481,7 @@ class lehrstunde extends basis_db
for ($i=0;$i<$num_rows;$i++)
{
$row=$this->db_fetch_object($stpl_tbl, $i);
$stunde=new lehrstunde();
$stunde->stundenplan_id=$row->{$stpl_id};
$stunde->lehreinheit_id=$row->lehreinheit_id;
@@ -489,7 +536,7 @@ class lehrstunde extends basis_db
for ($i=0;$i<$num_rows;$i++)
{
$row = $this->db_fetch_object($stpl_tbl, $i);
$stunde=new lehrstunde();
$stunde->reservierung=true;
$stunde->stundenplan_id=$row->reservierung_id;
@@ -534,7 +581,7 @@ class lehrstunde extends basis_db
$sql="SELECT * FROM ".$stpl_table." WHERE lehreinheit_id=".$this->db_add_param($lehreinheit_id, FHC_INTEGER);
if ($uid!=null && !is_null($uid))
$sql.=" AND mitarbeiter_uid=".$this->db_add_param($uid);
//Datenbankabfrage
if (!$this->db_query($sql))
{
@@ -547,7 +594,7 @@ class lehrstunde extends basis_db
for ($i=0;$i<$num_rows;$i++)
{
$row=$this->db_fetch_object(null, $i);
$stunde=new lehrstunde();
$stunde->stundenplan_id=$row->{$stpl_id};
$stunde->lehreinheit_id=$row->lehreinheit_id;
@@ -585,27 +632,27 @@ class lehrstunde extends basis_db
{
$variablen_obj = new variable();
$variablen_obj->loadVariables(get_uid());
$kollision_student = $variablen_obj->variable->kollision_student;
$ignore_reservierung = $variablen_obj->variable->ignore_reservierung;
$ignore_zeitsperre = $variablen_obj->variable->ignore_zeitsperre;
//Kollisionspruefung auf Studentenebene
if($kollision_student=='true' && $this->kollision_student($stpl_table))
return true;
// Parameter Checken
// Bezeichnung der Stundenplan-Tabelle und des Keys
$stpl_id=$stpl_table.TABLE_ID;
$stpl_table='lehre.'.VIEW_BEGIN.$stpl_table;
// Datenbank abfragen
$sql_query="SELECT $stpl_id AS id, lektor, stg_kurzbz, ort_kurzbz, semester, verband, gruppe, gruppe_kurzbz, datum, stunde FROM $stpl_table
WHERE datum=".$this->db_add_param($this->datum)." AND stunde=".$this->db_add_param($this->stunde)." AND (ort_kurzbz=".$this->db_add_param($this->ort_kurzbz)." ";
if (!in_array($this->lektor_uid,unserialize(KOLLISIONSFREIE_USER)))
$sql_query.=" OR (uid=".$this->db_add_param($this->lektor_uid)." AND uid not in (".$this->db_implode4SQL(unserialize(KOLLISIONSFREIE_USER))."))";
//Wenn eine Kollisionspruefung auf Studentenebene durchgefuehrt wird, werden die LVB nicht gecheckt
//Wenn eine Kollisionspruefung auf Studentenebene durchgefuehrt wird, werden die LVB nicht gecheckt
if($kollision_student=='false')
{
$sql_query.=" OR (studiengang_kz=".$this->db_add_param($this->studiengang_kz)." AND semester=".$this->db_add_param($this->sem);
@@ -620,7 +667,7 @@ class lehrstunde extends basis_db
if ($this->grp!=null && $this->grp!='' && $this->grp!=' ')
$sql_query.=" AND (gruppe=".$this->db_add_param($this->grp)." OR gruppe IS NULL OR gruppe='' OR gruppe=' ')";
}
$sql_query.=")";
}
$sql_query.=") AND unr!=".$this->db_add_param($this->unr);
@@ -630,18 +677,18 @@ class lehrstunde extends basis_db
$this->errormsg=$sql_query.$this->db_last_error();
return true;
}
$anz=$this->db_num_rows($erg_stpl);
if ($anz==0)
{
// Zeitsperren pruefen
if($ignore_zeitsperre=='false' && !in_array($this->lektor_uid,unserialize(KOLLISIONSFREIE_USER)) && $this->kollision_zeitsperre())
return true;
// Reservierungen pruefen
if ($ignore_reservierung=='false' && $this->kollision_reservierung())
return true;
if($this->kollision_ressource())
return true;
return false;
@@ -661,9 +708,9 @@ class lehrstunde extends basis_db
*/
public function kollision_ressource()
{
$qry = "SELECT
$qry = "SELECT
tbl_betriebsmittel.beschreibung, tbl_stundenplandev.ort_kurzbz
FROM
FROM
lehre.tbl_stundenplan_betriebsmittel
JOIN lehre.tbl_stundenplandev USING(stundenplandev_id)
JOIN wawi.tbl_betriebsmittel USING(betriebsmittel_id)
@@ -692,7 +739,7 @@ class lehrstunde extends basis_db
*/
public function kollision_zeitsperre()
{
$sql_query="SELECT
$sql_query="SELECT
zeitsperre_id,zeitsperretyp_kurzbz,mitarbeiter_uid AS lektor,vondatum,vonstunde,bisdatum,bisstunde
FROM campus.tbl_zeitsperre
WHERE mitarbeiter_uid=".$this->db_add_param($this->lektor_uid)."
@@ -704,7 +751,7 @@ class lehrstunde extends basis_db
$this->errormsg=$sql_query.$this->db_last_error();
return true;
}
$anz_zs=$this->db_num_rows($erg_zs);
if ($anz_zs!=0)
{
@@ -714,7 +761,7 @@ class lehrstunde extends basis_db
}
return false;
}
/**
* Prueft ob eine LV-Plan Kollision mit den Reservierungen besteht
*
@@ -722,18 +769,18 @@ class lehrstunde extends basis_db
*/
public function kollision_reservierung()
{
$sql_query="SELECT
reservierung_id AS id, uid AS lektor, stg_kurzbz, ort_kurzbz,
$sql_query="SELECT
reservierung_id AS id, uid AS lektor, stg_kurzbz, ort_kurzbz,
semester, verband, gruppe, gruppe_kurzbz, datum, stunde
FROM lehre.vw_reservierung
WHERE
datum=".$this->db_add_param($this->datum)." AND
stunde=".$this->db_add_param($this->stunde)." AND
WHERE
datum=".$this->db_add_param($this->datum)." AND
stunde=".$this->db_add_param($this->stunde)." AND
(ort_kurzbz=".$this->db_add_param($this->ort_kurzbz)." OR ";
if (!in_array($this->lektor_uid, unserialize(KOLLISIONSFREIE_USER)))
$sql_query.="(uid=".$this->db_add_param($this->lektor_uid)." AND uid not in(".$this->db_implode4SQL(unserialize(KOLLISIONSFREIE_USER)).")) OR ";
$sql_query.="(studiengang_kz=".$this->db_add_param($this->studiengang_kz)." AND semester=".$this->db_add_param($this->sem);
if ($this->ver!=null && $this->ver!='' && $this->ver!=' ')
$sql_query.=" AND (verband=".$this->db_add_param($this->ver)." OR verband IS NULL OR verband='' OR verband=' ')";
@@ -742,7 +789,7 @@ class lehrstunde extends basis_db
if ($this->gruppe_kurzbz!=null && $this->gruppe_kurzbz!='' && $this->gruppe_kurzbz!=' ')
$sql_query.=" AND (gruppe_kurzbz=".$this->db_add_param($this->gruppe_kurzbz).")";
$sql_query.="))";
if (!$erg_res = $this->db_query($sql_query))
{
$this->errormsg=$sql_query.$this->db_last_error();
@@ -758,12 +805,12 @@ class lehrstunde extends basis_db
}
return false;
}
/**
* Prueft eine Kollision auf Studentenebene
* Es werden nur die Kollisionen der Studenten abgefragt
* Raum, Lektor, Reservierung, Zeitsperren, etc werden hier nicht geprueft
*
*
* @param $stpl_table
* @return boolean true=kollision, false=keine kollision
*/
@@ -772,53 +819,53 @@ class lehrstunde extends basis_db
// Parameter Checken
// Bezeichnung der Stundenplan-Tabelle
$stpl_table='lehre.'.VIEW_BEGIN.$stpl_table;
$sql_query = "SELECT *
FROM ".$stpl_table."_student_unr
WHERE datum=".$this->db_add_param($this->datum)." AND stunde=".$this->db_add_param($this->stunde)." AND student_uid IN(
SELECT uid FROM public.vw_gruppen WHERE
SELECT uid FROM public.vw_gruppen WHERE
";
$sql_query.="(studiengang_kz=".$this->db_add_param($this->studiengang_kz)." AND semester=".$this->db_add_param($this->sem)."
AND studiensemester_kurzbz=(
SELECT tbl_studiensemester.studiensemester_kurzbz
FROM
FROM
public.tbl_studiensemester
WHERE
WHERE
tbl_studiensemester.ende >= ".$this->db_add_param($this->datum)."
AND tbl_studiensemester.start <=".$this->db_add_param($this->datum)." LIMIT 1)";
if ($this->gruppe_kurzbz!=null && $this->gruppe_kurzbz!='' && $this->gruppe_kurzbz!=' ')
$sql_query.=" AND (gruppe_kurzbz=".$this->db_add_param($this->gruppe_kurzbz).")";
else
else
{
if ($this->ver!=null && $this->ver!='' && $this->ver!=' ')
$sql_query.=" AND (verband=".$this->db_add_param($this->ver).")";
else
else
$sql_query.=" AND (verband IS NULL OR verband='' OR verband=' ')";
if ($this->grp!=null && $this->grp!='' && $this->grp!=' ')
$sql_query.=" AND (gruppe=".$this->db_add_param($this->grp).")";
else
else
$sql_query.=" AND (gruppe IS NULL OR gruppe='' OR gruppe=' ')";
}
$sql_query.=")) AND unr!=".$this->db_add_param($this->unr);
if (!$erg_stpl=$this->db_query($sql_query))
{
$this->errormsg=$sql_query.$this->db_last_error();
return true;
}
$anz=$this->db_num_rows($erg_stpl);
if ($anz>0)
{
$row = $this->db_fetch_object($erg_stpl);
$this->errormsg="Kollision Student ($stpl_table): $row->student_uid $row->datum/$row->stunde ";
return true;
}
else
else
{
return false;
}
@@ -842,10 +889,10 @@ class lehrstunde extends basis_db
- gleiches Datum
- gleiche Stunde
- gleiche UNR
*/
*/
foreach($result as $key=>$row_result)
{
if($row_result->unr==$row_lehrstunde->unr
if($row_result->unr==$row_lehrstunde->unr
&& $row_result->datum==$row_lehrstunde->datum
&& $row_result->stunde==$row_lehrstunde->stunde)
{
@@ -896,15 +943,15 @@ class lehrstunde extends basis_db
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,
$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
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
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)
@@ -912,10 +959,10 @@ class lehrstunde extends basis_db
if($lehrveranstaltung_id!='')
{
$qry.=" lehreinheit_id in(SELECT lehreinheit_id FROM lehre.tbl_lehreinheit
WHERE lehrveranstaltung_id=".$this->db_add_param($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!='')
{
@@ -924,10 +971,10 @@ class lehrstunde extends basis_db
elseif($mitarbeiter_uid!='')
{
$qry.=" mitarbeiter_uid=".$this->db_add_param($mitarbeiter_uid)." AND lehreinheit_id IN(
SELECT
lehreinheit_id
FROM
lehre.tbl_lehreinheitmitarbeiter
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).")";
}
+95 -5
View File
@@ -294,7 +294,7 @@ class lehrveranstaltung extends basis_db
if(!is_null($lehrtyp))
$qry .= " AND lehrtyp_kurzbz=".$this->db_add_param($lehrtyp);
if(!is_null($orgform) && $orgform!='')
$qry .= " AND orgform_kurzbz=".$this->db_add_param($orgform);
@@ -899,7 +899,7 @@ class lehrveranstaltung extends basis_db
$lv_obj->incoming = $row->incoming;
$lv_obj->zeugnis = $this->db_parse_bool($row->zeugnis);
$lv_obj->projektarbeit = $this->db_parse_bool($row->projektarbeit);
$lv_obj->zeugnis = $row->koordinator;
$lv_obj->koordinator = $row->koordinator;
$lv_obj->bezeichnung_english = $row->bezeichnung_english;
$lv_obj->orgform_kurzbz = $row->orgform_kurzbz;
$lv_obj->lehrtyp_kurzbz = $row->lehrtyp_kurzbz;
@@ -1331,6 +1331,7 @@ class lehrveranstaltung extends basis_db
$obj->lehrveranstaltung_id = $lv->lehrveranstaltung_id;
$obj->studiengang_kz = $lv->studiengang_kz;
$obj->bezeichnung = $lv->bezeichnung;
$obj->bezeichnung_english = $lv->bezeichnung_english;
$obj->kurzbz = $lv->kurzbz;
$obj->lehrform_kurzbz = $lv->lehrform_kurzbz;
$obj->semester = $lv->semester;
@@ -1343,6 +1344,16 @@ class lehrveranstaltung extends basis_db
$obj->stpllv_koordinator = $lv->stpllv_koordinator;
$obj->lvnr = $lv->lvnr;
$obj->stpllv_sort = $lv->stpllv_sort;
$obj->oe_kurzbz = $lv->oe_kurzbz;
$obj->sws = $lv->sws;
$obj->alvs = $lv->alvs;
$obj->lvs = $lv->lvs;
$obj->lvps = $lv->lvps;
$obj->las = $lv->las;
$obj->semesterwochen = $lv->semesterwochen;
$obj->orgform_kurzbz = $lv->orgform_kurzbz;
$obj->incoming = $lv->incoming;
$obj->sprache = $lv->sprache;
$obj->children = array();
if(count($lv->childs) > 0)
@@ -1629,6 +1640,7 @@ class lehrveranstaltung extends basis_db
$lv_obj->lvnr = $row->lvnr;
$lv_obj->semester_alternativ = $row->semester_alternativ;
$lv_obj->farbe = $row->farbe;
$lv_obj->oe_kurzbz = $row->oe_kurzbz;
$lv_obj->bezeichnung_arr['German'] = $row->bezeichnung;
$lv_obj->bezeichnung_arr['English'] = $row->bezeichnung_english;
@@ -2195,7 +2207,7 @@ class lehrveranstaltung extends basis_db
}
/**
* Laedt den LV-Leiter einer Lehrveranstaltung, wenn keiner der Lektoren als LVLeiter eingetragen ist,
* Laedt den LV-Leiter einer Lehrveranstaltung, wenn keiner der Lektoren als LVLeiter eingetragen ist,
* wird der erstbeste Lektor geliefert
* @param $lehrveranstaltung_id ID der Lehrveranstaltung
* @param $studiensemester_kurzbz Studiensemester
@@ -2203,10 +2215,10 @@ class lehrveranstaltung extends basis_db
*/
public function getLVLeitung($lehrveranstaltung_id, $studiensemester_kurzbz)
{
$qry = "SELECT
$qry = "SELECT
mitarbeiter_uid,
CASE WHEN lehrfunktion_kurzbz='LV-Leitung' THEN 1 ELSE 2 END as sort
FROM
FROM
lehre.tbl_lehreinheit
JOIN lehre.tbl_lehreinheitmitarbeiter USING(lehreinheit_id)
WHERE
@@ -2232,5 +2244,83 @@ class lehrveranstaltung extends basis_db
return false;
}
}
/**
* Liefert den Koordinator einer Lehrveranstaltung
* @param $lehrveranstaltung_id
* @param $studiensemester_kurzbz
*/
public function getKoordinator($lehrveranstaltung_id, $studiensemester_kurzbz=null)
{
$qry = "
SELECT a.uid, vorname, nachname, titelpre, titelpost
FROM
(
SELECT
koordinator as uid
FROM
lehre.tbl_lehrveranstaltung
WHERE
lehrveranstaltung_id=".$this->db_add_param($lehrveranstaltung_id, FHC_INTEGER)."
UNION
SELECT
uid
FROM
lehre.tbl_lehreinheit
JOIN lehre.tbl_lehrveranstaltung as lehrfach on(tbl_lehreinheit.lehrfach_id = lehrfach.lehrveranstaltung_id)
JOIN public.tbl_fachbereich ON(lehrfach.oe_kurzbz=tbl_fachbereich.oe_kurzbz)
JOIN public.tbl_benutzerfunktion ON(tbl_fachbereich.fachbereich_kurzbz=tbl_benutzerfunktion.fachbereich_kurzbz)
WHERE
tbl_benutzerfunktion.funktion_kurzbz='fbk'
AND (tbl_benutzerfunktion.datum_von is null OR tbl_benutzerfunktion.datum_von<=now())
AND (tbl_benutzerfunktion.datum_bis is null OR tbl_benutzerfunktion.datum_bis>=now())
AND tbl_lehreinheit.lehrveranstaltung_id=".$this->db_add_param($lehrveranstaltung_id, FHC_INTEGER)."
AND tbl_benutzerfunktion.oe_kurzbz=(
SELECT
tbl_studiengang.oe_kurzbz
FROM
lehre.tbl_lehrveranstaltung
JOIN public.tbl_studiengang USING(studiengang_kz)
WHERE lehrveranstaltung_id=".$this->db_add_param($lehrveranstaltung_id, FHC_INTEGER)."
)
AND EXISTS(
SELECT
lehrveranstaltung_id
FROM
lehre.tbl_lehrveranstaltung
WHERE
lehrveranstaltung_id=".$this->db_add_param($lehrveranstaltung_id, FHC_INTEGER)."
AND koordinator is null
)
";
if(!is_null($studiensemester_kurzbz))
$qry.=" AND tbl_lehreinheit.studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz);
$qry.="
) as a
JOIN campus.vw_mitarbeiter ON(a.uid=vw_mitarbeiter.uid)
WHERE vw_mitarbeiter.aktiv";
if($result = $this->db_query($qry))
{
while($row = $this->db_fetch_object($result))
{
$obj = new stdClass();
$obj->uid = $row->uid;
$obj->vorname = $row->vorname;
$obj->nachname = $row->nachname;
$obj->titelpost = $row->titelpost;
$obj->titelpre = $row->titelpre;
$this->result[] = $obj;
}
return true;
}
else
{
$this->errormsg = 'Fehler beim Laden der Daten';
return false;
}
}
}
?>
+12 -9
View File
@@ -17,19 +17,22 @@
*
* Authors: Andreas Moik <moik@technikum-wien.at>
*/
//require_once('/config/vilesci.config.inc.php'); Muss vor dieser Datei eingebunden werden!
//require_once(dirname(__FILE__).'/config/vilesci.config.inc.php'); Muss vor dieser Datei eingebunden werden!
$dr = DOC_ROOT;
$dr = str_replace($_SERVER["DOCUMENT_ROOT"], "", $dr);
//Originaldateien des Herstellers
echo '<link rel="stylesheet" type="text/css" href="'.$dr.'vendor/FHC-vendor/easyui/themes/icon.css">';
echo '<link rel="stylesheet" type="text/css" href="'.$dr.'vendor/FHC-vendor/easyui/themes/gray/easyui.css">';
//Originaldateien des herstellers
echo '<link rel="stylesheet" type="text/css" href="'.APP_ROOT.'vendor/easyui/themes/icon.css">';
echo '<link rel="stylesheet" type="text/css" href="'.APP_ROOT.'vendor/easyui/themes/gray/easyui.css">';
echo '<script src="'.APP_ROOT.'vendor/easyui/jquery.min.js"></script>';
echo '<script src="'.APP_ROOT.'vendor/easyui/jquery.easyui.min.js"></script>';
echo '<script src="'.$dr.'vendor/FHC-vendor/easyui/jquery.min.js"></script>';
echo '<script src="'.$dr.'vendor/FHC-vendor/easyui/jquery.easyui.min.js"></script>';
//Anpassungen
echo '<link rel="stylesheet" type="text/css" href="'.APP_ROOT.'include/vendor_custom/easyui/easyui.css">';
echo '<link rel="stylesheet" type="text/css" href="'.APP_ROOT.'include/vendor_custom/easyui/icon.css">';
echo '<link rel="stylesheet" type="text/css" href="'.$dr.'include/vendor_custom/easyui/easyui.css">';
echo '<link rel="stylesheet" type="text/css" href="'.$dr.'include/vendor_custom/easyui/icon.css">';
?>
+35
View File
@@ -0,0 +1,35 @@
<?php
/* Copyright (C) 2015 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 Moik <moik@technikum-wien.at>
*/
//require_once(dirname(__FILE__).'/config/vilesci.config.inc.php'); Muss vor dieser Datei eingebunden werden!
$dr = DOC_ROOT;
$dr = str_replace($_SERVER["DOCUMENT_ROOT"], "", $dr);
//Originaldateien des Herstellers
echo '<link rel="stylesheet" type="text/css" href="'.$dr.'vendor/FHC-vendor/jquery-tablesorter/css/theme.default.css">';
echo '<script src="'.$dr.'vendor/FHC-vendor/jquery-tablesorter/js/jquery.tablesorter.js"></script>';
//Anpassungen
echo '<link rel="stylesheet" type="text/css" href="'.$dr.'include/vendor_custom/jquery-tablesorter/tablesort.css">';
?>
+29
View File
@@ -0,0 +1,29 @@
<?php
/* Copyright (C) 2015 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 Moik <moik@technikum-wien.at>
*/
//require_once(dirname(__FILE__).'/config/vilesci.config.inc.php'); Muss vor dieser Datei eingebunden werden!
$dr = DOC_ROOT;
$dr = str_replace($_SERVER["DOCUMENT_ROOT"], "", $dr);
//Originaldateien des Herstellers
echo '<script src="'.$dr.'vendor/components/jquery/jquery.min.js"></script>';
?>
+18
View File
@@ -743,4 +743,22 @@ class moodle24_course extends basis_db
return true;
}
/**
* gibt alle LE Ids der Übergebenen Moodle_Course_ID zurück
*/
public function getLeFromCourse($moodle_course_id)
{
$qry = "SELECT lehreinheit_id FROM lehre.tbl_moodle WHERE moodle_version='2.4' AND mdl_course_id =".$this->db_add_param($moodle_course_id, FHC_INTEGER).';';
$le = array();
if($result = $this->db_query($qry))
{
while($row = $this->db_fetch_object())
{
$le[] = $row->lehreinheit_id;
}
}
return $le;
}
}
+52
View File
@@ -447,5 +447,57 @@ class ort extends basis_db
}
return true;
}
/**
* Laedt alle verfuegbaren Orte
* @return true wenn ok, false im Fehlerfall
*/
public function getActive($aktiv=true, $lehre=true, $raumtyp_kurzbz=null)
{
$qry = 'SELECT * FROM public.tbl_ort WHERE aktiv='.$this->db_add_param($aktiv, FHC_BOOLEAN);
if(!is_null($raumtyp_kurzbz) && $raumtyp_kurzbz!='')
{
$qry .= ' AND raumtyp_kurzbz='.$this->db_add_param($raumtyp_kurzbz, FHC_STRING);
}
if(!is_null($lehre))
{
$qry .= ' AND lehre='.$this->db_add_param($lehre, FHC_BOOLEAN);
}
$qry .= ' ORDER BY ort_kurzbz;';
if(!$this->db_query($qry))
{
$this->errormsg = 'Fehler beim Laden der Datensaetze';
return false;
}
while($row = $this->db_fetch_object())
{
$ort_obj = new ort();
$ort_obj->ort_kurzbz = $row->ort_kurzbz;
$ort_obj->bezeichnung = $row->bezeichnung;
$ort_obj->planbezeichnung = $row->planbezeichnung;
$ort_obj->max_person = $row->max_person;
$ort_obj->aktiv = $this->db_parse_bool($row->aktiv);
$ort_obj->lehre = $this->db_parse_bool($row->lehre);
$ort_obj->lageplan = $row->lageplan;
$ort_obj->dislozierung = $row->dislozierung;
$ort_obj->kosten = $row->kosten;
$ort_obj->reservieren = $this->db_parse_bool($row->reservieren);
$ort_obj->ausstattung = $row->ausstattung;
$ort_obj->stockwerk = $row->stockwerk;
$ort_obj->standort_id = $row->standort_id;
$ort_obj->telefonklappe = $row->telefonklappe;
$ort_obj->content_id = $row->content_id;
$ort_obj->m2 = $row->m2;
$ort_obj->oe_kurzbz = $row->oe_kurzbz;
$ort_obj->gebteil = $row->gebteil;
$this->result[] = $ort_obj;
}
return true;
}
}
?>
+13
View File
@@ -416,4 +416,17 @@ class reihungstest extends basis_db
return $obj->anzahl;
}
public function delete($reihungstest_id)
{
$qry = "DELETE from public.tbl_reihungstest WHERE reihungstest_id=".$this->db_add_param($reihungstest_id);
if(!$this->db_query($qry))
{
$this->errormsg = 'Fehler beim Löschen der Daten';
return false;
}
return true;
}
}
+2 -1
View File
@@ -56,7 +56,7 @@ class sprache extends basis_db
*/
public function load($sprache)
{
$qry = "SELECT * FROM public.tbl_sprache WHERE sprache=".$this->db_add_param($sprache, FHC_STRING, false).";";
$qry = "SELECT *,".$this->getSprachQuery('bezeichnung')." FROM public.tbl_sprache WHERE sprache=".$this->db_add_param($sprache, FHC_STRING, false).";";
if($this->db_query($qry))
{
@@ -66,6 +66,7 @@ class sprache extends basis_db
$this->locale = $row->locale;
$this->index = $row->index;
$this->content = $this->db_parse_bool($row->content);
$this->bezeichnung_arr=$this->parseSprachResult('bezeichnung',$row);
return true;
}
else
+1 -1
View File
@@ -373,7 +373,7 @@ class studienordnung extends basis_db
}
//loeschen des Datensatzes
$qry="DELETE FROM public.tbl_studienordnung WHERE studienordnung_id=".$this->db_add_param($studienordnung_id, FHC_INTEGER, false).";";
$qry="DELETE FROM lehre.tbl_studienordnung WHERE studienordnung_id=".$this->db_add_param($studienordnung_id, FHC_INTEGER, false).";";
if($this->db_query($qry))
{
+1 -1
View File
@@ -345,7 +345,7 @@ class studienplan extends basis_db
}
//loeschen des Datensatzes
$qry="DELETE FROM public.tbl_studienplan WHERE studienplan_id=".$this->db_add_param($studienplan_id, FHC_INTEGER, false).";";
$qry="DELETE FROM lehre.tbl_studienplan WHERE studienplan_id=".$this->db_add_param($studienplan_id, FHC_INTEGER, false).";";
if($this->db_query($qry))
{
+121 -68
View File
@@ -37,20 +37,20 @@ class studiensemester extends basis_db
/**
* Konstruktor - Laedt optional ein StSem
*
*
* @param $studiensemester_kurzbz StSem das geladen werden soll (default=null)
*/
public function __construct($studiensemester_kurzbz=null)
{
parent::__construct();
if($studiensemester_kurzbz != null)
$this->load($studiensemester_kurzbz);
}
/**
* Laedt das Studiensemester mit der uebergebenen Kurzbz
*
*
* @param $studiensemester_kurzbz Stsem das geladen werden soll
*/
public function load($studiensemester_kurzbz)
@@ -84,9 +84,9 @@ class studiensemester extends basis_db
/**
* Prueft die Variablen vor dem Speichern
* auf Gueltigkeit.
*
*
* @return true wenn ok, false im Fehlerfall
*/
*/
private function validate()
{
if(mb_strlen($this->studiensemester_kurzbz)>16)
@@ -111,7 +111,7 @@ class studiensemester extends basis_db
* Speichert das Studiensemester in die Datenbank
* Wenn $new auf true gesetzt ist wird ein neuer Datensatz
* angelegt, ansonsten der Datensatz upgedated
*
*
* @return true wenn erfolgreich, false im Fehlerfall
*/
public function save()
@@ -149,7 +149,7 @@ class studiensemester extends basis_db
/**
* Liefert das aktuelle Studiensemester
*
*
* @return aktuelles Studiensemester oder false wenn es keines gibt
*/
public function getakt()
@@ -177,17 +177,17 @@ class studiensemester extends basis_db
/**
* Liefert ein Studiensemester mit Startdatum vom naechstgelegenen Studiensemester und
* dem Startdatum vom folgenden Studiensemester als Endedatum
*
*
* @return boolean
*/
public function getNearestTillNext()
{
if(!$this->getNearest())
return false;
$start=$this->start;
$studiensemester_kurzbz=$this->studiensemester_kurzbz;
if (!$this->getNextFrom($this->studiensemester_kurzbz))
return false;
$ende=$this->start;
@@ -201,7 +201,7 @@ class studiensemester extends basis_db
/**
* Liefert das Aktuelle Studiensemester oder das darauffolgende
*
*
* @param $semester wenn das semester uebergeben wird, dann werden nur die studiensemester
* geliefert die in dieses semester fallen (Bei geradem semester nur SS sonst WS)
* @return Studiensemester oder false wenn es keines gibt
@@ -213,7 +213,7 @@ class studiensemester extends basis_db
else
{
$qry = "SELECT studiensemester_kurzbz FROM public.tbl_studiensemester WHERE true";
if($semester!='')
{
if($semester%2==0)
@@ -245,7 +245,7 @@ class studiensemester extends basis_db
/**
* Liefert das naechstgelegenste Studiensemester
*
*
* @param semester wenn das semester uebergeben wird, dann werden nur die studiensemester
* geliefert die in dieses semester fallen (Bei geradem semester nur SS sonst WS)
* @return Studiensemester oder false wenn es keines gibt
@@ -292,7 +292,7 @@ class studiensemester extends basis_db
public function getAll($order = null)
{
$qry = "SELECT * FROM public.tbl_studiensemester ORDER BY ende";
if($order == "desc")
$qry .= " DESC";
@@ -322,7 +322,7 @@ class studiensemester extends basis_db
/**
* Liefert das naechste Studiensemester
*
*
* @param $art Wenn art=WS dann wird das naechste Wintersemester geliefert
* Wenn art=SS dann wird das naechste Sommersemester geliefert
* @return true wenn ok, false wenn kein entsprechendes vorhanden ist
@@ -356,10 +356,10 @@ class studiensemester extends basis_db
return true;
}
/**
* Liefert die naechsten Studiensemester bis zum eingestellten Limit
*
*
* @param $art Wenn art=WS dann wird das naechste Wintersemester geliefert
* Wenn art=SS dann wird das naechste Sommersemester geliefert
* $limit Wie viele kommende Studiensemester sollen geliefert werden?
@@ -374,10 +374,10 @@ class studiensemester extends basis_db
$qry.= " AND substring(studiensemester_kurzbz from 1 for 2)=".$this->db_add_param($art);
$qry.=" ORDER BY start";
if(!is_null($limit) && is_numeric($limit))
$qry.=" LIMIT ".$limit;
else
else
$qry.=" LIMIT 1";
if($this->db_query($qry))
@@ -385,17 +385,17 @@ class studiensemester extends basis_db
while($row = $this->db_fetch_object())
{
$stsem_obj = new studiensemester();
$stsem_obj->studiensemester_kurzbz = $row->studiensemester_kurzbz;
$stsem_obj->start = $row->start;
$stsem_obj->ende = $row->ende;
$stsem_obj->bezeichnung = $row->bezeichnung;
$this->studiensemester[] = $stsem_obj;
}
return true;
}
else
else
{
$this->errormsg = 'Fehler beim Lesen des Studiensemesters';
return false;
@@ -404,7 +404,7 @@ class studiensemester extends basis_db
/**
* Liefert das vorige Studiensemester
*
*
* @return studiensemester_kurzbz oder false wenn keines vorhanden
*/
public function getPrevious()
@@ -429,10 +429,10 @@ class studiensemester extends basis_db
return false;
}
}
/**
* Liefert das vorvorige Studiensemester
*
*
* @return studiensemester_kurzbz oder false wenn keines vorhanden
*/
public function getBeforePrevious()
@@ -468,7 +468,7 @@ class studiensemester extends basis_db
/**
* Liefert das Studiensemester vor $studiensemester_kurzbz
*
*
* @param $studiensemester_kurzbz
* @return $studiensemester_kurzbz oder false wenn Fehler
*/
@@ -500,7 +500,7 @@ class studiensemester extends basis_db
/**
* Liefert das Studiensemester nach $studiensemester_kurzbz
*
*
* @param $studiensemester_kurzbz
* @return $studiensemester_kurzbz oder false wenn Fehler
*/
@@ -535,7 +535,7 @@ class studiensemester extends basis_db
/**
* Liefert das Studiensemester das aktuell am naehesten zu $studiensemester_kurzbz liegt
*
*
* @param $studiensemester_kurzbz
* @return $studiensemester_kurzbz oder false wenn Fehler
*/
@@ -569,7 +569,7 @@ class studiensemester extends basis_db
/**
* Springt von Studiensemester $studiensemester_kurzbz um $wert Studiensemester vor/zurueck
*
*
* @param $studiensemester_kurzbz
* @param $wert
* @return studiensemester_kurzbz
@@ -616,13 +616,13 @@ class studiensemester extends basis_db
else
return $studiensemester_kurzbz;
}
else
else
{
$this->errormsg='Fehler bei einer Abfrage';
return false;
}
}
/**
* Laedt die vergangenen Studiensemester und das aktuelle
*
@@ -655,12 +655,12 @@ class studiensemester extends basis_db
return false;
}
}
/**
* Liefert $days (Default 60) Tage nach dem start des neuen Semesters noch das vorherige Studiensemester
* Liefert $days (Default 60) Tage nach dem start des neuen Semesters noch das vorherige Studiensemester
* zurueck, danach das aktuelle.
*
*
*
*
* @return studiensemester_kurzbz oder false wenn keines vorhanden
*/
public function getLastOrAktSemester($days=60)
@@ -685,12 +685,12 @@ class studiensemester extends basis_db
return false;
}
}
/**
* Liefert $days (Default 60) Tage nach dem start des neuen Semesters noch das vorherige Studiensemester
* Liefert $days (Default 60) Tage nach dem start des neuen Semesters noch das vorherige Studiensemester
* zurueck, danach das aktuelle.
*
*
*
*
* @return studiensemester_kurzbz oder false wenn keines vorhanden
*/
public function getNextOrAktSemester($days=60)
@@ -717,7 +717,7 @@ class studiensemester extends basis_db
}
/**
* Liefert den UNIX Timestamp (Beginn,Ende) eines Studiensemesters
*
*
* @param $studiensemester_kurzbz
* @return Beginn und Ende eines Studiensemesters als Timestamp
*/
@@ -729,7 +729,7 @@ class studiensemester extends basis_db
if($this->db_query($qry))
{
if($row = $this->db_fetch_object())
{
{
if(!isset($this->begin))
$this->begin=new stdclass();
$this->begin->start=mktime(0,0,0,mb_substr($row->start,5,2),mb_substr($row->start,8,2),mb_substr($row->start,0,4));
@@ -749,42 +749,45 @@ class studiensemester extends basis_db
$this->errormsg = 'Fehler beim Ermitteln des Studiensemesters';
return false;
}
}
}
/**
* untersucht das uebergebene datum in welchem semester es sich befindet
* @param type $datum
* @return boolean
* @return boolean
*/
public function getSemesterFromDatum($datum)
public function getSemesterFromDatum($datum, $next=null)
{
if($datum == '')
{
$this->errormsg = "Ungueltiges Datum uebergeben";
return false;
$this->errormsg = "Ungueltiges Datum uebergeben";
return false;
}
$qry = "SELECT * FROM public.tbl_studiensemester WHERE start <=".$this->db_add_param($datum, FHC_STRING)." AND ende >= ".$this->db_add_param($datum).';';
if(is_null($next))
$qry = "SELECT * FROM public.tbl_studiensemester WHERE start <=".$this->db_add_param($datum, FHC_STRING)." AND ende >= ".$this->db_add_param($datum).';';
else
$qry = "SELECT * FROM public.tbl_studiensemester WHERE start <=".$this->db_add_param($datum, FHC_STRING)." ORDER BY start desc limit 1;";
if($result = $this->db_query($qry))
{
if($row = $this->db_fetch_object())
{
return $row->studiensemester_kurzbz;
return $row->studiensemester_kurzbz;
}
else
{
$this->errormsg = "Es wurde kein passendes Studiensemester gefunden";
return false;
$this->errormsg = "Es wurde kein passendes Studiensemester gefunden";
return false;
}
}
else
{
$this->errormsg = "Fehler bei der Abfrage aufgetreten.";
return false;
$this->errormsg = "Fehler bei der Abfrage aufgetreten.";
return false;
}
}
/**
* Liefert das dazupassende Studiensemester im Studienjahr
* Liefert das dazupassende Studiensemester im Studienjahr
* @param $studiensemester_kurzbz
* @return $studiensemester_kurzbz
*/
@@ -798,39 +801,39 @@ class studiensemester extends basis_db
/**
* Laedt die Studiensemester die fuer die Onlinebewerbung aktiviert sind
*
*
* @return true wenn ok, sonst false
*/
public function getStudiensemesterOnlinebewerbung()
{
$qry = "SELECT * FROM public.tbl_studiensemester WHERE onlinebewerbung=true
ORDER BY start";
if($this->db_query($qry))
{
while($row = $this->db_fetch_object())
{
$stsem_obj = new studiensemester();
$stsem_obj->studiensemester_kurzbz = $row->studiensemester_kurzbz;
$stsem_obj->start = $row->start;
$stsem_obj->ende = $row->ende;
$stsem_obj->bezeichnung = $row->bezeichnung;
$this->studiensemester[] = $stsem_obj;
}
return true;
}
else
else
{
$this->errormsg = 'Fehler beim Lesen des Studiensemesters';
return false;
}
}
/**
* Liefert ausgehend von heutigen Datum $plus studiensemester in die Zukunft und $minus Studiensemester in die Vergangenheit
*
*
* @param integer $plus Wieviele Studiensemester in die Zukunft sollen ausgegeben werden.
* @param integer $minus Wieviele Studiensemester in die Vergangenheit sollen ausgegeben werden.
*
@@ -840,30 +843,30 @@ class studiensemester extends basis_db
{
if((is_null($plus) || !is_numeric($plus)) || (is_null($minus) || !is_numeric($minus)))
return false;
$qry = "SELECT DISTINCT * FROM public.tbl_studiensemester WHERE studiensemester_kurzbz IN
(
(SELECT studiensemester_kurzbz FROM public.tbl_studiensemester WHERE start >= now()
ORDER BY ende ASC LIMIT $plus)
ORDER BY ende ASC LIMIT $plus)
UNION
(SELECT studiensemester_kurzbz FROM public.tbl_studiensemester WHERE start <= now()
ORDER BY start DESC LIMIT $minus)
)
ORDER BY ende DESC";
if($this->db_query($qry))
{
while($row = $this->db_fetch_object())
{
$stsem_obj = new studiensemester();
$stsem_obj->studiensemester_kurzbz = $row->studiensemester_kurzbz;
$stsem_obj->start = $row->start;
$stsem_obj->ende = $row->ende;
$stsem_obj->bezeichnung = $row->bezeichnung;
$stsem_obj->studienjahr_kurzbz = $row->studienjahr_kurzbz;
$stsem_obj->beschreibung = $row->beschreibung;
$this->studiensemester[] = $stsem_obj;
}
return true;
@@ -875,5 +878,55 @@ class studiensemester extends basis_db
}
}
/**
* Liefert das Studiensemester das am naehesten zu einem Datum in einem
* Studiensemester liegt
*
* @param $studiensemester_kurzbz
* @param $datum
* @return $studiensemester_kurzbz oder false wenn Fehler
*/
public function getNearestTo($studiensemester_kurzbz, $datum)
{
$qry = "SELECT * FROM
(
SELECT tbl_studiensemester.studiensemester_kurzbz,
tbl_studiensemester.start,
tbl_studiensemester.ende,
tbl_studiensemester.ext_id,
@ (tbl_studiensemester.start - ".$this->db_add_param($datum)."::date) AS delta
FROM tbl_studiensemester
UNION
SELECT tbl_studiensemester.studiensemester_kurzbz,
tbl_studiensemester.start,
tbl_studiensemester.ende,
tbl_studiensemester.ext_id,
@ (".$this->db_add_param($datum)."::date - tbl_studiensemester.ende) AS delta
FROM tbl_studiensemester
) a
WHERE a.studiensemester_kurzbz!=".$this->db_add_param($studiensemester_kurzbz)."
ORDER BY delta LIMIT 1";
if($this->db_query($qry))
{
if($row = $this->db_fetch_object())
{
$this->studiensemester_kurzbz = $row->studiensemester_kurzbz;
$this->start = $row->start;
$this->ende = $row->ende;
return $row->studiensemester_kurzbz;
}
else
{
$this->errormsg = 'Es wurde kein folgendes Studiensemester gefunden';
return false;
}
}
else
{
$this->errormsg = 'Fehler beim Ermitteln des folgenden Studiensemesters';
return false;
}
}
}
?>
@@ -0,0 +1,44 @@
/* tables */
table.tablesorter {
font-family:arial;
/*background-color: white;*/
margin:10px 0pt 15px;
font-size: 8pt;
width: 100%;
text-align: left;
}
table.tablesorter thead tr th, table.tablesorter tfoot tr th {
background:#DCE4EF;
border: 1px solid #FFF;
font-size: 8pt;
padding: 4px;
}
table.tablesorter thead tr .header {
background-image: url(../../../skin/images/bg_sort.gif);
background-repeat: no-repeat;
background-position: center left;
padding-left: 20px;
cursor: pointer;
}
table.tablesorter tbody td {
padding: 4px;
background-color: #EEEEEE;
vertical-align: top;
}
table.tablesorter tbody tr.odd td {
background-color:lightgray;
}
table.tablesorter thead tr .headerSortUp {
background-image: url(../../../skin/images/asc.gif);
}
table.tablesorter thead tr .headerSortDown {
background-image: url(../../../skin/images/desc.gif);
}
table.tablesorter thead tr .headerSortDown, table.tablesorter thead tr .headerSortUp {
background-color: #8dbdd8;
}
TD,TH
{
font-size: 9pt;
}
+8 -1
View File
@@ -638,7 +638,14 @@ class wochenplan extends basis_db
// Formularbeginn wenn Lektor
if ($raumres && $this->type=='ort')
echo '<form name="reserve" method="post" action="stpl_week.php">'.$this->crlf;
{
$ort = new ort();
$ort->load($this->ort_kurzbz);
if($ort->reservieren)
echo '<form name="reserve" method="post" action="stpl_week.php">'.$this->crlf;
else
$raumres=false;
}
//Tabelle zeichnen
echo ' <table class="stdplan" width="100%" border="0" cellpadding="1" cellspacing="1" name="Stundenplantabelle" align="center">'.$this->crlf;