diff --git a/cis/private/tools/ampelleiteruebersicht.php b/cis/private/tools/ampelleiteruebersicht.php new file mode 100755 index 000000000..1b40ef5d1 --- /dev/null +++ b/cis/private/tools/ampelleiteruebersicht.php @@ -0,0 +1,208 @@ + + */ +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'); +require_once('../../../include/benutzerfunktion.class.php'); +require_once('../../../include/organisationseinheit.class.php'); + +$user = get_uid(); +$sprache = getSprache(); +$p = new phrasen($sprache); +$basis = new basis(); + +echo ' + + + + + + + + + ',$p->t('tools/ampelsystem'),' + + + + +

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

+'; + + +$datum_obj = new datum(); +$benutzerfunktion = new benutzerfunktion(); +$benutzerfunktion->getBenutzerFunktionen('Leitung', '', '', $user); + +$organisationseinheit = new organisationseinheit(); + +$oes=array(); +foreach ($benutzerfunktion->result as $row) +{ + $oe = $organisationseinheit->getChilds($row->oe_kurzbz); + $oes = array_merge($oe, $oes); +} +array_unique($oes); +if(count($oes)==0) + die($p->t('global/keineBerechtigungFuerDieseSeite')); + +if(!$organisationseinheit->loadArray($oes,'organisationseinheittyp_kurzbz, bezeichnung')) + echo 'Fehler:'.$organisationseinheit->errormsg; + +if(isset($_POST['oe_kurzbz'])) + $oe_kurzbz=$_POST['oe_kurzbz']; +else + $oe_kurzbz=''; + +if(isset($_POST['ampel_id'])) + $ampel_id = $_POST['ampel_id']; +else + $ampel_id = ''; + +echo '
'; +echo $p->t('global/organisationseinheit').': '; + +$ampel = new ampel(); +$ampel->getAll(); +echo ' '.$p->t('tools/ampel').': '; +echo ''; +echo '

'; + + +$oe_arr = $oe_kurzbz!=''?array($oe_kurzbz):$oes; +//echo 'OE: '.$oe_kurzbz.' Ampel:'.$ampel_id; +$ampel = new ampel(); +if(!$ampel->loadAmpelMitarbeiter($oe_arr, $ampel_id)) + die('Fehler:'.$ampel->errormsg); + + +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'; + + //if($bestaetigt = $ampel->isBestaetigt($user,$row->ampel_id)) + // $ampelstatus=''; + if($row->ampel_benutzer_bestaetigt_id!='') + { + $ampelstatus=''; + $bestaetigt=true; + } + else + $bestaetigt=false; + + echo ''; + echo ''; + $beschreibung = $row->beschreibung[$sprache]; + if($beschreibung=='' && isset($row->beschreibung[DEFAULT_LANGUAGE])) + $beschreibung = $row->beschreibung[DEFAULT_LANGUAGE]; + echo ''; + $institut = $row->oe_kurzbz; + echo ''; + $name = $row->titelpre.' '.$row->vorname.' '.$row->nachname.' '.$row->titelpost; + echo ''; + echo ''; + echo ''; + echo ''; +} +echo '
'.$p->t('tools/ampelStatus').''.$p->t('tools/ampelBeschreibung').''.$p->t('global/institut').''.$p->t('tools/ampelMitarbeiter').''.$p->t('tools/ampelRestdauer').''.$p->t('tools/ampelDeadline').'
'; + switch($ampelstatus) + { + case 'rot': + $status= ''; + break; + case 'gelb': + $status= ''; + break; + case 'gruen': + $status= ''; + break; + default: + $status= '-'; + break; + } + echo $status; + + echo ''.$beschreibung.''.$institut.''.$name.''.(($ts_deadline-$ts_now)/86400).''.$datum_obj->formatDatum($row->deadline,'d.m.Y').'
'; + +echo ' +'; +?> \ No newline at end of file diff --git a/include/ampel.class.php b/include/ampel.class.php index 80f28016a..8cd3afaf5 100755 --- a/include/ampel.class.php +++ b/include/ampel.class.php @@ -423,6 +423,83 @@ class ampel extends basis_db return false; } } + + /** + * Laedt Ampeln und Mitarbeiter zu einer OE/Ampel + * @param $oe_arr + * @param $ampel_id + */ + public function loadAmpelMitarbeiter($oe_arr, $ampel_id) + { + $sprache = new sprache(); + $beschreibung = $sprache->getSprachQuery('beschreibung'); + if(!is_numeric($ampel_id) && $ampel_id!='') + { + $this->errormsg = 'Ampel ID ist ungueltig'; + return false; + } + + // Ampeln holen + $qry = "SELECT *,".$beschreibung." FROM public.tbl_ampel"; + if($ampel_id!='') + $qry.=" WHERE ampel_id='".$ampel_id."'"; + + if($result = $this->db_query($qry)) + { + while($row = $this->db_fetch_object($result)) + { + // Alle Mitarbeiter dazu holen + $qry = "SELECT + * + FROM + (".$row->benutzer_select.") a + JOIN public.tbl_benutzerfunktion USING(uid) + JOIN campus.vw_benutzer USING(uid) + LEFT JOIN public.tbl_ampel_benutzer_bestaetigt USING(uid) + WHERE + (tbl_ampel_benutzer_bestaetigt.ampel_id is null OR tbl_ampel_benutzer_bestaetigt.ampel_id='".$row->ampel_id."') + AND + (funktion_kurzbz='oezuordnung' AND oe_kurzbz in(".$this->implode4SQL($oe_arr).")) + + "; + + if($result_ma = $this->db_query($qry)) + { + while($row_ma = $this->db_fetch_object($result_ma)) + { + $obj = new ampel(); + + $obj->ampel_id = $row->ampel_id; + $obj->kurzbz = $row->kurzbz; + $obj->beschreibung = $sprache->parseSprachResult('beschreibung', $row); + $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; + + $obj->vorname = $row_ma->vorname; + $obj->nachname = $row_ma->nachname; + $obj->titelpre = $row_ma->titelpre; + $obj->titelpost = $row_ma->titelpost; + $obj->oe_kurzbz = $row_ma->oe_kurzbz; + + $obj->ampel_benutzer_bestaetigt_id = $row_ma->ampel_benutzer_bestaetigt_id; + + $this->result[] = $obj; + } + } + } + return true; + } + else + { + $this->errormsg = 'Fehler beim Laden der Daten'; + return false; + } + + } } ?> \ No newline at end of file diff --git a/include/basis.class.php b/include/basis.class.php index 729d680ab..6e8b372f7 100644 --- a/include/basis.class.php +++ b/include/basis.class.php @@ -101,5 +101,16 @@ class basis $datum+=3600; return $datum; } + + /** + * Konvertiert eine Zeichenkette, + * damit diese in HTML Dokumenten sicher ausgegeben werden kann + * + * @param $value + */ + public function convert_html_chars($value) + { + return htmlspecialchars($value); + } } ?> \ No newline at end of file diff --git a/include/benutzerfunktion.class.php b/include/benutzerfunktion.class.php index b0a14afe0..f0fd6d422 100644 --- a/include/benutzerfunktion.class.php +++ b/include/benutzerfunktion.class.php @@ -171,7 +171,7 @@ class benutzerfunktion extends basis_db * @return false wenn nicht vorhanden oder fehler * sonst true */ - public function getBenutzerFunktionen($funktion_kurzbz, $oe_kurzbz='', $semester='') + public function getBenutzerFunktionen($funktion_kurzbz, $oe_kurzbz='', $semester='', $uid='') { $qry = "SELECT * FROM public.tbl_benutzerfunktion WHERE funktion_kurzbz='".addslashes($funktion_kurzbz)."' @@ -182,7 +182,9 @@ class benutzerfunktion extends basis_db $qry.=" AND oe_kurzbz='".addslashes($oe_kurzbz)."'"; if($semester!='') $qry.=" AND semester='".addslashes($semester)."'"; - + if($uid!='') + $qry.=" AND uid='".addslashes($uid)."'"; + $qry.=" ORDER BY funktion_kurzbz, oe_kurzbz, semester"; if($result = $this->db_query($qry)) diff --git a/locale/de-AT/tools.php b/locale/de-AT/tools.php index fc1e0a5c6..5f78e6406 100755 --- a/locale/de-AT/tools.php +++ b/locale/de-AT/tools.php @@ -27,6 +27,7 @@ $this->phrasen['tools/keineZahlungenVorhanden']='Derzeit sind keine Zahlungen vo //Ampeln $this->phrasen['tools/ampelsystem']='Ampelsystem'; +$this->phrasen['tools/ampel']='Ampel'; $this->phrasen['tools/nichtZugeteilt']='Sie sind nicht zu dieser Ampel zugeteilt'; $this->phrasen['tools/ampelNichtGefunden']='Die angegeben Ampel wurde nicht gefunden'; $this->phrasen['tools/ampelStatus']='Status'; @@ -35,5 +36,6 @@ $this->phrasen['tools/ampelDeadline']='Deadline'; $this->phrasen['tools/ampelAktion']='Aktion'; $this->phrasen['tools/ampelBestaetigen']='bestätigen'; $this->phrasen['tools/ampelBestaetigt']='bestätigt'; - +$this->phrasen['tools/ampelMitarbeiter']='Mitarbeiter'; +$this->phrasen['tools/ampelRestdauer']='Restdauer in Tagen'; ?> diff --git a/locale/en-US/tools.php b/locale/en-US/tools.php index 9b57f313f..008db8da5 100755 --- a/locale/en-US/tools.php +++ b/locale/en-US/tools.php @@ -27,6 +27,7 @@ $this->phrasen['tools/keineZahlungenVorhanden']='Currently there are no payments //Ampeln $this->phrasen['tools/ampelsystem']='Ampelsystem'; +$this->phrasen['tools/ampel']='Ampel'; $this->phrasen['tools/nichtZugeteilt']='Sie sind nicht zu dieser Ampel zugeteilt'; $this->phrasen['tools/ampelNichtGefunden']='Die angegeben Ampel wurde nicht gefunden'; $this->phrasen['tools/ampelStatus']='Status'; @@ -35,4 +36,6 @@ $this->phrasen['tools/ampelDeadline']='Deadline'; $this->phrasen['tools/ampelAktion']='Action'; $this->phrasen['tools/ampelBestaetigen']='confirm'; $this->phrasen['tools/ampelBestaetigt']='confirmed'; +$this->phrasen['tools/ampelMitarbeiter']='Employee'; +$this->phrasen['tools/ampelRestdauer']='Remaining Days'; ?>