diff --git a/vilesci/stammdaten/imexport/zutrittskarten/generatefromsipass.php b/vilesci/stammdaten/imexport/zutrittskarten/generatefromsipass.php
index 03a702bad..8183337d9 100644
--- a/vilesci/stammdaten/imexport/zutrittskarten/generatefromsipass.php
+++ b/vilesci/stammdaten/imexport/zutrittskarten/generatefromsipass.php
@@ -1,424 +1,337 @@
-
- * Andreas Oesterreicher < andreas.oesterreicher@technikum-wien.at >
- * Rudolf Hangl < rudolf.hangl@technikum-wien.at >
- * Gerald Simane-Sequens < gerald.simane-sequens@technikum-wien.at >
- */
-/**
- * Generiert ein Updatefile fuer das Zutrittskartensystem
- */
-require_once('../../../../config/vilesci.config.inc.php');
-require_once('../../../../include/basis_db.class.php');
-if (!$db = new basis_db())
- die('Es konnte keine Verbindung zum Server aufgebaut werden.');
-
-// Mail Headers festlegen
-$headers= "MIME-Version: 1.0\r\n";
-$headers.="Content-Type: text/html; charset=UTF-8\r\n";
-
-$sipass=array();
-$i=0;
-$k=0;
-$key_nummer=0;
-$update=false;
-$custom=array(array());
-$doppelte=array();
-$error=false;
-$fausgabe='
';
-
-
-define("SIPASS_DB_SERVER","192.168.101.230:1433");
-define("SIPASS_DB_USER","sa");
-define("SIPASS_DB_PASSWD","P1ss0ff");
-define("SIPASS_DB_DB","asco4");
-
-// zugriff auf mssql-datenbank
-if (!$conn_ext=mssql_connect (SIPASS_DB_SERVER, SIPASS_DB_USER, SIPASS_DB_PASSWD))
- die('Fehler beim Verbindungsaufbau!');
-mssql_select_db(SIPASS_DB_DB, $conn_ext);
-
-//letzte Nummer
-$sql_query="SELECT max(asco.employee.reference) AS last_keynr FROM asco.employee;";
-//echo $sql_query;
-if(!$result=mssql_query($sql_query,$conn_ext))
- die(mssql_get_last_message().'
'.$sql_query);
-if ($row=mssql_fetch_object($result))
- $key_nummer=$row->last_keynr+1;
-else
- die('Letzte Nummer konnte nicht eruiert werden!');
-
-//einlesen der custom. daten von sipass
-$qry="SELECT * FROM asco.employee_custom_data";
-if($result = mssql_query($qry,$conn_ext))
-{
- while($row=mssql_fetch_object($result))
- {
- $custom[$row->emp_id][$row->field_id]=$row->char_value;
- }
-}
-else
-{
- die("Einlesen der SiPass-custom-data fehlgeschlagen!");
-}
-
-$qry="SELECT * FROM asco.employee LEFT OUTER JOIN asco.access_groups ON (asco.employee.acc_grp_id=asco.access_groups.acc_grp_id)";
-if($result_ext = mssql_query($qry,$conn_ext))
-{
- while($row=mssql_fetch_object($result_ext))
- {
- $sipass[$i]->command='';
- $sipass[$i]->reference=$row->reference;
- $sipass[$i]->last_name=$row->last_name;
- $sipass[$i]->first_name=$row->first_name;
- $sipass[$i]->card_no=(int)$row->card_no;
- $sipass[$i]->start_date=date('d.m.Y',strtotime($row->start_date));
- $sipass[$i]->end_date=date('d.m.Y',strtotime($row->end_date));
- $sipass[$i]->acc_grp_name=$row->acc_grp_name;
- if(isset($custom[$row->emp_id][7]))
- {
- $sipass[$i]->uid=$custom[$row->emp_id][7]; //UID
- }
- else
- {
- $sipass[$i]->uid="";
- }
- if(isset($custom[$row->emp_id][8]))
- {
- $sipass[$i]->matrikelnr=$custom[$row->emp_id][8]; //Matrikelnr.
- }
- else
- {
- $sipass[$i]->matrikelnr="";
- }
- /*if(isset($custom[$row->emp_id][9]))
- {
- $sipass[$i][9]=$custom[$row->emp_id][9]; //Stg./Verwaltung
- }
- else
- {
- $sipass[$i][9]="";
- }*/
- $i++;
- }
-}
-else
-{
- die("SiPass-Abfrage fehlgeschlagen!");
-}
-
-//mehrfach vergebene karten
-$qry="SELECT bmp.person_id as person2, bmp.nachname as nachname2,bmp.nummer as nummer2, bmp.vorname as vorname2, bmp.ausgegebenam as ausgegebenam2, bmp.insertamum AS insertamum2,
- public.vw_betriebsmittelperson.person_id AS person1, public.vw_betriebsmittelperson.nachname as nachname1, public.vw_betriebsmittelperson.nummer as nummer1,
- public.vw_betriebsmittelperson.vorname as vorname1, public.vw_betriebsmittelperson.ausgegebenam as ausgegebenam1, public.vw_betriebsmittelperson.insertamum AS insertamum1
- FROM public.vw_betriebsmittelperson bmp
- JOIN public.vw_betriebsmittelperson ON (bmp.nummer::bigint=public.vw_betriebsmittelperson.nummer::bigint)
- WHERE (trim(bmp.nachname)!=trim(public.vw_betriebsmittelperson.nachname) OR (trim(bmp.vorname)!=trim(public.vw_betriebsmittelperson.vorname)))
- AND public.vw_betriebsmittelperson.betriebsmitteltyp='Zutrittskarte' AND bmp.betriebsmitteltyp='Zutrittskarte'
- AND public.vw_betriebsmittelperson.benutzer_aktiv AND public.vw_betriebsmittelperson.retouram IS NULL AND bmp.benutzer_aktiv AND bmp.retouram IS NULL
- AND bmp.person_iddb_query($qry))
-{
- $fausgabe.='| PersonID | Nachname | vorname | BetriebsmittelNr | AusgabeAm | InsertAmUm |
';
- while($row=$db->db_fetch_object($result))
- {
- //echo "
".$row->person2.", ".$row->nachname2.", ".$row->vorname2.", ".$row->nummer2.", ".$row->person1.", ".$row->nachname1.", ".$row->vorname1.", ".$row->nummer1;
- //$error=true;
- if(!in_array($row->nummer1,$doppelte))
- {
- $doppelte[$k]=$row->nummer1;
- $fausgabe.='| '.$row->person1.' | '.$row->nachname1.' | '.$row->vorname1.' | '.$row->nummer1.' | '.$row->ausgegebenam1.' | '.$row->insertamum1.' |
';
- $fausgabe.='| '.$row->person2.' | '.$row->nachname2.' | '.$row->vorname2.' | '.$row->nummer2.' | '.$row->ausgegebenam2.' | '.$row->insertamum2.' |
';
- $k++;
- }
- }
- $fausgabe.='
';
-}
-else
-{
- die("Abfrage mehrfach vergebener Karten fehlgeschlagen!");
-}
-
-//Osobsky Michael studiert BEE und MIE - wird daher nicht synchronisiert
-//Incoming Park Dah-We belegt LVs im Haus und in BEE - keine Synchronisation
-$qry="SELECT DISTINCT ON (vw_betriebsmittelperson.person_id, nummer) nachname as LastName, vorname as FirstName,nummer as CardNumber, matrikelnr, uid,
- kurzbzlang,tbl_studiengang.kurzbz,typ, personalnummer, lektor,
- EXTRACT(DAY FROM vw_betriebsmittelperson.insertamum) AS tag,
- EXTRACT(MONTH FROM vw_betriebsmittelperson.insertamum) AS monat,
- EXTRACT(YEAR FROM vw_betriebsmittelperson.insertamum) AS jahr
- FROM public.vw_betriebsmittelperson
- LEFT OUTER JOIN (public.tbl_student JOIN public.tbl_studiengang USING (studiengang_kz)) ON (uid=student_uid)
- LEFT OUTER JOIN public.tbl_mitarbeiter ON (uid=mitarbeiter_uid)
- WHERE betriebsmitteltyp='Zutrittskarte' AND benutzer_aktiv AND retouram IS NULL
- AND NOT(trim(upper(nachname))='OSOBSKY' AND trim(upper(vorname))='MICHAEL')
- AND NOT(trim(upper(nachname))='PARK' AND trim(upper(vorname))='DAH-WE')
- ORDER BY vw_betriebsmittelperson.person_id,nummer,personalnummer,matrikelnr";
-//abhanden gekommene karten???
-
-if($result = $db->db_query($qry))
-{
- while($row=$db->db_fetch_object($result))
- {
- if(trim($row->kurzbzlang)=='AK')
- {
- //Da AKs erst bis zur BIS-Meldung abschlißen müssen, hat bei ihnen Bachelorinskription Vorrang
- $qry1="SELECT DISTINCT ON (vw_betriebsmittelperson.person_id, nummer) nachname as LastName, vorname as FirstName, nummer as CardNumber,
- matrikelnr, uid, kurzbzlang, tbl_studiengang.kurzbz,typ, personalnummer, lektor,
- EXTRACT(DAY FROM vw_betriebsmittelperson.insertamum) AS tag,
- EXTRACT(MONTH FROM vw_betriebsmittelperson.insertamum) AS monat,
- EXTRACT(YEAR FROM vw_betriebsmittelperson.insertamum) AS jahr
- FROM public.vw_betriebsmittelperson
- LEFT OUTER JOIN (public.tbl_student JOIN public.tbl_studiengang USING (studiengang_kz)) ON (uid=student_uid)
- LEFT OUTER JOIN public.tbl_mitarbeiter ON (uid=mitarbeiter_uid)
- WHERE betriebsmitteltyp='Zutrittskarte' AND benutzer_aktiv AND retouram IS NULL
- AND kurzbzlang!='AK' AND nummer='$row->cardnumber' AND nachname='$row->lastname' AND vorname='$row->firstname'";
- if($result1 = $db->db_query($qry1))
- {
- if($db->db_num_rows($result1)>0)
- {
- if($row1=$db->db_fetch_object($result1))
- {
- $row->uid=trim($row1->uid);
- $row->matrikelnr=trim($row1->matrikelnr);
- $row->kurzbzlang=$row1->kurzbzlang;
- $row->kurzbz=$row1->kurzbz;
- $row->typ=$row1->typ;
- }
- }
- }
- }
-
- //Nachname und Vorname auf LATIN9 konvertieren
- $row->lastname = iconv('UTF-8','ISO-8859-15',$row->lastname);
- $row->firstname = iconv('UTF-8','ISO-8859-15',$row->firstname);
-
- $update=false;
- $stg_kurzbz=strtoupper(trim($row->typ).trim($row->kurzbz));
- $row->cardnumber=(int)$row->cardnumber;
- //doppelte ueberspringen
- if(in_array($row->cardnumber,$doppelte))
- {
- continue;
- }
- //überprüfen, ob bereits vorhanden
- for($j=0;$j<$i;$j++)
- {
- if($sipass[$j]->card_no==$row->cardnumber)
- {
- $upd=FALSE;
- if($sipass[$j]->last_name!=trim($row->lastname) && !strchr($row->lastname,'ß'))
- {
- $sipass[$j]->last_name_old=$sipass[$j]->last_name;
- $sipass[$j]->last_name=trim($row->lastname);
- $sipass[$j]->update.=' last_name';
- $upd=TRUE;
- }
- if($sipass[$j]->first_name!=trim($row->firstname))
- {
- $sipass[$j]->first_name_old=$sipass[$j]->first_name;
- $sipass[$j]->first_name=trim($row->firstname);
- $sipass[$j]->update.=' first_name';
- $upd=TRUE;
- }
- if($sipass[$j]->start_date!=date('d.m.Y',strtotime($row->tag.'.'.$row->monat.'.'.$row->jahr)))
- {
- $sipass[$j]->start_date=date('d.m.Y',strtotime($row->tag.'.'.$row->monat.'.'.$row->jahr));
- $sipass[$j]->update.=' start_date';
- $upd=TRUE;
- }
- if($sipass[$j]->end_date!=date('d.m.Y',strtotime($row->tag.'.'.$row->monat.'.'.($row->jahr+5))))
- {
- $sipass[$j]->end_date=date('d.m.Y',strtotime($row->tag.'.'.$row->monat.'.'.($row->jahr+5)));
- $sipass[$j]->update.=' end_date';
- $upd=TRUE;
- }
- if($sipass[$j]->uid!=trim($row->uid))
- {
- $sipass[$j]->uid=trim($row->uid);
- $sipass[$j]->update.=' uid';
- $upd=TRUE;
- }
- if(trim($row->matrikelnr)!='' && $sipass[$j]->matrikelnr!=trim($row->matrikelnr))
- {
- $sipass[$j]->matrikelnr=trim($row->matrikelnr);
- $sipass[$j]->update.=' matrikelnr';
- $upd=TRUE;
- }
- if($row->personalnummer!='' && $row->personalnummer!= NULL)
- {
- if($sipass[$j]->acc_grp_name!="Verwaltung" && substr($sipass[$j]->acc_grp_name,0,1)!='#')
- {
- $sipass[$j]->acc_grp_name="Verwaltung";
- $sipass[$j]->update.=' acc_grp_name';
- $upd=TRUE;
- }
- }
- else
- {
- if($sipass[$j]->acc_grp_name!=trim($stg_kurzbz) && substr($sipass[$j]->acc_grp_name,0,1)!='#')
- {
- $sipass[$j]->acc_grp_name_old=$sipass[$j]->acc_grp_name;
- $sipass[$j]->acc_grp_name=trim($stg_kurzbz);
- $sipass[$j]->update.=' acc_grp_name';
- $upd=TRUE;
- }
- }
- // Update nur wenn Gruppe nicht mit # beginnt
- if($upd && substr($sipass[$j]->acc_grp_name,0,1)!='#')
- {
- $sipass[$j]->command="U";
- }
- else
- {
- $sipass[$j]->command="V"; //kein update, wird auch nicht gelöscht
- }
- $update=true;
- break;
- }
- }
- if(!$update)
- {
- //wenn nicht gefunden, dann append
- if($row->lastname!='' && $row->firstname!='' && $row->cardnumber!='' &&$row->tag!='' && $row->monat!='' && $row->jahr!='')
- {
- $sipass[$i]->command="A";
- $sipass[$i]->reference=$key_nummer;
- $sipass[$i]->last_name=trim($row->lastname);
- $sipass[$i]->first_name=trim($row->firstname);
- $sipass[$i]->card_no=str_replace(" ","",$row->cardnumber);
- $sipass[$i]->start_date=$row->tag.'.'.$row->monat.'.'.$row->jahr;
- $sipass[$i]->end_date=$row->tag.'.'.$row->monat.'.'.($row->jahr+5);
- $sipass[$i]->uid=trim($row->uid);
- $sipass[$i]->matrikelnr=trim($row->matrikelnr);
- if($row->personalnummer!='' && $row->personalnummer!= NULL)
- {
- $sipass[$i]->acc_grp_name="Verwaltung";
-
- }
- else
- {
- $sipass[$i]->acc_grp_name=$stg_kurzbz;
- }
- $key_nummer++;
- $i++;
- }
- }
- }
-}
-else
-{
- die("FAS-Abfrage fehlgeschlagen!");
-}
-$ausdruck='';
-for($j=0;$j<$i;$j++)
-{
- if(trim($sipass[$j]->command==''))
- {
- $sipass[$j]->command='D';
- if (substr($sipass[$j]->acc_grp_name,0,1)!='#')
- {
- $ausdruck.=$sipass[$j]->command."\t"; // Command
- $ausdruck.=$sipass[$j]->reference."\t"; // ID
- $ausdruck.=$sipass[$j]->last_name."\t"; // Lastname
- $ausdruck.=$sipass[$j]->first_name."\t"; // Firstname
- $ausdruck.=$sipass[$j]->acc_grp_name."\t"; // Access Group
- $ausdruck.=$sipass[$j]->card_no."\n"; // Cardnumber
- }
- }
- else
- {
- if(trim($sipass[$j]->command!='V'))
- {
- $ausdruck.=$sipass[$j]->command."\t"; // Command
- $ausdruck.=$sipass[$j]->reference."\t"; // ID
- $ausdruck.=$sipass[$j]->last_name."\t"; // Lastname
- $ausdruck.=$sipass[$j]->first_name."\t"; // Firstname
- $ausdruck.=$sipass[$j]->acc_grp_name."\t"; // Access Group
- $ausdruck.=$sipass[$j]->card_no."\t"; // Cardnumber
- $ausdruck.=$sipass[$j]->start_date."\t"; // Valid From
- $ausdruck.=$sipass[$j]->end_date."\t"; // Valid till
- $ausdruck.="0\t"; // CardState
- $ausdruck.=$sipass[$j]->uid."\t"; // Text1 UID
- $ausdruck.=$sipass[$j]->matrikelnr."\t"; // Text2 Matrikelnummer
- if (isset($sipass[$j]->last_name_old))
- $ausdruck.=$sipass[$j]->last_name_old; // Text3 // alter Vorname
- $ausdruck.="\t";
- if (isset($sipass[$j]->fist_name_old))
- $ausdruck.=$sipass[$j]->fist_name_old; // Text4 // alter Nachname
- $ausdruck.="\t";
- if (isset($sipass[$j]->acc_grp_name_old))
- $ausdruck.=$sipass[$j]->acc_grp_name_old; // Text5 // alte Accessgroup
- $ausdruck.="\t";
- if (isset($sipass[$j]->update))
- $ausdruck.=$sipass[$j]->update; // Text6 // alte Accessgroup
- $ausdruck.="\n";
- }
- }
-}
-header("Content-Type: text/text");
-header("Content-Disposition: attachment; filename=\"SiPassZutrittskartenUpdate". "_" . date("d_m_Y") . ".txt\"");
-echo $ausdruck;
-
-//Mail nur wenn Doppelte gefunden
-if($k>0)
-{
- //mail(MAIL_SUPPORT, 'Mehrfach eingetragenen Zutrittskarten', "".$fausgabe."
Synchroliste:
".str_replace(array("\n","\r\n"),"
",iconv("iso-8859-1","utf-8",$ausdruck))."",
- mail(MAIL_SUPPORT, 'Mehrfach eingetragenen Zutrittskarten', "".$fausgabe."",
- "From: vilesci@technikum-wien.at\nX-Mailer: PHP 5.x\nContent-type: text/html; charset=utf-8");
-}
-/*
-//------------ Excel init --------------------------
-
-// Creating a workbook
-$workbook = new Spreadsheet_Excel_Writer();
-// sending HTTP headers
-$workbook->send("SiPassZutrittskartenUpdate". "_" . date("d_m_Y") . ".xls");
-// Creating a worksheet
-$worksheet =& $workbook->addWorksheet("SiPassZutrittskartenUpdate");
-
-// set width of columns
-$worksheet->setColumn(0,0,2); // erste Spalte auf width=2
-$worksheet->setColumn(0,1,8); // zweite Spalte auf width=8
-$worksheet->setColumn(0,2,20);
-$worksheet->setColumn(0,3,20);
-$worksheet->setColumn(0,4,12);
-$worksheet->setColumn(0,5,10);
-$worksheet->setColumn(0,6,10);
-
-
-$z=0; // Start bei Zeile 0
-
-for($j=0;$j<$i;$j++)
-{
- if(trim($sipass[$j][0]!=''))
- {
- $worksheet->write($z,0, $sipass[$j][0]);
- $worksheet->write($z,1, $sipass[$j][1]);
- $worksheet->write($z,2, $sipass[$j][2]);
- $worksheet->write($z,3, $sipass[$j][3]);
- $worksheet->write($z,4, $sipass[$j][4]);
- $worksheet->write($z,5, $sipass[$j][5]);
- $worksheet->write($z,6, $sipass[$j][6]);
- $z++;
- }
-}
-
-$workbook->close();
-*/
-?>
\ No newline at end of file
+
+ * Andreas Oesterreicher < andreas.oesterreicher@technikum-wien.at >
+ * Rudolf Hangl < rudolf.hangl@technikum-wien.at >
+ * Gerald Simane-Sequens < gerald.simane-sequens@technikum-wien.at >
+ Alexander Nimmervoll < nimm@technikum-wien.at >
+ */
+/**
+ * Generiert ein Updatefile fuer das Zutrittskartensystem
+ */
+require_once('../../../../config/vilesci.config.inc.php');
+require_once('../../../../include/basis_db.class.php');
+if (!$db = new basis_db())
+ die('Es konnte keine Verbindung zum Server aufgebaut werden.');
+
+$sipass=array();
+$i=0;
+$k=0;
+$key_nummer=0;
+$update=false;
+$custom=array(array());
+$error=false;
+$fausgabe='';
+
+
+define("SIPASS_DB_SERVER","192.168.101.230:1433");
+define("SIPASS_DB_USER","sa");
+define("SIPASS_DB_PASSWD","P1ss0ff");
+define("SIPASS_DB_DB","asco4");
+
+// zugriff auf mssql-datenbank
+if (!$conn_ext=mssql_connect (SIPASS_DB_SERVER, SIPASS_DB_USER, SIPASS_DB_PASSWD))
+ die('Fehler beim Verbindungsaufbau!');
+mssql_select_db(SIPASS_DB_DB, $conn_ext);
+
+//letzte Nummer
+$sql_query="SELECT max(asco.employee.reference) AS last_keynr FROM asco.employee;";
+//echo $sql_query;
+if(!$result=mssql_query($sql_query,$conn_ext))
+ die(mssql_get_last_message().'
'.$sql_query);
+if ($row=mssql_fetch_object($result))
+ $key_nummer=$row->last_keynr+1;
+else
+ die('Letzte Nummer konnte nicht eruiert werden!');
+
+//einlesen der custom. daten von sipass
+$qry="SELECT * FROM asco.employee_custom_data";
+if($result = mssql_query($qry,$conn_ext))
+{
+ while($row=mssql_fetch_object($result))
+ {
+ $custom[$row->emp_id][$row->field_id]=$row->char_value;
+ }
+}
+else
+{
+ die("Einlesen der SiPass-custom-data fehlgeschlagen!");
+}
+
+$qry="SELECT * FROM asco.employee LEFT OUTER JOIN asco.access_groups ON (asco.employee.acc_grp_id=asco.access_groups.acc_grp_id)";
+if($result_ext = mssql_query($qry,$conn_ext))
+{
+ while($row=mssql_fetch_object($result_ext))
+ {
+
+ //if ((int)$row->card_no==2147483647) print "######".$row->emp_id." ####".$row->card_no."\n";
+ $sipass[$i]->command='';
+ $sipass[$i]->reference=$row->reference;
+ $sipass[$i]->last_name=$row->last_name;
+ $sipass[$i]->first_name=$row->first_name;
+ $sipass[$i]->card_no=$row->card_no;
+ $sipass[$i]->start_date=date('d.m.Y',strtotime($row->start_date));
+ $sipass[$i]->end_date=date('d.m.Y',strtotime($row->end_date));
+ $sipass[$i]->acc_grp_name=$row->acc_grp_name;
+ if(isset($custom[$row->emp_id][7]))
+ {
+ $sipass[$i]->uid=$custom[$row->emp_id][7]; //UID
+ }
+ else
+ {
+ $sipass[$i]->uid="";
+ }
+ if(isset($custom[$row->emp_id][8]))
+ {
+ $sipass[$i]->matrikelnr=$custom[$row->emp_id][8]; //Matrikelnr.
+ }
+ else
+ {
+ $sipass[$i]->matrikelnr="";
+ }
+ /*if(isset($custom[$row->emp_id][9]))
+ {
+ $sipass[$i][9]=$custom[$row->emp_id][9]; //Stg./Verwaltung
+ }
+ else
+ {
+ $sipass[$i][9]="";
+ }*/
+ $i++;
+ }
+}
+else
+{
+ die("SiPass-Abfrage fehlgeschlagen!");
+}
+
+$ldap_host="pdc1.technikum-wien.at";
+$ldap_port=389;
+$ldap_basedn="ou=People,dc=technikum-wien,dc=at";
+
+
+$ldap_conn = ldap_connect("pdc1.technikum-wien.at",389);
+ldap_set_option($ldap_conn,LDAP_OPT_PROTOCOL_VERSION,3);
+$ldap_result = ldap_bind($ldap_conn);
+
+$ldap_search="(departmentNumber=*)";
+$ldap_result=ldap_search($ldap_conn, $ldap_basedn, $ldap_search);
+
+for ($ldapentry=ldap_first_entry($ldap_conn,$ldap_result);$ldapentry!=false;$ldapentry=ldap_next_entry($ldap_conn,$ldapentry))
+{
+ $uids=ldap_get_values($ldap_conn,$ldapentry,"uid");
+ $uid=$uids[0];
+
+ $sns=ldap_get_values($ldap_conn,$ldapentry,"sn");
+ $sn=$sns[0];
+
+ $givennames=ldap_get_values($ldap_conn,$ldapentry,"givenname");
+ $givenname=$givennames[0];
+
+ $gids=ldap_get_values($ldap_conn,$ldapentry,"gidnumber");
+ $gid=$gids[0];
+
+ $emplnrs=ldap_get_attributes($ldap_conn,$ldapentry);
+ if (isset($emplnrs["employeenumber"]))
+ {
+ $matrikelnummer=ldap_get_values($ldap_conn,$ldapentry,"employeenumber");
+ $matrikelnr=$matrikelnummer[0];
+ }
+ else
+ {
+ $matrikelnr='';
+ }
+
+ $ous=@ldap_get_values($ldap_conn,$ldapentry,"ou");
+ $stg_kurzbz="";
+ if ($ous)
+ {
+ for ($k=0;$k<$ous["count"];$k++)
+ {
+ if (strlen($ous[$k])==3) $stg_kurzbz=$ous[$k];
+ }
+ }
+
+ $ldapnumbers=ldap_get_values($ldap_conn,$ldapentry,"departmentnumber");
+
+ for ($n=0; $n < $ldapnumbers["count"]; $n++)
+ {
+ $update=false;
+ $cardnumber=ereg_replace("^0*","",$ldapnumbers[$n]);
+
+ //überprüfen, ob bereits vorhanden
+ for($j=0;$j<$i;$j++)
+ {
+ if($sipass[$j]->card_no==$cardnumber)
+ {
+ $upd=FALSE;
+ if($sipass[$j]->last_name!=trim($sn))
+ {
+ $sipass[$j]->last_name_old=$sipass[$j]->last_name;
+ $sipass[$j]->last_name=trim($sn);
+ $sipass[$j]->update.=' last_name';
+ $upd=TRUE;
+ }
+ if($sipass[$j]->first_name!=trim($givenname))
+ {
+ $sipass[$j]->first_name_old=$sipass[$j]->first_name;
+ $sipass[$j]->first_name=trim($givenname);
+ $sipass[$j]->update.=' first_name';
+ $upd=TRUE;
+ }
+
+ /*
+ if($sipass[$j]->start_date!=date('d.m.Y',strtotime($row->tag.'.'.$row->monat.'.'.$row->jahr)))
+ {
+ $sipass[$j]->start_date=date('d.m.Y',strtotime($row->tag.'.'.$row->monat.'.'.$row->jahr));
+ $sipass[$j]->update.=' start_date';
+ $upd=TRUE;
+ }
+ if($sipass[$j]->end_date!=date('d.m.Y',strtotime($row->tag.'.'.$row->monat.'.'.($row->jahr+5))))
+ {
+ $sipass[$j]->end_date=date('d.m.Y',strtotime($row->tag.'.'.$row->monat.'.'.($row->jahr+5)));
+ $sipass[$j]->update.=' end_date';
+ $upd=TRUE;
+ }
+ */
+ if($sipass[$j]->uid!=trim($uid))
+ {
+ $sipass[$j]->uid=trim($uid);
+ $sipass[$j]->update.=' uid';
+ $upd=TRUE;
+ }
+ if(trim($matrikelnr)!='' && $sipass[$j]->matrikelnr!=trim($matrikelnr))
+ {
+ $sipass[$j]->matrikelnr=trim($matrikelnr);
+ $sipass[$j]->update.=' matrikelnr';
+ $upd=TRUE;
+ }
+ if($gid==101 || $gid==120)
+ {
+ if($sipass[$j]->acc_grp_name!="Verwaltung" && substr($sipass[$j]->acc_grp_name,0,1)!='#')
+ {
+ $sipass[$j]->acc_grp_name="Verwaltung";
+ $sipass[$j]->update.=' acc_grp_name';
+ $upd=TRUE;
+ }
+ }
+ else
+ {
+ if($sipass[$j]->acc_grp_name!=trim($stg_kurzbz) && substr($sipass[$j]->acc_grp_name,0,1)!='#')
+ {
+ $sipass[$j]->acc_grp_name_old=$sipass[$j]->acc_grp_name;
+ $sipass[$j]->acc_grp_name=trim($stg_kurzbz);
+ $sipass[$j]->update.=' acc_grp_name';
+ $upd=TRUE;
+ }
+ }
+ // Update nur wenn Gruppe nicht mit # beginnt
+ if($upd && substr($sipass[$j]->acc_grp_name,0,1)!='#')
+ {
+ $sipass[$j]->command="U";
+ }
+ else
+ {
+ $sipass[$j]->command="V"; //kein update, wird auch nicht gelöscht
+ }
+ $update=true;
+ break;
+ }
+ }
+ if(!$update)
+ {
+ //wenn nicht gefunden, dann append
+ if($sn!='' && $givenname!='' && $cardnumber!='') //&&$row->tag!='' && $row->monat!='' && $row->jahr!='')
+ {
+ $sipass[$i]->command="A";
+ $sipass[$i]->reference=$key_nummer;
+ $sipass[$i]->last_name=trim($sn);
+ $sipass[$i]->first_name=trim($givenname);
+ $sipass[$i]->card_no=str_replace(" ","",$cardnumber);
+ $sipass[$i]->start_date=date("d.m.Y");
+ $sipass[$i]->uid=trim($uid);
+ $sipass[$i]->matrikelnr=trim($matrikelnr);
+ if($gid==101 || $gid==120)
+ {
+ $sipass[$i]->acc_grp_name="Verwaltung";
+ $sipass[$i]->end_date=date("d.m.Y",mktime(0, 0, 0, date("m"), date("d"), date("Y")+20));
+
+ }
+ else
+ {
+ $sipass[$i]->acc_grp_name=$stg_kurzbz;
+ $sipass[$i]->end_date=date("d.m.Y",mktime(0, 0, 0, date("m"), date("d"), date("Y")+5));
+ }
+ $key_nummer++;
+ $i++;
+ }
+ }
+ }
+}
+
+$ausdruck='';
+for($j=0;$j<$i;$j++)
+{
+ if(trim($sipass[$j]->command==''))
+ {
+ $sipass[$j]->command='D';
+ if (substr($sipass[$j]->acc_grp_name,0,1)!='#')
+ {
+ $ausdruck.=$sipass[$j]->command."\t"; // Command
+ $ausdruck.=$sipass[$j]->reference."\t"; // ID
+ $ausdruck.=$sipass[$j]->last_name."\t"; // Lastname
+ $ausdruck.=$sipass[$j]->first_name."\t"; // Firstname
+ $ausdruck.=$sipass[$j]->acc_grp_name."\t"; // Access Group
+ $ausdruck.=$sipass[$j]->card_no."\n"; // Cardnumber
+ }
+ }
+ else
+ {
+ if(trim($sipass[$j]->command!='V'))
+ {
+ $ausdruck.=$sipass[$j]->command."\t"; // Command
+ $ausdruck.=$sipass[$j]->reference."\t"; // ID
+ $ausdruck.=$sipass[$j]->last_name."\t"; // Lastname
+ $ausdruck.=$sipass[$j]->first_name."\t"; // Firstname
+ $ausdruck.=$sipass[$j]->acc_grp_name."\t"; // Access Group
+ $ausdruck.=$sipass[$j]->card_no."\t"; // Cardnumber
+ $ausdruck.=$sipass[$j]->start_date."\t"; // Valid From
+ $ausdruck.=$sipass[$j]->end_date."\t"; // Valid till
+ $ausdruck.="0\t"; // CardState
+ $ausdruck.=$sipass[$j]->uid."\t"; // Text1 UID
+ $ausdruck.=$sipass[$j]->matrikelnr."\t"; // Text2 Matrikelnummer
+ if (isset($sipass[$j]->last_name_old))
+ $ausdruck.=$sipass[$j]->last_name_old; // Text3 // alter Vorname
+ $ausdruck.="\t";
+ if (isset($sipass[$j]->first_name_old))
+ $ausdruck.=$sipass[$j]->first_name_old; // Text4 // alter Nachname
+ $ausdruck.="\t";
+ if (isset($sipass[$j]->acc_grp_name_old))
+ $ausdruck.=$sipass[$j]->acc_grp_name_old; // Text5 // alte Accessgroup
+ $ausdruck.="\t";
+ if (isset($sipass[$j]->update))
+ $ausdruck.=$sipass[$j]->update; // Text6 // Update
+ $ausdruck.="\n";
+ }
+ }
+}
+header("Content-Type: text/text");
+header("Content-Disposition: attachment; filename=\"SiPassZutrittskartenUpdate". "_" . date("d_m_Y") . ".txt\"");
+echo $ausdruck;
+
+?>