- Syncroscript zum Abgleich der Kartenzuordnung und UID mit LDAP

- Seite zur Suche von Personen und Anzeige von Karten- und Fotostatus hinzugefügt
- Seite zum Kartentausch legt nun keine Karten mehr an, sondern setzt nur das Ausgabedatum
- Fehler beim Speichern von mehreren Karten hinereinander im FAS behoben
This commit is contained in:
Andreas Österreicher
2012-06-26 15:25:02 +00:00
parent 81876572a8
commit 234a72125f
7 changed files with 377 additions and 80 deletions
+1 -1
View File
@@ -418,7 +418,7 @@ function BetriebsmittelDetailSpeichern()
else
{
BetriebsmittelSelectBetriebsmittelperson_id=val.dbdml_data;
loadBetriebsmittel(Betriebsmittel_Person_id);
loadBetriebsmittel(Betriebsmittel_Person_id, Betriebsmittel_Person_UID);
}
}
+2 -1
View File
@@ -62,7 +62,8 @@ mkdir('Pictures');
// Vorlage der Zutrittskarte laden
$vorlage = new vorlage();
$vorlage->getAktuelleVorlage('0', 'Zutrittskarte');
if(!$vorlage->getAktuelleVorlage('0', 'Zutrittskarte'))
die($vorlage->errormsg);
$xsl_content = $vorlage->text;
// Vorlage ODT in den Temp Ordner kopieren
+59
View File
@@ -562,5 +562,64 @@ class betriebsmittelperson extends basis_db
return false;
}
}
/**
* Sucht welche Person die uebergebene Kartennummer hat
* @param $person_id Person ID
* @param $nummer Kartennummer
* @return true wenn ok, false im Fehlerfall
*/
public function getKartenzuordnungPerson($person_id, $nummer)
{
$qry='
SELECT
*
FROM
wawi.tbl_betriebsmittel
JOIN wawi.tbl_betriebsmittelperson USING(betriebsmittel_id)
WHERE tbl_betriebsmittel.nummer='.$this->db_add_param($nummer).'
AND tbl_betriebsmittelperson.person_id='.$this->db_add_param($person_id);
if($this->db_query($qry))
{
if($row = $this->db_fetch_object())
{
$this->betriebsmittelperson_id = $row->betriebsmittelperson_id;
$this->betriebsmittel_id = $row->betriebsmittel_id;
$this->beschreibung = $row->beschreibung;
$this->betriebsmitteltyp = $row->betriebsmitteltyp;
$this->nummer = $row->nummer;
$this->inventarnummer = $row->inventarnummer;
$this->reservieren = $this->db_parse_bool($row->reservieren);
$this->ort_kurzbz = $row->ort_kurzbz;
$this->person_id = $row->person_id;
$this->anmerkung = $row->anmerkung;
$this->kaution = $row->kaution;
$this->ausgegebenam = $row->ausgegebenam;
$this->retouram = $row->retouram;
$this->insertamum = $row->insertamum;
$this->insertvon = $row->insertvon;
$this->updateamum = $row->updateamum;
$this->updatevon = $row->updatevon;
$this->ext_id = $row->ext_id;
$this->oe_kurzbz = $row->oe_kurzbz;
$this->nummer2 = $row->nummer2;
$this->uid = $row->uid;
return true;
}
else
{
$this->errormsg = 'Karte ist derzeit nicht ausgegeben';
return false;
}
}
else
{
$this->errormsg = 'Fehler beim Laden der Daten';
return false;
}
}
}
?>
+3 -1
View File
@@ -172,8 +172,10 @@ $menu=array
(
'name'=>'FH Ausweis','permissions'=>array('basis/fhausweis'),
'Profilfotocheck'=>array('name'=>'Profilfoto Check','link'=>'fhausweis/bildpruefung.php','target'=>'main'),
'Kartentausch'=>array('name'=>'Kartentausch','link'=>'fhausweis/kartentausch.php','target'=>'main'),
'Kartenverwaltung'=>array('name'=>'Kartenverwaltung','link'=>'fhausweis/kartenverwaltung.php','target'=>'main'),
'KarteZuweisen'=>array('name'=>'Karte zuweisen','link'=>'fhausweis/kartezuweisen.php','target'=>'main'),
'Kartentausch'=>array('name'=>'Kartentausch','link'=>'fhausweis/kartentausch.php','target'=>'main'),
'Suche'=>array('name'=>'Suche','link'=>'fhausweis/search.php','target'=>'main'),
'Syncronisation'=>array('name'=>'Syncronisation', 'link'=>'stammdaten/imexport/zutrittskarten/index.html', 'target'=>'main')
)
),
+84
View File
@@ -0,0 +1,84 @@
<?php
/* Copyright (C) 2012 FH 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: Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at>
*/
require_once('../config/vilesci.config.inc.php');
require_once('../include/functions.inc.php');
require_once('../include/benutzerberechtigung.class.php');
require_once('../include/person.class.php');
$uid = get_uid();
$rechte = new benutzerberechtigung();
$rechte->getBerechtigungen($uid);
if(!$rechte->isBerechtigt('admin'))
die('Sie haben keine Berechtigung für diese Seite');
//Alle Kartenuser holen
$qry = "
SELECT
nummer, betriebsmittelperson_id, person_id
FROM
wawi.tbl_betriebsmittelperson
JOIN wawi.tbl_betriebsmittel USING(betriebsmittel_id)
WHERE
tbl_betriebsmittelperson.uid is null
AND tbl_betriebsmittelperson.retouram is null
AND tbl_betriebsmittel.betriebsmitteltyp='Zutrittskarte'
AND EXISTS (SELECT * FROM public.tbl_benutzer WHERE person_id=tbl_betriebsmittelperson.person_id AND aktiv=true)";
$db = new basis_db();
if($result = $db->db_query($qry))
{
while($row = $db->db_fetch_object($result))
{
if(!$user = getUidFromCardNumber($row->nummer))
{
$qry = "SELECT uid FROM public.tbl_benutzer WHERE aktiv AND person_id=".$db->db_add_param($row->person_id);
if($result_user = $db->db_query($qry))
{
//Wenn nur 1 aktiver User vorhanden ist, wird dieser genommen
if($db->db_num_rows($result_user)==1)
{
if($row_user = $db->db_fetch_object($result_user))
{
$user = $row_user->uid;
}
}
else
{
$pers = new person();
$pers->load($row->person_id);
echo "<br>Fot Found: $row->nummer PersonID: $row->person_id BetriebsmittelpersonID: $row->betriebsmittelperson_id $pers->vorname $pers->nachname<br>";
}
}
}
if($user!='')
{
$qry = "UPDATE wawi.tbl_betriebsmittelperson
SET uid=".$db->db_add_param($user)."
WHERE betriebsmittelperson_id=".$db->db_add_param($row->betriebsmittelperson_id);
if($db->db_query($qry))
echo '+';
else
echo '|';
}
}
}
?>
+48 -76
View File
@@ -56,15 +56,13 @@ $db = new basis_db();
$kartennummer_alt = (isset($_POST['kartennummer_alt'])?$_POST['kartennummer_alt']:'');
$karten_user = (isset($_POST['karten_user'])?$_POST['karten_user']:'');
$kartennummer_hitag = (isset($_POST['kartennummer_hitag'])?$_POST['kartennummer_hitag']:'');
$kartennummer_myfare = (isset($_POST['kartennummer_myfare'])?$_POST['kartennummer_myfare']:'');
$action=(isset($_POST['action'])?$_POST['action']:'');
if($action=='kartentausch')
{
echo '<br>Tausche Karte von User: '.$db->convert_html_chars($karten_user);
echo '<br>Alte Kartennummer:'.$db->convert_html_chars($kartennummer_alt);
echo '<br>Neue Kartennummer Hitag: '.$db->convert_html_chars($kartennummer_hitag);
echo '<br>Neue Kartennummer MyFARE: '.$db->convert_html_chars($kartennummer_myfare);
echo ' '.$db->convert_html_chars($kartennummer_alt);
echo ' -> '.$db->convert_html_chars($kartennummer_hitag);
echo '<br>';
$benutzer = new benutzer();
@@ -75,72 +73,64 @@ if($action=='kartentausch')
else
{
$error=false;
if($kartennummer_alt!='')
//Neue Karte aktivieren
$bmp = new betriebsmittelperson();
if($bmp->getKartenzuordnungPerson($benutzer->person_id, $kartennummer_hitag))
{
//Alte Karte deaktivieren wenn vorhanden
$bmp = new betriebsmittelperson();
if($bmp->getKartenzuordnung($kartennummer_alt))
$bmp->ausgegebenam=date('Y-m-d');
$bmp->updateamum = date('Y-m-d H:i:s');
$bmp->updatevon = $uid;
if(!$bmp->save(false))
{
if($bmp->person_id==$benutzer->person_id)
echo '<span class="error">Fehler beim Tauschen: '.$bmp->errormsg.'</span>';
$error=true;
}
}
else
{
echo '<span class="error">Fehler beim Tauschen: Die neue Karte wurde dieser Person noch nicht zugeordnet</span>';
$error = true;
}
if(!$error)
{
if($kartennummer_alt!='')
{
//Alte Karte deaktivieren wenn vorhanden
$bmp = new betriebsmittelperson();
if($bmp->getKartenzuordnung($kartennummer_alt))
{
$bmp->retouram = date('Y-m-d');
if(!$bmp->save(false))
if($bmp->person_id==$benutzer->person_id)
{
echo '<span class="error">Fehler beim Eintragen des Retourdatums</span>';
$bmp->retouram = date('Y-m-d');
if(!$bmp->save(false))
{
echo '<span class="error">Fehler beim Eintragen des Retourdatums</span>';
$error=true;
}
}
else
{
echo '<span class="error">Karte passt nicht zur Person</span>';
$error=true;
}
}
else
{
echo '<span class="error">Karte passt nicht zur Person</span>';
echo '<span class="error">Kartenzuordnung der alten Karte nicht gefunden</span>';
$error=true;
}
}
else
{
echo '<span class="error">Kartenzuordnung nicht gefudnen</span>';
$error=true;
}
}
if(!$error)
{
//Neue Karte anlegen
$bm = new betriebsmittel();
$bm->betriebsmitteltyp='Zutrittskarte';
$bm->reservieren=false;
$bm->insertamum=date('Y-m-d H:i:s');
$bm->insertvon = $uid;
$bm->nummer=$kartennummer_hitag;
$bm->nummer_myfare=$kartennummer_myfare;
if($bm->save(true))
{
//Neue Karte der Person zuordnen
$bmp = new betriebsmittelperson();
$bmp->betriebsmittel_id=$bm->betriebsmittel_id;
$bmp->ausgegebenam=date('Y-m-d');
$bmp->insertamum = date('Y-m-d H:i:s');
$bmp->insertvon = $uid;
$bmp->person_id = $benutzer->person_id;
if($bmp->save(true))
{
echo '<span class="ok">Karte erfolgreich getauscht</span>';
}
else
{
echo '<span class="error">Fehler beim Tauschen: '.$bmp->errormsg.'</span>';
}
}
else
{
echo '<span class="error">Fehler beim Tauschen: '.$bm->errormsg.'<span>';
}
echo '<span class="ok">Karte erfolgreich getauscht</span>';
}
}
$kartennummer_alt='';
$karten_user='';
$kartennummer_hitag='';
$kartennummer_myfare='';
echo '<br><hr><br>';
}
@@ -178,24 +168,14 @@ if($action=='sucheKarte')
echo 'Suche User mit der Kartennummer '.$db->convert_html_chars($kartennummer_alt).'<br>';
if(!$karten_user = getUidFromCardNumber($kartennummer_alt))
{
//Wenn die Karte nicht im LDAP eingetragen ist,
//dann schauen ob die Karte laut DB ausgegeben ist
if($bmp->getKartenzuordnung($kartennummer_alt))
{
$bn = new benutzer();
if($bn->getBenutzerFromPerson($bm->person_id))
{
if(isset($bn->result[0]))
{
$karten_user = $bn->result[0]->uid;
}
}
}
if($karten_user=='')
echo '<span class="error">Diese Karte ist derzeit nicht ausgegeben</span>';
}
}
if($action=='sucheUser')
{
echo '<span class="ok">Bei direkten Zugriff auf die Person muss die alte Karte manuell entfernt werden!</span>';
}
if($karten_user!='')
{
echo '<br><br>';
@@ -242,7 +222,7 @@ if($karten_user!='')
<input type="hidden" name="kartennummer_alt" value="'.$db->convert_html_chars($kartennummer_alt).'" />
<table>
<tr>
<td>Kartennummer Hitag:</td>
<td>Kartennummer Neu</td>
<td>
<input type="text" value="" name="kartennummer_hitag" id="kartennummer_hitag"/>
<script type="text/javascript">
@@ -255,9 +235,8 @@ if($karten_user!='')
<td><div id="hitag_description"></div></td>
</tr>
<tr>
<td>Kartennummer MyFARE:</td>
<td><input type="text" value="" name="kartennummer_myfare" id="kartennummer_myfare"/></td>
<td><div id="myfare_description"></div></td>
<td>&nbsp;</td>
<td></td>
</tr>
<tr>
<td></td>
@@ -270,7 +249,6 @@ if($karten_user!='')
function checkValues()
{
var hitag = document.getElementById("kartennummer_hitag");
var myfare = document.getElementById("kartennummer_myfare");
if($("#kartennummer_hitag").val()=="")
{
@@ -278,12 +256,6 @@ if($karten_user!='')
$("#kartennummer_hitag").focus();
return false;
}
if($("#kartennummer_myfare").val()=="")
{
$("#myfare_description").text("Ziehen Sie die neue Karten über Lesegerät 2");
$("#kartennummer_myfare").focus();
return false;
}
return true;
}
@@ -297,7 +269,7 @@ if($karten_user!='')
}
else
{
echo '<br><b>Bitte ziehen Sie die alte Karte über den Kartenleser 1</b>
echo '<br><b>Bitte ziehen Sie die alte Karte über den Kartenleser</b>
<script type="text/javascript">
$(document).ready(function()
{
+179
View File
@@ -0,0 +1,179 @@
<?php
/* Copyright (C) 2012 FH 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: Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at>
*/
require_once('../../config/vilesci.config.inc.php');
require_once('../../include/functions.inc.php');
require_once('../../include/benutzerberechtigung.class.php');
require_once('../../include/betriebsmittel.class.php');
require_once('../../include/betriebsmittelperson.class.php');
require_once('../../include/person.class.php');
require_once('../../include/benutzer.class.php');
require_once('../../include/fotostatus.class.php');
require_once('../../include/datum.class.php');
echo '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" href="../../skin/jquery.css" type="text/css"/>
<link rel="stylesheet" href="../../skin/tablesort.css" type="text/css"/>
<link rel="stylesheet" href="../../skin/fhcomplete.css" type="text/css">
<link rel="stylesheet" href="../../skin/vilesci.css" type="text/css">
<script type="text/javascript" src="../../include/js/jquery.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
$("#myTable").tablesorter(
{
sortList: [[1,0]],
widgets: ["zebra"]
});
});
</script>
<title>FH-Complete</title>
</head>
<body>
<h2>FH Ausweis</h2>
';
$uid = get_uid();
$rechte = new benutzerberechtigung();
$rechte->getBerechtigungen($uid);
if(!$rechte->isBerechtigt('basis/fhausweis'))
die('Sie haben keine Berechtigung für diese Seite');
$db = new basis_db();
$filter = (isset($_POST['filter'])?$_POST['filter']:'');
$person_id = (isset($_GET['person_id'])?$_GET['person_id']:'');
$datum_obj = new datum();
echo '<form action="'.$_SERVER['PHP_SELF'].'" method="POST">
Suche: <input type="text" name="filter" value="'.$db->convert_html_chars($filter).'"/>
<input type="submit" name="search" value="Suchen" />
</form>';
if(isset($_POST['search']))
{
$person = new person();
$person->getTab($filter);
if(count($person->personen)==1)
{
//wenn nur ein Ergebnis zurueck kommt - gleich anzeigen
$person_id=$person->personen[0]->person_id;
}
else
{
echo '<table class="tablesorter" id="myTable">
<thead>
<th>PersonID</th>
<th>Vorname</th>
<th>Nachname</th>
<th>Aktive Accounts</th>
</thead>
<tbody>';
foreach($person->personen as $row)
{
$benutzer = new benutzer();
if(!$benutzer->getBenutzerFromPerson($row->person_id))
echo $benutzer->errormsg;
echo '<tr>';
echo '<td><a href="'.$_SERVER['PHP_SELF'].'?person_id='.$row->person_id.'">Details</a></td>';
echo '<td>'.$row->person_id.'</td>';
echo '<td>'.$row->vorname.'</td>';
echo '<td>'.$row->nachname.'</td>';
echo '<td>';
foreach($benutzer->result as $row_account)
{
echo $row_account->uid.' ';
}
echo '</td>';
echo '</tr>';
}
echo '</tbody></table>';
}
}
if($person_id!='')
{
echo '<br><hr>';
$person = new person();
$person->load($person_id);
$fs = new fotostatus();
$fs->getLastFotoStatus($person_id);
echo '<table>
<tr>
<td>
<img src="../../content/bild.php?src=person&person_id='.$person_id.'" height="100px" width="75px">
</td>
<td>
Vorname: '.$person->vorname.'
<br>Nachname: '.$person->nachname.'
<br>Geburtsdatum: '.$datum_obj->formatDatum($person->gebdatum,'d.m.Y').'
</td>
</tr>
</table>';
echo '<br>Aktueller Fotostatus: '.$fs->fotostatus_kurzbz .' ( '.$datum_obj->formatDatum($fs->datum,'d.m.Y').' )';
$benutzer = new benutzer();
if(!$benutzer->getBenutzerFromPerson($person->person_id))
echo $benutzer->errormsg;
echo '<br><br><u>Accounts:</u><br>';
foreach($benutzer->result as $row_account)
{
echo '<br><br><b>'.$row_account->uid.'</b>';
echo '<br>Neue Karte bereits gedruckt:';
$qry = "
SELECT
tbl_betriebsmittelperson.ausgegebenam
FROM
wawi.tbl_betriebsmittel
JOIN wawi.tbl_betriebsmittelperson USING(betriebsmittel_id)
WHERE
tbl_betriebsmittel.betriebsmitteltyp='Zutrittskarte'
AND tbl_betriebsmittelperson.uid=".$db->db_add_param($row_account->uid)."
AND nummer2 is not null";
$ausgegeben='';
if($result = $db->db_query($qry))
{
if($row = $db->db_fetch_object($result))
{
$ausgegeben = $row->ausgegebenam;
}
}
if($db->db_num_rows($result)>0)
echo 'Ja';
else
echo 'Nein';
echo '<br>Neue Karte bereits ausgegeben: ';
if($ausgegeben=='')
echo 'Nein';
else
echo 'Ja ( '.$datum_obj->formatDatum($ausgegeben,'d.m.Y').' )';
}
}
echo '</body>
</html>';
?>