mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-07-20 16:32:20 +00:00
merge
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
?>
|
||||
|
||||
@@ -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))
|
||||
{
|
||||
|
||||
@@ -0,0 +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();
|
||||
}
|
||||
}
|
||||
?>
|
||||
+128
-96
@@ -36,7 +36,7 @@ class frage extends basis_db
|
||||
public $demo;
|
||||
public $level;
|
||||
public $kategorie_kurzbz;
|
||||
|
||||
|
||||
public $sprache;
|
||||
public $audio;
|
||||
public $text;
|
||||
@@ -45,12 +45,12 @@ class frage extends basis_db
|
||||
public $prueflingfrage_id;
|
||||
public $begintime;
|
||||
public $endtime;
|
||||
|
||||
|
||||
public $insertamum;
|
||||
public $updateamum;
|
||||
public $insertvon;
|
||||
public $updatevon;
|
||||
|
||||
|
||||
// ErgebnisArray
|
||||
public $result=array();
|
||||
public $num_rows=0;
|
||||
@@ -63,7 +63,7 @@ class frage extends basis_db
|
||||
public function __construct($frage_id=null)
|
||||
{
|
||||
parent::__construct();
|
||||
|
||||
|
||||
if(!is_null($frage_id))
|
||||
$this->load($frage_id);
|
||||
}
|
||||
@@ -73,13 +73,13 @@ class frage extends basis_db
|
||||
* @param $frage_id ID der Frage die geladen werden soll
|
||||
*/
|
||||
public function load($frage_id)
|
||||
{
|
||||
{
|
||||
if(!is_numeric($frage_id) || $frage_id=='')
|
||||
{
|
||||
$this->errormsg = 'Frage_id ist ungueltig';
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
$qry = "SELECT * FROM testtool.tbl_frage WHERE frage_id=".$this->db_add_param($frage_id, FHC_INTEGER);
|
||||
|
||||
if($this->db_query($qry))
|
||||
@@ -96,7 +96,7 @@ class frage extends basis_db
|
||||
$this->insertamum = $row->insertamum;
|
||||
$this->insertvon = $row->insertvon;
|
||||
$this->level = $row->level;
|
||||
|
||||
|
||||
return true;
|
||||
}
|
||||
else
|
||||
@@ -136,7 +136,7 @@ class frage extends basis_db
|
||||
|
||||
if($this->new) //Wenn new true ist dann ein INSERT absetzen ansonsten ein UPDATE
|
||||
{
|
||||
$qry = 'BEGIN;INSERT INTO testtool.tbl_frage (kategorie_kurzbz, gebiet_id, level, nummer, demo,
|
||||
$qry = 'BEGIN;INSERT INTO testtool.tbl_frage (kategorie_kurzbz, gebiet_id, level, nummer, demo,
|
||||
insertamum, insertvon, updateamum, updatevon) VALUES('.
|
||||
$this->db_add_param($this->kategorie_kurzbz).','.
|
||||
$this->db_add_param($this->gebiet_id, FHC_INTEGER).','.
|
||||
@@ -159,7 +159,7 @@ class frage extends basis_db
|
||||
' updatevon='.$this->db_add_param($this->updatevon).
|
||||
" WHERE frage_id=".$this->db_add_param($this->frage_id, FHC_INTEGER, false).";";
|
||||
}
|
||||
|
||||
|
||||
if($this->db_query($qry))
|
||||
{
|
||||
if($this->new)
|
||||
@@ -173,21 +173,21 @@ class frage extends basis_db
|
||||
$this->db_query('COMMIT');
|
||||
return true;
|
||||
}
|
||||
else
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler beim Lesen der Sequence';
|
||||
$this->db_query('ROLLBACK');
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler beim Lesen der Sequence';
|
||||
$this->db_query('ROLLBACK');
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else
|
||||
else
|
||||
{
|
||||
return true;
|
||||
}
|
||||
@@ -229,7 +229,7 @@ class frage extends basis_db
|
||||
' updatevon='.$this->db_add_param($this->updatevon).
|
||||
" WHERE frage_id=".$this->db_add_param($this->frage_id, FHC_INTEGER, false)." AND sprache=".$this->db_add_param($this->sprache).";";
|
||||
}
|
||||
|
||||
|
||||
if($this->db_query($qry))
|
||||
{
|
||||
return true;
|
||||
@@ -250,7 +250,7 @@ class frage extends basis_db
|
||||
*/
|
||||
public function getFragen($gebiet_id, $nummer)
|
||||
{
|
||||
$qry = "SELECT * FROM testtool.tbl_frage
|
||||
$qry = "SELECT * FROM testtool.tbl_frage
|
||||
WHERE gebiet_id=".$this->db_add_param($gebiet_id, FHC_INTEGER)." AND nummer=".$this->db_add_param($nummer);
|
||||
|
||||
if($this->db_query($qry))
|
||||
@@ -258,18 +258,18 @@ class frage extends basis_db
|
||||
while($row = $this->db_fetch_object())
|
||||
{
|
||||
$obj = new frage();
|
||||
|
||||
|
||||
$obj->frage_id = $row->frage_id;
|
||||
$obj->kategorie_kurzbz = $row->kategorie_kurzbz;
|
||||
$obj->gebiet_id = $row->gebiet_id;
|
||||
$obj->level = $row->level;
|
||||
$obj->nummer = $row->nummer;
|
||||
$obj->demo = $this->db_parse_bool($row->demo);
|
||||
|
||||
|
||||
$this->result[] = $obj;
|
||||
}
|
||||
|
||||
return true;
|
||||
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -277,7 +277,7 @@ class frage extends basis_db
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Liefert die Fragen eines Gebietes
|
||||
*
|
||||
@@ -286,7 +286,7 @@ class frage extends basis_db
|
||||
*/
|
||||
public function getFragenGebiet($gebiet_id)
|
||||
{
|
||||
$qry = "SELECT * FROM testtool.tbl_frage
|
||||
$qry = "SELECT * FROM testtool.tbl_frage
|
||||
WHERE gebiet_id=".$this->db_add_param($gebiet_id, FHC_INTEGER)." ORDER BY nummer";
|
||||
|
||||
if($this->db_query($qry))
|
||||
@@ -294,18 +294,18 @@ class frage extends basis_db
|
||||
while($row = $this->db_fetch_object())
|
||||
{
|
||||
$obj = new frage();
|
||||
|
||||
|
||||
$obj->frage_id = $row->frage_id;
|
||||
$obj->kategorie_kurzbz = $row->kategorie_kurzbz;
|
||||
$obj->gebiet_id = $row->gebiet_id;
|
||||
$obj->level = $row->level;
|
||||
$obj->nummer = $row->nummer;
|
||||
$obj->demo = $this->db_parse_bool($row->demo);
|
||||
|
||||
|
||||
$this->result[] = $obj;
|
||||
}
|
||||
|
||||
return true;
|
||||
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -328,26 +328,26 @@ class frage extends basis_db
|
||||
{
|
||||
if($demo)
|
||||
{
|
||||
$qry = "SELECT frage_id FROM testtool.tbl_frage
|
||||
WHERE tbl_frage.gebiet_id=".$this->db_add_param($gebiet_id, FHC_INTEGER)."
|
||||
$qry = "SELECT frage_id FROM testtool.tbl_frage
|
||||
WHERE tbl_frage.gebiet_id=".$this->db_add_param($gebiet_id, FHC_INTEGER)."
|
||||
AND demo ";
|
||||
if(!is_null($frage_id))
|
||||
$qry.=" AND nummer<(SELECT nummer FROM testtool.tbl_frage WHERE frage_id=".$this->db_add_param($frage_id, FHC_INTEGER).")";
|
||||
$qry .= " ORDER BY nummer DESC LIMIT 1";
|
||||
}
|
||||
else
|
||||
else
|
||||
{
|
||||
$qry = "SELECT frage_id FROM testtool.tbl_pruefling_frage JOIN testtool.tbl_frage USING(frage_id)
|
||||
WHERE
|
||||
tbl_frage.gebiet_id=".$this->db_add_param($gebiet_id, FHC_INTEGER)." AND
|
||||
$qry = "SELECT frage_id FROM testtool.tbl_pruefling_frage JOIN testtool.tbl_frage USING(frage_id)
|
||||
WHERE
|
||||
tbl_frage.gebiet_id=".$this->db_add_param($gebiet_id, FHC_INTEGER)." AND
|
||||
tbl_pruefling_frage.pruefling_id=".$this->db_add_param($pruefling_id, FHC_INTEGER)." AND
|
||||
NOT demo ";
|
||||
|
||||
|
||||
if(!is_null($frage_id))
|
||||
$qry.=" AND tbl_pruefling_frage.nummer>(SELECT nummer FROM testtool.tbl_pruefling_frage WHERE pruefling_id=".$this->db_add_param($pruefling_id, FHC_INTEGER)." AND frage_id=".$this->db_add_param($frage_id, FHC_INTEGER)." LIMIT 1)";
|
||||
elseif(is_null($frage_id) && $levelgebiet)
|
||||
$qry.=" AND tbl_pruefling_frage.endtime is null ";
|
||||
|
||||
|
||||
$qry.="ORDER BY tbl_pruefling_frage.nummer ASC LIMIT 1";
|
||||
}
|
||||
|
||||
@@ -361,7 +361,7 @@ class frage extends basis_db
|
||||
else
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Laedt die Frage in der angegebenen Sprache
|
||||
*
|
||||
@@ -373,7 +373,7 @@ class frage extends basis_db
|
||||
{
|
||||
$qry = "SELECT * FROM testtool.tbl_frage_sprache JOIN testtool.tbl_frage USING(frage_id)
|
||||
WHERE frage_id=".$this->db_add_param($frage_id, FHC_INTEGER)." AND sprache=".$this->db_add_param($sprache);
|
||||
|
||||
|
||||
if($this->db_query($qry))
|
||||
{
|
||||
if($row = $this->db_fetch_object())
|
||||
@@ -387,26 +387,26 @@ class frage extends basis_db
|
||||
$this->insertvon = $row->insertvon;
|
||||
$this->updateamum = $row->updateamum;
|
||||
$this->updatevon = $row->updatevon;
|
||||
|
||||
|
||||
$this->level = $row->level;
|
||||
$this->demo = $this->db_parse_bool($row->demo);
|
||||
$this->nummer = $row->nummer;
|
||||
|
||||
|
||||
return true;
|
||||
}
|
||||
else
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler beim Laden der Frage';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler beim Laden der Frage';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Liefert das naechste Level zu dem noch Fragen fehlen
|
||||
*
|
||||
@@ -420,10 +420,10 @@ class frage extends basis_db
|
||||
if($row>0)
|
||||
return $key;
|
||||
}
|
||||
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Generiert den Fragenpool fuer den Pruefling bzw
|
||||
* die naechste Frage bei gelevelten Gebieten
|
||||
@@ -434,7 +434,7 @@ class frage extends basis_db
|
||||
public function generateFragenpool($pruefling_id, $gebiet_id)
|
||||
{
|
||||
$gebiet = new gebiet($gebiet_id);
|
||||
|
||||
|
||||
//Bei Levelgesteuerten Fragen wird nur die erste Frage angelegt
|
||||
if($gebiet->level_start!='')
|
||||
{
|
||||
@@ -454,10 +454,10 @@ class frage extends basis_db
|
||||
}
|
||||
$maxfragen=1;
|
||||
}
|
||||
else
|
||||
else
|
||||
{
|
||||
$maxfragen = $gebiet->maxfragen;
|
||||
|
||||
|
||||
// Wie viele Fragen gibt es in diesem Gebiet
|
||||
$qry = "SELECT count(*) as anzahl FROM testtool.tbl_frage WHERE NOT demo AND gebiet_id=".$this->db_add_param($gebiet_id, FHC_INTEGER);
|
||||
if($this->db_query($qry))
|
||||
@@ -467,23 +467,23 @@ class frage extends basis_db
|
||||
$fragengesamt = $row->anzahl;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Wenn im Gebiet keine Maximalzahl angegeben ist, dann kommen alle Fragen in den Pool
|
||||
if($maxfragen=='')
|
||||
{
|
||||
$maxfragen = $fragengesamt;
|
||||
}
|
||||
|
||||
|
||||
$level = array();
|
||||
|
||||
|
||||
// Bei Levelgleichverteilung die Anzahl der Fragen pro level ermitteln
|
||||
if($gebiet->levelgleichverteilung)
|
||||
{
|
||||
$qry = "SELECT level, count(*) as anzahl FROM testtool.tbl_frage
|
||||
$qry = "SELECT level, count(*) as anzahl FROM testtool.tbl_frage
|
||||
WHERE NOT demo AND gebiet_id=".$this->db_add_param($gebiet_id, FHC_INTEGER)."
|
||||
GROUP BY level
|
||||
ORDER BY level";
|
||||
|
||||
|
||||
if($this->db_query($qry))
|
||||
{
|
||||
while($row = $this->db_fetch_object())
|
||||
@@ -491,7 +491,7 @@ class frage extends basis_db
|
||||
$level[$row->level]=round(($row->anzahl/$fragengesamt)*$maxfragen);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Von jedem Gebiet muss mindestens eine Frage kommen
|
||||
foreach ($level as $key=>$row)
|
||||
{
|
||||
@@ -502,9 +502,9 @@ class frage extends basis_db
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$this->db_query('BEGIN;');
|
||||
|
||||
|
||||
while($maxfragen>0)
|
||||
{
|
||||
//Bei levelgleichverteilung das Level der naechsten Frage holen
|
||||
@@ -518,20 +518,20 @@ class frage extends basis_db
|
||||
{
|
||||
$nextlevel=null;
|
||||
}
|
||||
|
||||
|
||||
$this->frage_id=$this->getNewFrage($gebiet_id, $pruefling_id, $nextlevel);
|
||||
|
||||
|
||||
if($this->frage_id=='')
|
||||
break;
|
||||
|
||||
|
||||
$this->pruefling_id=$pruefling_id;
|
||||
|
||||
|
||||
//hoechste Nummer holen
|
||||
$qry = "SELECT
|
||||
$qry = "SELECT
|
||||
tbl_pruefling_frage.nummer
|
||||
FROM
|
||||
testtool.tbl_pruefling_frage JOIN testtool.tbl_frage USING(frage_id)
|
||||
WHERE
|
||||
WHERE
|
||||
tbl_frage.gebiet_id=".$this->db_add_param($gebiet_id, FHC_INTEGER)." AND
|
||||
tbl_pruefling_frage.pruefling_id=".$this->db_add_param($pruefling_id, FHC_INTEGER)."
|
||||
ORDER BY nummer DESC LIMIT 1;";
|
||||
@@ -539,7 +539,7 @@ class frage extends basis_db
|
||||
{
|
||||
if($row = $this->db_fetch_object())
|
||||
$this->nummer = $row->nummer+1;
|
||||
else
|
||||
else
|
||||
$this->nummer = 1;
|
||||
}
|
||||
else
|
||||
@@ -548,7 +548,7 @@ class frage extends basis_db
|
||||
$this->db_query('ROLLBACK');
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
$this->begintime='';
|
||||
$this->endtime='';
|
||||
|
||||
@@ -558,14 +558,14 @@ class frage extends basis_db
|
||||
$this->db_query('ROLLBACK');
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
$maxfragen--;
|
||||
}
|
||||
|
||||
$this->db_query('COMMIT;');
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Laedt eine Prueflingfrage
|
||||
*
|
||||
@@ -579,7 +579,7 @@ class frage extends basis_db
|
||||
$this->errormsg = 'prueflingfrage_id ist ungueltig';
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
$qry = "SELECT * FROM testtool.tbl_pruefling_frage WHERE prueflingfrage_id=".$this->db_add_param($prueflingfrage_id, FHC_INTEGER);
|
||||
if($this->db_query($qry))
|
||||
{
|
||||
@@ -591,22 +591,22 @@ class frage extends basis_db
|
||||
$this->nummer = $row->nummer;
|
||||
$this->begintime = $row->begintime;
|
||||
$this->endtime = $row->endtime;
|
||||
|
||||
|
||||
return true;
|
||||
}
|
||||
else
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Es wurde keine PrueflingFrage mit der uebergebenen ID gefunden';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler beim Laden der PrueflingFrage';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Laedt eine Prueflingfrage
|
||||
*
|
||||
@@ -621,15 +621,15 @@ class frage extends basis_db
|
||||
$this->errormsg = 'Pruefling_id ist ungueltig';
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
if(!is_numeric($frage_id) || $frage_id=='')
|
||||
{
|
||||
$this->errormsg = 'Frage_id ist ungueltig';
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
$qry = "SELECT * FROM testtool.tbl_pruefling_frage WHERE pruefling_id=".$this->db_add_param($pruefling_id, FHC_INTEGER)." AND frage_id=".$this->db_add_param($frage_id, FHC_INTEGER);
|
||||
|
||||
|
||||
if($this->db_query($qry))
|
||||
{
|
||||
if($row = $this->db_fetch_object())
|
||||
@@ -640,21 +640,21 @@ class frage extends basis_db
|
||||
$this->nummer = $row->nummer;
|
||||
$this->begintime = $row->begintime;
|
||||
$this->endtime = $row->endtime;
|
||||
|
||||
|
||||
return true;
|
||||
}
|
||||
else
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler beim Laden der PrueflingFrage';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Prueft die Daten vor dem Speichern in die Tabelle tbl_pruefling_frage
|
||||
*
|
||||
@@ -666,13 +666,13 @@ class frage extends basis_db
|
||||
$this->errormsg = 'Pruefling_id ist ungueltig';
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
if(!is_numeric($this->frage_id) || $this->frage_id=='')
|
||||
{
|
||||
$this->errormsg = 'Frage_id ist ungueltig';
|
||||
return false;
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
if(!is_numeric($this->nummer))
|
||||
{
|
||||
$this->errormsg = 'Nummer ist ungueltig';
|
||||
@@ -680,7 +680,7 @@ class frage extends basis_db
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Speichert einen Eintrag in der Tabelle tbl_pruefling_frage
|
||||
*
|
||||
@@ -695,7 +695,7 @@ class frage extends basis_db
|
||||
|
||||
if(is_null($new))
|
||||
$new = $this->new;
|
||||
|
||||
|
||||
if($new)
|
||||
{
|
||||
$qry = 'INSERT INTO testtool.tbl_pruefling_frage(pruefling_id, frage_id, nummer, begintime, endtime) VALUES('.
|
||||
@@ -705,7 +705,7 @@ class frage extends basis_db
|
||||
$this->db_add_param($this->begintime).','.
|
||||
$this->db_add_param($this->endtime).');';
|
||||
}
|
||||
else
|
||||
else
|
||||
{
|
||||
$qry = 'UPDATE testtool.tbl_pruefling_frage SET'.
|
||||
' pruefling_id='.$this->db_add_param($this->pruefling_id, FHC_INTEGER).','.
|
||||
@@ -715,18 +715,18 @@ class frage extends basis_db
|
||||
' endtime='.$this->db_add_param($this->endtime).
|
||||
" WHERE prueflingfrage_id=".$this->db_add_param($this->prueflingfrage_id, FHC_INTEGER, false);
|
||||
}
|
||||
|
||||
|
||||
if($this->db_query($qry))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
else
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler beim Speichern in tbl_pruefling_frage';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Sucht eine neue Frage fuer einen Pruefling
|
||||
*
|
||||
@@ -738,35 +738,35 @@ class frage extends basis_db
|
||||
{
|
||||
$gebiet = new gebiet($gebiet_id);
|
||||
$pruefling = new pruefling();
|
||||
|
||||
|
||||
|
||||
|
||||
//Frage suchen die dem pruefling noch nicht zugeordnet ist
|
||||
$qry = "SELECT frage_id FROM testtool.tbl_frage
|
||||
WHERE gebiet_id=".$this->db_add_param($gebiet_id, FHC_INTEGER)." AND
|
||||
frage_id NOT IN (SELECT frage_id FROM testtool.tbl_pruefling_frage
|
||||
$qry = "SELECT frage_id FROM testtool.tbl_frage
|
||||
WHERE gebiet_id=".$this->db_add_param($gebiet_id, FHC_INTEGER)." AND
|
||||
frage_id NOT IN (SELECT frage_id FROM testtool.tbl_pruefling_frage
|
||||
WHERE pruefling_id=".$this->db_add_param($pruefling_id, FHC_INTEGER, false)."
|
||||
)
|
||||
AND NOT demo";
|
||||
|
||||
|
||||
// Wenn die Frage abhaengig vom level sein soll, dann den aktuellen Level ermitteln und dazuhaengen
|
||||
if($gebiet->level_start!='')
|
||||
{
|
||||
$level2 = $pruefling->getPrueflingLevel($pruefling_id, $gebiet_id);
|
||||
$level2 = $pruefling->getPrueflingLevel($pruefling_id, $gebiet_id);
|
||||
$qry.=" AND level=".$this->db_add_param($level2);
|
||||
}
|
||||
|
||||
|
||||
// Bei Levelgleichverteilung wird der Level mituebergeben
|
||||
if(!is_null($level))
|
||||
{
|
||||
$qry.=" AND level=".$this->db_add_param($level);
|
||||
}
|
||||
|
||||
|
||||
//Sortierung
|
||||
if($gebiet->zufallfrage)
|
||||
$qry .= " ORDER BY random()";
|
||||
else
|
||||
else
|
||||
$qry .= " ORDER BY nummer ASC";
|
||||
|
||||
|
||||
$qry .= " LIMIT 1";
|
||||
|
||||
if($this->db_query($qry))
|
||||
@@ -775,17 +775,49 @@ class frage extends basis_db
|
||||
{
|
||||
return $row->frage_id;
|
||||
}
|
||||
else
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Es gibt keine Fragen die den Kriterien entsprechen';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler beim Holen der Frage';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public function delete($frage_id)
|
||||
{
|
||||
$qry = "SELECT * FROM
|
||||
testtool.tbl_antwort
|
||||
JOIN testtool.tbl_vorschlag USING(vorschlag_id)
|
||||
WHERE tbl_vorschlag.frage_id=".$this->db_add_param($frage_id, FHC_INTEGER);
|
||||
if($result = $this->db_query($qry))
|
||||
{
|
||||
if($this->db_num_rows($result)>0)
|
||||
{
|
||||
$this->errormsg = 'Frage kann nicht gelöscht werden da bereits Antworten vorhanden sind';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
$qry = "
|
||||
DELETE FROM testtool.tbl_vorschlag_sprache WHERE vorschlag_id IN (SELECT vorschlag_id FROM testtool.tbl_vorschlag WHERE frage_id=".$this->db_add_param($frage_id, FHC_INTEGER).");
|
||||
DELETE FROM testtool.tbl_vorschlag WHERE frage_id=".$this->db_add_param($frage_id, FHC_INTEGER).";
|
||||
DELETE FROM testtool.tbl_frage_sprache WHERE frage_id=".$this->db_add_param($frage_id, FHC_INTEGER).";
|
||||
DELETE FROM testtool.tbl_frage WHERE frage_id=".$this->db_add_param($frage_id, FHC_INTEGER);
|
||||
|
||||
if($this->db_query($qry))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler beim loeschen der Frage';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
||||
+226
-77
@@ -26,7 +26,7 @@
|
||||
*/
|
||||
require_once(dirname(__FILE__).'/basis_db.class.php');
|
||||
|
||||
class gebiet extends basis_db
|
||||
class gebiet extends basis_db
|
||||
{
|
||||
//Tabellenspalten
|
||||
public $gebiet_id;
|
||||
@@ -48,7 +48,7 @@ class gebiet extends basis_db
|
||||
public $insertvon;
|
||||
public $updateamum;
|
||||
public $updatevon;
|
||||
|
||||
|
||||
// ErgebnisArray
|
||||
public $result=array();
|
||||
public $new;
|
||||
@@ -60,7 +60,7 @@ class gebiet extends basis_db
|
||||
public function __construct($gebiet_id=null)
|
||||
{
|
||||
parent::__construct();
|
||||
|
||||
|
||||
if(!is_null($gebiet_id))
|
||||
$this->load($gebiet_id);
|
||||
}
|
||||
@@ -98,7 +98,7 @@ class gebiet extends basis_db
|
||||
$this->updateamum = $row->updateamum;
|
||||
$this->updatevon = $row->updatevon;
|
||||
$this->antwortenprozeile = $row->antwortenprozeile;
|
||||
|
||||
|
||||
return true;
|
||||
}
|
||||
else
|
||||
@@ -113,7 +113,7 @@ class gebiet extends basis_db
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Prueft die Variablen vor dem Speichern
|
||||
* auf Gueltigkeit.
|
||||
@@ -184,15 +184,15 @@ class gebiet extends basis_db
|
||||
{
|
||||
if(is_null($new))
|
||||
$new = $this->new;
|
||||
|
||||
|
||||
//Variablen auf Gueltigkeit pruefen
|
||||
if(!$this->validate())
|
||||
return false;
|
||||
|
||||
|
||||
if($new)
|
||||
{
|
||||
$qry = 'BEGIN;INSERT INTO testtool.tbl_gebiet (kurzbz, bezeichnung, beschreibung, zeit, multipleresponse,
|
||||
kategorien, maxfragen, zufallfrage, zufallvorschlag, level_start, level_sprung_auf, level_sprung_ab,
|
||||
$qry = 'BEGIN;INSERT INTO testtool.tbl_gebiet (kurzbz, bezeichnung, beschreibung, zeit, multipleresponse,
|
||||
kategorien, maxfragen, zufallfrage, zufallvorschlag, level_start, level_sprung_auf, level_sprung_ab,
|
||||
levelgleichverteilung, maxpunkte, antwortenprozeile, insertamum, insertvon , updateamum, updatevon) VALUES('.
|
||||
$this->db_add_param($this->kurzbz).','.
|
||||
$this->db_add_param($this->bezeichnung).','.
|
||||
@@ -235,7 +235,7 @@ class gebiet extends basis_db
|
||||
' updatevon='.$this->db_add_param($this->updatevon).
|
||||
" WHERE gebiet_id=".$this->db_add_param($this->gebiet_id, FHC_INTEGER, false).";";
|
||||
}
|
||||
|
||||
|
||||
if($this->db_query($qry))
|
||||
{
|
||||
//aktuelle ID aus der Sequence holen
|
||||
@@ -250,14 +250,14 @@ class gebiet extends basis_db
|
||||
$this->db_query('COMMIT');
|
||||
return true;
|
||||
}
|
||||
else
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler beim Lesen der Sequence';
|
||||
$this->db_query('ROLLBACK;');
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler beim Lesen der Sequence';
|
||||
$this->db_query('ROLLBACK');
|
||||
@@ -273,7 +273,7 @@ class gebiet extends basis_db
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* prueft das Gebiet auf Gueltigkeit
|
||||
* (diverse Plausichecks)
|
||||
@@ -284,19 +284,19 @@ class gebiet extends basis_db
|
||||
{
|
||||
$this->errormsg = '';
|
||||
$this->load($gebiet_id);
|
||||
|
||||
|
||||
//wenn levels verwendet werden muss maxfragen gesetzt sein
|
||||
if($this->level_start!='' && $this->maxfragen=='')
|
||||
{
|
||||
$this->errormsg .= "Wenn Levels verwendet werden, muss die maximale Fragenanzahl gesetzt sein.\n";
|
||||
}
|
||||
|
||||
|
||||
//Levelgleichverteilung gibt es nur bei nicht geleveltem ablauf
|
||||
if($this->level_start!='' && $this->levelgleichverteilung)
|
||||
{
|
||||
$this->errormsg .= "Levelgleichverteilung ist nur dann erlaubt, wenn der Ablauf nicht gelevelt ist.\n";
|
||||
}
|
||||
|
||||
|
||||
//Von jedem level muessen mindestens maxfragen vorhanden sein wenn levels aktiv ist
|
||||
if($this->level_start!='')
|
||||
{
|
||||
@@ -312,9 +312,9 @@ class gebiet extends basis_db
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//Pruefen ob jede Fragen mindestens 2 Vorschlaege hat
|
||||
$qry = "SELECT frage_id, nummer FROM testtool.tbl_frage
|
||||
$qry = "SELECT frage_id, nummer FROM testtool.tbl_frage
|
||||
WHERE (SELECT count(*) as anzahl FROM testtool.tbl_vorschlag WHERE frage_id=tbl_frage.frage_id)<2
|
||||
AND gebiet_id=".$this->db_add_param($gebiet_id, FHC_INTEGER)." AND NOT demo;";
|
||||
if($this->db_query($qry))
|
||||
@@ -337,7 +337,7 @@ class gebiet extends basis_db
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Wenn Levelgleichverteilung true ist, muss maxfragen mindestens so gross wie die Anzahl der level sein
|
||||
if($this->levelgleichverteilung)
|
||||
{
|
||||
@@ -351,13 +351,13 @@ class gebiet extends basis_db
|
||||
if($row->anzahl>$this->maxfragen)
|
||||
{
|
||||
$this->errormsg .= "Wenn Levelgleichverteilung gesetzt ist, muss maxfragen groesser als die Anzahl der verwendeten Levels sein\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Wenn zufallsfrage=true und level_start!='' oder levelgleichverteilung
|
||||
|
||||
// Wenn zufallsfrage=true und level_start!='' oder levelgleichverteilung
|
||||
// dann darf die punkteanzahl pro level/Frage sich nicht unterscheiden
|
||||
if($this->zufallfrage && ($this->level_start!='' || $this->levelgleichverteilung))
|
||||
{
|
||||
@@ -365,10 +365,10 @@ class gebiet extends basis_db
|
||||
SELECT level, count(*) as anzahl FROM (
|
||||
SELECT level, punkte, count(*) as anzahl FROM (
|
||||
SELECT level, sum(punkte) as punkte
|
||||
FROM testtool.tbl_frage JOIN testtool.tbl_vorschlag USING(frage_id)
|
||||
FROM testtool.tbl_frage JOIN testtool.tbl_vorschlag USING(frage_id)
|
||||
WHERE punkte>0 AND not demo AND gebiet_id=".$this->db_add_param($gebiet_id, FHC_INTEGER)."
|
||||
GROUP BY frage_id, level) as a
|
||||
GROUP BY level, punkte ) as b
|
||||
GROUP BY frage_id, level) as a
|
||||
GROUP BY level, punkte ) as b
|
||||
GROUP BY level) as c
|
||||
WHERE c.anzahl>1";
|
||||
if($this->db_query($qry))
|
||||
@@ -379,33 +379,33 @@ class gebiet extends basis_db
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// kein Multipleresponse bei gelevelten Gebieten
|
||||
if($this->level_start!='' && $this->level_start!=0 && $this->multipleresponse)
|
||||
{
|
||||
$this->errormsg .= "Bei gelevelten Gebieten ist Multipleresponse nicht erlaubt\n";
|
||||
}
|
||||
|
||||
|
||||
// maxpunkte muss eingetragen sein
|
||||
if($this->maxpunkte=='' || $this->maxpunkte==0)
|
||||
{
|
||||
$this->errormsg = "Es wurden keine Maximalpunkte fuer dieses Gebiet eingetragen\n";
|
||||
}
|
||||
|
||||
|
||||
// Pruefung, ob eine Frage mehrere gleiche Antworten oder gleiche Bilder hat
|
||||
$qry = "SELECT text AS antwort, sprache, frage_id, tbl_frage.nummer, COUNT(text) AS Anz
|
||||
FROM testtool.tbl_vorschlag_sprache
|
||||
FROM testtool.tbl_vorschlag_sprache
|
||||
JOIN testtool.tbl_vorschlag USING (vorschlag_id)
|
||||
JOIN testtool.tbl_frage USING (frage_id)
|
||||
WHERE gebiet_id=".$this->db_add_param($gebiet_id, FHC_INTEGER)."
|
||||
AND (bild IS NULL AND audio IS NULL)
|
||||
GROUP BY antwort,frage_id,tbl_frage.nummer,sprache
|
||||
HAVING ( COUNT(text) > 1 )
|
||||
|
||||
|
||||
UNION
|
||||
|
||||
|
||||
SELECT bild AS antwort, sprache, frage_id, tbl_frage.nummer, COUNT(bild) AS Anz
|
||||
FROM testtool.tbl_vorschlag_sprache
|
||||
FROM testtool.tbl_vorschlag_sprache
|
||||
JOIN testtool.tbl_vorschlag USING (vorschlag_id)
|
||||
JOIN testtool.tbl_frage USING (frage_id)
|
||||
WHERE gebiet_id=".$this->db_add_param($gebiet_id, FHC_INTEGER)."
|
||||
@@ -419,13 +419,13 @@ class gebiet extends basis_db
|
||||
$this->errormsg .= "Frage Nummer $row->nummer (ID: $row->frage_id) Sprache $row->sprache hat mehrere gleiche Antworten.\n";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if($this->errormsg=='')
|
||||
return true;
|
||||
else
|
||||
else
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Holt alle Gebiete aus der DB
|
||||
*
|
||||
@@ -434,13 +434,13 @@ class gebiet extends basis_db
|
||||
public function getAll()
|
||||
{
|
||||
$qry = 'SELECT * FROM testtool.tbl_gebiet ORDER BY bezeichnung';
|
||||
|
||||
|
||||
if($this->db_query($qry))
|
||||
{
|
||||
while($row = $this->db_fetch_object())
|
||||
{
|
||||
$obj = new gebiet();
|
||||
|
||||
|
||||
$obj->gebiet_id = $row->gebiet_id;
|
||||
$obj->kurzbz = $row->kurzbz;
|
||||
$obj->bezeichnung = $row->bezeichnung;
|
||||
@@ -461,19 +461,19 @@ class gebiet extends basis_db
|
||||
$obj->updateamum = $row->updateamum;
|
||||
$obj->updatevon = $row->updatevon;
|
||||
$obj->antwortenprozeile = $row->antwortenprozeile;
|
||||
|
||||
|
||||
$this->result[] = $obj;
|
||||
}
|
||||
|
||||
|
||||
return true;
|
||||
}
|
||||
else
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler in Fkt getAll()';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Berechnet die maxpunkte fuer das Gebiet
|
||||
*
|
||||
@@ -483,10 +483,10 @@ class gebiet extends basis_db
|
||||
{
|
||||
if(!$this->load($gebiet_id))
|
||||
return false;
|
||||
|
||||
|
||||
if(!$this->levelgleichverteilung && ($this->level_start=='' || $this->level_start==0))
|
||||
{
|
||||
$qry = "SELECT sum(punkte) as max
|
||||
$qry = "SELECT sum(punkte) as max
|
||||
FROM testtool.tbl_vorschlag JOIN testtool.tbl_frage USING(frage_id)
|
||||
WHERE gebiet_id=".$this->db_add_param($gebiet_id, FHC_INTEGER)." AND punkte>0 AND NOT demo";
|
||||
if($this->maxfragen!='' && $this->maxfragen>0)
|
||||
@@ -500,11 +500,11 @@ class gebiet extends basis_db
|
||||
SELECT round((anz::decimal/fragengesamt::decimal)*$this->maxfragen*punkte) as punkteprolevel
|
||||
FROM
|
||||
(
|
||||
SELECT
|
||||
level, punkte, count(*) as anz,
|
||||
(SELECT count(*) FROM testtool.tbl_frage
|
||||
SELECT
|
||||
level, punkte, count(*) as anz,
|
||||
(SELECT count(*) FROM testtool.tbl_frage
|
||||
WHERE gebiet_id=".$this->db_add_param($gebiet_id, FHC_INTEGER).") as fragengesamt
|
||||
FROM
|
||||
FROM
|
||||
testtool.tbl_frage
|
||||
JOIN testtool.tbl_vorschlag USING(frage_id)
|
||||
WHERE
|
||||
@@ -522,11 +522,11 @@ class gebiet extends basis_db
|
||||
SELECT round((anz::decimal/fragengesamt::decimal)*$this->maxfragen*punkte) as punkteprolevel
|
||||
FROM
|
||||
(
|
||||
SELECT
|
||||
level, punkte, count(*) as anz,
|
||||
(SELECT count(*) FROM testtool.tbl_frage
|
||||
SELECT
|
||||
level, punkte, count(*) as anz,
|
||||
(SELECT count(*) FROM testtool.tbl_frage
|
||||
WHERE gebiet_id=".$this->db_add_param($gebiet_id, FHC_INTEGER).") as fragengesamt
|
||||
FROM
|
||||
FROM
|
||||
testtool.tbl_frage
|
||||
JOIN testtool.tbl_vorschlag USING(frage_id)
|
||||
WHERE
|
||||
@@ -539,19 +539,19 @@ class gebiet extends basis_db
|
||||
elseif($this->level_start!='')
|
||||
{
|
||||
//Maximalpunkte fuer geleveltes Gebiet ermitteln
|
||||
|
||||
|
||||
//Punkte pro Level holen
|
||||
$qry = "
|
||||
SELECT level, punkte
|
||||
SELECT level, punkte
|
||||
FROM
|
||||
(
|
||||
SELECT level, frage_id, sum(punkte) as punkte
|
||||
SELECT level, frage_id, sum(punkte) as punkte
|
||||
FROM testtool.tbl_frage JOIN testtool.tbl_vorschlag USING(frage_id)
|
||||
WHERE gebiet_id=".$this->db_add_param($gebiet_id, FHC_INTEGER)." AND punkte>0 AND level>=".$this->db_add_param($this->level_start)." AND NOT demo
|
||||
WHERE gebiet_id=".$this->db_add_param($gebiet_id, FHC_INTEGER)." AND punkte>0 AND level>=".$this->db_add_param($this->level_start)." AND NOT demo
|
||||
GROUP BY level, frage_id
|
||||
) as a
|
||||
) as a
|
||||
GROUP by level, punkte ORDER BY level";
|
||||
|
||||
|
||||
if($this->db_query($qry))
|
||||
{
|
||||
$maxfragen = $this->maxfragen;
|
||||
@@ -572,26 +572,26 @@ class gebiet extends basis_db
|
||||
return $maxpunkte;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if($this->db_query($qry))
|
||||
{
|
||||
if($row = $this->db_fetch_object())
|
||||
{
|
||||
return $row->max;
|
||||
}
|
||||
else
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler beim Ermitteln der Maximalpunkte';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler beim Ermitteln der Maximalpunkte';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Prueft ob das Gebiet bereits gestartet wurde. Wahlweise pruefling_id oder prestudent_id
|
||||
*
|
||||
@@ -603,7 +603,7 @@ class gebiet extends basis_db
|
||||
public function isGestartet($gebiet_id, $pruefling_id=null, $prestudent_id=null)
|
||||
{
|
||||
$this->errormsg='';
|
||||
|
||||
|
||||
if(!is_numeric($gebiet_id) || $gebiet_id=='')
|
||||
{
|
||||
$this->errormsg = 'Gebiet_id muss eine gueltige Zahl sein';
|
||||
@@ -619,40 +619,189 @@ class gebiet extends basis_db
|
||||
$this->errormsg = 'Prestudent_id muss eine gueltige Zahl sein';
|
||||
return false;
|
||||
}
|
||||
|
||||
$qry = ' SELECT
|
||||
begintime
|
||||
FROM
|
||||
|
||||
$qry = ' SELECT
|
||||
begintime
|
||||
FROM
|
||||
testtool.tbl_pruefling_frage
|
||||
JOIN
|
||||
JOIN
|
||||
testtool.tbl_pruefling USING (pruefling_id)
|
||||
JOIN
|
||||
JOIN
|
||||
testtool.tbl_frage USING (frage_id)
|
||||
WHERE ';
|
||||
if (!is_null($pruefling_id))
|
||||
$qry.=' pruefling_id='.$this->db_add_param($pruefling_id, FHC_INTEGER);
|
||||
else
|
||||
$qry.=' prestudent_id='.$this->db_add_param($prestudent_id, FHC_INTEGER);
|
||||
|
||||
$qry.=' AND
|
||||
|
||||
$qry.=' AND
|
||||
gebiet_id='.$this->db_add_param($gebiet_id, FHC_INTEGER).'
|
||||
AND
|
||||
AND
|
||||
begintime IS NOT NULL';
|
||||
|
||||
|
||||
if($result = $this->db_query($qry))
|
||||
{
|
||||
if($this->db_fetch_object($result))
|
||||
return true;
|
||||
return true;
|
||||
else
|
||||
{
|
||||
return false;
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler bei der Abfrage aufgetreten';
|
||||
return false;
|
||||
$this->errormsg = 'Fehler bei der Abfrage aufgetreten';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Laedt die Ablaufe die zu einem Gebiet zugeordnet sind
|
||||
* @param $gebiet_id
|
||||
* @return boolean true wenn ok, false im Fehlerfall
|
||||
*/
|
||||
public function loadAblaufGebiet($gebiet_id)
|
||||
{
|
||||
$qry = "SELECT * FROM testtool.tbl_ablauf WHERE gebiet_id=".$this->db_add_param($gebiet_id, FHC_INTEGER);
|
||||
if($result = $this->db_query($qry))
|
||||
{
|
||||
while($row = $this->db_fetch_object($result))
|
||||
{
|
||||
$obj = new stdClass();
|
||||
$obj->ablauf_id = $row->ablauf_id;
|
||||
$obj->studiengang_kz = $row->studiengang_kz;
|
||||
$obj->gebiet_id = $row->gebiet_id;
|
||||
$obj->reihung = $row->reihung;
|
||||
$obj->gewicht = $row->gewicht;
|
||||
$obj->semester = $row->semester;
|
||||
$obj->ablauf_vorgaben_id = $row->ablauf_vorgaben_id;
|
||||
$obj->insertamum = $row->insertamum;
|
||||
$obj->insertvon = $row->insertvon;
|
||||
$obj->updateamum = $row->updateamum;
|
||||
$obj->updatevon = $row->updatevon;
|
||||
|
||||
$this->result[] = $obj;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Loescht ein Gebiet und den zugeordneten Ablauf
|
||||
* @param $gebiet_id
|
||||
* @return boolean true wenn ok, false im Fehlerfall
|
||||
*/
|
||||
public function delete($gebiet_id)
|
||||
{
|
||||
$qry = "SELECT * FROM testtool.tbl_frage WHERE gebiet_id=".$this->db_add_param($gebiet_id, FHC_INTEGER);
|
||||
|
||||
if($result = $this->db_query($qry))
|
||||
{
|
||||
if($this->db_num_rows($result)>0)
|
||||
{
|
||||
$this->errormsg = 'Bitte entfernen Sie zuerst alle Fragen aus dem Gebiet';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
$qry = "
|
||||
DELETE FROM testtool.tbl_ablauf WHERE gebiet_id=".$this->db_add_param($gebiet_id, FHC_INTEGER)."
|
||||
DELETE FROM testtool.tbl_gebiet WHERE gebiet_id=".$this->db_add_param($gebiet_id, FHC_INTEGER);
|
||||
|
||||
if($this->db_query($qry))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler beim Loeschen des Gebiets';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Loescht einen Ablauf
|
||||
* @param $ablauf_id
|
||||
* @return boolean true wenn ok, false im Fehlerfall
|
||||
*/
|
||||
public function deleteAblaufZuordnung($ablauf_id)
|
||||
{
|
||||
$qry = "DELETE FROM testtool.tbl_ablauf WHERE ablauf_id=".$this->db_add_param($ablauf_id, FHC_INTEGER);
|
||||
|
||||
if($this->db_query($qry))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler beim Entfernen des Ablaufs';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Laedt alle AblaufVorabe Eintraege
|
||||
* @return boolean true wenn ok, false im Fehlerfall
|
||||
*/
|
||||
public function getAblaufVorgaben()
|
||||
{
|
||||
$qry = "SELECT * FROM testtool.tbl_ablauf_vorgaben ORDER BY studiengang_kz";
|
||||
|
||||
if($result = $this->db_query($qry))
|
||||
{
|
||||
while($row = $this->db_fetch_object($result))
|
||||
{
|
||||
$obj = new stdClass();
|
||||
|
||||
$obj->ablauf_vorgaben_id = $row->ablauf_vorgaben_id;
|
||||
$obj->studiengang_kz = $row->studiengang_kz;
|
||||
$obj->sprache = $row->sprache;
|
||||
$obj->sprachwahl = $this->db_parse_bool($row->sprachwahl);
|
||||
$obj->content_id = $row->content_id;
|
||||
|
||||
$this->result[] = $obj;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler beim Laden der Daten';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Speichert den Ablauf
|
||||
*/
|
||||
public function saveAblauf()
|
||||
{
|
||||
if($this->new)
|
||||
{
|
||||
$qry = "INSERT INTO testtool.tbl_ablauf (studiengang_kz, gebiet_id, reihung,gewicht,semester,ablauf_vorgaben_id, insertamum, insertvon) VALUES(".
|
||||
$this->db_add_param($this->studiengang_kz, FHC_INTEGER).','.
|
||||
$this->db_add_param($this->gebiet_id, FHC_INTEGER).','.
|
||||
$this->db_add_param($this->reihung, FHC_INTEGER).','.
|
||||
$this->db_add_param($this->gewicht, FHC_INTEGER).','.
|
||||
$this->db_add_param($this->semester, FHC_INTEGER).','.
|
||||
$this->db_add_param($this->ablauf_vorgaben_id, FHC_INTEGER).','.
|
||||
$this->db_add_param($this->insertamum).','.
|
||||
$this->db_add_param($this->insertvon).');';
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg='not implemented';
|
||||
return false;
|
||||
}
|
||||
|
||||
if($this->db_query($qry))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler beim Speichern der Daten';
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+12
-9
@@ -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">';
|
||||
|
||||
?>
|
||||
|
||||
@@ -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">';
|
||||
|
||||
?>
|
||||
@@ -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>';
|
||||
|
||||
|
||||
?>
|
||||
@@ -77,12 +77,12 @@ class news extends basis_db
|
||||
$qry.= " AND (now()-datum)<interval '$maxalter days'";
|
||||
}
|
||||
if(!$all)
|
||||
$qry.=' AND datum<=now() AND (datum_bis>= now()::date OR datum_bis is null)';
|
||||
$qry.=" AND datum<=now() AND (datum_bis>= now()::date OR datum_bis is null)";
|
||||
|
||||
if(trim($fachbereich_kurzbz)!='*')
|
||||
{
|
||||
if(is_null($fachbereich_kurzbz) || trim($fachbereich_kurzbz)=='')
|
||||
$qry.=' AND fachbereich_kurzbz is null';
|
||||
$qry.=" AND fachbereich_kurzbz is null";
|
||||
else
|
||||
$qry.=" AND fachbereich_kurzbz=".$this->db_add_param(trim($fachbereich_kurzbz));
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
Reference in New Issue
Block a user