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 '
';
+
+
+$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 '
+
+
+
+ | '.$p->t('tools/ampelStatus').' |
+ '.$p->t('tools/ampelBeschreibung').' |
+ '.$p->t('global/institut').' |
+ '.$p->t('tools/ampelMitarbeiter').' |
+ '.$p->t('tools/ampelRestdauer').' |
+ '.$p->t('tools/ampelDeadline').' |
+
+
+
+';
+
+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 '';
+ switch($ampelstatus)
+ {
+ case 'rot':
+ $status= ' ';
+ break;
+ case 'gelb':
+ $status= ' ';
+ break;
+ case 'gruen':
+ $status= ' ';
+ break;
+ default:
+ $status= '-';
+ break;
+ }
+ echo $status;
+
+ echo ' | ';
+ $beschreibung = $row->beschreibung[$sprache];
+ if($beschreibung=='' && isset($row->beschreibung[DEFAULT_LANGUAGE]))
+ $beschreibung = $row->beschreibung[DEFAULT_LANGUAGE];
+ echo ''.$beschreibung.' | ';
+ $institut = $row->oe_kurzbz;
+ echo ''.$institut.' | ';
+ $name = $row->titelpre.' '.$row->vorname.' '.$row->nachname.' '.$row->titelpost;
+ echo ''.$name.' | ';
+ echo ''.(($ts_deadline-$ts_now)/86400).' | ';
+ echo ''.$datum_obj->formatDatum($row->deadline,'d.m.Y').' | ';
+ echo '
';
+}
+echo '
';
+
+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';
?>