From 8ca0d3f14185c8973888b1ce5c0628b38e62a7fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Fri, 21 Oct 2011 12:25:44 +0000 Subject: [PATCH] =?UTF-8?q?Ampelsystem=20-=20Datenbanktabellen=20-=20Verwa?= =?UTF-8?q?ltungsoberfl=C3=A4che=20im=20Vilesci?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- include/ampel.class.php | 332 ++++++++++++++++++++++++ include/tw/vilesci_menu_main.inc.php | 1 + system/checksystem.php | 4 + vilesci/stammdaten/ampel_details.php | 165 ++++++++++++ vilesci/stammdaten/ampel_frameset.html | 20 ++ vilesci/stammdaten/ampel_uebersicht.php | 118 +++++++++ 6 files changed, 640 insertions(+) create mode 100755 include/ampel.class.php create mode 100755 vilesci/stammdaten/ampel_details.php create mode 100755 vilesci/stammdaten/ampel_frameset.html create mode 100755 vilesci/stammdaten/ampel_uebersicht.php diff --git a/include/ampel.class.php b/include/ampel.class.php new file mode 100755 index 000000000..cbc4ef86a --- /dev/null +++ b/include/ampel.class.php @@ -0,0 +1,332 @@ + and + */ +/** + * Klasse Ampel + * + */ +require_once(dirname(__FILE__).'/basis_db.class.php'); + +class ampel extends basis_db +{ + public $new; + public $result = array(); + + //Tabellenspalten + public $ampel_id; // bigint + public $kurzbz; // varchar(64) + public $beschreibung; // text + public $benutzer_select;// text + public $deadline; // date + public $vorlaufzeit; // smallint + public $verfallszeit; // smallint + public $insertamum; // timestamp + public $insertvon; // varchar(32) + public $updateamum; // timestamp + public $updatevon; // varchar(32) + + public $ampel_benutzer_id; // bigint + public $uid; // varchar(32) + + /** + * Konstruktor - Laedt optional eine Ampel + * @param $amepl_id + */ + public function __construct($ampel_id=null) + { + parent::__construct(); + + if(!is_null($ampel_id)) + $this->load($ampel_id); + } + + /** + * Laedt eine Ampel mit der uebergebenen ID + * + * @param $ampel_id + * @return boolean + */ + public function load($ampel_id) + { + if(!is_numeric($ampel_id)) + { + $this->errormsg = 'Ampel ID ist ungueltig'; + return false; + } + + $qry = "SELECT * FROM public.tbl_ampel WHERE ampel_id='".addslashes($ampel_id)."'"; + + if($result = $this->db_query($qry)) + { + if($row = $this->db_fetch_object($result)) + { + $this->ampel_id = $row->ampel_id; + $this->kurzbz = $row->kurzbz; + $this->beschreibung = $row->beschreibung; + $this->benutzer_select = $row->benutzer_select; + $this->deadline = $row->deadline; + $this->vorlaufzeit = $row->vorlaufzeit; + $this->verfallszeit = $row->verfallszeit; + $this->insertamum = $row->insertamum; + $this->insertvon = $row->insertvon; + $this->updateamum = $row->updateamum; + $this->updatevon = $row->updatevon; + + return true; + } + else + { + $this->errormsg = 'Ampel mit dieser ID exisitert nicht'; + return false; + } + } + else + { + $this->errormsg = 'Fehler beim Laden der Ampel'; + return false; + } + } + + /** + * Laedt alle vorhandenen Ampeln + */ + public function getAll() + { + $qry = "SELECT * FROM public.tbl_ampel ORDER BY deadline"; + + if($result = $this->db_query($qry)) + { + while($row = $this->db_fetch_object($result)) + { + $obj = new ampel(); + + $obj->ampel_id = $row->ampel_id; + $obj->kurzbz = $row->kurzbz; + $obj->beschreibung = $row->beschreibung; + $obj->benutzer_select = $row->benutzer_select; + $obj->deadline = $row->deadline; + $obj->vorlaufzeit = $row->vorlaufzeit; + $obj->verfallszeit = $row->verfallszeit; + $obj->insertamum = $row->insertamum; + $obj->insertvon = $row->insertvon; + + $this->result[] = $obj; + } + return true; + } + else + { + $this->errormsg='Fehler beim Laden der Daten'; + return false; + } + } + + /** + * Prueft ob ein User eine Ampel schon bestaetigt hat + * + * @param $user + * @param $ampel_id + * @return boolean + */ + public function isBestaetigt($user, $ampel_id) + { + $qry = "SELECT 1 FROM public.tbl_ampel_benutzer_bestaetigt WHERE ampel_id='".addslashes($ampel_id)."' AND uid='".addslashes($user)."'"; + + if($result = $this->db_query($qry)) + { + if($this->db_num_rows($result)>0) + return true; + else + return false; + } + else + { + $this->errormsg='Fehler beim Laden der Daten'; + return false; + } + } + + /** + * Prueft ob ein User zu einer Ampel zugeteilt ist + * @param $user + * @param $benutzer_select + */ + public function isZugeteilt($user, $benutzer_select) + { + $qry = "SELECT CASE WHEN '".addslashes($user)."' IN (".$row->benutzer_select.") THEN true ELSE false END as zugeteilt"; + if($result_zugeteilt = $this->db_query($qry)) + { + if($row_zugeteilt = $this->db_fetch_object($result_zugeteilt)) + { + if($row_zugeteilt->zugeteilt=='t') + return true; + else + return false; + } + else + { + $this->errormsg = 'Fehler beim Laden der Daten'; + return false; + } + } + else + { + $this->errormsg = 'Fehler beim Laden der Daten'; + return false; + } + } + + /** + * Laedt alle aktuellen Ampeln eines Users + * @param $user + */ + public function loadUserAmpel($user) + { + $qry = "SELECT * FROM public.tbl_ampel WHERE deadline+verfallszeit>now() AND deadline-vorlaufzeitdb_query($qry)) + { + while($row = $this->db_fetch_object($result)) + { + if($this->isZugeteilt($user, $row->benutzer_select)) + { + $obj = new ampel(); + + $obj->ampel_id = $row->ampel_id; + $obj->kurzbz = $row->kurzbz; + $obj->beschreibung = $row->beschreibung; + $obj->benutzer_select = $row->benutzer_select; + $obj->deadline = $row->deadline; + $obj->vorlaufzeit = $row->vorlaufzeit; + $obj->verfallszeit = $row->verfallszeit; + $obj->insertamum = $row->insertamum; + $obj->insertvon = $row->insertvon; + + $this->result[] = $obj; + } + } + return true; + } + else + { + $this->errormsg = 'Fehler beim Laden der Daten'; + return false; + } + } + + /** + * Speichert eine Ampel + * @param $new + */ + public function save($new=null) + { + if(is_null($new)) + $new = $this->new; + + if($this->new) + { + $qry = "BEGIN;INSERT INTO public.tbl_ampel (kurzbz, beschreibung, benutzer_select, deadline, + vorlaufzeit, verfallszeit, insertamum, insertvon , updateamum, updatevon) VALUES(". + $this->addslashes($this->kurzbz).','. + $this->addslashes($this->beschreibung).','. + $this->addslashes($this->benutzer_select).','. + $this->addslashes($this->deadline).','. + $this->addslashes($this->vorlaufzeit).','. + $this->addslashes($this->verfallszeit).','. + $this->addslashes($this->insertamum).','. + $this->addslashes($this->insertvon).','. + $this->addslashes($this->updateamum).','. + $this->addslashes($this->updatevon).');'; + } + else + { + $qry = 'UPDATE public.tbl_ampel SET'. + ' kurzbz = '.$this->addslashes($this->kurzbz).','. + ' beschreibung = '.$this->addslashes($this->beschreibung).','. + ' benutzer_select = '.$this->addslashes($this->benutzer_select).','. + ' deadline = '.$this->addslashes($this->deadline).','. + ' vorlaufzeit = '.$this->addslashes($this->vorlaufzeit).','. + ' verfallszeit = '.$this->addslashes($this->verfallszeit).','. + ' updateamum ='.$this->addslashes($this->updateamum).','. + ' updatevon ='.$this->addslashes($this->updatevon). + ' WHERE ampel_id='.$this->addslashes($this->ampel_id).';'; + } + + if($this->db_query($qry)) + { + if($new) + { + $qry = "SELECT currval('public.seq_ampel_ampel_id') as id"; + if($result = $this->db_query($qry)) + { + if($row = $this->db_fetch_object($result)) + { + $this->ampel_id = $row->id; + $this->db_query('COMMIT;'); + return true; + } + else + { + $this->errormsg = 'Fehler beim Auslesen der Sequence'; + $this->db_query('ROLLBACK'); + return false; + } + } + else + { + $this->errormsg = 'Fehler beim Auslesen der Sequence'; + $this->db_query('ROLLBACK'); + return false; + } + } + else + return true; + } + else + { + $this->errormsg = 'Fehler beim Speichern der Daten'; + return false; + } + } + + /** + * Loescht eine Ampel + + * @param $ampel_id + */ + public function delete($ampel_id) + { + if(!is_numeric($ampel_id)) + { + $this->errormsg='ID ist ungueltig'; + return false; + } + $qry = "DELETE FROM public.tbl_ampel WHERE ampel_id='".addslashes($ampel_id)."'"; + + if($this->db_query($qry)) + return true; + else + { + $this->errormsg = 'Fehler beim Loeschen der Ampel'; + return false; + } + } + +} +?> \ No newline at end of file diff --git a/include/tw/vilesci_menu_main.inc.php b/include/tw/vilesci_menu_main.inc.php index c674981f9..3659a5cdf 100644 --- a/include/tw/vilesci_menu_main.inc.php +++ b/include/tw/vilesci_menu_main.inc.php @@ -162,6 +162,7 @@ $menu=array 'Firmen'=>array('name'=>'Firmen', 'link'=>'stammdaten/firma_frameset.html', 'target'=>'main','permissions'=>array('basis/firma')), 'Organisationseinheiten'=>array('name'=>'Organisationseinheiten', 'link'=>'stammdaten/organisationseinheiten.php', 'target'=>'main','permissions'=>array('basis/organisationseinheit')), 'Statistik'=>array('name'=>'Statistik', 'link'=>'stammdaten/statistik_frameset.html', 'target'=>'main','permissions'=>array('basis/statistik')), + 'Ampel'=>array('name'=>'Ampel', 'link'=>'stammdaten/ampel_frameset.html', 'target'=>'main','permissions'=>array('basis/ampel')), 'ImExport'=>array ( 'name'=>'ImExport','permissions'=>array('admin'), diff --git a/system/checksystem.php b/system/checksystem.php index 42c093732..fbd567190 100644 --- a/system/checksystem.php +++ b/system/checksystem.php @@ -2889,6 +2889,10 @@ if(!$result = @$db->db_query("SELECT 1 FROM public.tbl_ampel")) GRANT SELECT ON public.tbl_ampel TO web; GRANT SELECT, UPDATE, INSERT, DELETE ON public.tbl_ampel_benutzer_bestaetigt TO vilesci; GRANT SELECT, UPDATE, INSERT, DELETE ON public.tbl_ampel_benutzer_bestaetigt TO web; + GRANT SELECT, UPDATE ON SEQUENCE public.seq_ampel_ampel_id TO web; + GRANT SELECT, UPDATE ON SEQUENCE public.seq_ampel_ampel_id TO vilesci; + GRANT SELECT, UPDATE ON SEQUENCE public.seq_ampel_benutzer_bestaetigt_ampel_benutzer_bestaetigt_id TO web; + GRANT SELECT, UPDATE ON SEQUENCE public.seq_ampel_benutzer_bestaetigt_ampel_benutzer_bestaetigt_id TO vilesci; "; diff --git a/vilesci/stammdaten/ampel_details.php b/vilesci/stammdaten/ampel_details.php new file mode 100755 index 000000000..0ce26d06e --- /dev/null +++ b/vilesci/stammdaten/ampel_details.php @@ -0,0 +1,165 @@ + + */ +/** + * Seite zur Wartung der Ampeln + */ +require_once('../../config/vilesci.config.inc.php'); +require_once('../../include/ampel.class.php'); +require_once('../../include/benutzerberechtigung.class.php'); +require_once('../../include/datum.class.php'); + +if (!$db = new basis_db()) + die('Es konnte keine Verbindung zum Server aufgebaut werden.'); + +$user = get_uid(); + +$rechte = new benutzerberechtigung(); +$rechte->getBerechtigungen($user); + +if(!$rechte->isBerechtigt('basis/ampel')) + die('Sie haben keine Berechtigung fuer diese Seite'); + +$datum_obj = new datum(); +?> + + + + Ampel - Details + + + + + +insertamum=date('Y-m-d H:i:s'); + $ampel->insertvon = $user; + $ampel->new = true; + } + else + { + if(!$ampel->load($ampel_id)) + die($ampel->errormsg); + + $ampel->new=false; + } + + $ampel->kurzbz=$kurzbz; + $ampel->beschreibung = $beschreibung; + $ampel->benutzer_select = $benutzer_select; + $ampel->deadline = $datum_obj->formatDatum($deadline,'Y-m-d'); + $ampel->vorlaufzeit = $vorlaufzeit; + $ampel->verfallszeit = $verfallszeit; + $ampel->updateamum = date('Y-m-d H:i:s'); + $ampel->updatevon = $user; + + if($ampel->save()) + { + echo 'Daten erfolgreich gespeichert'; + echo "\n"; + $action='update'; + $ampel_id = $ampel->ampel_id; + } + else + { + $action='new'; + echo ''.$ampel->errormsg.''; + } + } + + echo '
'; + switch($action) + { + case 'new': + echo 'Neu'; + $new = 'true'; + break; + case 'update': + if(!$ampel->load($ampel_id)) + die($ampel->errormsg); + echo "Bearbeiten von ID $ampel_id"; + $new = 'false'; + break; + case 'copy': + if(!$ampel->load($ampel_id)) + die($ampel->errormsg); + echo "Kopieren von ID $ampel_id"; + $new = 'true'; + $ampel->ampel_id=''; + break; + default: + die('Invalid Action'); + break; + } + echo '
'; + echo ''; + echo ''; + echo ''; + echo ''; + echo ' '; + echo ' '; + echo ' '; + echo ' '; + echo ' '; + echo ''; + echo ''; + echo ' '; + echo ' '; + echo ' '; + echo ' '; + echo ' '; + echo ''; + echo ''; + echo ' '; + echo ' '; + echo ' '; + echo ''; + echo ''; + echo ' '; + echo ' '; + echo ' '; + echo ''; + echo ''; + echo ' '; + echo ' '; + echo ' '; + echo '
KurzbzDeadline
BeschreibungVorlaufzeit (in Tagen)
Verfallszeit (in Tagen)
Benutzer Select
'; + echo '
'; + + echo '
'; +?> + + \ No newline at end of file diff --git a/vilesci/stammdaten/ampel_frameset.html b/vilesci/stammdaten/ampel_frameset.html new file mode 100755 index 000000000..2f9e08e82 --- /dev/null +++ b/vilesci/stammdaten/ampel_frameset.html @@ -0,0 +1,20 @@ + + + + + VileSci + + + + + + + + + <body bgcolor="#FFFFFF"> + This application works only with a frames-enabled browser.<br /> + </body> + + + + \ No newline at end of file diff --git a/vilesci/stammdaten/ampel_uebersicht.php b/vilesci/stammdaten/ampel_uebersicht.php new file mode 100755 index 000000000..feef9c311 --- /dev/null +++ b/vilesci/stammdaten/ampel_uebersicht.php @@ -0,0 +1,118 @@ + + */ +require_once('../../config/vilesci.config.inc.php'); +require_once('../../include/ampel.class.php'); +require_once('../../include/benutzerberechtigung.class.php'); +require_once('../../include/datum.class.php'); + +$user = get_uid(); + +$rechte = new benutzerberechtigung(); +$rechte->getBerechtigungen($user); + +if(!$rechte->isBerechtigt('basis/ampel')) + die('Sie haben keine Berechtigung fuer diese Seite'); + +$datum_obj = new datum(); + +echo ' + + + Ampel + + + + + + + + + +

Ampel Übersicht

+
+ Neu +
'; +if(isset($_GET['action']) && $_GET['action']=='delete') +{ + if(!$rechte->isBerechtigt('basis/ampel', null, 'suid')) + die('Sie haben keine Berechtigung fuer diese Seite'); + + if(!isset($_GET['ampel_id'])) + die('Fehlender Parameter Statistik'); + + $ampel = new ampel(); + if($ampel->delete($_GET['ampel_id'])) + echo 'Eintrag wurde erfolgreich gelöscht'; + else + echo ''.$ampel->errormsg.''; +} + +$ampel = new ampel(); + +if(!$ampel->getAll()) + die($ampel->errormsg); + +echo ' + + + + + + + + + + + '; + +foreach($ampel->result as $row) +{ + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; +} +echo ' +
IDKurzbzDeadlineVorlaufzeitVerfallszeitAktion
',$row->ampel_id,'',$row->kurzbz,'',$datum_obj->formatDatum($row->deadline,'d.m.Y'),'',$row->vorlaufzeit,'',$row->verfallszeit,'bearbeitenkopierenentfernen
+ +'; +?> \ No newline at end of file