diff --git a/cis/ampel.php b/cis/ampel.php new file mode 100755 index 000000000..0a666a257 --- /dev/null +++ b/cis/ampel.php @@ -0,0 +1,52 @@ +loadUserAmpel($user); + $rot=0; + $gelb=0; + $datum = new datum(); + foreach($ampel->result as $row) + { + $ts_deadline = $datum->mktime_fromdate($row->deadline); + $vlz = "-".$row->vorlaufzeit." day"; + $ts_vorlaufzeit = strtotime($vlz, $ts_deadline); + $ts_now = $datum->mktime_fromdate(date('Y-m-d')); + + if($ts_deadline < $ts_now) + { + $rot++; + } + else + { + if($ts_vorlaufzeit<=$ts_now && $ts_now<=$ts_deadline) + { + $gelb++; + } + } + } + if($rot>0 || $gelb>0) + { + echo '['; + if($rot>0) + echo ' '.$rot.''; + if($rot>0 && $gelb>0) + echo ' | '; + if($gelb>0) + echo ' '.$gelb.''; + echo ' ]'; + } +} +else +{ + echo ""; + //echo microtime(); +} +?> \ No newline at end of file diff --git a/cis/index.php b/cis/index.php index 8f9cef38f..1503aa2f7 100644 --- a/cis/index.php +++ b/cis/index.php @@ -54,8 +54,10 @@ else CIS - <?php echo CAMPUS_NAME; ?> + + - + @@ -90,7 +105,8 @@ function changeSprache(sprache) - diff --git a/cis/private/tools/ampelverwaltung.php b/cis/private/tools/ampelverwaltung.php new file mode 100755 index 000000000..33e7a03f7 --- /dev/null +++ b/cis/private/tools/ampelverwaltung.php @@ -0,0 +1,149 @@ + + */ +require_once('../../../config/cis.config.inc.php'); +require_once('../../../include/functions.inc.php'); +require_once('../../../include/ampel.class.php'); +require_once('../../../include/datum.class.php'); +require_once('../../../include/phrasen.class.php'); + +$user = get_uid(); +$sprache = getSprache(); +$p = new phrasen($sprache); + +echo ' + + + + + + + + + ',$p->t('tools/ampelsystem'),' + + + + +

',$p->t('tools/ampelsystem'),'

+'; + + +$datum_obj = new datum(); + +$type = isset($_GET['type'])?$_GET['type']:''; +$ampel_id = isset($_GET['ampel_id'])?$_GET['ampel_id']:''; + +if($type=='bestaetigen' && is_numeric($ampel_id)) +{ + $ampel = new ampel(); + if($ampel->load($ampel_id)) + { + if($ampel->isZugeteilt($user, $ampel->benutzer_select)) + { + if($ampel->bestaetigen($user, $ampel_id)) + { + $message = 'OK'; + } + else + $message = ''.$ampel->errormsg.''; + } + else + $message = ''.$p->t('tools/nichtZugeteilt').''; + } + else + $message = ''.$p->t('tools/ampelNichtGefunden').''; +} + + +$ampel = new ampel(); +$ampel->loadUserAmpel($user, true); + +echo ' +
+ +
+ + + + + + + + + +'; + +foreach($ampel->result as $row) +{ + $ts_deadline = $datum_obj->mktime_fromdate($row->deadline); + $vlz = "-".$row->vorlaufzeit." day"; + $ts_vorlaufzeit = strtotime($vlz, $ts_deadline); + $ts_now = $datum_obj->mktime_fromdate(date('Y-m-d')); + + if($ts_vorlaufzeit<=$ts_now && $ts_now<=$ts_deadline) + $ampelstatus='gelb'; + elseif($ts_now>$ts_deadline) + $ampelstatus='rot'; + elseif($ts_now<$ts_deadline && $ts_vorlaufzeit>=$ts_now) + $ampelstatus='gruen'; + + echo ''; + echo ''; + echo ''; + echo ''; + + if(!$ampel->isBestaetigt($user,$row->ampel_id)) + echo ''; + else + echo ''; + +// echo ""; +// echo ""; +// echo ""; + echo ''; +} +echo '
'.$p->t('tools/ampelStatus').''.$p->t('tools/ampelBeschreibung').''.$p->t('tools/ampelDeadline').''.$p->t('tools/ampelAktion').'
'; + switch($ampelstatus) + { + case 'rot': + echo ''; + break; + case 'gelb': + echo ''; + break; + case 'gruen': + echo ''; + break; + default: + break; + } + echo ''.$row->beschreibung[$sprache].''.$datum_obj->formatDatum($row->deadline,'d.m.Y').'bestätigen".date('d.m.Y',$ts_now)."".date('d.m.Y',$ts_vorlaufzeit)."".date('d.m.Y',$ts_deadline)."
'; + +echo ' +'; +?> \ No newline at end of file diff --git a/include/ampel.class.php b/include/ampel.class.php index cbc4ef86a..19c031f82 100755 --- a/include/ampel.class.php +++ b/include/ampel.class.php @@ -22,6 +22,7 @@ * */ require_once(dirname(__FILE__).'/basis_db.class.php'); +require_once(dirname(__FILE__).'/sprache.class.php'); class ampel extends basis_db { @@ -31,7 +32,7 @@ class ampel extends basis_db //Tabellenspalten public $ampel_id; // bigint public $kurzbz; // varchar(64) - public $beschreibung; // text + public $beschreibung = array(); // text[] public $benutzer_select;// text public $deadline; // date public $vorlaufzeit; // smallint @@ -43,7 +44,7 @@ class ampel extends basis_db public $ampel_benutzer_id; // bigint public $uid; // varchar(32) - + /** * Konstruktor - Laedt optional eine Ampel * @param $amepl_id @@ -51,7 +52,7 @@ class ampel extends basis_db public function __construct($ampel_id=null) { parent::__construct(); - + if(!is_null($ampel_id)) $this->load($ampel_id); } @@ -70,7 +71,10 @@ class ampel extends basis_db return false; } - $qry = "SELECT * FROM public.tbl_ampel WHERE ampel_id='".addslashes($ampel_id)."'"; + $sprache = new sprache(); + $beschreibung = $sprache->getSprachQuery('beschreibung'); + + $qry = "SELECT *,".$beschreibung." FROM public.tbl_ampel WHERE ampel_id='".addslashes($ampel_id)."'"; if($result = $this->db_query($qry)) { @@ -78,7 +82,7 @@ class ampel extends basis_db { $this->ampel_id = $row->ampel_id; $this->kurzbz = $row->kurzbz; - $this->beschreibung = $row->beschreibung; + $this->beschreibung = $sprache->parseSprachResult('beschreibung', $row); $this->benutzer_select = $row->benutzer_select; $this->deadline = $row->deadline; $this->vorlaufzeit = $row->vorlaufzeit; @@ -108,7 +112,10 @@ class ampel extends basis_db */ public function getAll() { - $qry = "SELECT * FROM public.tbl_ampel ORDER BY deadline"; + $sprache = new sprache(); + $beschreibung = $sprache->getSprachQuery('beschreibung'); + + $qry = "SELECT *,".$beschreibung." FROM public.tbl_ampel ORDER BY deadline"; if($result = $this->db_query($qry)) { @@ -118,7 +125,7 @@ class ampel extends basis_db $obj->ampel_id = $row->ampel_id; $obj->kurzbz = $row->kurzbz; - $obj->beschreibung = $row->beschreibung; + $obj->beschreibung = $sprache->parseSprachResult('beschreibung', $row); $obj->benutzer_select = $row->benutzer_select; $obj->deadline = $row->deadline; $obj->vorlaufzeit = $row->vorlaufzeit; @@ -169,7 +176,8 @@ class ampel extends basis_db */ public function isZugeteilt($user, $benutzer_select) { - $qry = "SELECT CASE WHEN '".addslashes($user)."' IN (".$row->benutzer_select.") THEN true ELSE false END as zugeteilt"; + $qry = "SELECT CASE WHEN '".addslashes($user)."' IN (".$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)) @@ -196,10 +204,24 @@ class ampel extends basis_db * Laedt alle aktuellen Ampeln eines Users * @param $user */ - public function loadUserAmpel($user) + public function loadUserAmpel($user, $zukuenftige_anzeigen=false, $bestaetigt=false) { - $qry = "SELECT * FROM public.tbl_ampel WHERE deadline+verfallszeit>now() AND deadline-vorlaufzeitgetSprachQuery('beschreibung'); + $qry = "SELECT *,".$beschreibung." FROM public.tbl_ampel WHERE deadline+verfallszeit>now()"; + + if(!$zukuenftige_anzeigen) + $qry.=" AND deadline-vorlaufzeitdb_query($qry)) { while($row = $this->db_fetch_object($result)) @@ -210,7 +232,7 @@ class ampel extends basis_db $obj->ampel_id = $row->ampel_id; $obj->kurzbz = $row->kurzbz; - $obj->beschreibung = $row->beschreibung; + $obj->beschreibung = $sprache->parseSprachResult('beschreibung', $row); $obj->benutzer_select = $row->benutzer_select; $obj->deadline = $row->deadline; $obj->vorlaufzeit = $row->vorlaufzeit; @@ -239,13 +261,27 @@ class ampel extends basis_db if(is_null($new)) $new = $this->new; + $sprache = new sprache(); + $sprache->loadIndexArray(); + if($this->new) { - $qry = "BEGIN;INSERT INTO public.tbl_ampel (kurzbz, beschreibung, benutzer_select, deadline, + $qry = "BEGIN;INSERT INTO public.tbl_ampel (kurzbz, "; + + foreach($this->beschreibung as $key=>$value) + { + $idx = $sprache->index_arr[$key]; + $qry.=" beschreibung[$idx],"; + } + + $qry.=" 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->kurzbz).','; + + foreach($this->beschreibung as $key=>$value) + $this->addslashes($value).','; + + $qry .= $this->addslashes($this->benutzer_select).','. $this->addslashes($this->deadline).','. $this->addslashes($this->vorlaufzeit).','. $this->addslashes($this->verfallszeit).','. @@ -257,9 +293,15 @@ class ampel extends basis_db else { $qry = 'UPDATE public.tbl_ampel SET'. - ' kurzbz = '.$this->addslashes($this->kurzbz).','. - ' beschreibung = '.$this->addslashes($this->beschreibung).','. - ' benutzer_select = '.$this->addslashes($this->benutzer_select).','. + ' kurzbz = '.$this->addslashes($this->kurzbz).','; + + foreach($this->beschreibung as $key=>$value) + { + $idx = $sprache->index_arr[$key]; + $qry.=' beschreibung['.$idx.'] = '.$this->addslashes($value).','; + } + + $qry.= ' benutzer_select = '.$this->addslashes($this->benutzer_select).','. ' deadline = '.$this->addslashes($this->deadline).','. ' vorlaufzeit = '.$this->addslashes($this->vorlaufzeit).','. ' verfallszeit = '.$this->addslashes($this->verfallszeit).','. @@ -326,7 +368,30 @@ class ampel extends basis_db $this->errormsg = 'Fehler beim Loeschen der Ampel'; return false; } - } + } + + /** + * Bestaetigt die Ampel eines Users + * @param $user + * @param $ampel_id + * @return boolean + */ + public function bestaetigen($user, $ampel_id) + { + $qry = 'INSERT INTO public.tbl_ampel_benutzer_bestaetigt(ampel_id, uid, insertamum, insertvon) VALUES('. + $this->addslashes($ampel_id).','. + $this->addslashes($user).','. + 'now(),'. + $this->addslashes($user).');'; + + if($this->db_query($qry)) + return true; + else + { + $this->errormsg = 'Fehler beim Speichern der Daten'; + return false; + } + } } ?> \ No newline at end of file diff --git a/include/tw/cis_menu_global.inc.php b/include/tw/cis_menu_global.inc.php index a59ed6d75..b3ea5ffdb 100644 --- a/include/tw/cis_menu_global.inc.php +++ b/include/tw/cis_menu_global.inc.php @@ -29,7 +29,7 @@ require_once ('../include/functions.inc.php'); $sprache = getSprache(); $p = new phrasen($sprache); ?> -