This commit is contained in:
Stefan Puraner
2016-02-10 13:43:44 +01:00
95 changed files with 17801 additions and 3098 deletions
+14 -13
View File
@@ -16,7 +16,7 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* Authors: Christian Paminger <christian.paminger@technikum-wien.at>,
* Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at>
* Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at>
*
*/
/**
@@ -38,6 +38,7 @@ abstract class db extends basis
define('FHC_INTEGER',1);
define('FHC_STRING',2);
define('FHC_BOOLEAN',3);
define('FHC_LANG_ARRAY',4);
}
if (is_null(db::$db_conn))
$this->db_connect();
@@ -56,7 +57,7 @@ abstract class db extends basis
abstract function db_affected_rows($result=null);
abstract function db_result_seek($result=null, $offset);
abstract function db_last_error();
abstract function db_free_result($result=null);
abstract function db_free_result($result=null);
abstract function db_version();
abstract function db_escape($var);
abstract function db_null_value($var, $qoute=true);
@@ -67,7 +68,7 @@ abstract class db extends basis
abstract function db_getResultJSON($result = null);
abstract function db_parse_array($var);
/**
* Erzeugt aus den Funktionsparameter eine SQL Abfrage
* --- Wird in der Art Sonderzeichen gefunden wird dieses als FunktionsParmeter verarbeitet
@@ -95,7 +96,7 @@ abstract class db extends basis
$where=(!is_null($pWhere)?trim($pWhere):'');
$order=(!is_null($pOrder)?trim($pOrder):'');
$limit=(is_numeric($pLimit)?$pLimit:'');
if (empty($sql) && empty($art))
{
$this->errormsg='die SQL Art fehlt!';
@@ -123,7 +124,7 @@ abstract class db extends basis
$sql.=($where?' '.trim($where).' ':'');
else
$sql.=($where?' where '.trim($where).' ':'');
if ($art=='select')
if ($art=='select')
{
// FIXME: If $where is e.g. 'orderstatus' because there's a column named orderstatus, this would
// fail horribly? Same for the 'where'-stuff above. -MP
@@ -131,22 +132,22 @@ abstract class db extends basis
$sql.=($order?trim($order).' ':'');
else
$sql.=($order?' order by '.trim($order).' ':'');
}
if ($art=='select')
}
if ($art=='select')
{
if (strstr('limit',strtolower($where)))
$sql.=($limit?trim($limit).' ':'');
else
else
$sql.=($limit?' limit '.trim($limit).' ':'');
}
}
if (!$results=$this->db_query($sql))
{
$this->errormsg=$this->db_last_error();
return false;
}
if ($art!='select' && empty($pSql))
return true;
@@ -159,9 +160,9 @@ abstract class db extends basis
$rows=array();
while($row = $this->db_fetch_object($results))
$rows[]=$row;
return $rows;
}
return $rows;
}
}
require_once(dirname(__FILE__).'/'.DB_SYSTEM.'.class.php');
+121 -121
View File
@@ -1,121 +1,121 @@
<?php
/* Copyright (C) 2006 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: Werner Masik <werner@gefi.at>
*/
require_once(dirname(__FILE__).'/basis_db.class.php');
class bisorgform extends basis_db
{
public $new;
public $result = array();
//Tabellenspalten
public $bisorgform_kurzbz;
public $code;
/**
* Konstruktor
* @param code des zu ladenden Datensatzes
*/
public function __construct($code=null)
{
parent::__construct();
if(!is_null($code))
$this->load($code);
}
/**
* Laedt einen Datensatz
* @param code des zu ladenden Datensatzes
*/
public function load($code)
{
//code auf gueltigkeit pruefen
if(!is_numeric($code) || $code == '')
{
$this->errormsg = 'code muss eine gueltige Zahl sein';
return false;
}
//laden des Datensatzes
$qry = "SELECT
distinct code,bisorgform_kurzbz
FROM
bis.tbl_orgform
WHERE
code=".$this->db_add_param($code, FHC_INTEGER);
if($this->db_query($qry))
{
if($row = $this->db_fetch_object())
{
$this->bisorgform_kurzbz = $row->bisorgform_kurzbz;
$this->code = $row->code;
return true;
}
else
{
$this->errormsg = 'Fehler bei der Datenbankabfrage';
return false;
}
}
else
{
$this->errormsg = 'Fehler bei der Datenbankabfrage';
return false;
}
}
/**
* Laedt alle BIS Orgformen
* @return List mit Orgformen wenn ok, false wenn Fehler
*/
public function getList()
{
//laden des Datensatzes
$qry = "SELECT
distinct code,bisorgform_kurzbz
FROM
bis.tbl_bisorgfom
ORDER BY code";
if($this->db_query($qry))
{
$this->result = array();
while($row = $this->db_fetch_object())
{
$obj = new bisorgform();
$obj->bisorgform_kurzbz = $row->bisorgform_kurzbz;
$obj->code = $row->code;
$this->result[] = $obj;
}
return $this->result;
}
else
{
$this->errormsg = 'Fehler bei der Datenbankabfrage';
return false;
}
}
}
?>
<?php
/* Copyright (C) 2006 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: Werner Masik <werner@gefi.at>
*/
require_once(dirname(__FILE__).'/basis_db.class.php');
class bisorgform extends basis_db
{
public $new;
public $result = array();
//Tabellenspalten
public $bisorgform_kurzbz;
public $code;
/**
* Konstruktor
* @param code des zu ladenden Datensatzes
*/
public function __construct($code=null)
{
parent::__construct();
if(!is_null($code))
$this->load($code);
}
/**
* Laedt einen Datensatz
* @param code des zu ladenden Datensatzes
*/
public function load($code)
{
//code auf gueltigkeit pruefen
if(!is_numeric($code) || $code == '')
{
$this->errormsg = 'code muss eine gueltige Zahl sein';
return false;
}
//laden des Datensatzes
$qry = "SELECT
distinct code,bisorgform_kurzbz
FROM
bis.tbl_orgform
WHERE
code=".$this->db_add_param($code, FHC_INTEGER);
if($this->db_query($qry))
{
if($row = $this->db_fetch_object())
{
$this->bisorgform_kurzbz = $row->bisorgform_kurzbz;
$this->code = $row->code;
return true;
}
else
{
$this->errormsg = 'Fehler bei der Datenbankabfrage';
return false;
}
}
else
{
$this->errormsg = 'Fehler bei der Datenbankabfrage';
return false;
}
}
/**
* Laedt alle BIS Orgformen
* @return List mit Orgformen wenn ok, false wenn Fehler
*/
public function getList()
{
//laden des Datensatzes
$qry = "SELECT
distinct code,bisorgform_kurzbz
FROM
bis.tbl_bisorgform
ORDER BY code";
if($this->db_query($qry))
{
$this->result = array();
while($row = $this->db_fetch_object())
{
$obj = new bisorgform();
$obj->bisorgform_kurzbz = $row->bisorgform_kurzbz;
$obj->code = $row->code;
$this->result[] = $obj;
}
return $this->result;
}
else
{
$this->errormsg = 'Fehler bei der Datenbankabfrage';
return false;
}
}
}
?>
+2 -1
View File
@@ -283,6 +283,7 @@ class gebiet extends basis_db
public function check_gebiet($gebiet_id)
{
$this->errormsg = '';
$this->warningmsg = '';
$this->load($gebiet_id);
//wenn levels verwendet werden muss maxfragen gesetzt sein
@@ -416,7 +417,7 @@ class gebiet extends basis_db
{
while($row = $this->db_fetch_object())
{
$this->errormsg .= "Frage Nummer $row->nummer (ID: $row->frage_id) Sprache $row->sprache hat mehrere gleiche Antworten.\n";
$this->warningmsg .= "Frage Nummer $row->nummer (ID: $row->frage_id) Sprache $row->sprache hat mehrere gleiche Antworten.\n";
}
}
+3 -3
View File
@@ -823,9 +823,9 @@ class lehrveranstaltung extends basis_db
'lvs = '.$this->db_add_param($this->lvs).', '.
'alvs = '.$this->db_add_param($this->alvs).', '.
'lvps = '.$this->db_add_param($this->lvps).', '.
'las = '.$this->db_add_param($this->las).' '.
'benotung = '.$this->db_add_param($this->benotung).' '.
'lvinfo = '.$this->db_add_param($this->lvinfo).' '.
'las = '.$this->db_add_param($this->las).', '.
'benotung = '.$this->db_add_param($this->benotung, FHC_BOOLEAN).', '.
'lvinfo = '.$this->db_add_param($this->lvinfo, FHC_BOOLEAN).' '.
'WHERE lehrveranstaltung_id = ' . $this->db_add_param($this->lehrveranstaltung_id, FHC_INTEGER, false) . ';';
}
+20 -33
View File
@@ -632,42 +632,29 @@ class organisationseinheit extends basis_db
organisationseinheittyp_kurzbz,
aktiv,
lehre,
sum(a.anzahl) AS anzahl FROM (
SELECT
tbl_organisationseinheit.oe_kurzbz,
tbl_organisationseinheit.oe_parent_kurzbz,
tbl_organisationseinheit.bezeichnung,
tbl_organisationseinheit.organisationseinheittyp_kurzbz,
tbl_organisationseinheit.aktiv,
tbl_organisationseinheit.lehre,
(SELECT COUNT (tbl_zeitaufzeichnung.*) FROM campus.tbl_zeitaufzeichnung
WHERE tbl_organisationseinheit.oe_kurzbz IN (tbl_zeitaufzeichnung.oe_kurzbz_1,tbl_zeitaufzeichnung.oe_kurzbz_2) AND tbl_zeitaufzeichnung.uid=".$this->db_add_param($user)."
$zeit) AS anzahl
FROM public.tbl_organisationseinheit
WHERE
(SELECT COUNT (tbl_zeitaufzeichnung.*) FROM campus.tbl_zeitaufzeichnung
WHERE tbl_organisationseinheit.oe_kurzbz IN (tbl_zeitaufzeichnung.oe_kurzbz_1,tbl_zeitaufzeichnung.oe_kurzbz_2) AND tbl_zeitaufzeichnung.uid=".$this->db_add_param($user)."
$zeit) > $anzahl_ereignisse
GROUP BY tbl_organisationseinheit.oe_kurzbz, tbl_organisationseinheit.oe_parent_kurzbz, tbl_organisationseinheit.bezeichnung, tbl_organisationseinheit.organisationseinheittyp_kurzbz, tbl_organisationseinheit.aktiv, tbl_organisationseinheit.lehre, anzahl
UNION
SELECT
tbl_organisationseinheit.oe_kurzbz,
tbl_organisationseinheit.oe_parent_kurzbz,
tbl_organisationseinheit.bezeichnung,
tbl_organisationseinheit.organisationseinheittyp_kurzbz,
tbl_organisationseinheit.aktiv,
tbl_organisationseinheit.lehre,
'0' AS anzahl
FROM public.tbl_organisationseinheit";
count(tbl_zeitaufzeichnung.zeitaufzeichnung_id)
FROM campus.tbl_zeitaufzeichnung
JOIN public.tbl_organisationseinheit ON(oe_kurzbz IN (oe_kurzbz_1,oe_kurzbz_2))
WHERE tbl_zeitaufzeichnung.uid=".$this->db_add_param($user)."
$zeit
GROUP BY tbl_organisationseinheit.oe_kurzbz HAVING COUNT(*) > $anzahl_ereignisse
UNION
SELECT
oe_kurzbz,
oe_parent_kurzbz,
bezeichnung,
organisationseinheittyp_kurzbz,
aktiv,
lehre,
'0'
FROM public.tbl_organisationseinheit";
if(!is_null($aktiv))
$qry.=" WHERE aktiv=".$this->db_add_param($aktiv, FHC_BOOLEAN);
$qry .=" ) AS a
GROUP BY oe_kurzbz,oe_parent_kurzbz,bezeichnung,organisationseinheittyp_kurzbz,aktiv,lehre
ORDER BY anzahl DESC, bezeichnung";
$qry .=" ORDER BY count DESC,bezeichnung,oe_kurzbz";
if($this->db_query($qry))
{
@@ -681,7 +668,7 @@ class organisationseinheit extends basis_db
$obj->organisationseinheittyp_kurzbz = $row->organisationseinheittyp_kurzbz;
$obj->aktiv = $this->db_parse_bool($row->aktiv);
$obj->lehre = $this->db_parse_bool($row->lehre);
$obj->anzahl = $row->anzahl;
$obj->anzahl = $row->count;
$this->result[] = $obj;
}
+62 -7
View File
@@ -22,6 +22,7 @@
/**
* Datenbank Abstraktionsklasse fuer Postgresql Datenbank
*/
require_once('sprache.class.php');
class basis_db extends db
{
@@ -292,6 +293,27 @@ class basis_db extends db
$var = $this->db_null_value($var, false);
break;
case FHC_LANG_ARRAY:
$sprache = new sprache();
$sprache->getAll(true);
$buf = $var;
$var = array();
$languages = $sprache->getAllIndexesSorted();
foreach($languages as $sk => $sp)
{
if(!$sp || !isset($buf[$sp]))
$var[$sk] = "";
else
$var[$sk] = $this->db_escape($buf[$sp]);
}
$var = str_replace('\\', '\\\\', $var);
$var = str_replace('"', '\\\"', $var);
$var = '\'{"' . join('","', $var) . '"}\'';
break;
case FHC_BOOLEAN:
if($var===true)
$var='true';
@@ -350,15 +372,48 @@ class basis_db extends db
*/
public function db_parse_array($var)
{
if ($var == '')
if ($var == '')
return;
preg_match_all('/(?<=^\{|,)(([^,"{]*)|\s*"((?:[^"\\\\]|\\\\(?:.|[0-9]+|x[0-9a-f]+))*)"\s*)(,|(?<!^\{)(?=\}$))/i', $var, $matches, PREG_SET_ORDER);
$values = array();
foreach ($matches as $match)
preg_match_all('/(?<=^\{|,)(([^,"{]*)|\s*"((?:[^"\\\\]|\\\\(?:.|[0-9]+|x[0-9a-f]+))*)"\s*)(,|(?<!^\{)(?=\}$))/i', $var, $matches, PREG_SET_ORDER);
$values = array();
foreach ($matches as $match)
{
$values[] = $match[3] != '' ? stripcslashes($match[3]) : (strtolower($match[2]) == 'null' ? null : $match[2]);
}
return $values;
$values[] = $match[3] != '' ? stripcslashes($match[3]) : (strtolower($match[2]) == 'null' ? null : $match[2]);
}
return $values;
}
/**
* Erstellt aus einem DB Array ein PHP Array
* @param $var DB Result Array Spalte
* @return php array
*/
public function db_parse_lang_array($var)
{
if ($var == '')
return;
preg_match_all('/(?<=^\{|,)(([^,"{]*)|\s*"((?:[^"\\\\]|\\\\(?:.|[0-9]+|x[0-9a-f]+))*)"\s*)(,|(?<!^\{)(?=\}$))/i', $var, $matches, PREG_SET_ORDER);
$values = array();
$sprache = new sprache();
$sprache->loadIndexArray();
$sprache = new sprache();
$sprache->getAll(true);
$languages = $sprache->getAllIndexesSorted();
foreach ($matches as $mk => $match)
{
$values[$languages[$mk+1]] = $match[3] != '' ? stripcslashes($match[3]) : (strtolower($match[2]) == 'null' ? null : $match[2]);
}
return $values;
}
}
function indexSort($a, $b)
{
return strcmp($a->index, $b->index);
}
?>
+4 -1
View File
@@ -587,8 +587,11 @@ class prestudent extends person
case "interessenten":
$qry.=" AND a.rolle='Interessent'";
break;
case "bewerbungnichtabgeschickt":
$qry.=" AND a.rolle='Interessent' AND bewerbung_abgeschicktamum is null";
break;
case "bewerbungabgeschickt":
$qry.=" AND a.rolle='Interessent' AND bewerbung_abgeschicktamum is not null";
$qry.=" AND a.rolle='Interessent' AND bewerbung_abgeschicktamum is not null AND bestaetigtam is null";
break;
case "statusbestaetigt":
$qry.=" AND a.rolle='Interessent' AND bestaetigtam is not null";
+58 -52
View File
@@ -15,7 +15,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* Authors: Christian Paminger <christian.paminger@technikum-wien.at>,
* Authors: Christian Paminger <christian.paminger@technikum-wien.at>,
* Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at> and
* Rudolf Hangl <rudolf.hangl@technikum-wien.at>.
*/
@@ -30,12 +30,12 @@ class pruefling extends basis_db
public $registriert;
public $prestudent_id;
public $semester;
// ErgebnisArray
public $result=array();
public $num_rows=0;
public $new;
/**
* Konstruktor - Laedt optional einen pruefling
* @param $frage_id Frage die geladen werden soll (default=null)
@@ -47,7 +47,7 @@ class pruefling extends basis_db
if($pruefling_id != null)
$this->load($pruefling_id);
}
/**
* Laedt Pruefling mit der uebergebenen ID
* @param $pruefling_id ID der Frage die geladen werden soll
@@ -55,7 +55,7 @@ class pruefling extends basis_db
public function load($pruefling_id)
{
$qry = "SELECT * FROM testtool.tbl_pruefling WHERE pruefling_id=".$this->db_add_param($pruefling_id, FHC_INTEGER);
if($this->db_query($qry))
{
if($row = $this->db_fetch_object())
@@ -68,21 +68,21 @@ class pruefling extends basis_db
$this->semester = $row->semester;
return true;
}
else
else
{
$this->errormsg = "Kein Eintrag gefunden fuer $pruefling_id";
return false;
}
}
}
else
else
{
$this->errormsg = "Fehler beim Laden";
return false;
}
}
}
/**
* Prueft die Variablen vor dem Speichern
* Prueft die Variablen vor dem Speichern
* auf Gueltigkeit.
* @return true wenn ok, false im Fehlerfall
*/
@@ -90,7 +90,7 @@ class pruefling extends basis_db
{
return true;
}
/**
* Speichert die Benutzerdaten in die Datenbank
* Wenn $new auf true gesetzt ist wird ein neuer Datensatz angelegt
@@ -102,7 +102,7 @@ class pruefling extends basis_db
//Variablen auf Gueltigkeit pruefen
if(!$this->validate())
return false;
if($this->new) //Wenn new true ist dann ein INSERT absetzen ansonsten ein UPDATE
{
$qry = 'BEGIN;INSERT INTO testtool.tbl_pruefling (studiengang_kz, idnachweis, registriert, prestudent_id, semester) VALUES('.
@@ -113,7 +113,7 @@ class pruefling extends basis_db
$this->db_add_param($this->semester).");";
}
else
{
{
$qry = 'UPDATE testtool.tbl_pruefling SET'.
' studiengang_kz='.$this->db_add_param($this->studiengang_kz, FHC_INTEGER).','.
' idnachweis='.$this->db_add_param($this->idnachweis).','.
@@ -122,7 +122,7 @@ class pruefling extends basis_db
' prestudent_id='.$this->db_add_param($this->prestudent_id, FHC_INTEGER).
" WHERE pruefling_id=".$this->db_add_param($this->pruefling_id, FHC_INTEGER, false).";";
}
if($this->db_query($qry))
{
if($this->new)
@@ -136,7 +136,7 @@ class pruefling extends basis_db
$this->db_query('COMMIT;');
return true;
}
else
else
{
$this->db_query('ROLLBACK;');
$this->errormsg = 'Fehler beim Lesen der Sequence';
@@ -150,19 +150,19 @@ class pruefling extends basis_db
return false;
}
}
else
else
{
return true;
}
}
else
{
else
{
$this->db_query('ROLLBACK');
$this->errormsg = 'Fehler beim Speichern der Frage';
return false;
}
}
/**
* Laedt einen Puefling anhand der Prestudent_id
*
@@ -172,7 +172,7 @@ class pruefling extends basis_db
public function getPruefling($prestudent_id)
{
$qry = "SELECT * FROM testtool.tbl_pruefling WHERE prestudent_id=".$this->db_add_param($prestudent_id, FHC_INTEGER);
if($this->db_query($qry))
{
if($row = $this->db_fetch_object())
@@ -185,21 +185,21 @@ class pruefling extends basis_db
$this->semester = $row->semester;
return true;
}
else
else
{
$this->errormsg = "Kein Eintrag gefunden";
return false;
}
}
}
else
else
{
$this->errormsg = "Fehler beim Laden";
return false;
}
}
}
/**
* Ermittelt den aktuellen Level (schwierigkeitsgrad der Frage)
* Ermittelt den aktuellen Level (schwierigkeitsgrad der Frage)
* des Prueflings fuer das uebergebene Gebiet
*
* @param $pruefling_id
@@ -208,17 +208,17 @@ class pruefling extends basis_db
public function getPrueflingLevel($pruefling_id, $gebiet_id)
{
$gebiet = new gebiet($gebiet_id);
//wenn Levelsystem fuer dieses Gebiet aktiviert ist
if($gebiet->level_start!='')
{
//Maximal und Minimal Level fuer dieses Gebiet ermitteln
$max_level = 0;
$min_level = 0;
$qry = "SELECT max(level) as max, min(level) as min FROM testtool.tbl_frage
$qry = "SELECT max(level) as max, min(level) as min FROM testtool.tbl_frage
WHERE gebiet_id=".$this->db_add_param($gebiet_id, FHC_INTEGER);
if($this->db_query($qry))
{
if($row = $this->db_fetch_object())
@@ -226,24 +226,24 @@ class pruefling extends basis_db
$max_level = $row->max;
$min_level = $row->min;
}
else
else
{
$this->errormsg = 'unbekannter Fehler in getPrueflingLevel';
return false;
}
}
else
else
{
$this->errormsg = 'Fehler beim Ermitteln des Pruefling-Levels';
return false;
}
//alle bisherigen Antworten fuer dieses Gebiet holen
$qry = "SELECT
tbl_vorschlag.punkte
FROM
testtool.tbl_pruefling_frage
JOIN testtool.tbl_vorschlag USING(frage_id)
FROM
testtool.tbl_pruefling_frage
JOIN testtool.tbl_vorschlag USING(frage_id)
JOIN testtool.tbl_antwort USING(vorschlag_id)
JOIN testtool.tbl_frage USING(frage_id)
WHERE
@@ -251,7 +251,7 @@ class pruefling extends basis_db
tbl_pruefling_frage.pruefling_id=".$this->db_add_param($pruefling_id, FHC_INTEGER)." AND
tbl_antwort.pruefling_id = tbl_pruefling_frage.pruefling_id
ORDER BY tbl_pruefling_frage.nummer ASC";
$aktueller_level=$gebiet->level_start;
$anzahl_richtig=0;
$anzahl_falsch=0;
@@ -265,13 +265,13 @@ class pruefling extends basis_db
$anzahl_richtig++;
$anzahl_falsch=0;
}
else
else
{
//wenn die Frage falsch beantwortet wurde dann falsch-zaehler erhoehen
$anzahl_richtig=0;
$anzahl_falsch++;
}
//wenn einer der Zaehler das Sprunglevel erreicht hat, dann
//in ein anderes Level springen
if($anzahl_richtig==$gebiet->level_sprung_auf)
@@ -286,54 +286,60 @@ class pruefling extends basis_db
$anzahl_richtig=0;
$anzahl_falsch=0;
}
//aktueller level darf nicht kleiner/groesser als der minimal/maximal Level sein
if($aktueller_level<$min_level)
$aktueller_level=$min_level;
if($aktueller_level>$max_level)
$aktueller_level=$max_level;
}
return $aktueller_level;
}
else
else
{
$this->errormsg = 'Fehler bei einer Abfrage';
return false;
}
}
else
else
return -1;
}
/**
* Berechnet das Reihungstestergebnis fuer einen Prestudenten
*
* @param $prestudent_id
* @return Endpunkte des Reihungstests
*/
public function getReihungstestErgebnis($prestudent_id)
public function getReihungstestErgebnis($prestudent_id, $punkte=false)
{
$qry = "SELECT * FROM testtool.vw_auswertung
$qry = "SELECT * FROM testtool.vw_auswertung
WHERE prestudent_id=".$this->db_add_param($prestudent_id, FHC_INTEGER);
$ergebnis=0;
if($this->db_query($qry))
{
while($row = $this->db_fetch_object())
{
//wenn maxpunkte ueberschritten wurde -> 100%
if($row->punkte>=$row->maxpunkte)
{
$prozent=100;
$row->punkte = $row->maxpunkte;
}
else
$prozent = ($row->punkte/$row->maxpunkte)*100;
$ergebnis+=$prozent*$row->gewicht;
if($punkte)
$ergebnis +=$row->punkte;
else
$ergebnis+=$prozent*$row->gewicht;
}
return $ergebnis;
}
else
else
{
$this->errormsg = 'Fehler bei einer Abfrage';
return false;
+14 -9
View File
@@ -227,7 +227,7 @@ class reihungstest extends basis_db
'studiensemester_kurzbz='.$this->db_add_param($this->studiensemester_kurzbz).' '.
'WHERE reihungstest_id='.$this->db_add_param($this->reihungstest_id, FHC_INTEGER, false).';';
}
if($this->db_query($qry))
{
if($this->new)
@@ -277,11 +277,11 @@ class reihungstest extends basis_db
if ($studiensemester_kurzbz!=null)
$qry .=" AND studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz, FHC_STRING, false);
if ($order!=null)
$qry .=" ORDER BY ".$order;
$qry.= ";";
if($this->db_query($qry))
@@ -326,12 +326,16 @@ class reihungstest extends basis_db
*/
public function getZukuenftige($include_id, $studiengang_kz)
{
$qry = "SELECT *, '1' as sortierung,(SELECT upper(typ || kurzbz) FROM public.tbl_studiengang WHERE studiengang_kz=tbl_reihungstest.studiengang_kz) as stg FROM public.tbl_reihungstest WHERE datum>=now()-'1 days'::interval AND studiengang_kz=".$this->db_add_param($studiengang_kz)."
$qry = "
SELECT *, (SELECT count(*) FROM public.tbl_prestudent WHERE reihungstest_id=a.reihungstest_id) as angemeldete_teilnehmer
FROM (
SELECT *, '1' as sortierung,(SELECT upper(typ || kurzbz) FROM public.tbl_studiengang WHERE studiengang_kz=tbl_reihungstest.studiengang_kz) as stg FROM public.tbl_reihungstest WHERE datum>=now()-'1 days'::interval AND studiengang_kz=".$this->db_add_param($studiengang_kz)."
UNION
SELECT *, '2' as sortierung,(SELECT upper(typ || kurzbz) FROM public.tbl_studiengang WHERE studiengang_kz=tbl_reihungstest.studiengang_kz) as stg FROM public.tbl_reihungstest WHERE datum>=now()-'1 days'::interval AND studiengang_kz!=".$this->db_add_param($studiengang_kz)."
UNION
SELECT *, '0' as sortierung,(SELECT upper(typ || kurzbz) FROM public.tbl_studiengang WHERE studiengang_kz=tbl_reihungstest.studiengang_kz) as stg FROM public.tbl_reihungstest WHERE reihungstest_id=".$this->db_add_param($include_id)."
ORDER BY sortierung, stg, datum";
ORDER BY sortierung, stg, datum
) a";
if($this->db_query($qry))
{
@@ -354,6 +358,7 @@ class reihungstest extends basis_db
$obj->oeffentlich = $this->db_parse_bool($row->oeffentlich);
$obj->freigeschaltet = $this->db_parse_bool($row->freigeschaltet);
$obj->studiensemester_kurzbz =$row->studiensemester_kurzbz;
$obj->angemeldete_teilnehmer = $row->angemeldete_teilnehmer;
$this->result[] = $obj;
}
@@ -416,17 +421,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;
}
}
+13 -22
View File
@@ -182,27 +182,18 @@ class service extends basis_db
else
$zeit = "";
$qry = " SELECT service_id,oe_kurzbz,bezeichnung,beschreibung,ext_id,content_id, sum(a.anzahl) AS anzahl FROM (
SELECT
tbl_service.*,
(SELECT COUNT (tbl_zeitaufzeichnung.service_id) FROM campus.tbl_zeitaufzeichnung
WHERE tbl_service.service_id=tbl_zeitaufzeichnung.service_id AND tbl_zeitaufzeichnung.uid=".$this->db_add_param($user)."
$zeit
) AS anzahl
FROM public.tbl_service
WHERE
(SELECT COUNT (tbl_zeitaufzeichnung.service_id) FROM campus.tbl_zeitaufzeichnung
WHERE tbl_service.service_id=tbl_zeitaufzeichnung.service_id AND tbl_zeitaufzeichnung.uid=".$this->db_add_param($user)."
$zeit
) > $anzahl_ereignisse
GROUP BY tbl_service.service_id,tbl_service.beschreibung,tbl_service.ext_id,tbl_service.oe_kurzbz,tbl_service.bezeichnung,tbl_service.content_id,anzahl
UNION
SELECT tbl_service.*, '0' AS anzahl
FROM public.tbl_service
) AS a
GROUP BY service_id,oe_kurzbz,bezeichnung,beschreibung,ext_id,content_id
ORDER BY anzahl DESC,bezeichnung,oe_kurzbz";
$qry = " SELECT tbl_service.*, count(tbl_zeitaufzeichnung.service_id)
FROM campus.tbl_zeitaufzeichnung
JOIN public.tbl_service USING (service_id)
WHERE tbl_zeitaufzeichnung.uid=".$this->db_add_param($user)."
$zeit
GROUP BY tbl_service.service_id HAVING COUNT(*) > $anzahl_ereignisse
UNION
SELECT tbl_service.*, '0' AS anzahl
FROM public.tbl_service
ORDER BY count DESC,bezeichnung,oe_kurzbz";
if($result = $this->db_query($qry))
{
@@ -215,7 +206,7 @@ class service extends basis_db
$obj->beschreibung = $row->beschreibung;
$obj->ext_id = $row->ext_id;
$obj->oe_kurzbz = $row->oe_kurzbz;
$obj->anzahl = $row->anzahl;
$obj->anzahl = $row->count;
$obj->content_id = $row->content_id;
$this->result[] = $obj;
+317 -271
View File
@@ -1,271 +1,317 @@
<?php
/* Copyright (C) 2010 Technikum-Wien
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* Authors: Christian Paminger <christian.paminger@technikum-wien.at>,
* Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at> and
* Karl Burkhart <burkhart@technikum-wien.at>.
*/
/**
* Klasse Sprache
*/
require_once(dirname(__FILE__).'/basis_db.class.php');
class sprache extends basis_db
{
public $result;
public static $index_arr = array();
public $sprache; // string
public $locale;
public $index; // int, id des array index
public $content; // boolean
public $bezeichnung_arr;
/**
*
* Konstruktor
* @param Sprache die geladen werden soll (Default=null)
*/
public function __construct($sprache = null)
{
parent::__construct();
if(!is_null($sprache))
$this->load($sprache);
}
/**
*
* Lädt die Sprache
* @param $sprache die geladen werden soll
* @return true bei Erfolg, false wenn ein Fehler aufgetreten ist
*/
public function load($sprache)
{
$qry = "SELECT *,".$this->getSprachQuery('bezeichnung')." FROM public.tbl_sprache WHERE sprache=".$this->db_add_param($sprache, FHC_STRING, false).";";
if($this->db_query($qry))
{
if($row = $this->db_fetch_object())
{
$this->sprache = $row->sprache;
$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
{
$this->errormsg = 'Sprache nicht gefunden';
return false;
}
}
else
{
$this->errormsg = "Fehler bei der Abfrage.";
return false;
}
}
/**
*
* Lädt alle verfügbaren Sprachen
* @return true bei Erfolg, false wenn ein Fehler aufgetreten ist.
*/
public function getAll($content=null)
{
$qry = "SELECT *,".$this->getSprachQuery('bezeichnung')." FROM public.tbl_sprache";
if(!is_null($content))
$qry.= " WHERE content=".$this->db_add_param($content, FHC_BOOLEAN);
$qry.=" ORDER BY sprache";
if(!$this->db_query($qry))
{
$this->errormsg ="Fehler bei der Abfrage.";
return false;
}
while($row = $this->db_fetch_object())
{
$sprache = new sprache();
$sprache->sprache = $row->sprache;
$sprache->locale = $row->locale;
$sprache->index = $row->index;
$sprache->content = $this->db_parse_bool($row->content);
$sprache->bezeichnung_arr=$this->parseSprachResult('bezeichnung',$row);
$this->result[] = $sprache;
}
return true;
}
/**
*
* Lädt das Index Array
* @return true bei Erfolg, false wenn ein Fehler aufgetreten ist.
*/
public function loadIndexArray()
{
$qry = "SELECT sprache, index FROM public.tbl_sprache WHERE index is not null ORDER BY index";
if(!$this->db_query($qry))
{
$this->errormsg ="Fehler bei der Abfrage.";
return false;
}
while($row = $this->db_fetch_object())
{
self::$index_arr[$row->sprache]=$row->index;
}
return true;
}
/**
*
* Löscht die übergebene Sprache
* @param $sprache die gelöscht werden soll
*/
public function delete($sprache)
{
$qry = "DELETE FROM public.tbl_sprache WHERE sprache = ".$this->db_add_param($sprache, FHC_STRING, false).";";
if(!$this->db_query($qry))
{
$this->errormsg = "Fehler beim löschen der Sprache aufgetreten.";
return false;
}
return true;
}
/**
*
* Liefert die Anzahl aller aktiven Sprachen zurück
* @return $anzahl der Sprachen, false im Fehlerfall
*/
public function getAnzahl()
{
$anzahl = 0;
$qry = 'SELECT count(sprache) as anzahl FROM public.tbl_sprache WHERE content = true;';
if(!$this->db_query($qry))
{
$this->errormsg = 'Fehler aufgetreten';
return false;
}
if($row = $this->db_fetch_object())
{
$anzahl = $row->anzahl;
}
return $anzahl;
}
/**
*
* Liefert die Sprache eines Index zurück
* @param $index der Sprache die gesucht wird
* @return $sprache, false im Fehlerfall
*/
public function getSpracheFromIndex($index)
{
$sprache = '';
$qry = "SELECT sprache FROM public.tbl_sprache WHERE index=".$this->db_add_param($index, FHC_INTEGER, false).";";
if(!$this->db_query($qry))
{
$this->errormsg = "Fehler aufgetreten.";
return false;
}
if($row = $this->db_fetch_object())
{
$sprache = $row->sprache;
}
return $sprache;
}
/**
* Liefert einen String mit den aufgespaltenen Elementen fuer mehrsprachige Arrays
* Der Result der Query kann dann mittels parseSprachResult wieder in ein Array umgewandelt werden
*
* @param $feldname
* @return string mit den aufgeschluesselten Arrayelementen der Sprache
*/
public function getSprachQuery($feldname)
{
$result = '';
if(!isset(self::$index_arr) || count(self::$index_arr)==0)
$this->loadIndexArray();
foreach(self::$index_arr as $sprache=>$index)
{
$result .= $feldname.'['.$index.'] as '.$feldname.'_'.$index.',';
}
return mb_substr($result,0,-1);
}
/**
* Wandelt den Result von mehrsprachigen Arrays in einer SQL Query in ein PHP Array um
*
* @param $feldname name der Datenbankspalte
* @param $row row des SQL Results
* @return array mit den Sprachen der Spalte
*/
public function parseSprachResult($feldname, $row)
{
$result = array();
if(!isset(self::$index_arr) || count(self::$index_arr)==0)
$this->getAll();
foreach(self::$index_arr as $sprache=>$index)
{
$name = $feldname.'_'.$index;
if(isset($row->$name))
$result[$sprache] = $row->$name;
else
$result[$sprache] = null;
}
return $result;
}
/**
*
* Liefert die Bezeichnung einer Sprache in der angegebenen Sprache
* @param $sprache Kurzbezeichnung der Sprache dessen Bezeichnung geladen werden soll
* @param $anzeigesprache Sprache in der die bezeichnung geladen werden soll
*/
public function getBezeichnung($sprache, $anzeigesprache)
{
$qry = "SELECT bezeichnung[(SELECT index FROM public.tbl_sprache WHERE sprache=".$this->db_add_param($anzeigesprache).")]
FROM public.tbl_sprache WHERE sprache=".$this->db_add_param($sprache);
if($result = $this->db_query($qry))
{
if($row = $this->db_fetch_object($result))
{
return $row->bezeichnung;
}
}
}
}
<?php
/* Copyright (C) 2010 Technikum-Wien
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* Authors: Christian Paminger <christian.paminger@technikum-wien.at>,
* Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at> and
* Karl Burkhart <burkhart@technikum-wien.at>.
*/
/**
* Klasse Sprache
*/
require_once(dirname(__FILE__).'/basis_db.class.php');
class sprache extends basis_db
{
public $result;
public static $index_arr = array();
public $sprache; // string
public $locale;
public $index; // int, id des array index
public $content; // boolean
public $bezeichnung_arr;
/**
*
* Konstruktor
* @param Sprache die geladen werden soll (Default=null)
*/
public function __construct($sprache = null)
{
parent::__construct();
if(!is_null($sprache))
$this->load($sprache);
}
/**
*
* Lädt die Sprache
* @param $sprache die geladen werden soll
* @return true bei Erfolg, false wenn ein Fehler aufgetreten ist
*/
public function load($sprache)
{
$qry = "SELECT *,".$this->getSprachQuery('bezeichnung')." FROM public.tbl_sprache WHERE sprache=".$this->db_add_param($sprache, FHC_STRING, false).";";
if($this->db_query($qry))
{
if($row = $this->db_fetch_object())
{
$this->sprache = $row->sprache;
$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
{
$this->errormsg = 'Sprache nicht gefunden';
return false;
}
}
else
{
$this->errormsg = "Fehler bei der Abfrage.";
return false;
}
}
/**
*
* Lädt alle verfügbaren Sprachen
* @return true bei Erfolg, false wenn ein Fehler aufgetreten ist.
*/
public function getAll($content=null)
{
$qry = "SELECT *,".$this->getSprachQuery('bezeichnung')." FROM public.tbl_sprache";
if(!is_null($content))
$qry.= " WHERE content=".$this->db_add_param($content, FHC_BOOLEAN);
$qry.=" ORDER BY sprache";
if(!$this->db_query($qry))
{
$this->errormsg ="Fehler bei der Abfrage.";
return false;
}
while($row = $this->db_fetch_object())
{
$sprache = new sprache();
$sprache->sprache = $row->sprache;
$sprache->locale = $row->locale;
$sprache->index = $row->index;
$sprache->content = $this->db_parse_bool($row->content);
$sprache->bezeichnung_arr=$this->parseSprachResult('bezeichnung',$row);
$this->result[] = $sprache;
}
return true;
}
/**
*
* Lädt das Index Array
* @return true bei Erfolg, false wenn ein Fehler aufgetreten ist.
*/
public function loadIndexArray()
{
$qry = "SELECT sprache, index FROM public.tbl_sprache WHERE index is not null ORDER BY index";
if(!$this->db_query($qry))
{
$this->errormsg ="Fehler bei der Abfrage.";
return false;
}
while($row = $this->db_fetch_object())
{
self::$index_arr[$row->sprache]=$row->index;
}
return true;
}
/**
*
* Löscht die übergebene Sprache
* @param $sprache die gelöscht werden soll
*/
public function delete($sprache)
{
$qry = "DELETE FROM public.tbl_sprache WHERE sprache = ".$this->db_add_param($sprache, FHC_STRING, false).";";
if(!$this->db_query($qry))
{
$this->errormsg = "Fehler beim löschen der Sprache aufgetreten.";
return false;
}
return true;
}
/**
*
* Liefert die Anzahl aller aktiven Sprachen zurück
* @return $anzahl der Sprachen, false im Fehlerfall
*/
public function getAnzahl()
{
$anzahl = 0;
$qry = 'SELECT count(sprache) as anzahl FROM public.tbl_sprache WHERE content = true;';
if(!$this->db_query($qry))
{
$this->errormsg = 'Fehler aufgetreten';
return false;
}
if($row = $this->db_fetch_object())
{
$anzahl = $row->anzahl;
}
return $anzahl;
}
/**
*
* Liefert die Sprache eines Index zurück
* @param $index der Sprache die gesucht wird
* @return $sprache, false im Fehlerfall
*/
public function getSpracheFromIndex($index)
{
$sprache = '';
$qry = "SELECT sprache FROM public.tbl_sprache WHERE index=".$this->db_add_param($index, FHC_INTEGER, false).";";
if(!$this->db_query($qry))
{
$this->errormsg = "Fehler aufgetreten.";
return false;
}
if($row = $this->db_fetch_object())
{
$sprache = $row->sprache;
}
return $sprache;
}
/**
*
* Liefert den Index einer Sprache zurück
* @param $sprache der Sprache die gesucht wird
* @return $index, false im Fehlerfall
*/
public function getIndexFromSprache($sprache)
{
$index = false;
$qry = "SELECT * FROM public.tbl_sprache WHERE sprache=".$this->db_add_param($sprache).";";
if(!$this->db_query($qry))
{
$this->errormsg = "Fehler aufgetreten.";
return false;
}
if($row = $this->db_fetch_object())
{
$index = $row->index;
}
return $index;
}
public function getAllIndexesSorted()
{
$languages = array();
if(!isset($this->result))
$this->getAll(true);
foreach($this->result as $s)
{
$languages[$s->index] = $s->sprache;
}
ksort($languages);
//lücken im sprachenarray füllen
for($i = 1; $i<=max(array_keys($languages));$i++)
{
if(!isset($languages[$i]))
$languages[$i] = false;
}
return $languages;
}
/**
* Liefert einen String mit den aufgespaltenen Elementen fuer mehrsprachige Arrays
* Der Result der Query kann dann mittels parseSprachResult wieder in ein Array umgewandelt werden
*
* @param $feldname
* @return string mit den aufgeschluesselten Arrayelementen der Sprache
*/
public function getSprachQuery($feldname)
{
$result = '';
if(!isset(self::$index_arr) || count(self::$index_arr)==0)
$this->loadIndexArray();
foreach(self::$index_arr as $sprache=>$index)
{
$result .= $feldname.'['.$index.'] as '.$feldname.'_'.$index.',';
}
return mb_substr($result,0,-1);
}
/**
* Wandelt den Result von mehrsprachigen Arrays in einer SQL Query in ein PHP Array um
*
* @param $feldname name der Datenbankspalte
* @param $row row des SQL Results
* @return array mit den Sprachen der Spalte
*/
public function parseSprachResult($feldname, $row)
{
$result = array();
if(!isset(self::$index_arr) || count(self::$index_arr)==0)
$this->getAll();
foreach(self::$index_arr as $sprache=>$index)
{
$name = $feldname.'_'.$index;
if(isset($row->$name))
$result[$sprache] = $row->$name;
else
$result[$sprache] = null;
}
return $result;
}
/**
*
* Liefert die Bezeichnung einer Sprache in der angegebenen Sprache
* @param $sprache Kurzbezeichnung der Sprache dessen Bezeichnung geladen werden soll
* @param $anzeigesprache Sprache in der die bezeichnung geladen werden soll
*/
public function getBezeichnung($sprache, $anzeigesprache)
{
$qry = "SELECT bezeichnung[(SELECT index FROM public.tbl_sprache WHERE sprache=".$this->db_add_param($anzeigesprache).")]
FROM public.tbl_sprache WHERE sprache=".$this->db_add_param($sprache);
if($result = $this->db_query($qry))
{
if($row = $this->db_fetch_object($result))
{
return $row->bezeichnung;
}
}
}
}
+1
View File
@@ -241,6 +241,7 @@ class studiengang extends basis_db
. 'FROM lehre.vw_studienplan '
. 'LEFT JOIN bis.tbl_lgartcode USING (lgartcode) '
. 'WHERE onlinebewerbung IS TRUE '
. 'AND aktiv IS TRUE '
. 'ORDER BY typ, studiengangbezeichnung, tbl_lgartcode.bezeichnung ASC';
if(!$result = $this->db_query($qry))
File diff suppressed because it is too large Load Diff