10508 lines
279 KiB
PHP
Executable File
10508 lines
279 KiB
PHP
Executable File
<?php
|
|
|
|
include_once( "kd_einsprungspunkte.php" );
|
|
|
|
|
|
|
|
|
|
|
|
function xlog( $level, $meldung )
|
|
{
|
|
chdir( $_SERVER[ "DOCUMENT_ROOT" ]."/ca/" );
|
|
$zeitstempel = date( "Y.m.d H:i:s", time( ) );
|
|
$LOG_LEVEL = 4;
|
|
switch ( $level )
|
|
{
|
|
case 6:
|
|
$loglevel = "DEB_2";
|
|
break;
|
|
case 5:
|
|
$loglevel = "DEBUG";
|
|
break;
|
|
case 4:
|
|
$loglevel = "INFO ";
|
|
break;
|
|
case 3:
|
|
$loglevel = "WARN ";
|
|
break;
|
|
case 2:
|
|
$loglevel = "ERROR";
|
|
break;
|
|
case 1:
|
|
$loglevel = "FATAL";
|
|
break;
|
|
}
|
|
if ( $level <= $LOG_LEVEL )
|
|
{
|
|
$datei = fopen( "system.log", "a+" );
|
|
fwrite( $datei, $zeitstempel." ".$loglevel." ".$_SESSION[ "mandant_id" ]." ".$meldung."\n" );
|
|
fclose( $datei );
|
|
}
|
|
}
|
|
|
|
function xdb( $STATEMENT )
|
|
{
|
|
/*
|
|
Es wird ein Array zurückgegeben
|
|
|
|
array( $rc, $ergebnis )
|
|
|
|
$rc = -1 wenn Fehler
|
|
$rc = Anzahl Ergebniszeilen wenn Select
|
|
$rc = ID des eingefügten Elements wenn Insert
|
|
$rc = 0 für Inserts ohne auto_increment und andere Statements ( update, delete, ...)
|
|
|
|
*/
|
|
|
|
/*if ( strtoupper( substr( $STATEMENT, 0, 5 ) ) == "DELET" )
|
|
{
|
|
|
|
return array( 0, 0 );
|
|
}
|
|
|
|
*/
|
|
// Herstellen der DB-Verbindung
|
|
$connection = mysqli_connect( "p:localhost", "ca_db", "ca_db", "ca_system" );
|
|
mysqli_query( $connection, "SET NAMES utf8" );
|
|
mysqli_select_db( $connection, "ca_system" );
|
|
|
|
//xlog(4, $STATEMENT );
|
|
|
|
//$STATEMENT = utf8_encode( $STATEMENT );
|
|
|
|
$ergebnis = mysqli_query( $connection, $STATEMENT );
|
|
|
|
$id = mysqli_insert_id( $connection );
|
|
|
|
$sql_ok = mysqli_error( $connection );
|
|
|
|
if ( strlen( $sql_ok ) > 0 )
|
|
{
|
|
$rc = -1;
|
|
$ergebnis = $sql_ok;
|
|
//xlog( 2, $STATEMENT );
|
|
xlog( 2, $sql_ok );
|
|
}
|
|
else
|
|
{
|
|
if ( ! is_bool( $ergebnis ) )
|
|
{
|
|
// STATEMENT offenbar ein Select, Trefferliste:
|
|
while ( $zeile = mysqli_fetch_array( $ergebnis, MYSQLI_ASSOC ) )
|
|
{
|
|
/*$ergebnis_2 = array();
|
|
foreach( $zeile as $key=>$value )
|
|
{
|
|
$ergebnis_2[ $key ] = utf8_decode( $value );
|
|
}
|
|
$ergebnis_1[ ] = $ergebnis_2;
|
|
*/
|
|
$ergebnis_1[ ] = $zeile;
|
|
}
|
|
$rc = count( $ergebnis_1 );
|
|
$ergebnis = $ergebnis_1;
|
|
}
|
|
else
|
|
{
|
|
// STATEMENT offenbar ein Insert
|
|
//$STATEMENT = "select @@IDENTITY as id";
|
|
//$STATEMENT = utf8_encode( $STATEMENT );
|
|
//$ergebnis_2 = mysql_query( $STATEMENT );
|
|
//$id = mysql_fetch_array( $ergebnis_2 );
|
|
|
|
$rc = $id;
|
|
if ( strlen( $rc ) == 0 )
|
|
{
|
|
$rc = 0;
|
|
}
|
|
$ergebnis = "Liefere ID ".$rc.".";
|
|
}
|
|
|
|
}
|
|
return array( $rc, $ergebnis );
|
|
}
|
|
|
|
function login( $mandant_name, $domaene, $benutzer_anmeldename, $passwort )
|
|
{
|
|
$connection = mysqli_connect( "localhost", "ca_db", "ca_db", "ca_system" );
|
|
|
|
if ( $benutzer_anmeldename == "superuser" )
|
|
{
|
|
$mandant_name = "Standard";
|
|
}
|
|
//xlog( 3, " Parameter: ". $mandant_name."|". $domaene."|". $benutzer_anmeldename."|". $passwort );
|
|
|
|
// Machen wir LDAP?
|
|
|
|
$ldap = liefere_konfig( $mandant_name, "ldap_aktiv" );
|
|
|
|
if ( ( $ldap == "ja" ) and ( strlen( $domaene ) > 0 ) )
|
|
{
|
|
|
|
|
|
$ldap_server = liefere_konfig( $mandant_name, "ldap_server" );
|
|
|
|
$ldap_server = 'ldap://'.$ldap_server;
|
|
$connection = @ldap_connect( $ldap_server );
|
|
|
|
ldap_set_option($connection, LDAP_OPT_PROTOCOL_VERSION, 3);
|
|
ldap_set_option($connection, LDAP_OPT_REFERRALS, 0);
|
|
|
|
$login = @ldap_bind( $connection, $benutzer_anmeldename."@".$domaene, $passwort );
|
|
|
|
ldap_unbind( $connection );
|
|
|
|
if ( $login !== false )
|
|
{
|
|
|
|
$ok_1 = existiert_benutzer( $mandant_name, $benutzer_anmeldename );
|
|
|
|
$ergebnis = ldap_liefere_benutzerinformationen( $mandant_name, $domaene, $benutzer_anmeldename );
|
|
|
|
|
|
if ( $ok_1[ 0 ] == 0 )
|
|
{
|
|
// Benutzer existiert nicht
|
|
// benutzer_anlegen( $mandant_name, $benutzer_anmeldename, $passwort, $vorname = "", $nachname = "", $email="", $geschlecht = "", $geburtstag = "", $passwort_pruefen = true, $domaene = "" )
|
|
|
|
// Erweiterte Benutzerinformationen aus dem LDAP lesen
|
|
|
|
$_SESSION[ "benutzer_anmeldename" ] = "superuser";
|
|
$ok_2 = benutzer_anlegen( $mandant_name, $benutzer_anmeldename, "", $ergebnis[ 2 ][ "vorname" ], $ergebnis[ 2 ][ "nachname" ], $ergebnis[ 2 ][ "email" ], "m", date( "d.m.Y" ), false, $domaene );
|
|
$_SESSION[ "benutzer_anmeldename" ] = "";
|
|
|
|
}
|
|
|
|
|
|
// Gruppenzugehörigkeiten regeln
|
|
|
|
|
|
// erstmal den Benutzer aus allen Gruppen entfernen
|
|
|
|
$in_welchen_gruppen_ist_benutzer_mitglied = in_welchen_gruppen_ist_benutzer_mitglied( $mandant_name, $benutzer_anmeldename );
|
|
|
|
$_SESSION[ "benutzer_anmeldename" ] = "superuser";
|
|
foreach( $in_welchen_gruppen_ist_benutzer_mitglied[ 2 ] as $gruppen_name )
|
|
{
|
|
benutzer_aus_gruppe_entfernen( $mandant_name, $benutzer_anmeldename, $gruppen_name );
|
|
}
|
|
$_SESSION[ "benutzer_anmeldename" ] = "";
|
|
|
|
// jetzt den Benutzer aufgrund von LDAP-Gruppenzugehörigkeiten in 4w-Gruppen zuordnen
|
|
|
|
$gruppenzuordnungen = liefere_wertemenge_elemente( $mandant_name, "ldap_gruppen" );
|
|
|
|
$_SESSION[ "benutzer_anmeldename" ] = "superuser";
|
|
foreach ( $gruppenzuordnungen[ 2 ] as $zuordnung )
|
|
{
|
|
foreach( $ergebnis[ 3 ] as $ldap_gruppe=>$ldap_vollbezeichnung )
|
|
{
|
|
if ( strpos( $zuordnung[ "alpha_01" ], $ldap_gruppe ) !== false )
|
|
{
|
|
benutzer_einer_gruppe_hinzufuegen( $mandant_name, $benutzer_anmeldename, $zuordnung[ "alpha_02" ] );
|
|
}
|
|
}
|
|
}
|
|
$_SESSION[ "benutzer_anmeldename" ] = "";
|
|
// fertig.
|
|
|
|
|
|
|
|
|
|
|
|
// Unterscheidungen zwischen Domänen- und nicht-Domänenbenutzern
|
|
|
|
|
|
$rc = 0;
|
|
$meldung = "Der Benutzer >".$benutzer_anmeldename."< wird eingeloggt.";
|
|
}
|
|
else
|
|
{
|
|
ldap_get_option( $connection, LDAP_OPT_ERROR_STRING, $error );
|
|
|
|
$rc = -1;
|
|
$meldung = $error;
|
|
}
|
|
|
|
|
|
}
|
|
else
|
|
{
|
|
if ( $benutzer_anmeldename <> "superuser" )
|
|
{
|
|
$erweiterung = " and mandant_id = (select mandant_id from ca_mandant where mandant_name = '".$mandant_name."') ";
|
|
}
|
|
else
|
|
{
|
|
$erweiterung = "";
|
|
}
|
|
|
|
|
|
//xlog( 4, "Passwort: >".$passwort."<" );
|
|
$passwort = md5( $passwort );
|
|
|
|
$benutzer_anmeldename = mb_strtolower( $benutzer_anmeldename, "UTF-8" );
|
|
|
|
$STATEMENT = "select count(*) anz from ca_benutzer where benutzer_anmeldename = '".mysqli_real_escape_string( $connection, $benutzer_anmeldename )."' and benutzer_passwort = '".mysqli_real_escape_string( $connection, $passwort )."'".$erweiterung;
|
|
|
|
//xlog( 4, "STATEMENT: ".$STATEMENT );
|
|
|
|
$ergebnis_1 = xdb( $STATEMENT );
|
|
|
|
//xlog( 4, "Ergebnis 1 " . json_encode( $ergebnis_1[ 0 ] ));
|
|
|
|
$STATEMENT = "select benutzer_gesperrt from ca_benutzer where benutzer_anmeldename = '".mysqli_real_escape_string( $connection, $benutzer_anmeldename )."'".$erweiterung;
|
|
|
|
$ergebnis_2 = xdb( $STATEMENT );
|
|
|
|
//xlog( 4, json_encode( $ergebnis_2 ) );
|
|
|
|
if ( $ergebnis_2[ 0 ] == 0 )
|
|
{
|
|
$benutzer_gesperrt = 0;
|
|
}
|
|
else
|
|
{
|
|
$benutzer_gesperrt = $ergebnis_2[ 1 ][ 0 ][ "benutzer_gesperrt" ];
|
|
}
|
|
|
|
//xlog( 4, $benutzer_gesperrt );
|
|
/*xlog( 4, "Ergebnis 2 " . json_encode( $ergebnis_1[ 1 ] ));
|
|
xlog( 4, "Ergebnis 3 " . json_encode( $ergebnis_1[ 1 ][ 0 ] ));
|
|
xlog( 4, "Ergebnis 4 " . json_encode( $ergebnis_1[ 1 ][ 0 ][ "anz" ] ));*/
|
|
if ( $ergebnis_1[ 1 ][ 0 ][ "anz" ] > 0 )
|
|
{
|
|
if ( $benutzer_gesperrt <> 1 )
|
|
{
|
|
// Setzen der Fehlversuche auf 0 (werden mitgezählt bei fehlerhaften Anmeldeversuchen)
|
|
$STATEMENT = "update ca_benutzer set benutzer_passwort_fehlversuche = '0' where benutzer_anmeldename = '".mysqli_real_escape_string( $connection, $benutzer_anmeldename )."'";
|
|
|
|
xdb( $STATEMENT );
|
|
|
|
// sind seit dem letzten erfolgreichen Einlogvorgang mehr als X tage vergangen? (mit X aus Konfiguration gelesen)
|
|
|
|
$pwd_gueltigkeitsdauer_tage = liefere_konfig( $mandant_name, "pwd_gueltigkeitsdauer_tage" );
|
|
|
|
$meldung = "pwd_gueltigkeitsdauer_tage = ".$pwd_gueltigkeitsdauer_tage;
|
|
|
|
$STATEMENT = "select benutzer_passwort_letzte_aenderung from ca_benutzer where benutzer_anmeldename = '".mysqli_real_escape_string( $connection, $benutzer_anmeldename )."' and mandant_id = (select mandant_id from ca_mandant where mandant_name = '".$mandant_name."')";
|
|
|
|
$ergebnis_3 = xdb( $STATEMENT );
|
|
|
|
$benutzer_passwort_letzte_aenderung = $ergebnis_3[ 1 ][ 0 ][ "benutzer_passwort_letzte_aenderung" ];
|
|
|
|
$datum_uhrzeit_oder_beides = time();
|
|
|
|
$zeitpunkt = bcadd( bcmul( $pwd_gueltigkeitsdauer_tage, "86400", 0 ), $benutzer_passwort_letzte_aenderung );
|
|
|
|
//xlog( 2, $zeitpunkt." < ".$datum_uhrzeit_oder_beides );
|
|
|
|
if ( $zeitpunkt < $datum_uhrzeit_oder_beides )
|
|
{
|
|
// Passwort ist abgelaufen
|
|
|
|
$rc = 1;
|
|
$meldung = "Das Passwort des Benutzers ".$benutzer_anmeldename." ist abgelaufen.";
|
|
|
|
}
|
|
else
|
|
{
|
|
// Passwort ist noch gültig
|
|
$rc = 0;
|
|
$meldung = "Der Benutzer >".$benutzer_anmeldename."< wird eingeloggt.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -2;
|
|
$meldung = "Der Benutzer ".$benutzer_anmeldename." (Mandant ".$mandant_name.") ist gesperrt. Bitte kontaktieren Sie den Administrator.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
// Passwort falsch oder Benutzername falsch oder Benutzername existiert nicht
|
|
|
|
$STATEMENT = "update ca_benutzer set benutzer_passwort_fehlversuche = benutzer_passwort_fehlversuche + 1 where benutzer_anmeldename = '".mysqli_real_escape_string( $connection, $benutzer_anmeldename )."'";
|
|
|
|
xdb( $STATEMENT );
|
|
|
|
$max_anzahl_fehlversuche = liefere_konfig( $mandant_name, "pwd_anzahl_erlaubter_fehlversuche" );
|
|
|
|
$STATEMENT = "select benutzer_passwort_fehlversuche from ca_benutzer where benutzer_anmeldename = '".mysqli_real_escape_string( $connection, $benutzer_anmeldename )."' and mandant_id = ( select mandant_id from ca_mandant where mandant_name = '".$mandant_name."')";
|
|
|
|
$ergebnis_4 = xdb( $STATEMENT );
|
|
|
|
if ( $ergebnis_4[ 0 ] == 0 )
|
|
{
|
|
// Benutzer existiert nicht
|
|
$rc = -1;
|
|
$meldung = "Benutzername oder Passwort sind nicht korrekt.";
|
|
}
|
|
else
|
|
{
|
|
// Passwort falsch
|
|
$benutzer_passwort_fehlversuche = $ergebnis_4[ 1 ][ 0 ][ "benutzer_passwort_fehlversuche" ];
|
|
|
|
|
|
if ( $benutzer_passwort_fehlversuche >= $max_anzahl_fehlversuche )
|
|
{
|
|
// Maximale Anzahl Fehlversuche erreicht, Benutzer wird gesperrt
|
|
$STATEMENT = "update ca_benutzer set benutzer_gesperrt = '1' where benutzer_anmeldename = '".mysqli_real_escape_string( $connection, $benutzer_anmeldename )."'";
|
|
//xlog( 4, $STATEMENT );
|
|
xdb( $STATEMENT );
|
|
|
|
$rc = -4;
|
|
$meldung = "Der Benutzer ".$benutzer_anmeldename." wurde nach ".$benutzer_passwort_fehlversuche." Versuchen, sein Passwort einzugeben, gesperrt.";
|
|
|
|
}
|
|
else
|
|
{
|
|
$rc = -1;
|
|
$meldung = "Benutzername oder Passwort sind nicht korrekt.";
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
if ( $rc < 0 )
|
|
{
|
|
$level = 3;
|
|
}
|
|
else
|
|
{
|
|
$level = 4;
|
|
}
|
|
|
|
|
|
xlog( $level, "admin.login: RC ".$rc.": ".$meldung );
|
|
mysqli_close( $connection );
|
|
|
|
return array( $rc, $meldung );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
function ldap_liefere_benutzerinformationen( $mandant_name, $domaene, $benutzer_anmeldename )
|
|
{
|
|
$ldap_server = liefere_konfig( $mandant_name, "ldap_server" );
|
|
$ldap_benutzer = liefere_konfig( $mandant_name, "ldap_benutzer" );
|
|
$ldap_passwort = liefere_konfig( $mandant_name, "ldap_passwort" );
|
|
|
|
//ldap_set_option( NULL, LDAP_OPT_DEBUG_LEVEL, 7 );
|
|
|
|
$ldap_server = 'ldap://'.$ldap_server;
|
|
|
|
|
|
|
|
$connection = @ldap_connect( $ldap_server );
|
|
|
|
|
|
@ldap_set_option( $connection, LDAP_OPT_PROTOCOL_VERSION, 3 );
|
|
@ldap_set_option( $connection, LDAP_OPT_REFERRALS, 0 );
|
|
|
|
|
|
@ldap_bind($connection, $ldap_benutzer, $ldap_passwort);
|
|
|
|
|
|
|
|
|
|
$dn = utf8_encode( "DC=dms01,DC=local" );
|
|
$filter = "(CN=".$benutzer_anmeldename.")";
|
|
$justthese = array( "ou", "sn", "cn", "givenName", "mail", "vorname", "memberOf", "dn", "pwdlastset", "badpwdcount" );
|
|
|
|
|
|
|
|
|
|
$sr = ldap_search( $connection, $dn, $filter, $justthese );
|
|
|
|
//$test = ldap_get_option( $connection, LDAP_OPT_ERROR_STRING, $error );
|
|
|
|
$info = ldap_get_entries( $connection, $sr );
|
|
|
|
$benutzerinfos[ "nachname" ] = $info[ 0 ][ "sn" ][ 0 ];
|
|
$benutzerinfos[ "benutzer_anmeldename" ] = $info[ 0 ][ "cn" ][ 0 ];
|
|
$benutzerinfos[ "vorname" ] = $info[ 0 ][ "givenname" ][ 0 ];
|
|
$benutzerinfos[ "email" ] = $info[ 0 ][ "mail" ][ 0 ];
|
|
$benutzerinfos[ "dn" ] = $info[ 0 ][ "dn" ][ 0 ];
|
|
$pwdlastset = $info[ 0 ][ "pwdlastset" ][ 0 ]; // The date and time that the password for this account was last changed. This value is stored as a large integer that represents the number of 100 nanosecond intervals since January 1, 1601 (UTC). If this value is set to 0 and the User-Account-Control attribute does not contain the UF_DONT_EXPIRE_PASSWD flag, then the user must set the password at the next logon.
|
|
$winSecs = bcdiv( $pwdlastset, 10000000); // divide by 10 000 000 to get seconds
|
|
$benutzerinfos[ "pw_letzte_aenderung" ] = bcsub($winSecs, 11644473600); // 1.1.1600 -> 1.1.1970 difference in seconds
|
|
$benutzerinfos[ "benutzer_passwort_fehlversuche" ] = $info[ 0 ][ "badpwdcount" ][ 0 ];
|
|
|
|
|
|
|
|
/*
|
|
foreach( $benutzerinfos as $key=>$element )
|
|
{
|
|
xlog( 3, "key ".$key." element ".$element );
|
|
}
|
|
*/
|
|
|
|
$gruppen = array();
|
|
|
|
foreach( $info[ 0 ][ "memberof" ] as $key=>$element )
|
|
{
|
|
if ( is_int( $key) )
|
|
{
|
|
$gruppenname_voll = $element;
|
|
//CN=Alle,CN=Users,DC=DMS01,DC=local
|
|
$element = explode( "=", $element );
|
|
$element = explode( ",", $element[ 1 ] );
|
|
$element = $element[ 0 ];
|
|
$gruppen[ $element ] = $gruppenname_voll;
|
|
|
|
}
|
|
}
|
|
|
|
ldap_unbind( $connection );
|
|
|
|
$rc = 0;
|
|
$meldung = "Liefere Informationen über den LDAP-Benutzer ".$benutzer_anmeldename." aus der Domaene ".$domaene.".";
|
|
|
|
if ( $rc < 0 )
|
|
{
|
|
$level = 2;
|
|
}
|
|
else
|
|
{
|
|
$level = 4;
|
|
}
|
|
|
|
xlog( $level, "admin.ldap_liefere_benutzerinformationen: RC ".$rc.": ".$meldung );
|
|
return array( $rc, $meldung, $benutzerinfos, $gruppen );
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
Benutzerfunktionen
|
|
*/
|
|
|
|
function benutzer_anlegen( $mandant_name, $benutzer_anmeldename, $passwort, $vorname = "", $nachname = "", $email = "", $geschlecht = "", $geburtstag = "", $passwort_pruefen = true, $domaene = "" )
|
|
{
|
|
$connection = mysqli_connect( "localhost", "ca_db", "ca_db", "ca_system" );
|
|
|
|
$exekutor = $_SESSION[ "benutzer_anmeldename" ];
|
|
/****************
|
|
BESCHREIBUNG_____Diese Funktion erstellt einen Benutzer.
|
|
RETURNS_____array( (integer) Returncode, (string) Meldung)
|
|
****************/
|
|
|
|
$ok = existiert_mandant( $mandant_name );
|
|
|
|
if ( $ok[ 0 ] > 0 )
|
|
{
|
|
if ( mb_strtoupper( $exekutor, "UTF-8" ) == "SUPERUSER" )
|
|
{
|
|
$exec[ 0 ] = 1;
|
|
}
|
|
else
|
|
{
|
|
$exec = besitzt_benutzer_systemrecht( $mandant_name, $exekutor, "ADMIN_BENUTZER" );
|
|
}
|
|
|
|
if ( $exec[ 0 ] == 1 )
|
|
{
|
|
if ( strlen( $benutzer_anmeldename ) <> 0 )
|
|
{
|
|
if ( ( strlen( $passwort ) <> 0 ) or ( ! $passwort_pruefen ) )
|
|
{
|
|
$benutzer_anmeldename = mb_strtolower( $benutzer_anmeldename, "UTF-8" );
|
|
|
|
if ( strlen( $geburtstag ) == 0 )
|
|
{
|
|
$geburtstag = date( "d.m.Y" );
|
|
}
|
|
xlog( 1, $geburtstag );
|
|
$geburtstag = datum2mysql( $geburtstag );
|
|
xlog( 1, $geburtstag );
|
|
$geschlecht = mb_strtolower( $geschlecht, "UTF-8" );
|
|
|
|
if ( ( strlen( $geschlecht ) == 0 ) or ( ( $geschlecht <> "m" ) and ( $geschlecht <> "w" ) ) )
|
|
{
|
|
$geschlecht = "m";
|
|
}
|
|
|
|
$regex = preg_match( "/[\!\"\§\$\%\&\\\,\.\ \?\:\;\/\(\)\=\*\#\'\{\}\[\]\~\|]/", $benutzer_anmeldename );
|
|
|
|
if ( $regex == 0 )
|
|
{
|
|
$benutzer_id = existiert_benutzer( $mandant_name, $benutzer_anmeldename );
|
|
|
|
if ( $benutzer_id[ 0 ] == 0 )
|
|
{
|
|
if ( $passwort_pruefen == true )
|
|
{
|
|
$pass_ok = pruefe_password( $mandant_name, $passwort );
|
|
}
|
|
else
|
|
{
|
|
$pass_ok = array( "0", "Es hat keine Prüfung stattgefunden." );
|
|
}
|
|
|
|
|
|
if ( $pass_ok[ 0 ] == "0" )
|
|
{
|
|
$regex_vorname = preg_match( "/[\!\"\§\$\%\&\\\,\.\?\:\;\/\(\)\=\*\#\{\}\[\]\~\|]/", $vorname );
|
|
$regex_nachname = preg_match( "/[\!\"\§\$\%\&\\\,\.\?\:\;\/\(\)\=\*\#\{\}\[\]\~\|]/", $nachname );
|
|
|
|
if ( ( $regex_vorname == 0 ) and ( $regex_nachname == 0 ) )
|
|
{
|
|
$passwort = md5( $passwort );
|
|
|
|
$datum_uhrzeit_oder_beides = time( );
|
|
|
|
// Erstellen des Benutzers
|
|
$STATEMENT = "insert into ca_benutzer ( benutzer_geburtstag, domaene, mandant_id, benutzer_geschlecht, benutzer_vorname, benutzer_nachname, benutzer_anmeldename, benutzer_email_adresse, benutzer_passwort, benutzer_angelegt_am, benutzer_letzte_aenderung, benutzer_passwort_letzte_aenderung, benutzer_passwort_fehlversuche, benutzer_abwesend, benutzer_gesperrt, benutzer_vertreter, benutzer_vertreter_typ ) values ( '".mysqli_real_escape_string( $connection, $geburtstag )."', '".mysqli_real_escape_string( $connection, $domaene )."', ".mysqli_real_escape_string( $connection, $ok[ 0 ] ).", '".mysqli_real_escape_string( $connection, $geschlecht )."', '".mysqli_real_escape_string( $connection, $vorname )."', '".mysqli_real_escape_string( $connection, $nachname )."', '".mysqli_real_escape_string( $connection, $benutzer_anmeldename )."', '".mysqli_real_escape_string( $connection, $email )."', '".mysqli_real_escape_string( $connection, $passwort )."', '".mysqli_real_escape_string( $connection, $datum_uhrzeit_oder_beides )."', '".mysqli_real_escape_string( $connection, $datum_uhrzeit_oder_beides )."', '".mysqli_real_escape_string( $connection, $datum_uhrzeit_oder_beides )."', '0', 'nein', '', '', '' );";
|
|
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
/////////////////////////////////////////////////
|
|
// Es fehlt noch das Anlegen der benutzerspezifischen Konfiguration (siehe Wertemenge benutzer_konfig)
|
|
//
|
|
|
|
// initale Gruppen/Benutzerzuordnungen eintragen
|
|
$element_anzulegen = liefere_wertemenge_elemente( $mandant_name, "benutzer_konfig" );
|
|
|
|
if ( $element_anzulegen[ 0 ] > 0 )
|
|
{
|
|
foreach( $element_anzulegen[ 2 ] as $element )
|
|
{
|
|
// benutzer_einer_gruppe_hinzufuegen( $mandant_name, $benutzer_anmeldename, $gruppen_name )
|
|
//xlog( 4, "Benutzername ".$element[ "alpha_01" ]." gruppenname ".$element[ "alpha_02" ] ) ;
|
|
//$ok = benutzer_einer_gruppe_hinzufuegen( $mandant_name, "superuser", $element[ "alpha_01" ], $element[ "alpha_02" ] );
|
|
$ok = aktualisiere_benutzerspezifische_einstellung( $mandant_name, $benutzer_anmeldename, $element[ "alpha_01" ], $element[ "alpha_02" ], $element[ "alpha_04" ], $element[ "alpha_03" ], $element[ "alpha_05" ], $element[ "alpha_06" ], $element[ "text_01" ] );
|
|
}
|
|
}
|
|
|
|
if ( $ergebnis[ 0 ] <> -1 )
|
|
{
|
|
// Feststellen der Benutzer-ID
|
|
$rc = $ergebnis[ 0 ];
|
|
$meldung = "Der Benutzer >".$benutzer_anmeldename."< wurde mit der ID >".$ergebnis[ 0 ]."< angelegt.";
|
|
}
|
|
else
|
|
{
|
|
$rc = -8;
|
|
$meldung = "Beim Anlegen des Benutzers ist ein Fehler aufgetreten: >".$ergebnis[ 1 ]."<";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -7;
|
|
$meldung = "Sonderzeichen sind im Realnamen nicht erlaubt.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -6;
|
|
$meldung = $pass_ok[1];
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -5;
|
|
$meldung = "Der Benutzer ".$benutzer_anmeldename." existiert bereits mit der ID ".$benutzer_id[ 0 ].".";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -4;
|
|
$meldung = "Beim gewünschten Benutzer-Anmeldenamen >".$benutzer_anmeldename."< wurde ein nicht erlaubtes Sonderzeichen verwendet.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -3;
|
|
$meldung = "Es wurde kein Passwort angegeben.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -2;
|
|
$meldung = "Es wurde kein Benutzer-Anmeldename angegeben.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -12;
|
|
$meldung = "Der ausführende Benutzer >".$exekutor."< besitzt nicht das notwendige Recht, um Benutzer anlegen zu dürfen.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = $ok[ 0 ];
|
|
$meldung = $ok[ 1 ];
|
|
}
|
|
|
|
if ( $rc < 0 )
|
|
{
|
|
$level = 2;
|
|
}
|
|
else
|
|
{
|
|
$level = 4;
|
|
}
|
|
mysqli_close( $connection );
|
|
|
|
xlog( $level, "admin.benutzer_anlegen: RC ".$rc.": ".$meldung );
|
|
return array( $rc, $meldung );
|
|
|
|
}
|
|
|
|
function benutzer_loeschen( $mandant_name, $benutzer_anmeldename, $force = false )
|
|
{
|
|
if ( ( $force !== true ) && ( $force !== false ) )
|
|
{
|
|
$force = false;
|
|
}
|
|
|
|
$exekutor = $_SESSION[ "benutzer_anmeldename" ];
|
|
$ok_1 = existiert_mandant( $mandant_name );
|
|
|
|
if ( $ok_1[ 0 ] > 0 )
|
|
{
|
|
$ok_2 = existiert_benutzer( $mandant_name, $benutzer_anmeldename );
|
|
|
|
if ( $ok_2[ 0 ] > 0 )
|
|
{
|
|
// Benutzer und Mandant existieren .... das ist gut so!
|
|
|
|
if ( mb_strtoupper( $exekutor, "UTF-8" ) == "SUPERUSER" )
|
|
{
|
|
$exec[ 0 ] = 1;
|
|
}
|
|
else
|
|
{
|
|
$exec = besitzt_benutzer_systemrecht( $mandant_name, $exekutor, "ADMIN_BENUTZER" );
|
|
}
|
|
|
|
if ( $exec[ 0 ] == 1 )
|
|
{
|
|
|
|
if ( ( $benutzer_anmeldename <> "ca_admin" ) || ( $force === true ) )
|
|
{
|
|
$erg = in_welchen_gruppen_ist_benutzer_mitglied( $mandant_name, $benutzer_anmeldename );
|
|
if ( $erg[ 0 ] > 0 )
|
|
{
|
|
foreach( $erg[ 3 ] as $gruppe )
|
|
{
|
|
//xlog( 6, "benutzer aus Gruppe entfernen: ".$benutzer_anmeldename." ** ".$gruppe." ... ".$force );
|
|
benutzer_aus_gruppe_entfernen( $mandant_name, $benutzer_anmeldename, $gruppe, $force );
|
|
}
|
|
}
|
|
|
|
$STATEMENT = "delete from ca_benutzer_einstellungen where benutzer_id = ".$ok_2[ 0 ];
|
|
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
$STATEMENT = "delete from ca_notiz where element_typ = 'b' and element_id = ".$ok_2[ 0 ];
|
|
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
$STATEMENT = "delete from ca_benutzer where benutzer_id = ".$ok_2[ 0 ];
|
|
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
$STATEMENT = "delete from ca_favoriten where benutzer_anmeldename = '".$benutzer_anmeldename."' and mandant_id = ".$ok_1[ 0 ];
|
|
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
if ( $ergebnis[ 0 ] <> -1 )
|
|
{
|
|
$rc = 0;
|
|
$meldung = "Der Benutzer ".$benutzer_anmeldename." wurde im Mandanten ".$mandant_name." gelöscht.";
|
|
}
|
|
else
|
|
{
|
|
$rc = -1;
|
|
$meldung = "Es ist ein Fehler aufgetreten: '".$ergebnis[ 1 ]."'.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -2;
|
|
$meldung = "Der Systembenutzer >".$benutzer_anmeldename."< kann nicht gelöscht werden.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -12;
|
|
$meldung = "Der Benutzer >".$exekutor."< verfügt nicht über ausreichende Berechtigungen.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = $ok_2[ 0 ];
|
|
$meldung = $ok_2[ 1 ];
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = $ok_1[ 0 ];
|
|
$meldung = $ok_1[ 1 ];
|
|
}
|
|
|
|
if ( $rc < 0 )
|
|
{
|
|
$level = 2;
|
|
}
|
|
else
|
|
{
|
|
$level = 4;
|
|
}
|
|
|
|
xlog( $level, "admin.benutzer_loeschen: RC ".$rc.": ".$meldung );
|
|
return array( $rc, $meldung );
|
|
}
|
|
|
|
function existiert_benutzer( $mandant_name, $benutzer_anmeldename )
|
|
{
|
|
/****************
|
|
BESCHREIBUNG_____Liefert die Benutzer-ID anhand des Benutzernamens
|
|
RETURNS_____(string) Benutzer-ID
|
|
****************/
|
|
|
|
$ok = existiert_mandant( $mandant_name );
|
|
|
|
if ( $ok[ 0 ] > 0 )
|
|
{
|
|
if ( strlen( $benutzer_anmeldename ) > 0 )
|
|
{
|
|
// Feststellen der Benutzer-ID zum Anmeldenamen
|
|
$STATEMENT = "select benutzer_id from ca_benutzer where lower( benutzer_anmeldename ) = '".mb_strtolower( $benutzer_anmeldename, "UTF-8" )."' and mandant_id = ".$ok[ 0 ]." ;";
|
|
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
if ( $ergebnis[ 0 ] <> -1 )
|
|
{
|
|
if ( $ergebnis[ 0 ] <> 0 )
|
|
{
|
|
$rc = $ergebnis[ 1 ][ 0 ][ "benutzer_id" ];
|
|
$meldung = "Der Benutzer ".$benutzer_anmeldename." hat im Mandanten ".$mandant_name." die ID ".$rc.".";
|
|
}
|
|
else
|
|
{
|
|
$rc = 0;
|
|
$meldung = "Der Benutzer ".$benutzer_anmeldename." existiert im Mandanten ".$mandant_name." nicht.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -3;
|
|
$meldung = "Es ist ein Fehler aufgetreten: '".$ergebnis[ 1 ]."'.";
|
|
}
|
|
|
|
}
|
|
else
|
|
{
|
|
$rc = -2;
|
|
$meldung = "Es wurde kein Benutzer-Anmeldename angegeben.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -1;
|
|
$meldung = "Der Mandant ".$mandant_name." existiert nicht.";
|
|
}
|
|
xlog( 6, "admin.existiert_benutzer: ".$meldung );
|
|
|
|
return array( $rc, $meldung );
|
|
}
|
|
|
|
function liefere_benutzerinformationen( $mandant_name, $benutzer_anmeldename )
|
|
{
|
|
$ok_1 = existiert_mandant( $mandant_name );
|
|
|
|
if ( $ok_1[ 0 ] > 0 )
|
|
{
|
|
if ( strlen( $benutzer_anmeldename ) > 0 )
|
|
{
|
|
$ok_2 = existiert_benutzer( $mandant_name, $benutzer_anmeldename );
|
|
|
|
if ( $ok_2[ 0 ] > 0 )
|
|
{
|
|
$STATEMENT = "select domaene, mandant_id , benutzer_id , benutzer_anmeldename , benutzer_vorname , benutzer_nachname , benutzer_passwort , benutzer_email_adresse , benutzer_geschlecht , benutzer_angelegt_am , benutzer_letzte_aenderung , benutzer_gesperrt , benutzer_passwort_letzte_aenderung , benutzer_passwort_fehlversuche , benutzer_geburtstag, benutzer_abwesend, benutzer_vertreter, benutzer_vertreter_typ FROM ca_benutzer where benutzer_id = ".$ok_2[ 0 ];
|
|
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
if ( $ergebnis[ 0 ] <> -1 )
|
|
{
|
|
$zeile = $ergebnis[ 1 ][ 0 ];
|
|
$benutzer_array = array( );
|
|
|
|
if ( $zeile[ "benutzer_abwesend" ] == "nein" )
|
|
{
|
|
$zeile[ "benutzer_vertreter" ] = "";
|
|
$zeile[ "benutzer_vertreter_typ" ] = "";
|
|
}
|
|
|
|
|
|
|
|
$benutzer_array[ "domaene" ] = (string) $zeile[ "domaene" ];
|
|
$benutzer_array[ "mandant_id" ] = (string) $zeile[ "mandant_id" ];
|
|
$benutzer_array[ "benutzer_id" ] = (int) $zeile[ "benutzer_id" ];
|
|
$benutzer_array[ "benutzer_anmeldename" ] = (string) $zeile[ "benutzer_anmeldename" ];
|
|
$benutzer_array[ "benutzer_vorname" ] = (string) $zeile[ "benutzer_vorname" ];
|
|
$benutzer_array[ "benutzer_nachname" ] = (string) $zeile[ "benutzer_nachname" ];
|
|
$benutzer_array[ "benutzer_name" ] = $benutzer_array[ "benutzer_vorname" ]." ".$benutzer_array[ "benutzer_nachname" ];
|
|
$benutzer_array[ "benutzer_name_komplett" ] = $benutzer_array[ "benutzer_vorname" ]." ".$benutzer_array[ "benutzer_nachname" ]." (".$benutzer_array[ "benutzer_anmeldename" ].")";
|
|
$benutzer_array[ "benutzer_gesperrt" ] = (string) $zeile[ "benutzer_gesperrt" ];
|
|
$benutzer_array[ "benutzer_email_adresse" ] = (string) $zeile[ "benutzer_email_adresse" ];
|
|
$benutzer_array[ "benutzer_geschlecht" ] = (string) $zeile[ "benutzer_geschlecht" ];
|
|
$benutzer_array[ "benutzer_angelegt_am" ] = (string) $zeile[ "benutzer_angelegt_am" ];
|
|
$benutzer_array[ "benutzer_passwort_letzte_aenderung" ] = (string) $zeile[ "benutzer_passwort_letzte_aenderung" ];
|
|
$benutzer_array[ "benutzer_letzte_aenderung" ] = (string) $zeile[ "benutzer_letzte_aenderung" ];
|
|
$benutzer_array[ "benutzer_passwort_fehlversuche" ] = (string) $zeile[ "benutzer_passwort_fehlversuche" ];
|
|
$benutzer_array[ "benutzer_abwesend" ] = (string) $zeile[ "benutzer_abwesend" ];
|
|
$benutzer_array[ "benutzer_vertreter" ] = (string) $zeile[ "benutzer_vertreter" ];
|
|
$benutzer_array[ "benutzer_vertreter_typ" ] = (string) $zeile[ "benutzer_vertreter_typ" ];
|
|
$benutzer_array[ "benutzer_geburtstag" ] = (string)mysql2datum( $zeile[ "benutzer_geburtstag" ] );
|
|
|
|
$rc = $benutzer_array[ "benutzer_id" ];
|
|
$meldung = "Liefere Informationen zum Benutzer ".$benutzer_array[ "benutzer_anmeldename" ].": ".json_encode( $benutzer_array );
|
|
}
|
|
else
|
|
{
|
|
$rc = -3;
|
|
$meldung = "Es ist ein Fehler aufgetreten: '".$ergebnis[ 1 ]."'.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -2;
|
|
$meldung = "Der angegebene Benutzer wurde nicht im System gefunden.";
|
|
}
|
|
|
|
}
|
|
else
|
|
{
|
|
$rc = -1;
|
|
$meldung = "Es wurde kein Benutzername angegeben.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = $ok_1[ 0 ];
|
|
$meldung = $ok_1[ 1 ];
|
|
}
|
|
|
|
if ( $rc < 0 )
|
|
{
|
|
$level = 2;
|
|
}
|
|
else
|
|
{
|
|
$level = 6;
|
|
}
|
|
|
|
xlog( $level, "admin.liefere_benutzerinformationen: RC ".$rc.": ".$meldung );
|
|
return array( $rc, $meldung, $benutzer_array );
|
|
|
|
}
|
|
|
|
function liefere_alle_benutzer( $mandant_name )
|
|
{
|
|
$ok_1 = existiert_mandant( $mandant_name );
|
|
|
|
$benutzerliste = array();
|
|
|
|
if ( $ok_1[ 0 ] > 0 )
|
|
{
|
|
$STATEMENT = "select benutzer_anmeldename from ca_benutzer where mandant_id = ".$ok_1[ 0 ];
|
|
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
if ( $ergebnis[ 0 ] <> -1 )
|
|
{
|
|
$rc = $ergebnis[ 0 ];
|
|
$benutzerliste = $ergebnis[ 1 ];
|
|
$meldung = "Liefere ".$rc." Benutzer des Mandants ".$mandant_name.".";
|
|
}
|
|
else
|
|
{
|
|
$rc = -1;
|
|
$meldung = "Es ist ein Fehler aufgetreten: '".$ergebnis[ 1 ]."'.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = $ok_1[ 0 ];
|
|
$meldung = $ok_1[ 1 ];
|
|
}
|
|
|
|
|
|
if ( $rc < 0 )
|
|
{
|
|
$level = 2;
|
|
}
|
|
else
|
|
{
|
|
$level = 4;
|
|
}
|
|
|
|
xlog( $level, "admin.liefere_alle_benutzer: RC ".$rc.": ".$meldung );
|
|
return array( $rc, $meldung, $benutzerliste );
|
|
}
|
|
|
|
function liefere_alle_benutzer_bavn( $mandant_name, $systembenutzer_liefern = true, $abwesende_benutzer_liefern = true )
|
|
{
|
|
// liefert nur benutzer-anmeldename, vorname und nachname und Abwesenheitsstatus
|
|
|
|
$ok_1 = existiert_mandant( $mandant_name );
|
|
|
|
$benutzerliste = array();
|
|
|
|
if ( $ok_1[ 0 ] > 0 )
|
|
{
|
|
if ( $systembenutzer_liefern == false )
|
|
{
|
|
$sysbenutzer = liefere_wertemenge_elemente( $mandant_name, "systembenutzer" );
|
|
|
|
$STMT_ERW = " and benutzer_anmeldename not in ( ";
|
|
|
|
foreach ( $sysbenutzer[ 2 ] as $systembenutzer )
|
|
{
|
|
$STMT_ERW = $STMT_ERW." '".$systembenutzer[ "alpha_01" ]."', ";
|
|
}
|
|
$STMT_ERW = substr( $STMT_ERW, 0, -2 )." )";
|
|
}
|
|
else
|
|
{
|
|
$STMT_ERW = "";
|
|
}
|
|
|
|
if ( $abwesende_benutzer_liefern == false )
|
|
{
|
|
$where = " and benutzer_abwesend = 'nein' ";
|
|
}
|
|
else
|
|
{
|
|
$where = " ";
|
|
}
|
|
|
|
|
|
|
|
$STATEMENT = "select benutzer_anmeldename, benutzer_vorname, benutzer_nachname, benutzer_abwesend from ca_benutzer where mandant_id = ".$ok_1[ 0 ]." ".$STMT_ERW.$where." order by benutzer_nachname, benutzer_vorname";
|
|
|
|
//xlog( 4, $STATEMENT );
|
|
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
if ( $ergebnis[ 0 ] <> -1 )
|
|
{
|
|
$rc = $ergebnis[ 0 ];
|
|
$benutzerliste = $ergebnis[ 1 ];
|
|
$meldung = "Liefere ".$rc." Benutzer des Mandants ".$mandant_name.".";
|
|
}
|
|
else
|
|
{
|
|
$rc = -1;
|
|
$meldung = "Es ist ein Fehler aufgetreten: '".$ergebnis[ 1 ]."'.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = $ok_1[ 0 ];
|
|
$meldung = $ok_1[ 1 ];
|
|
}
|
|
|
|
|
|
if ( $rc < 0 )
|
|
{
|
|
$level = 2;
|
|
}
|
|
else
|
|
{
|
|
$level = 4;
|
|
}
|
|
|
|
xlog( $level, "admin.liefere_alle_benutzer_bavn: RC ".$rc.": ".$meldung );
|
|
return array( $rc, $meldung, $benutzerliste );
|
|
}
|
|
|
|
function setze_password_fuer_benutzer( $mandant_name, $benutzer_anmeldename, $passwort, $setze_auf_jeden_fall = false )
|
|
{
|
|
$connection = mysqli_connect( "localhost", "ca_db", "ca_db", "ca_system" );
|
|
$exekutor = $_SESSION[ "benutzer_anmeldename" ];
|
|
$ok_1 = existiert_mandant( $mandant_name );
|
|
|
|
if ( $ok_1[ 0 ] > 0 )
|
|
{
|
|
$darf_aktualisierung_stattfinden = false;
|
|
|
|
if ( $exekutor == $benutzer_anmeldename )
|
|
{
|
|
$darf_aktualisierung_stattfinden = true;
|
|
}
|
|
|
|
if ( mb_strtoupper( $exekutor, "UTF-8" ) == "SUPERUSER" )
|
|
{
|
|
$darf_aktualisierung_stattfinden = true;
|
|
}
|
|
|
|
if ( $darf_aktualisierung_stattfinden == false )
|
|
{
|
|
$darf_stattfinden = besitzt_benutzer_systemrecht( $mandant_name, $exekutor, "ADMIN_BENUTZER" );
|
|
|
|
if ( $darf_stattfinden[ 0 ] == 1 )
|
|
{
|
|
$darf_aktualisierung_stattfinden = true;
|
|
}
|
|
}
|
|
|
|
if ( $darf_aktualisierung_stattfinden == true )
|
|
{
|
|
$erg = pruefe_password( $mandant_name, $passwort );
|
|
if ( ( $setze_auf_jeden_fall == true ) or ( $erg[ 0 ] == 0 ) )
|
|
{
|
|
|
|
|
|
//xlog( 4, "Passwort: >".$passwort."<" );
|
|
$STATEMENT = "update ca_benutzer set benutzer_passwort = '".mysqli_real_escape_string( $connection, md5( $passwort ) )."', benutzer_passwort_letzte_aenderung='".time()."' where benutzer_anmeldename = '".mysqli_real_escape_string( $connection, $benutzer_anmeldename )."' and mandant_id = ".$ok_1[ 0 ];
|
|
|
|
//xlog( 4, $STATEMENT );
|
|
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
//xlog( 4, $ergebnis[ 0 ]." ".$ergebnis[ 1 ] );
|
|
|
|
if ( $ergebnis[ 0 ] == 0 )
|
|
{
|
|
$rc = 0;
|
|
$meldung = "Das Passwort des Benutzers >".$benutzer_anmeldename."< wurde geändert.";
|
|
}
|
|
else
|
|
{
|
|
$rc = -4;
|
|
$meldung = "Es ist ein Fehler aufgetreten: '".$ergebnis[ 1 ]."'.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = $erg[ 0 ];
|
|
$meldung = $erg[ 1 ];
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -10;
|
|
$meldung = "Der ausführende Benutzer >".$exekutor."< besitzt nicht ausreichende Rechte, um das Passwort des Benutzers >".$benutzer_anmeldename."< zu ändern.";
|
|
}
|
|
|
|
}
|
|
else
|
|
{
|
|
$rc = $ok_1[ 0 ];
|
|
$meldung = $ok_1[ 1 ];
|
|
}
|
|
|
|
if ( $rc < 0 )
|
|
{
|
|
$level = 2;
|
|
}
|
|
else
|
|
{
|
|
$level = 4;
|
|
}
|
|
|
|
mysqli_close( $connection );
|
|
|
|
xlog( $level, "admin.setze_password: RC ".$rc.": ".$meldung );
|
|
|
|
return array( $rc, $meldung );
|
|
}
|
|
|
|
function benutzer_sperren( $mandant_name, $benutzer_anmeldename )
|
|
{
|
|
$exekutor = $_SESSION[ "benutzer_anmeldename" ];
|
|
$ok_1 = existiert_mandant( $mandant_name );
|
|
|
|
if ( $ok_1[ 0 ] > 0 )
|
|
{
|
|
$ok_2 = existiert_benutzer( $mandant_name, $benutzer_anmeldename );
|
|
|
|
if ( $ok_2[ 0 ] > 0 )
|
|
{
|
|
$exec = besitzt_benutzer_systemrecht( $mandant_name, $exekutor, "ADMIN_BENUTZER" );
|
|
|
|
if ( $exec[ 0 ] == 1 )
|
|
{
|
|
$ergebnis_1 = liefere_wertemenge_elemente( $mandant_name, "systembenutzer" );
|
|
|
|
$gefunden = false;
|
|
|
|
if ( count ( $ergebnis_1[ 2 ] ) > 0 )
|
|
{
|
|
foreach ( $ergebnis_1[ 2 ] as $zeile )
|
|
{
|
|
if ( $zeile[ "alpha_01" ] == $benutzer_anmeldename )
|
|
{
|
|
$gefunden = true;
|
|
}
|
|
}
|
|
}
|
|
|
|
if ( ! ( $gefunden ) )
|
|
{
|
|
|
|
$STATEMENT = "update ca_benutzer set benutzer_gesperrt = 1 where benutzer_id = ".$ok_2[ 0 ]." and mandant_id = ".$ok_1[ 0 ];
|
|
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
if ( $ergebnis[ 0 ] <> -1 )
|
|
{
|
|
$rc = 0;
|
|
$meldung = "Der Benutzer ".$benutzer_anmeldename." wurde im Mandanten ".$mandant_name." gesperrt.";
|
|
}
|
|
else
|
|
{
|
|
$rc = -1;
|
|
$meldung = "Es ist ein Fehler aufgetreten: '".$ergebnis[ 1 ]."'.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -2;
|
|
$meldung = "Der Systembenutzer >".$benutzer_anmeldename."< kann nicht gesperrt werden.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -12;
|
|
$meldung = "Der Benutzer >".$exekutor."< verfügt nicht über ausreichende Berechtigungen.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = $ok_2[ 0 ];
|
|
$meldung = $ok_2[ 1 ];
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = $ok_1[ 0 ];
|
|
$meldung = $ok_1[ 1 ];
|
|
}
|
|
|
|
if ( $rc < 0 )
|
|
{
|
|
$level = 2;
|
|
}
|
|
else
|
|
{
|
|
$level = 4;
|
|
}
|
|
|
|
xlog( $level, "admin.benutzer_sperren: RC ".$rc.": ".$meldung );
|
|
return array( $rc, $meldung );
|
|
}
|
|
|
|
function benutzer_entsperren( $mandant_name, $benutzer_anmeldename )
|
|
{
|
|
$exekutor = $_SESSION[ "benutzer_anmeldename" ];
|
|
$ok_1 = existiert_mandant( $mandant_name );
|
|
|
|
if ( $ok_1[ 0 ] > 0 )
|
|
{
|
|
$ok_2 = existiert_benutzer( $mandant_name, $benutzer_anmeldename );
|
|
|
|
if ( $ok_2[ 0 ] > 0 )
|
|
{
|
|
$exec = besitzt_benutzer_systemrecht( $mandant_name, $exekutor, "ADMIN_BENUTZER" );
|
|
|
|
if ( $exec[ 0 ] == 1 )
|
|
{
|
|
$ergebnis_1 = liefere_wertemenge_elemente( $mandant_name, "systembenutzer" );
|
|
|
|
$gefunden = false;
|
|
|
|
if ( count ( $ergebnis_1[ 2 ] ) > 0 )
|
|
{
|
|
foreach ( $ergebnis_1[ 2 ] as $zeile )
|
|
{
|
|
if ( $zeile[ "alpha_01" ] == $benutzer_anmeldename )
|
|
{
|
|
$gefunden = true;
|
|
}
|
|
}
|
|
}
|
|
|
|
if ( ! ( $gefunden ) )
|
|
{
|
|
|
|
$STATEMENT = "update ca_benutzer set benutzer_gesperrt = 0 where benutzer_id = ".$ok_2[ 0 ]." and mandant_id = ".$ok_1[ 0 ];
|
|
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
if ( $ergebnis[ 0 ] <> -1 )
|
|
{
|
|
$rc = 0;
|
|
$meldung = "Der Benutzer ".$benutzer_anmeldename." wurde im Mandanten ".$mandant_name." entsperrt.";
|
|
}
|
|
else
|
|
{
|
|
$rc = -1;
|
|
$meldung = "Es ist ein Fehler aufgetreten: '".$ergebnis[ 1 ]."'.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -2;
|
|
$meldung = "Der Systembenutzer >".$benutzer_anmeldename."< sollte nicht entsperrt werden müssen.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -12;
|
|
$meldung = "Der Benutzer >".$exekutor."< verfügt nicht über ausreichende Berechtigungen.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = $ok_2[ 0 ];
|
|
$meldung = $ok_2[ 1 ];
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = $ok_1[ 0 ];
|
|
$meldung = $ok_1[ 1 ];
|
|
}
|
|
|
|
if ( $rc < 0 )
|
|
{
|
|
$level = 2;
|
|
}
|
|
else
|
|
{
|
|
$level = 4;
|
|
}
|
|
|
|
xlog( $level, "admin.benutzer_entsperren: RC ".$rc.": ".$meldung );
|
|
return array( $rc, $meldung );
|
|
}
|
|
|
|
function benutzer_aendern( $mandant_name, $benutzer_anmeldename, $parameter )
|
|
{
|
|
/*
|
|
$parameter kann folgende Elementen haben:
|
|
|
|
benutzer_vorname
|
|
benutzer_nachname
|
|
benutzer_email_adresse
|
|
benutzer_geschlecht
|
|
benutzer_geburtstag
|
|
benutzer_abwesend
|
|
benutzer_vertreter
|
|
benutzer_vertreter_typ
|
|
|
|
*/
|
|
|
|
$exekutor = $_SESSION[ "benutzer_anmeldename" ];
|
|
|
|
$ok_1 = existiert_mandant( $mandant_name );
|
|
|
|
if ( $ok_1[ 0 ] > 0 )
|
|
{
|
|
$ok_2 = existiert_benutzer( $mandant_name, $benutzer_anmeldename );
|
|
|
|
if ( $ok_2[ 0 ] > 0 )
|
|
{
|
|
$ergebnis_1 = liefere_wertemenge_elemente( $mandant_name, "systembenutzer" );
|
|
|
|
$gefunden = false;
|
|
|
|
if ( count ( $ergebnis_1[ 2 ] ) > 0 )
|
|
{
|
|
foreach ( $ergebnis_1[ 2 ] as $zeile )
|
|
{
|
|
if ( $zeile[ "alpha_01" ] == $benutzer_anmeldename )
|
|
{
|
|
$gefunden = true;
|
|
}
|
|
}
|
|
}
|
|
|
|
if ( ! ( $gefunden ) )
|
|
{
|
|
|
|
if ( !( ( $parameter[ "benutzer_abwesend" ] == "ja" ) && ( ( strlen( $parameter[ "benutzer_vertreter" ] ) == 0 ) || ( strlen( $parameter[ "benutzer_vertreter_typ" ] ) == 0 ) ) ) )
|
|
{
|
|
$meldung = "";
|
|
|
|
if ( ( $parameter[ "benutzer_abwesend" ] == "ja" ) && ( strlen( $parameter[ "benutzer_vertreter_typ" ] ) == "b" ) )
|
|
{
|
|
$b = liefere_benutzerinformmationen( $mandant_name, $parameter[ "benutzer_vertreter" ] );
|
|
|
|
if ( $b[ 2 ][ "benutzer_abwesend" ] == "ja" )
|
|
{
|
|
$rc = -15;
|
|
$meldung = "Der als Vertreter angegebene Benutzer ".$parameter[ "benutzer_vertreter" ]." ist abwesend und kann daher nicht als Vertreter angegeben werden.";
|
|
}
|
|
}
|
|
|
|
$vertretung_nur_gruppen = liefere_konfig( $_SESSION[ "mandant_name" ], "vertretung_nur_gruppen" );
|
|
|
|
if ( ( $vertretung_nur_gruppen == "ja" ) && ( $parameter[ "benutzer_vertreter_typ" ] == "b" ) )
|
|
{
|
|
$rc = -16;
|
|
$meldung = "Es sind nur Gruppen als Vertreter erlaubt.";
|
|
}
|
|
|
|
if ( strlen( $meldung ) == 0 )
|
|
{
|
|
|
|
if ( $parameter[ "benutzer_abwesend" ] == "nein" )
|
|
{
|
|
$parameter[ "benutzer_vertreter" ] = "";
|
|
$parameter[ "benutzer_vertreter_typ" ] = "";
|
|
}
|
|
|
|
$exec = besitzt_benutzer_systemrecht( $mandant_name, $exekutor, "ADMIN_BENUTZER" );
|
|
|
|
if ( $exec[ 0 ] == 1 )
|
|
{
|
|
|
|
foreach( $parameter as $key=>$value )
|
|
{
|
|
if ( $key == "benutzer_geburtstag" )
|
|
{
|
|
$set = $set.$key." = '".datum2mysql( $value )."', ";
|
|
$liste = $liste.$key." => >".datum2mysql( $value )."< ";
|
|
|
|
}
|
|
else
|
|
{
|
|
$set = $set.$key." = '".$value."', ";
|
|
$liste = $liste.$key." => >".$value."< ";
|
|
}
|
|
}
|
|
|
|
//$set = substr( $set, 0, -2 );
|
|
|
|
$STATEMENT = "update ca_benutzer set ".$set." benutzer_letzte_aenderung = '".time()."' where benutzer_id = ".$ok_2[ 0 ]." and mandant_id = ".$ok_1[ 0 ];
|
|
|
|
//xlog( 4, $STATEMENT );
|
|
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
|
|
|
|
if ( $ergebnis[ 0 ] <> -1 )
|
|
{
|
|
if ( $parameter[ "benutzer_abwesend" ] == "ja" )
|
|
{
|
|
$STATEMENT = "update ca_postkorb set empfaenger = '".$parameter[ "benutzer_vertreter" ]."', empfaenger_typ = '".$parameter[ "benutzer_vertreter_typ" ]."', ursprung = '".$benutzer_anmeldename."' where empfaenger = '".$benutzer_anmeldename."' and mandant_id = ".$ok_1[ 0 ];
|
|
|
|
//xlog( 5, $STATEMENT );
|
|
$ergebnis = xdb( $STATEMENT );
|
|
}
|
|
|
|
if ( $parameter[ "benutzer_abwesend" ] == "nein" )
|
|
{
|
|
$STATEMENT = "update ca_postkorb set empfaenger = '".$benutzer_anmeldename."', empfaenger_typ = 'b', ursprung = '' where ursprung = '".$benutzer_anmeldename."' and mandant_id = ".$ok_1[ 0 ];
|
|
|
|
//xlog( 5, $STATEMENT );
|
|
$ergebnis = xdb( $STATEMENT );
|
|
}
|
|
|
|
$rc = 0;
|
|
$meldung = "Der Benutzer ".$benutzer_anmeldename." wurde im Mandanten ".$mandant_name." geändert.";// (".substr( $liste, 0, -1 ).").";
|
|
}
|
|
else
|
|
{
|
|
$rc = -1;
|
|
$meldung = "Es ist ein Fehler aufgetreten: '".$ergebnis[ 1 ]."'.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -12;
|
|
$meldung = "Der Benutzer >".$exekutor."< verfügt nicht über ausreichende Berechtigungen.";
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -13;
|
|
$meldung = "Der Benutzer ".$benutzer_anmeldename." sollte abwesend gemeldet werden, es wurde aber kein Vertreter angegeben.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -14;
|
|
$meldung = "Der Systembenutzer ".$benutzer_anmeldename." kann nicht geändert werden.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = $ok_2[ 0 ];
|
|
$meldung = $ok_2[ 1 ];
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = $ok_1[ 0 ];
|
|
$meldung = $ok_1[ 1 ];
|
|
}
|
|
|
|
if ( $rc < 0 )
|
|
{
|
|
$level = 2;
|
|
}
|
|
else
|
|
{
|
|
$level = 4;
|
|
}
|
|
|
|
xlog( $level, "admin.benutzer_aendern: RC ".$rc.": ".$meldung );
|
|
return array( $rc, $meldung );
|
|
}
|
|
|
|
function benutzer_password_fehlversuche_zuruecksetzen( $mandant_name, $benutzer_anmeldename )
|
|
{
|
|
$exekutor = $_SESSION[ "benutzer_anmeldename" ];
|
|
|
|
$ok_1 = existiert_mandant( $mandant_name );
|
|
|
|
if ( $ok_1[ 0 ] > 0 )
|
|
{
|
|
$ok_2 = existiert_benutzer( $mandant_name, $benutzer_anmeldename );
|
|
|
|
if ( $ok_2[ 0 ] > 0 )
|
|
{
|
|
$exec = besitzt_benutzer_systemrecht( $mandant_name, $exekutor, "ADMIN_BENUTZER" );
|
|
|
|
if ( $exec[ 0 ] == 1 )
|
|
{
|
|
$STATEMENT = "update ca_benutzer set benutzer_passwort_fehlversuche = 0, benutzer_letzte_aenderung = '".time()."' where benutzer_id = ".$ok_2[ 0 ]." and mandant_id = ".$ok_1[ 0 ];
|
|
|
|
//xlog( 4, $STATEMENT );
|
|
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
if ( $ergebnis[ 0 ] <> -1 )
|
|
{
|
|
$rc = 0;
|
|
$meldung = "Der Passwort-Fehleingabenzähler für den Benutzer ".$benutzer_anmeldename." im Mandanten ".$mandant_name." wurde auf 0 gesetzt.";
|
|
}
|
|
else
|
|
{
|
|
$rc = -1;
|
|
$meldung = "Es ist ein Fehler aufgetreten: '".$ergebnis[ 1 ]."'.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -12;
|
|
$meldung = "Der Benutzer >".$exekutor."< verfügt nicht über ausreichende Berechtigungen.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = $ok_2[ 0 ];
|
|
$meldung = $ok_2[ 1 ];
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = $ok_1[ 0 ];
|
|
$meldung = $ok_1[ 1 ];
|
|
}
|
|
|
|
if ( $rc < 0 )
|
|
{
|
|
$level = 2;
|
|
}
|
|
else
|
|
{
|
|
$level = 4;
|
|
}
|
|
|
|
xlog( $level, "admin.benutzer_password_fehlversuche_zuruecksetzen: RC ".$rc.": ".$meldung );
|
|
return array( $rc, $meldung );
|
|
}
|
|
|
|
function suche_benutzer( $mandant_name, $suchstring )
|
|
{
|
|
$ok_1 = existiert_mandant( $mandant_name );
|
|
|
|
$benutzerliste = array();
|
|
|
|
if ( $ok_1[ 0 ] > 0 )
|
|
{
|
|
|
|
$STATEMENT = "select benutzer_anmeldename, benutzer_vorname, benutzer_nachname, domaene, benutzer_id, benutzer_email_adresse, benutzer_geschlecht, benutzer_angelegt_am, benutzer_letzte_aenderung, benutzer_gesperrt, benutzer_passwort_letzte_aenderung, benutzer_passwort_fehlversuche, benutzer_geburtstag from ca_benutzer where mandant_id = ".$ok_1[ 0 ]." and ( ( benutzer_anmeldename like '%".$suchstring."%' ) or ( benutzer_vorname like '%".$suchstring."%' ) or ( benutzer_nachname like '%".$suchstring."%' ) ) order by benutzer_nachname, benutzer_vorname";
|
|
|
|
//xlog( 4, $STATEMENT );
|
|
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
if ( $ergebnis[ 0 ] <> -1 )
|
|
{
|
|
$rc = $ergebnis[ 0 ];
|
|
$benutzerliste = $ergebnis[ 1 ];
|
|
$meldung = "Liefere ".$rc." Benutzer des Mandants ".$mandant_name.".";
|
|
}
|
|
else
|
|
{
|
|
$rc = -1;
|
|
$meldung = "Es ist ein Fehler aufgetreten: '".$ergebnis[ 1 ]."'.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = $ok_1[ 0 ];
|
|
$meldung = $ok_1[ 1 ];
|
|
}
|
|
|
|
if ( $rc < 0 )
|
|
{
|
|
$level = 2;
|
|
}
|
|
else
|
|
{
|
|
$level = 6;
|
|
}
|
|
|
|
xlog( $level, "admin.suche_benutzer: RC ".$rc.": ".$meldung );
|
|
return array( $rc, $meldung, $benutzerliste );
|
|
}
|
|
|
|
function setze_benutzer_abwesend( $mandant_name, $benutzer_anmeldename, $parameter )
|
|
{
|
|
$exekutor = $_SESSION[ "benutzer_anmeldename" ];
|
|
|
|
$ok = existiert_mandant( $mandant_name );
|
|
|
|
if ( $ok[ 0 ] > 0 )
|
|
{
|
|
|
|
if ( ( strlen( $benutzer_anmeldename ) > 0 ) && ( $benutzer_anmeldename == $exekutor ) && ( strlen( $parameter[ "vertreter" ] ) > 0 ) && ( strlen( $parameter[ "vertreter_typ" ] ) > 0 ) )
|
|
{
|
|
|
|
$o = welche_benutzer_vertritt_benutzer( $mandant_name, $benutzer_anmeldename );
|
|
|
|
if ( $o[ 0 ] == 0 )
|
|
{
|
|
$b = liefere_benutzerinformationen( $mandant_name, $benutzer_anmeldename );
|
|
|
|
if ( $b[ 2 ][ "benutzer_abwesend" ] == "nein" )
|
|
{
|
|
if ( $parameter[ "vertreter_typ" ] == "b" )
|
|
{
|
|
$v = liefere_benutzerinformationen( $mandant_name, $parameter[ "vertreter" ] );
|
|
|
|
if ( $v[ 2 ][ "benutzer_abwesend" ] != "nein" )
|
|
{
|
|
$rc = -4;
|
|
$meldung = "Der als Vertreter gewählte Benutzer ".$parameter[ "vertreter" ]." ist selber abwesend.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
// Es wurde eine Gruppe als Vertreter gewählt
|
|
$v = liefere_gruppeninformationen( $mandant_name, $parameter[ "vertreter" ] );
|
|
if ( $v[ 0 ] < 0 )
|
|
{
|
|
$rc = -3;
|
|
$meldung = "Es gibt ein Problem mit der angegebenen Gruppe: ".$v[ 1 ];
|
|
}
|
|
}
|
|
|
|
if ( strlen( $meldung ) == 0 )
|
|
{
|
|
$STATEMENT = "update ca_benutzer set benutzer_abwesend = 'ja', benutzer_vertreter = '".$parameter[ "vertreter" ]."', benutzer_vertreter_typ = '".$parameter[ "vertreter_typ" ]."' where benutzer_anmeldename = '".$benutzer_anmeldename."' and mandant_id = ".$ok[ 0 ];
|
|
|
|
xlog( 6, "admin.setze_benutzer_abwesend: ".$STATEMENT );
|
|
xdb( $STATEMENT );
|
|
|
|
$STATEMENT = "update ca_postkorb set empfaenger = '".$parameter[ "vertreter" ]."', empfaenger_typ = '".$parameter[ "vertreter_typ" ]."', ursprung = '".$benutzer_anmeldename."' where empfaenger = '".$benutzer_anmeldename."' and mandant_id = ".$ok[ 0 ];
|
|
|
|
xlog( 6, "admin.setze_benutzer_abwesend: ".$STATEMENT );
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
$rc = 1;
|
|
$meldung = "Der Benutzer ".$benutzer_anmeldename." hat sich abwesend gemeldet.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = 2;
|
|
$meldung = "Der Benutzer ".$benutzer_anmeldename." ist bereits abwesend gemeldet.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -17;
|
|
$meldung = "Der Benutzer ".$benutzer_anmeldename." ist Vertreter für andere Benutzer und kann daher nicht abwesend gemeldet werden.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -12;
|
|
$meldung = "Falsche Parametrisierung: mandant_name|benutzer_anmeldename|Session Benutzer|parameter vertreter, vertreter_typ: ".$mandant_name."|".$benutzer_anmeldename."|".$_SESSION[ "benutzer_anmeldename" ]."|".$parameter[ "vertreter" ]."|".$parameter[ "vertreter_typ" ];
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = $ok[ 0 ];
|
|
$meldung = $ok[ 1 ];
|
|
}
|
|
|
|
if ( $rc < 0 )
|
|
{
|
|
$level = 2;
|
|
}
|
|
else
|
|
{
|
|
$level = 4;
|
|
}
|
|
|
|
xlog( $level, "admin.setze_benutzer_abwesend: RC ".$rc.": ".$meldung );
|
|
return array( $rc, $meldung );
|
|
}
|
|
|
|
function setze_benutzer_anwesend( $mandant_name, $benutzer_anmeldename )
|
|
{
|
|
$exekutor = $_SESSION[ "benutzer_anmeldename" ];
|
|
|
|
$ok = existiert_mandant( $mandant_name );
|
|
|
|
if ( $ok[ 0 ] > 0 )
|
|
{
|
|
|
|
if ( ( strlen( $benutzer_anmeldename ) > 0 ) && ( $benutzer_anmeldename == $exekutor ) )
|
|
{
|
|
|
|
$b = liefere_benutzerinformationen( $mandant_name, $benutzer_anmeldename );
|
|
|
|
if ( $b[ 2 ][ "benutzer_abwesend" ] == "ja" )
|
|
{
|
|
|
|
|
|
if ( strlen( $meldung ) == 0 )
|
|
{
|
|
$STATEMENT = "update ca_benutzer set benutzer_abwesend = 'nein', benutzer_vertreter = '', benutzer_vertreter_typ = '' where benutzer_anmeldename = '".$benutzer_anmeldename."' and mandant_id = ".$ok[ 0 ];
|
|
|
|
xdb( $STATEMENT );
|
|
|
|
$STATEMENT = "update ca_postkorb set empfaenger = '".$benutzer_anmeldename."', empfaenger_typ = 'b', ursprung = '' where ursprung = '".$benutzer_anmeldename."' and mandant_id = ".$ok[ 0 ];
|
|
|
|
xlog( 6, $STATEMENT );
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
$rc = 1;
|
|
$meldung = "Der Benutzer ".$benutzer_anmeldename." hat sich anwesend gemeldet.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = 2;
|
|
$meldung = "Der Benutzer ".$benutzer_anmeldename." ist bereits anwesend gemeldet.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -12;
|
|
$meldung = "Falsche Parametrisierung: mandant_name|benutzer_anmeldename|Session Benutzer|parameter vertreter, vertreter_typ: ".$mandant_name."|".$benutzer_anmeldename."|".$_SESSION[ "benutzer_anmeldename" ]."|".$parameter[ "vertreter" ]."|".$parameter[ "vertreter_typ" ];
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = $ok[ 0 ];
|
|
$meldung = $ok[ 1 ];
|
|
}
|
|
|
|
if ( $rc < 0 )
|
|
{
|
|
$level = 2;
|
|
}
|
|
else
|
|
{
|
|
$level = 4;
|
|
}
|
|
|
|
xlog( $level, "admin.setze_benutzer_anwesend: RC ".$rc.": ".$meldung );
|
|
return array( $rc, $meldung );
|
|
}
|
|
|
|
function welche_benutzer_vertritt_benutzer( $mandant_name, $benutzer_anmeldename )
|
|
{
|
|
$ok = existiert_mandant( $mandant_name );
|
|
|
|
if ( $ok[ 0 ] > 0 )
|
|
{
|
|
if ( strlen( $benutzer_anmeldename ) > 0 )
|
|
{
|
|
$e = array();
|
|
|
|
$STATEMENT = "select distinct b.benutzer_vorname, b.benutzer_anmeldename, b.benutzer_nachname from ca_benutzer b where b.benutzer_vertreter = '".$benutzer_anmeldename."' and b.benutzer_vertreter_typ = 'b' and b.mandant_id = ".$ok[ 0 ]." ";
|
|
|
|
//xlog( 4, $STATEMENT );
|
|
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
if ( $ergebnis[ 0 ] > 0 )
|
|
{
|
|
$e = $ergebnis[ 1 ];
|
|
|
|
$rc = count( $e );
|
|
$meldung = "Liefere ".$rc." Benutzer, die von ".$benutzer_anmeldename." vertreten werden.";
|
|
}
|
|
else
|
|
{
|
|
$rc = 0;
|
|
$meldung = "Der Benutzer ".$benutzer_anmeldename." vertritt aktuell niemanden.";
|
|
}
|
|
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = $ok[ 0 ];
|
|
$meldung = $ok[ 1 ];
|
|
}
|
|
|
|
if ( $rc < 0 )
|
|
{
|
|
$level = 2;
|
|
}
|
|
else
|
|
{
|
|
$level = 4;
|
|
}
|
|
|
|
xlog( $level, "admin.welche_benutzer_vertritt_benutzer: RC ".$rc.": ".$meldung );
|
|
return array( $rc, $meldung, $e );
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
Gruppenfunktionen
|
|
*/
|
|
|
|
function existiert_gruppe( $mandant_name, $gruppen_name )
|
|
{
|
|
/****************
|
|
BESCHREIBUNG_____Liefert eine Gruppen-ID anhand des Gruppennamens
|
|
RETURNS_____(string) Gruppen-ID
|
|
****************/
|
|
|
|
$ok = existiert_mandant( $mandant_name );
|
|
|
|
|
|
// Feststellen der Gruppen-ID zum Gruppennamen
|
|
$STATEMENT = "select gruppen_id from ca_gruppe where gruppen_name = '".$gruppen_name."' and mandant_id = ".$ok[ 0 ]." ;";
|
|
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
if ( $ergebnis[ 0 ] <> -1 )
|
|
{
|
|
if ( $ergebnis[ 0 ] > 0 )
|
|
{
|
|
$rc = $ergebnis[ 1 ][ 0 ][ "gruppen_id" ];
|
|
$meldung = "Die Gruppe ".$gruppen_name." hat im Mandanten ".$mandant_name." die ID ".$rc.".";
|
|
}
|
|
else
|
|
{
|
|
$rc = -1;
|
|
$meldung = "Die Gruppe ".$gruppen_name." existiert im Mandanten ".$mandant_name." nicht.";
|
|
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -1;
|
|
$meldung = "Es ist ein Fehler aufgetreten: '".$ergebnis[ 1 ]."'.";
|
|
}
|
|
|
|
if ( $rc < 0 )
|
|
{
|
|
$level = 2;
|
|
}
|
|
else
|
|
{
|
|
$level = 6;
|
|
}
|
|
|
|
xlog( $level, "admin.existiert_gruppe: RC ".$rc.": ".$meldung );
|
|
|
|
|
|
return array( $rc, $meldung );
|
|
}
|
|
|
|
function gruppe_anlegen( $mandant_name, $gruppen_name, $gruppen_email_adresse, $gruppen_fremd_id )
|
|
{
|
|
$connection = mysqli_connect( "localhost", "ca_db", "ca_db", "ca_system" );
|
|
$exekutor = $_SESSION[ "benutzer_anmeldename" ];
|
|
$ok_1 = existiert_mandant( $mandant_name );
|
|
|
|
if ( $ok_1[ 0 ] > 0 )
|
|
{
|
|
if ( strlen( $gruppen_name ) <> 0 )
|
|
{
|
|
if ( mb_strtoupper( $exekutor, "UTF-8" ) == "SUPERUSER" )
|
|
{
|
|
$exec[ 0 ] = 1;
|
|
}
|
|
else
|
|
{
|
|
$exec = besitzt_benutzer_systemrecht( $mandant_name, $exekutor, "ADMIN_GRUPPE" );
|
|
}
|
|
|
|
if ( $exec[ 0 ] == 1 )
|
|
{
|
|
$wert_1 = "'".mysqli_real_escape_string( $connection, $gruppen_email_adresse )."'";
|
|
$wert_2 = "'".mysqli_real_escape_string( $connection, $gruppen_fremd_id )."'";
|
|
|
|
|
|
$gruppen_id = existiert_gruppe( $mandant_name, $gruppen_name );
|
|
|
|
$regex = preg_match( "/[\!\"\§\$\%\&\\\,\?\:\;\/\(\)\=\*\#\'\{\}\[\]\~]/", $gruppen_name );
|
|
|
|
if ( $regex == 0 )
|
|
{
|
|
if ( $gruppen_id[ 0 ] < 0 )
|
|
{
|
|
// Erstellen der Gruppe
|
|
$STATEMENT = "insert into ca_gruppe ( mandant_id, gruppe_angelegt_am, gruppe_letzte_aenderung, gruppen_name, gruppen_email_adresse, gruppen_fremd_id ) values ( ".$ok_1[ 0 ].", '".time()."', '".time()."', '".mysqli_real_escape_string( $connection, $gruppen_name )."', ".$wert_1.", ".$wert_2." );";
|
|
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
if ( $ergebnis[ 0 ] <> -1 )
|
|
{
|
|
$rc = $ergebnis[ 0 ];
|
|
$meldung = "Die Gruppe ".$gruppen_name." wurde angelegt (ID ".$rc.").";
|
|
}
|
|
else
|
|
{
|
|
$rc = -4;
|
|
$meldung = "Es ist ein DB-Fehler aufgetreten: '".$ergebnis[ 1 ]."'.";
|
|
}
|
|
|
|
|
|
}
|
|
else
|
|
{
|
|
$rc = -3;
|
|
$meldung = "Die Gruppe ".$gruppen_name." existiert bereits (ID ".$gruppen_id[ 0 ].").";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -2;
|
|
$meldung = "Beim gewünschten Gruppennamen wurde ein nicht erlaubtes Sonderzeichen verwendet.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -12;
|
|
$meldung = "Der Benutzer >".$exekutor."< verfügt nicht über ausreichende Berechtigungen.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -1;
|
|
$meldung = "Es wurde kein Gruppenname angegeben.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = $ok_1[ 0 ];
|
|
$meldung = $ok_1[ 1 ];
|
|
}
|
|
|
|
|
|
if ( $rc < 0 )
|
|
{
|
|
$level = 2;
|
|
}
|
|
else
|
|
{
|
|
$level = 4;
|
|
}
|
|
|
|
mysqli_close( $connection );
|
|
|
|
|
|
xlog( $level, "admin.erstelle_gruppe: RC ".$rc.": ".$meldung );
|
|
return array( $rc, $meldung );
|
|
}
|
|
|
|
function gruppe_loeschen( $mandant_name, $gruppen_name, $force = false )
|
|
{
|
|
if ( ( $force !== true ) && ( $force !== false ) )
|
|
{
|
|
$force = false;
|
|
}
|
|
|
|
$exekutor = $_SESSION[ "benutzer_anmeldename" ];
|
|
$ok_1 = existiert_mandant( $mandant_name );
|
|
|
|
if ( $ok_1[ 0 ] > 0 )
|
|
{
|
|
$gruppen_id = existiert_gruppe( $mandant_name, $gruppen_name );
|
|
|
|
if ( $gruppen_id[ 0 ] > 0 )
|
|
{
|
|
if ( mb_strtoupper( $exekutor, "UTF-8" ) == "SUPERUSER" )
|
|
{
|
|
$exec[ 0 ] = 1;
|
|
}
|
|
else
|
|
{
|
|
$exec = besitzt_benutzer_systemrecht( $mandant_name, $exekutor, "ADMIN_GRUPPE" );
|
|
}
|
|
|
|
if ( ( $exec[ 0 ] == 1 ) && ( ( $gruppen_name != "Administratoren" ) || ( $force === true ) ) )
|
|
{
|
|
|
|
$ergebnis = in_welchen_gruppen_ist_gruppe_mitglied( $mandant_name, $gruppen_name );
|
|
|
|
if ( $ergebnis[ 0 ] > 0 )
|
|
{
|
|
foreach ( $ergebnis[ 2 ] as $gruppe )
|
|
{
|
|
gruppe_aus_einer_gruppe_entfernen( $mandant_name, $gruppe, $gruppen_name, $force );
|
|
}
|
|
}
|
|
|
|
$ergebnis = liefere_benutzer_die_in_gruppe_sind( $mandant_name, $gruppen_name );
|
|
|
|
if ( $ergebnis[ 0 ] > 0 )
|
|
{
|
|
foreach ( $ergebnis[ 2 ] as $benutzer_anmeldename )
|
|
{
|
|
benutzer_aus_gruppe_entfernen( $mandant_name, $benutzer_anmeldename, $gruppen_name, $force );
|
|
}
|
|
}
|
|
|
|
$ergebnis = welche_systemrechte_besitzt_gruppe( $mandant_name, $gruppen_name );
|
|
|
|
if ( $ergebnis[ 0 ] > 0 )
|
|
{
|
|
foreach ( $ergebnis[ 3 ] as $systemrecht )
|
|
{
|
|
gruppe_systemrecht_entziehen( $mandant_name, $gruppen_name, $systemrecht, $force );
|
|
}
|
|
}
|
|
|
|
|
|
$STATEMENT = "delete from ca_gruppe where gruppen_id = ".$gruppen_id[ 0 ]; //( mandant_id, gruppen_name".$feld_1.$feld_2." ) values ( ".$ok_1[ 0 ].", '".$gruppen_name."' ".$wert_1.$wert_2." );";
|
|
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
if ( $ergebnis[ 0 ] <> -1 )
|
|
{
|
|
$rc = 0;
|
|
$meldung = "Die Gruppe ".$gruppen_name." wurde im Mandanten ".$mandant_name." gelöscht.";
|
|
}
|
|
else
|
|
{
|
|
$rc = -4;
|
|
$meldung = "Es ist ein DB-Fehler aufgetreten: '".$ergebnis[ 1 ]."'.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -12;
|
|
$meldung = "Der Benutzer >".$exekutor."< verfügt nicht über ausreichende Berechtigungen.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -3;
|
|
$meldung = "Die Gruppe ".$gruppen_name." existiert nicht im Mandanten >".$mandant_name."<.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = $ok_1[ 0 ];
|
|
$meldung = $ok_1[ 1 ];
|
|
}
|
|
|
|
|
|
if ( $rc < 0 )
|
|
{
|
|
$level = 2;
|
|
}
|
|
else
|
|
{
|
|
$level = 4;
|
|
}
|
|
|
|
xlog( $level, "admin.gruppe_loeschen: RC ".$rc.": ".$meldung );
|
|
return array( $rc, $meldung );
|
|
}
|
|
|
|
function gruppe_aendern( $mandant_name, $gruppen_name, $parameter )
|
|
{
|
|
/*
|
|
$parameter kann folgende Elementen haben:
|
|
|
|
gruppen_fremd_id
|
|
gruppen_email_adresse
|
|
gruppen_name
|
|
|
|
*/
|
|
$connection = mysqli_connect( "localhost", "ca_db", "ca_db", "ca_system" );
|
|
|
|
$exekutor = $_SESSION[ "benutzer_anmeldename" ];
|
|
|
|
$ok_1 = existiert_mandant( $mandant_name );
|
|
|
|
if ( $ok_1[ 0 ] > 0 )
|
|
{
|
|
$ok_2 = existiert_gruppe( $mandant_name, $gruppen_name );
|
|
|
|
if ( $ok_2[ 0 ] > 0 )
|
|
{
|
|
$exec = besitzt_benutzer_systemrecht( $mandant_name, $exekutor, "ADMIN_GRUPPE" );
|
|
|
|
if ( $exec[ 0 ] == 1 )
|
|
{
|
|
foreach( $parameter as $key=>$value )
|
|
{
|
|
$set = $set.$key." = '".mysqli_real_escape_string( $connection, $value )."', ";
|
|
$liste = $liste.$key." => >".$value."< ";
|
|
}
|
|
|
|
$STATEMENT = "update ca_gruppe set ".$set." gruppe_letzte_aenderung = '".time()."' where gruppen_id = ".$ok_2[ 0 ]." and mandant_id = ".$ok_1[ 0 ];
|
|
|
|
xlog( 4, $STATEMENT );
|
|
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
if ( $ergebnis[ 0 ] <> -1 )
|
|
{
|
|
$rc = 0;
|
|
$meldung = "Die Gruppe ".$gruppen_name." wurde im Mandanten ".$mandant_name." geändert.";// (".substr( $liste, 0, -1 ).").";
|
|
}
|
|
else
|
|
{
|
|
$rc = -1;
|
|
$meldung = "Es ist ein Fehler aufgetreten: '".$ergebnis[ 1 ]."'.";
|
|
}
|
|
|
|
|
|
}
|
|
else
|
|
{
|
|
$rc = -12;
|
|
$meldung = "Der Benutzer >".$exekutor."< verfügt nicht über ausreichende Berechtigungen.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = $ok_2[ 0 ];
|
|
$meldung = $ok_2[ 1 ];
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = $ok_1[ 0 ];
|
|
$meldung = $ok_1[ 1 ];
|
|
}
|
|
|
|
if ( $rc < 0 )
|
|
{
|
|
$level = 2;
|
|
}
|
|
else
|
|
{
|
|
$level = 4;
|
|
}
|
|
|
|
mysqli_close( $connection );
|
|
|
|
xlog( $level, "admin.gruppe_aendern: RC ".$rc.": ".$meldung );
|
|
return array( $rc, $meldung );
|
|
}
|
|
|
|
function liefere_gruppeninformationen( $mandant_name, $gruppen_name )
|
|
{
|
|
$ok_1 = existiert_mandant( $mandant_name );
|
|
|
|
if ( $ok_1[ 0 ] > 0 )
|
|
{
|
|
$gruppen_id = existiert_gruppe( $mandant_name, $gruppen_name );
|
|
|
|
if ( $gruppen_id[ 0 ] > 0 )
|
|
{
|
|
$STATEMENT = "select mandant_id, gruppen_name, gruppen_email_adresse, gruppen_fremd_id, gruppen_id, gruppe_angelegt_am, gruppe_letzte_aenderung from ca_gruppe where gruppen_id = ".$gruppen_id[ 0 ];
|
|
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
if ( $ergebnis[ 0 ] <> -1 )
|
|
{
|
|
$gruppe_array = array( );
|
|
|
|
$gruppe_array[ "mandant_id" ] = (string) $ergebnis[ 1 ][ 0 ][ "mandant_id" ];
|
|
$gruppe_array[ "gruppen_name" ] = (string) $ergebnis[ 1 ][ 0 ][ "gruppen_name" ];
|
|
$gruppe_array[ "gruppen_email_adresse" ] = (string) $ergebnis[ 1 ][ 0 ][ "gruppen_email_adresse" ];
|
|
$gruppe_array[ "gruppen_fremd_id" ] = (string) $ergebnis[ 1 ][ 0 ][ "gruppen_fremd_id" ];
|
|
$gruppe_array[ "gruppen_id" ] = (string) $ergebnis[ 1 ][ 0 ][ "gruppen_id" ];
|
|
$gruppe_array[ "gruppe_angelegt_am" ] = (string) $ergebnis[ 1 ][ 0 ][ "gruppe_angelegt_am" ];
|
|
$gruppe_array[ "gruppe_letzte_aenderung" ] = (string) $ergebnis[ 1 ][ 0 ][ "gruppe_letzte_aenderung" ];
|
|
|
|
|
|
$rc = $gruppe_array[ "gruppen_id" ];
|
|
$meldung = "Liefere Informationen zur Gruppe ".$gruppen_name.".";
|
|
}
|
|
else
|
|
{
|
|
$rc = -4;
|
|
$meldung = "Es ist ein DB-Fehler aufgetreten: '".$ergebnis[ 1 ]."'.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -2;
|
|
$meldung = "Die Gruppe ".$gruppen_name." existiert nicht im Mandanten ".$mandant_name.".";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = $ok_1[ 0 ];
|
|
$meldung = $ok_1[ 1 ];
|
|
}
|
|
|
|
|
|
if ( $rc < 0 )
|
|
{
|
|
$level = 2;
|
|
}
|
|
else
|
|
{
|
|
$level = 4;
|
|
}
|
|
|
|
xlog( $level, "admin.liefere_gruppeninformationen: RC ".$rc.": ".$meldung );
|
|
return array( $rc, $meldung, $gruppe_array );
|
|
}
|
|
|
|
function liefere_alle_gruppen( $mandant_name, $liefere_systemgruppen = true )
|
|
{
|
|
$ok_1 = existiert_mandant( $mandant_name );
|
|
|
|
$gruppenliste = array();
|
|
|
|
if ( $ok_1[ 0 ] > 0 )
|
|
{
|
|
if ( $liefere_systemgruppen == false )
|
|
{
|
|
$sysgruppen = liefere_wertemenge_elemente( $mandant_name, "systemgruppen" );
|
|
|
|
$STMT_ERW = " and gruppen_name not in ( ";
|
|
|
|
foreach ( $sysgruppen[ 2 ] as $systemgruppen )
|
|
{
|
|
$STMT_ERW = $STMT_ERW." '".$systemgruppen[ "alpha_01" ]."', ";
|
|
}
|
|
$STMT_ERW = substr( $STMT_ERW, 0, -2 )." )";
|
|
}
|
|
else
|
|
{
|
|
$STMT_ERW = "";
|
|
}
|
|
|
|
|
|
|
|
$STATEMENT = "select gruppen_name from ca_gruppe where mandant_id = ".$ok_1[ 0 ].$STMT_ERW;
|
|
|
|
//xlog( 4, $STATEMENT );
|
|
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
if ( $ergebnis[ 0 ] > 0 )
|
|
{
|
|
foreach( $ergebnis[ 1 ] as $gruppen )
|
|
{
|
|
$gruppenliste[ ] = (string)$gruppen[ "gruppen_name" ];
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$gruppenliste = array();
|
|
}
|
|
|
|
$rc = count( $gruppenliste );
|
|
$meldung = "Liefere ".$rc." Gruppen des Mandants ".$mandant_name.".";
|
|
}
|
|
else
|
|
{
|
|
$rc = $ok_1[ 0 ];
|
|
$meldung = $ok_1[ 1 ];
|
|
}
|
|
|
|
|
|
if ( $rc < 0 )
|
|
{
|
|
$level = 2;
|
|
}
|
|
else
|
|
{
|
|
$level = 4;
|
|
}
|
|
|
|
xlog( $level, "admin.liefere_alle_gruppen: RC ".$rc.": ".$meldung );
|
|
return array( $rc, $meldung, $gruppenliste );
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
Mandanten-Funktionen
|
|
*/
|
|
|
|
function existiert_mandant( $mandant_name )
|
|
{
|
|
if ( strlen( $mandant_name ) > 0 )
|
|
{
|
|
$STATEMENT = "select mandant_id from ca_mandant where lower( mandant_name ) = '".mb_strtolower( $mandant_name, "utf-8" )."'";
|
|
|
|
$ergebnis = xdb( $STATEMENT );
|
|
/*
|
|
xlog( 4, json_encode( $ergebnis ));
|
|
xlog( 4, json_encode( $ergebnis[1] ));
|
|
xlog( 4, json_encode( $ergebnis[1][0] ));
|
|
xlog( 4, json_encode( $ergebnis[1][0][ "mandant_id" ] ));
|
|
*/
|
|
|
|
if ( $ergebnis[ 0 ] <> -1 )
|
|
{
|
|
if ( $ergebnis[ 0 ] > 0 )
|
|
{
|
|
$rc = $ergebnis[ 1 ][ 0 ][ "mandant_id" ];
|
|
$meldung = "Der Mandant >".$mandant_name."< existiert im System (ID ".$rc.").";
|
|
}
|
|
else
|
|
{
|
|
$rc = 0;
|
|
$meldung = "Der Mandant >".$mandant_name."< existiert nicht im System.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -2;
|
|
$meldung = "Es ist ein DB-Fehler aufgetreten: '".$ergebnis[ 1 ]."'.";
|
|
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -1;
|
|
$meldung = "Es wurde kein Mandant angegeben.";
|
|
}
|
|
|
|
if ( $rc <= 0 )
|
|
{
|
|
$level = 3;
|
|
}
|
|
else
|
|
{
|
|
$level = 6;
|
|
}
|
|
|
|
xlog( $level, "admin.existiert_mandant: RC ".$rc.": ".$meldung );
|
|
|
|
return array( $rc, $meldung );
|
|
}
|
|
|
|
function mandant_anlegen( $mandant_name )
|
|
{
|
|
$connection = mysqli_connect( "localhost", "ca_db", "ca_db", "ca_system" );
|
|
|
|
|
|
if ( strlen( $mandant_name ) > 0 )
|
|
{
|
|
$existiert_mandant = existiert_mandant( $mandant_name );
|
|
|
|
if ( $existiert_mandant[ 0 ] <= 0 )
|
|
{
|
|
// Der Mandant wurde nicht gefunden
|
|
$STATEMENT = "insert into ca_mandant ( mandant_name, mandant_erstellt_am, mandant_lizenz ) values ( '".mysqli_real_escape_string( $connection, $mandant_name )."', '".time()."', '".mysqli_real_escape_string( $connection, $lizenz )."' ) ";
|
|
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
if ( $ergebnis[ 0 ] <> -1 )
|
|
{
|
|
if ( $ergebnis[ 0 ] > 0 )
|
|
{
|
|
$rc = $ergebnis[ 0 ];
|
|
|
|
if ( $benutzer_gruppen_anlegen !== true )
|
|
{
|
|
$benutzer_gruppen_anlegen = false;
|
|
}
|
|
|
|
if ( $dokumentarten_anlegen !== true )
|
|
{
|
|
$dokumentarten_anlegen = false;
|
|
}
|
|
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////
|
|
// zuerst muss noch die Grundkonfiguration angelegt werden
|
|
$element_anzulegen = liefere_wertemenge_elemente( "Standard", "init_konfig" );
|
|
|
|
if ( $element_anzulegen[ 0 ] > 0 )
|
|
{
|
|
foreach( $element_anzulegen[ 2 ] as $element )
|
|
{
|
|
// erstelle_konfig( $mandant_name, $parameter, $kategorie, $wert = "", $wertemenge = "", $beschreibung = "" )
|
|
$ok = erstelle_konfig( $mandant_name, $element[ "alpha_01" ], $element[ "alpha_04" ], $element[ "alpha_02" ], $element[ "alpha_03" ], $element[ "text_01" ] );
|
|
set_time_limit( 30 );
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////
|
|
// jetzt werden die Systemrechte erzeugt
|
|
$element_anzulegen = liefere_wertemenge_elemente( "Standard", "init_systemrechte" );
|
|
|
|
if ( $element_anzulegen[ 0 ] > 0 )
|
|
{
|
|
foreach( $element_anzulegen[ 2 ] as $element )
|
|
{
|
|
// erstelle_konfig( $mandant_name, $parameter, $kategorie, $wert = "", $wertemenge = "", $beschreibung = "" )
|
|
$ok = systemrecht_anlegen( $mandant_name, $element[ "alpha_02" ], $element[ "num_01" ], $element[ "alpha_01" ] );
|
|
set_time_limit( 30 );
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////
|
|
// initale Wertemengen erzeugen
|
|
$element_anzulegen = liefere_wertemenge_elemente( "Standard", "init_wertemenge" );
|
|
|
|
if ( $element_anzulegen[ 0 ] > 0 )
|
|
{
|
|
foreach( $element_anzulegen[ 2 ] as $element )
|
|
{
|
|
// Erst Wertemenge liefern lassen und im neuen Mandanten anlegen
|
|
$wertemenge = liefere_wertemenge( "Standard", $element[ "alpha_01" ] );
|
|
|
|
if ( $wertemenge[ 2 ][ "typ" ] == "static" )
|
|
{
|
|
$w_elemente = liefere_wertemenge_elemente( "Standard", $element[ "alpha_01" ] );
|
|
}
|
|
else
|
|
{
|
|
$w_elemente = array( 0, 1, array() );
|
|
}
|
|
$ok = wertemenge_anlegen( $mandant_name, $wertemenge[ 2 ][ "kuerzel" ], $wertemenge[ 2 ][ "typ" ], $wertemenge[ 2 ][ "konfig" ], $wertemenge[ 2 ][ "bezeichnung" ], $wertemenge[ 2 ][ "kategorie" ], $wertemenge[ 2 ][ "beschreibung" ], array( "bezeichnung_alpha_01"=>$wertemenge[ 2 ][ "bezeichnung_alpha_01" ], "bezeichnung_alpha_02"=>$wertemenge[ 2 ][ "bezeichnung_alpha_02" ], "bezeichnung_alpha_03"=>$wertemenge[ 2 ][ "bezeichnung_alpha_03" ], "bezeichnung_alpha_04"=>$wertemenge[ 2 ][ "bezeichnung_alpha_04" ], "bezeichnung_alpha_05"=>$wertemenge[ 2 ][ "bezeichnung_alpha_05" ], "bezeichnung_alpha_06"=>$wertemenge[ 2 ][ "bezeichnung_alpha_06" ], "bezeichnung_alpha_07"=>$wertemenge[ 2 ][ "bezeichnung_alpha_07" ], "bezeichnung_alpha_08"=>$wertemenge[ 2 ][ "bezeichnung_alpha_08" ], "bezeichnung_alpha_09"=>$wertemenge[ 2 ][ "bezeichnung_alpha_09" ], "bezeichnung_alpha_10"=>$wertemenge[ 2 ][ "bezeichnung_alpha_10" ], "bezeichnung_alpha_11"=>$wertemenge[ 2 ][ "bezeichnung_alpha_11" ], "bezeichnung_alpha_12"=>$wertemenge[ 2 ][ "bezeichnung_alpha_12" ], "bezeichnung_alpha_13"=>$wertemenge[ 2 ][ "bezeichnung_alpha_13" ], "bezeichnung_alpha_14"=>$wertemenge[ 2 ][ "bezeichnung_alpha_14" ], "bezeichnung_alpha_15"=>$wertemenge[ 2 ][ "bezeichnung_alpha_15" ], "bezeichnung_alpha_16"=>$wertemenge[ 2 ][ "bezeichnung_alpha_16" ], "bezeichnung_alpha_17"=>$wertemenge[ 2 ][ "bezeichnung_alpha_17" ], "bezeichnung_alpha_18"=>$wertemenge[ 2 ][ "bezeichnung_alpha_18" ], "bezeichnung_alpha_19"=>$wertemenge[ 2 ][ "bezeichnung_alpha_19" ], "bezeichnung_alpha_20"=>$wertemenge[ 2 ][ "bezeichnung_alpha_20" ], "bezeichnung_alpha_21"=>$wertemenge[ 2 ][ "bezeichnung_alpha_21" ], "bezeichnung_alpha_22"=>$wertemenge[ 2 ][ "bezeichnung_alpha_22" ], "bezeichnung_alpha_23"=>$wertemenge[ 2 ][ "bezeichnung_alpha_23" ], "bezeichnung_alpha_24"=>$wertemenge[ 2 ][ "bezeichnung_alpha_24" ], "bezeichnung_alpha_25"=>$wertemenge[ 2 ][ "bezeichnung_alpha_25" ], "bezeichnung_alpha_26"=>$wertemenge[ 2 ][ "bezeichnung_alpha_26" ], "bezeichnung_alpha_27"=>$wertemenge[ 2 ][ "bezeichnung_alpha_27" ], "bezeichnung_alpha_28"=>$wertemenge[ 2 ][ "bezeichnung_alpha_28" ], "bezeichnung_alpha_29"=>$wertemenge[ 2 ][ "bezeichnung_alpha_29" ], "bezeichnung_alpha_30"=>$wertemenge[ 2 ][ "bezeichnung_alpha_30" ], "bezeichnung_num_01"=>$wertemenge[ 2 ][ "bezeichnung_num_01" ], "bezeichnung_num_02"=>$wertemenge[ 2 ][ "bezeichnung_num_02" ], "bezeichnung_num_03"=>$wertemenge[ 2 ][ "bezeichnung_num_03" ], "bezeichnung_datum_01"=>$wertemenge[ 2 ][ "bezeichnung_datum_01" ], "bezeichnung_datum_02"=>$wertemenge[ 2 ][ "bezeichnung_datum_02" ], "bezeichnung_datum_03"=>$wertemenge[ 2 ][ "bezeichnung_datum_03" ], "bezeichnung_geld_01"=>$wertemenge[ 2 ][ "bezeichnung_geld_01" ], "bezeichnung_geld_02"=>$wertemenge[ 2 ][ "bezeichnung_geld_02" ], "bezeichnung_geld_03"=>$wertemenge[ 2 ][ "bezeichnung_geld_03" ], "bezeichnung_text_01"=>$wertemenge[ 2 ][ "bezeichnung_text_01" ] ), $w_elemente[ 2 ] );
|
|
|
|
set_time_limit( 30 );
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////
|
|
// Anlegen der Systembenutzer und -Gruppen
|
|
|
|
$ok = benutzer_anlegen( $mandant_name, "ca_admin", "ca_admin", "Systembenutzer", "Administrator", "info@calbers.de", "m", "01.01.2011", false );
|
|
$ok = benutzer_anlegen( $mandant_name, "ca_system", "ca_system", "Systembenutzer", "System", "info@calbers.de", "m", "01.01.2011", false );
|
|
|
|
$ok = gruppe_anlegen( $mandant_name, "Administratoren", "", "" );
|
|
|
|
$ok = gruppe_systemrecht_zuweisen( $mandant_name, "Administratoren", "ADMINISTRATOR" );
|
|
|
|
$ok = benutzer_einer_gruppe_hinzufuegen( $mandant_name, "ca_admin", "Administratoren" );
|
|
$ok = benutzer_einer_gruppe_hinzufuegen( $mandant_name, "ca_system", "Administratoren" );
|
|
|
|
/*
|
|
$ok = attribut_anlegen( $mandant_name, "[Benutzer-Anmeldename]", "alpha_01", "", "" );
|
|
$ok = attribut_anlegen( $mandant_name, "[Zweck]", "alpha_02", "", "" );
|
|
|
|
$ok = depot_anlegen( $mandant_name, "UN", "D", "", 0, false, "offen", "" );
|
|
|
|
$ok = dokart_anlegen( $mandant_name, "[USERNOTE]", "Benutzerinformationen", "System-Dokumentart für Informationen von Benutzern", "d", "UN", array( array( "attrib_name"=>"[Benutzer-Anmeldename]", "pflichtfeld"=>false ), array( "attrib_name"=>"[Zweck]", "pflichtfeld"=>false ) ) );
|
|
*/
|
|
|
|
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////
|
|
// Anlegen der Benutzer
|
|
$element_anzulegen = liefere_wertemenge_elemente( "Standard", "init_benutzer" );
|
|
|
|
if ( $element_anzulegen[ 0 ] > 0 )
|
|
{
|
|
foreach( $element_anzulegen[ 2 ] as $element )
|
|
{
|
|
// benutzer_anlegen( $mandant_name, $benutzer_anmeldename, $passwort, $vorname = "", $nachname = "", $email="", $geschlecht = "", $geburtstag = "", $passwort_pruefen = true )
|
|
$ok = benutzer_anlegen( $mandant_name, $element[ "alpha_01" ], $element[ "alpha_01" ], $element[ "alpha_02" ], $element[ "alpha_03" ], $element[ "alpha_04" ], $element[ "alpha_05" ], $element[ "datum_01" ], false );
|
|
set_time_limit( 30 );
|
|
}
|
|
}
|
|
|
|
/////////////////////////////////////////////////////////////////
|
|
// initale Gruppen anlegen
|
|
$element_anzulegen = liefere_wertemenge_elemente( "Standard", "init_gruppen" );
|
|
|
|
if ( $element_anzulegen[ 0 ] > 0 )
|
|
{
|
|
foreach( $element_anzulegen[ 2 ] as $element )
|
|
{
|
|
// gruppe_anlegen( $mandant_name, $gruppen_name, $gruppen_email_adresse, $gruppen_fremd_id )
|
|
$ok = gruppe_anlegen( $mandant_name, $element[ "alpha_01" ], $element[ "alpha_02" ], $element[ "alpha_03" ] );
|
|
set_time_limit( 30 );
|
|
}
|
|
}
|
|
|
|
/////////////////////////////////////////////////////////////////
|
|
// initale Gruppen/Benutzerzuordnungen eintragen
|
|
$element_anzulegen = liefere_wertemenge_elemente( "Standard", "init_benutzer_gruppe" );
|
|
|
|
if ( $element_anzulegen[ 0 ] > 0 )
|
|
{
|
|
foreach( $element_anzulegen[ 2 ] as $element )
|
|
{
|
|
// benutzer_einer_gruppe_hinzufuegen( $mandant_name, $benutzer_anmeldename, $gruppen_name )
|
|
//xlog( 4, "Benutzername ".$element[ "alpha_01" ]." gruppenname ".$element[ "alpha_02" ] ) ;
|
|
$ok = benutzer_einer_gruppe_hinzufuegen( $mandant_name, $element[ "alpha_01" ], $element[ "alpha_02" ] );
|
|
set_time_limit( 30 );
|
|
}
|
|
}
|
|
|
|
/////////////////////////////////////////////////////////////////
|
|
// initale Gruppen/Gruppenzuordnungen eintragen
|
|
$element_anzulegen = liefere_wertemenge_elemente( "Standard", "init_gruppe_gruppen" );
|
|
|
|
if ( $element_anzulegen[ 0 ] > 0 )
|
|
{
|
|
foreach( $element_anzulegen[ 2 ] as $element )
|
|
{
|
|
// gruppe_einer_gruppe_hinzufuegen( $mandant_name, $ober_gruppe, $unter_gruppe )
|
|
$ok = gruppe_einer_gruppe_hinzufuegen( $mandant_name, $element[ "alpha_01" ], $element[ "alpha_02" ] );
|
|
set_time_limit( 30 );
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// initale Attribute anlegen
|
|
$element_anzulegen = liefere_wertemenge_elemente( "Standard", "init_attrib" );
|
|
|
|
if ( $element_anzulegen[ 0 ] > 0 )
|
|
{
|
|
foreach( $element_anzulegen[ 2 ] as $element )
|
|
{
|
|
// attribut_anlegen( $mandant_name, $attrib_name, $attrib_db_spalte, $attrib_wertemenge, $attrib_beschreibung )
|
|
$ok = attribut_anlegen( $mandant_name, $element[ "alpha_01" ], $element[ "alpha_02" ], $element[ "alpha_03" ], $element[ "alpha_04" ] );
|
|
set_time_limit( 30 );
|
|
}
|
|
}
|
|
|
|
|
|
// initale Depots anlegen
|
|
$element_anzulegen = liefere_wertemenge_elemente( "Standard", "init_depot" );
|
|
|
|
if ( $element_anzulegen[ 0 ] > 0 )
|
|
{
|
|
foreach( $element_anzulegen[ 2 ] as $element )
|
|
{
|
|
// depot_anlegen( $mandant_name, $kuerzel, $typ, $ort, $schranke = 0, $scramble = false, $status="offen", $beschreibung = "" )
|
|
|
|
$ok = depot_anlegen( $mandant_name, $element[ "alpha_01" ], $element[ "alpha_02" ], $element[ "alpha_03" ], $element[ "num_01" ], $element[ "alpha_04" ], $element[ "alpha_05" ], $element[ "alpha_06" ] );
|
|
set_time_limit( 30 );
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// initale Dokumentarten anlegen
|
|
$element_anzulegen = liefere_wertemenge_elemente( "Standard", "init_dokarten" );
|
|
|
|
if ( $element_anzulegen[ 0 ] > 0 )
|
|
{
|
|
foreach( $element_anzulegen[ 2 ] as $element )
|
|
{
|
|
// dokart_anlegen( $mandant_name, $dokart_kuerzel, $dokart_name, $dokart_beschreibung, $dokart_typ, $arr_attribute, $flags )
|
|
// dokart_anlegen( $mandant_name, $dokart_kuerzel, $dokart_name, $dokart_beschreibung, $dokart_typ, $depot, $arr_attribute, $flags )
|
|
$attribs = array();
|
|
$attribute = explode( "|", $element[ "alpha_05" ] );
|
|
foreach ( $attribute as $attr )
|
|
{
|
|
$attribs[ ] = array( "attrib_name"=>$attr );
|
|
}
|
|
/*
|
|
$flags = explode( "|", $element[ "alpha_06" ] );
|
|
foreach ( $flags as $flag )
|
|
{
|
|
$flag_dummy = explode( "=", $flag );
|
|
$flags_fertig[ $flag_dummy[ 0 ] ] = $flag_dummy[ 1 ];
|
|
}
|
|
*/
|
|
//xlog( 2, "======================>".$element[ "alpha_06" ] );
|
|
$ok = dokart_anlegen( $mandant_name, $element[ "alpha_02" ], $element[ "alpha_01" ], $element[ "alpha_03" ], $element[ "alpha_04" ], $element[ "alpha_06" ], $attribs, "" );
|
|
set_time_limit( 30 );
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////
|
|
// initale Gruppen/Systemrechtzuordnungen eintragen
|
|
$element_anzulegen = liefere_wertemenge_elemente( "Standard", "init_gruppe_systemrecht" );
|
|
|
|
if ( $element_anzulegen[ 0 ] > 0 )
|
|
{
|
|
foreach( $element_anzulegen[ 2 ] as $element )
|
|
{
|
|
// gruppe_einer_gruppe_hinzufuegen( $mandant_name, $ober_gruppe, $unter_gruppe )
|
|
$ok = gruppe_systemrecht_zuweisen( $mandant_name, $element[ "alpha_01" ], $element[ "alpha_02" ] );
|
|
set_time_limit( 30 );
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////
|
|
// Dokumentübergreifende Suche anlegen
|
|
|
|
$d = liefere_depotinformationen( $mandant_name, "DB", false );
|
|
|
|
if ( $d[ 0 ] < 0 )
|
|
{
|
|
// depot_anlegen( $mandant_name, $kuerzel, $typ, $ort, $schranke = 0, $scramble = false, $status="offen", $beschreibung = "" )
|
|
|
|
$ok = depot_anlegen( $mandant_name, "DB", "D", "", 50000, false, "offen", "Datenbank-Depot" );
|
|
set_time_limit( 30 );
|
|
}
|
|
|
|
//attribut_anlegen( $mandant_name, $attrib_name, $attrib_db_spalte, $attrib_wertemenge, $attrib_beschreibung )
|
|
$ok = attribut_anlegen( $mandant_name, "Stichwort", "alpha_01", "", "Stichwort für dokumentartübergreifende Suche" );
|
|
set_time_limit( 30 );
|
|
|
|
|
|
|
|
// dokart_anlegen( $mandant_name, $dokart_kuerzel, $dokart_name, $dokart_beschreibung, $dokart_typ, $depot, $arr_attribute, $flags )
|
|
$attribs = array( array( "attrib_name" => "Stichwort" ) );
|
|
$ok = dokart_anlegen( $mandant_name, "SCHABLONE", "*****Übergreifende Suche", "Dokumentartübergreifende Suche", "A", "DB", $attribs, "" );
|
|
set_time_limit( 30 );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//$ok = benutzer_anlegen( $mandant_name, "ca_admin", "ca_admin", "System", "Verwaltung", "", "m", "01.01.".date( "Y" ), false );
|
|
|
|
if ( $ok[ 0 ] >= 0 )
|
|
{
|
|
/* Benutzer Systemrecht zuweisen
|
|
$ok_2 = erstelle_konfig( $mandant_name, "SYSTEMRECHT_01", "systemrechte", "ADMINISTRATOR", "Systemrechte sollten nicht geändert werden." );
|
|
|
|
$ok_3 = gruppe_anlegen( $mandant_name, "Administratoren", "", "Administratoren" );
|
|
|
|
$ok_4 = gruppe_systemrecht_zuweisen( $mandant_name, "Administratoren", "ADMINISTRATOR" );
|
|
|
|
$ok_5 = benutzer_einer_gruppe_hinzufuegen( $mandant_name, "ca_admin", "Administratoren" );
|
|
|
|
*/
|
|
$meldung = "Der Mandant >".$mandant_name."< wurde mit der ID >".$rc."< angelegt.";
|
|
}
|
|
else
|
|
{
|
|
// Rollback ...
|
|
$STATEMENT = "delete from ca_mandant where mandant_id = ".$rc;
|
|
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
$rc = -4;
|
|
$meldung = "Es ist ein Problem aufgetreten: '".$ok[ 1 ]."'";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -3;
|
|
$meldung = "Beim Anlegen des Mandanten ist ein Fehler aufgetreten: >".$ergebnis[ 1 ]."<";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -2;
|
|
$meldung = "Es ist ein DB-Fehler aufgetreten: '".$ergebnis[ 1 ]."'.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
// Der Mandant existiert bereits
|
|
$rc = -2;
|
|
$meldung = "Es ist ein Fehler aufgetreten: '".$existiert_mandant[ 1 ]."'";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -1;
|
|
$meldung = "Es wurde kein Mandant angegeben.";
|
|
}
|
|
|
|
if ( $rc < 0 )
|
|
{
|
|
$level = 2;
|
|
}
|
|
else
|
|
{
|
|
$level = 4;
|
|
}
|
|
mysqli_close( $connection );
|
|
|
|
xlog( $level, "admin.mandant_anlegen: RC ".$rc.": ".$meldung );
|
|
return array( $rc, $meldung );
|
|
|
|
}
|
|
|
|
function mandant_loeschen( $mandant_name )
|
|
{
|
|
$ok_1 = existiert_mandant( $mandant_name );
|
|
|
|
if ( $ok_1[ 0 ] > 0 )
|
|
{
|
|
|
|
// Dokumente löschen
|
|
$STATEMENT = "delete from ca_dok_history where dok_id in ( select dok_id from ca_dok_ablage where mandant_id = ".$ok_1[ 0 ]." )";
|
|
$ergebnis = xdb( $STATEMENT );
|
|
set_time_limit( 300 );
|
|
|
|
$STATEMENT = "delete from ca_index where dok_id in ( select dok_id from ca_dok_ablage where mandant_id = ".$ok_1[ 0 ]." )";
|
|
$ergebnis = xdb( $STATEMENT );
|
|
set_time_limit( 300 );
|
|
|
|
$STATEMENT = "delete from ca_index_history where dok_id in ( select dok_id from ca_dok_ablage where mandant_id = ".$ok_1[ 0 ]." )";
|
|
$ergebnis = xdb( $STATEMENT );
|
|
set_time_limit( 300 );
|
|
|
|
$STATEMENT = "delete from ca_notiz where element_typ = 'd' and element_id in ( select dok_id from ca_dok_ablage where mandant_id = ".$ok_1[ 0 ]." )";
|
|
$ergebnis = xdb( $STATEMENT );
|
|
set_time_limit( 300 );
|
|
|
|
$STATEMENT = "delete from ca_posdaten where dok_id in ( select dok_id from ca_dok_ablage where mandant_id = ".$ok_1[ 0 ]." )";
|
|
$ergebnis = xdb( $STATEMENT );
|
|
set_time_limit( 300 );
|
|
|
|
$STATEMENT = "delete from ca_posdaten_history where dok_id in ( select dok_id from ca_dok_ablage where mandant_id = ".$ok_1[ 0 ]." )";
|
|
$ergebnis = xdb( $STATEMENT );
|
|
set_time_limit( 300 );
|
|
|
|
$STATEMENT = "delete from ca_rech_verlauf where mandant_id = ".$ok_1[ 0 ]." ";
|
|
$ergebnis = xdb( $STATEMENT );
|
|
set_time_limit( 300 );
|
|
|
|
|
|
|
|
/*
|
|
$STATEMENT = "delete from ca_posdaten_ablage where dok_id in ( select dok_id from ca_dok_ablage where mandant_id = ".$ok_1[ 0 ]." )";
|
|
$ergebnis = xdb( $STATEMENT );
|
|
set_time_limit( 300 );
|
|
*/
|
|
|
|
// Bezüge löschen
|
|
$STATEMENT = "delete from ca_bezug where dok_id_1 in ( select dok_id from ca_dok_ablage where mandant_id = ".$ok_1[ 0 ]." )";
|
|
$ergebnis = xdb( $STATEMENT );
|
|
set_time_limit( 300 );
|
|
$STATEMENT = "delete from ca_bezug where dok_id_2 in ( select dok_id from ca_dok_ablage where mandant_id = ".$ok_1[ 0 ]." )";
|
|
$ergebnis = xdb( $STATEMENT );
|
|
set_time_limit( 300 );
|
|
|
|
|
|
|
|
$STATEMENT = "delete from ca_dok_ablage where mandant_id = ".$ok_1[ 0 ]." ";
|
|
$ergebnis = xdb( $STATEMENT );
|
|
set_time_limit( 300 );
|
|
|
|
|
|
|
|
|
|
// Benutzer/Gruppen löschen
|
|
//$STATEMENT = "delete from ca_benutzer_einstellungen where benutzer_id in (select benutzer_id from ca_benutzer where mandant_id = ".$ok_1[ 0 ]." )";
|
|
//$ergebnis = xdb( $STATEMENT );
|
|
|
|
//$STATEMENT = "delete from ca_benutzer where mandant_id = ".$ok_1[ 0 ];
|
|
//$ergebnis = xdb( $STATEMENT );
|
|
|
|
$ergebnis = liefere_alle_benutzer( $mandant_name );
|
|
|
|
if ( ( is_array( $ergebnis[ 2 ] ) == true ) && ( count( $ergebnis[ 2 ] ) > 0 ) )
|
|
{
|
|
foreach( $ergebnis[ 2 ] as $benutzer )
|
|
{
|
|
$erg = benutzer_loeschen( $mandant_name, $benutzer[ "benutzer_anmeldename" ], true );
|
|
set_time_limit( 300 );
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
$ergebnis = liefere_alle_gruppen( $mandant_name );
|
|
if ( ( is_array( $ergebnis[ 2 ] ) == true ) && ( count( $ergebnis[ 2 ] ) > 0 ) )
|
|
{
|
|
foreach( $ergebnis[ 2 ] as $gruppe )
|
|
{
|
|
$erg = gruppe_loeschen( $mandant_name, $gruppe, true );
|
|
set_time_limit( 300 );
|
|
}
|
|
}
|
|
|
|
//$STATEMENT = "delete from ca_gruppe where mandant_id = ".$ok_1[ 0 ];
|
|
//$ergebnis = xdb( $STATEMENT );
|
|
|
|
|
|
// Rechte löschen
|
|
//$STATEMENT = "delete from ca_gruppe_in_gruppe where mandant_id = ".$ok_1[ 0 ];
|
|
//$ergebnis = xdb( $STATEMENT );
|
|
|
|
//$STATEMENT = "delete from ca_benutzer_in_gruppe where mandant_id = ".$ok_1[ 0 ];
|
|
//$ergebnis = xdb( $STATEMENT );
|
|
|
|
//$STATEMENT = "delete from ca_gruppe_system_rechte where mandant_id = ".$ok_1[ 0 ];
|
|
//$ergebnis = xdb( $STATEMENT );
|
|
|
|
$ergebnis = liefere_alle_systemrechte( $mandant_name );
|
|
if ( ( is_array( $ergebnis[ 2 ] ) == true ) && ( count( $ergebnis[ 2 ] ) > 0 ) )
|
|
{
|
|
foreach( $ergebnis[ 2 ] as $systemrecht )
|
|
{
|
|
$erg = systemrecht_loeschen( $mandant_name, $systemrecht );
|
|
set_time_limit( 300 );
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// Wertemengen, Konfiguration, Mandant-Informationen löschen
|
|
$ergebnis = liefere_alle_wertemengen( $mandant_name );
|
|
if ( ( is_array( $ergebnis[ 2 ] ) == true ) && ( count( $ergebnis[ 2 ] ) > 0 ) )
|
|
{
|
|
foreach( $ergebnis[ 2 ] as $wertemenge )
|
|
{
|
|
$erg = wertemenge_loeschen( $mandant_name, $wertemenge[ "kuerzel" ] );
|
|
set_time_limit( 300 );
|
|
}
|
|
}
|
|
|
|
|
|
$STATEMENT = "delete from ca_wertemenge where mandant_id = ".$ok_1[ 0 ];
|
|
$ergebnis = xdb( $STATEMENT );
|
|
set_time_limit( 300 );
|
|
|
|
$STATEMENT = "delete from ca_wertemenge_elemente where mandant_id = ".$ok_1[ 0 ];
|
|
$ergebnis = xdb( $STATEMENT );
|
|
set_time_limit( 300 );
|
|
|
|
$STATEMENT = "delete from ca_mandant_informationen where mandant_id = ".$ok_1[ 0 ];
|
|
$ergebnis = xdb( $STATEMENT );
|
|
set_time_limit( 300 );
|
|
|
|
$STATEMENT = "delete from ca_konfig where mandant_id = ".$ok_1[ 0 ];
|
|
$ergebnis = xdb( $STATEMENT );
|
|
set_time_limit( 300 );
|
|
|
|
$STATEMENT = "delete from ca_konfig_history where mandant_id = ".$ok_1[ 0 ];
|
|
$ergebnis = xdb( $STATEMENT );
|
|
set_time_limit( 300 );
|
|
|
|
|
|
$ergebnis = liefere_dok_akten_art_liste( $mandant_name, "", true );
|
|
|
|
if ( $ergebnis[ 0 ] > 0 )
|
|
{
|
|
foreach ( $ergebnis[ 2 ] as $dokart )
|
|
{
|
|
$alarm = dokart_loeschen( $mandant_name, $dokart[ "dokart_kuerzel" ] );
|
|
set_time_limit( 300 );
|
|
}
|
|
}
|
|
|
|
$ergebnis = liefere_attributliste( $mandant_name, true );
|
|
|
|
if ( $ergebnis[ 0 ] > 0 )
|
|
{
|
|
foreach ( $ergebnis[ 2 ] as $attribut )
|
|
{
|
|
$alarm = attribut_loeschen( $mandant_name, $attribut[ "attrib_name" ] );
|
|
set_time_limit( 300 );
|
|
}
|
|
}
|
|
|
|
$ergebnis = welche_depots_gibt_es( $mandant_name );
|
|
|
|
if ( $ergebnis[ 0 ] > 0 )
|
|
{
|
|
foreach ( $ergebnis[ 2 ] as $kuerzel )
|
|
{
|
|
$alarm = depot_loeschen( $mandant_name, $kuerzel );
|
|
set_time_limit( 300 );
|
|
}
|
|
}
|
|
|
|
$STATEMENT = "delete from ca_mandant where mandant_id = ".$ok_1[ 0 ];
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
|
|
if ( $ergebnis[ 0 ] <> -1 )
|
|
{
|
|
$rc = 0;
|
|
$meldung = "Der Mandant >".$mandant_name."< wurde gelöscht.";
|
|
}
|
|
else
|
|
{
|
|
$rc = -4;
|
|
$meldung = "Es ist ein Fehler aufgetreten: '".$ergebnis[ 1 ]."'.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = $ok_1[ 0 ];
|
|
$meldung = $ok_1[ 1 ];
|
|
}
|
|
|
|
|
|
if ( $rc < 0 )
|
|
{
|
|
$level = 2;
|
|
}
|
|
else
|
|
{
|
|
$level = 4;
|
|
}
|
|
|
|
xlog( $level, "admin.mandant_loeschen: RC ".$rc.": ".$meldung );
|
|
return array( $rc, $meldung );
|
|
}
|
|
|
|
function mandant_aendern( $mandant_name_alt, $mandant_name_neu, $lizenz )
|
|
{
|
|
$connection = mysqli_connect( "localhost", "ca_db", "ca_db", "ca_system" );
|
|
$exekutor = $_SESSION[ "benutzer_anmeldename" ];
|
|
//xlog( $level, "admin.mandant_aendern ----------------- START" );
|
|
$ok_1 = liefere_mandant( $mandant_name_alt );
|
|
|
|
$ok_2 = existiert_mandant( $mandant_name_neu );
|
|
|
|
$gruppenliste = array();
|
|
|
|
if ( $ok_1[ 0 ] > 0 )
|
|
{
|
|
if ( $ok_2[ 0 ] == 0 )
|
|
{
|
|
if ( mb_strtoupper( $exekutor, "UTF-8" ) == "SUPERUSER" )
|
|
{
|
|
$exec[ 0 ] = 1;
|
|
}
|
|
else
|
|
{
|
|
$exec = besitzt_benutzer_systemrecht( $mandant_name_alt, $exekutor, "ADMINISTRATOR" );
|
|
}
|
|
|
|
if ( $exec[ 0 ] == 1 )
|
|
{
|
|
if ( strlen( $lizenz ) > 0 )
|
|
{
|
|
$STATEMENT_ERW = ", mandant_lizenz = '".mysqli_real_escape_string( $connection, $lizenz )."'";
|
|
$erw = ", neue Lizenz: >".$lizenz."<.";
|
|
}
|
|
else
|
|
{
|
|
$STATEMENT_ERW = "";
|
|
$erw = ".";
|
|
}
|
|
|
|
$STATEMENT = "update ca_mandant set mandant_name = '".mysqli_real_escape_string( $connection, $mandant_name_neu )."' ".$STATEMENT_ERW." where mandant_id = ".$ok_1[ 0 ]." ";
|
|
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
if ( $ergebnis[ 0 ] <> -1 )
|
|
{
|
|
$rc = $ok_1[ 0 ];
|
|
$meldung = "Der Mandant >".$mandant_name_alt."< (ID ".$ok_1[ 0 ].") wurde geändert. Neuer Name: >".$mandant_name_neu."<".$erw;
|
|
}
|
|
else
|
|
{
|
|
$rc = -3;
|
|
$meldung = "Es ist ein Problem aufgetreten: '".$ergebnis[ 1 ]."'.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -12;
|
|
$meldung = "Der Benutzer >".$exekutor."< verfügt nicht über ausreichende Berechtigungen.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if ( $ok_2[ 0 ] > 0 )
|
|
{
|
|
if ( $ok_1[ 2 ][ "mandant_lizenz" ] == $lizenz )
|
|
{
|
|
$rc = -1;
|
|
$meldung = "Der gewünschte Mandantenname >".$mandant_name_neu."< ist bereits belegt.";
|
|
}
|
|
else
|
|
{
|
|
$STATEMENT = "update ca_mandant set mandant_lizenz = '".mysqli_real_escape_string( $connection, $lizenz )."' where mandant_id = ".$ok_1[ 0 ];
|
|
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
if ( $ergebnis[ 0 ] <> -1 )
|
|
{
|
|
$rc = $ok_1[ 0 ];
|
|
$meldung = "Die Lizenz des Mandanten ".$mandant_name_alt." wurde geändert, neue Lizenz: >".$lizenz."<.";
|
|
}
|
|
else
|
|
{
|
|
$rc = -4;
|
|
$meldung = "Es ist ein Problem aufgetreten: '".$ergebnis[ 1 ]."'.";
|
|
}
|
|
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -2;
|
|
$meldung = $ok_2[ 1 ];
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = $ok_1[ 0 ];
|
|
$meldung = $ok_1[ 1 ];
|
|
}
|
|
|
|
|
|
if ( $rc < 0 )
|
|
{
|
|
$level = 2;
|
|
}
|
|
else
|
|
{
|
|
$level = 4;
|
|
}
|
|
mysqli_close( $connection );
|
|
|
|
xlog( $level, "admin.mandant_aendern: RC ".$rc.": ".$meldung );
|
|
return array( $rc, $meldung );
|
|
}
|
|
|
|
function liefere_alle_mandanten( $wirklich_alle = false )
|
|
{
|
|
$mandantenliste = array();
|
|
|
|
$STATEMENT = "select mandant_name from ca_mandant";
|
|
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
if ( $ergebnis[ 0 ] <> -1 )
|
|
{
|
|
foreach( $ergebnis[ 1 ] as $zeile )
|
|
{
|
|
if ( ( (string)$zeile[ "mandant_name" ] <> "Standard" ) or ( $wirklich_alle == true ) )
|
|
{
|
|
$mandantenliste[ ] = (string)$zeile[ "mandant_name" ];
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -2;
|
|
$meldung = "Es ist ein DB-Fehler aufgetreten: '".$ergebnis[ 1 ]."'.";
|
|
}
|
|
|
|
if ( count( $mandantenliste ) == 0 )
|
|
{
|
|
$mandantenliste[ ] = "Standard";
|
|
}
|
|
|
|
$rc = count( $mandantenliste );
|
|
$meldung = "Liefere ".$rc." Mandanten.";
|
|
|
|
xlog( 6, "admin.liefere_alle_mandanten: RC ".$rc.": ".$meldung );
|
|
|
|
return array( $rc, $meldung, $mandantenliste );
|
|
}
|
|
|
|
function liefere_mandant( $mandant_name )
|
|
{
|
|
$ok_1 = existiert_mandant( $mandant_name );
|
|
|
|
if ( $ok_1[ 0 ] > 0 )
|
|
{
|
|
$connection = mysqli_connect( "localhost", "ca_db", "ca_db", "ca_system" );
|
|
|
|
$STATEMENT = "select mandant_id, mandant_name, mandant_erstellt_am, mandant_lizenz from ca_mandant where mandant_name = '".mysqli_real_escape_string( $connection, $mandant_name )."'";
|
|
|
|
//xlog( 4, $STATEMENT );
|
|
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
if ( $ergebnis[ 0 ] <> -1 )
|
|
{
|
|
if ( $ergebnis[ 0 ] > 0 )
|
|
{
|
|
$mandant = $ergebnis[ 1 ][ 0 ];
|
|
$ergebnis_arr = array( "mandant_id"=>$mandant[ "mandant_id" ], "mandant_name"=>$mandant[ "mandant_name" ], "mandant_erstellt_am"=>$mandant[ "mandant_erstellt_am" ], "mandant_lizenz"=>$mandant[ "mandant_lizenz" ] );
|
|
|
|
$STATEMENT = "select count(*) calbers from ca_benutzer where mandant_id = ".$ok_1[ 0 ];
|
|
$ergebnis_1 = xdb( $STATEMENT );
|
|
$anzahl_user = $ergebnis_1[ 1 ][ 0 ][ "calbers" ];
|
|
|
|
$STATEMENT = "select count(*) calbers from ca_gruppe where mandant_id = ".$ok_1[ 0 ];
|
|
$ergebnis_2 = xdb( $STATEMENT );
|
|
$anzahl_gruppen = $ergebnis_2[ 1 ][ 0 ][ "calbers" ];
|
|
|
|
|
|
$STATEMENT = "select count(*) calbers from ca_dok_ablage where mandant_id = ".$ok_1[ 0 ]." ";
|
|
$ergebnis_3 = xdb( $STATEMENT );
|
|
$anzahl_dokumente = $ergebnis_3[ 1 ][ 0 ][ "calbers" ];
|
|
|
|
|
|
$ergebnis_arr[ "anzahl_benutzer" ] = $anzahl_user;
|
|
$ergebnis_arr[ "anzahl_gruppen" ] = $anzahl_gruppen;
|
|
$ergebnis_arr[ "anzahl_dokumente" ] = $anzahl_dokumente;
|
|
|
|
|
|
$rc = (int)$mandant[ "mandant_id" ];
|
|
$meldung = "Liefere Informationen zu Mandant ".$mandant_name.".";
|
|
}
|
|
else
|
|
{
|
|
//darf eigentlich nicht vorkommen, da schon mit existiert_mandant abgefragt
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -3;
|
|
$meldung = "Es ist ein Fehler aufgetreten: >".$ergebnis[ 1 ]."<";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = $ok_1[ 0 ];
|
|
$meldung = $ok_1[ 1 ];
|
|
}
|
|
|
|
if ( $rc < 0 )
|
|
{
|
|
$level = 2;
|
|
}
|
|
else
|
|
{
|
|
$level = 6;
|
|
}
|
|
mysqli_close( $connection );
|
|
|
|
xlog( $level, "admin.liefere_mandant: RC ".$rc.": ".$meldung );
|
|
return array( $rc, $meldung, $ergebnis_arr );
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
Rechte
|
|
*/
|
|
|
|
function gruppe_systemrecht_zuweisen( $mandant_name, $gruppen_name, $systemrecht )
|
|
{
|
|
$connection = mysqli_connect( "localhost", "ca_db", "ca_db", "ca_system" );
|
|
$exekutor = $_SESSION[ "benutzer_anmeldename" ];
|
|
if ( strlen( $systemrecht ) > 0 )
|
|
{
|
|
$ok_1 = existiert_mandant( $mandant_name );
|
|
|
|
if ( $ok_1[ 0 ] > 0 )
|
|
{
|
|
$ok_2 = existiert_gruppe( $mandant_name, $gruppen_name );
|
|
|
|
if ( $ok_2[ 0 ] > 0 )
|
|
{
|
|
if ( mb_strtoupper( $exekutor, "UTF-8" ) == "SUPERUSER" )
|
|
{
|
|
$exec[ 0 ] = 1;
|
|
}
|
|
else
|
|
{
|
|
$exec = besitzt_benutzer_systemrecht( $mandant_name, $exekutor, "ADMINISTRATOR" );
|
|
}
|
|
|
|
if ( $exec[ 0 ] == 1 )
|
|
{
|
|
$besitzt_gruppe_systemrecht = besitzt_gruppe_systemrecht( $mandant_name, $gruppen_name, $systemrecht );
|
|
|
|
$systemrecht = strtoupper( $systemrecht );
|
|
|
|
if ( $besitzt_gruppe_systemrecht[ 0 ] == 0 )
|
|
{
|
|
$STATEMENT = "insert into ca_gruppe_systemrechte ( gruppen_id, systemrecht ) values ( ".$ok_2[ 0 ].", '".mysqli_real_escape_string( $connection, $systemrecht )."' )";
|
|
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
if ( $ergebnis[ 0 ] <> -1 )
|
|
{
|
|
$rc = 0;
|
|
$meldung = "Der Gruppe >".$gruppen_name."< (ID ".$ok_2[ 0 ].") wurde im Mandant >".$mandant_name."< (ID ".$ok_1[ 0 ].") das Systemrecht >".$systemrecht."< zugewiesen.";
|
|
}
|
|
else
|
|
{
|
|
$rc = -4;
|
|
$meldung = "Es ist ein Fehler aufgetreten: '".$ergebnis[ 1 ]."'.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -5;
|
|
$meldung = "Die Gruppe ".$gruppen_name." besitzt im Mandanten ".$mandant_name." bereits das Systemrecht ".$systemrecht." (oder ein höherwertiges Systemrecht).";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -12;
|
|
$meldung = "Der Benutzer >".$exekutor."< verfügt nicht über ausreichende Berechtigungen.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = $ok_2[ 0 ];
|
|
$meldung = $ok_2[ 1 ];
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = $ok_1[ 0 ];
|
|
$meldung = $ok_1[ 1 ];
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -1;
|
|
$meldung = "Es wurde kein Systemrecht angegeben.";
|
|
}
|
|
|
|
if ( $rc < 0 )
|
|
{
|
|
$level = 2;
|
|
}
|
|
else
|
|
{
|
|
$level = 4;
|
|
}
|
|
|
|
mysqli_close( $connection );
|
|
|
|
xlog( $level, "admin.gruppe_systemrecht_zuweisen: RC ".$rc.": ".$meldung );
|
|
return array( $rc, $meldung );
|
|
|
|
}
|
|
|
|
function gruppe_systemrecht_entziehen( $mandant_name, $gruppen_name, $systemrecht, $force = false )
|
|
{
|
|
if ( ( $force !== true ) && ( $force !== false ) )
|
|
{
|
|
$force = false;
|
|
}
|
|
|
|
$exekutor = $_SESSION[ "benutzer_anmeldename" ];
|
|
if ( strlen( $systemrecht ) > 0 )
|
|
{
|
|
$ok_1 = existiert_mandant( $mandant_name );
|
|
|
|
if ( $ok_1[ 0 ] > 0 )
|
|
{
|
|
$ok_2 = existiert_gruppe( $mandant_name, $gruppen_name );
|
|
|
|
if ( $ok_2[ 0 ] > 0 )
|
|
{
|
|
if ( mb_strtoupper( $exekutor, "UTF-8" ) == "SUPERUSER" )
|
|
{
|
|
$exec[ 0 ] = 1;
|
|
}
|
|
else
|
|
{
|
|
$exec = besitzt_benutzer_systemrecht( $mandant_name, $exekutor, "ADMINISTRATOR" );
|
|
}
|
|
|
|
if ( $exec[ 0 ] == 1 )
|
|
{
|
|
if ( ( ! ( ( mb_strtoupper( $gruppen_name, "UTF-8" ) == "ADMINISTRATOREN" ) && ( mb_strtoupper( $systemrecht, "UTF-8" ) == "ADMINISTRATOR" ) ) ) || ( $force === true ) )
|
|
{
|
|
$systemrecht = strtoupper( $systemrecht );
|
|
|
|
$STATEMENT = "delete from ca_gruppe_systemrechte where gruppen_id = ".$ok_2[ 0 ]." and systemrecht = '".$systemrecht."'";
|
|
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
if ( $ergebnis[ 0 ] <> -1 )
|
|
{
|
|
$rc = 0;
|
|
$meldung = "Der Gruppe >".$gruppen_name."< (ID ".$ok_2[ 0 ].") wurde im Mandant >".$mandant_name."< (ID ".$ok_1[ 0 ].") das Systemrecht >".$systemrecht."< entzogen.";
|
|
}
|
|
else
|
|
{
|
|
$rc = -4;
|
|
$meldung = "Es ist ein Fehler aufgetreten: '".$ergebnis[ 1 ]."'.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -2;
|
|
$meldung = "Der Gruppe Administratoren kann das Systemrecht ADMINISTRATOR nicht entzogen werden.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -12;
|
|
$meldung = "Der Benutzer >".$exekutor."< verfügt nicht über ausreichende Berechtigungen.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = $ok_2[ 0 ];
|
|
$meldung = $ok_2[ 1 ];
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = $ok_1[ 0 ];
|
|
$meldung = $ok_1[ 1 ];
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -1;
|
|
$meldung = "Es wurde kein Systemrecht angegeben.";
|
|
}
|
|
|
|
if ( $rc < 0 )
|
|
{
|
|
$level = 2;
|
|
}
|
|
else
|
|
{
|
|
$level = 4;
|
|
}
|
|
|
|
xlog( $level, "admin.gruppe_systemrecht_entziehen: RC ".$rc.": ".$meldung );
|
|
return array( $rc, $meldung );
|
|
|
|
}
|
|
|
|
function besitzt_gruppe_systemrecht( $mandant_name, $gruppen_name, $systemrecht )
|
|
{
|
|
/*
|
|
liefert array( $rc, $meldung )
|
|
$rc = 1 wenn gruppe das Systemrecht besitzt
|
|
$rc = 0 wenn das nicht der Fall ist
|
|
|
|
*/
|
|
|
|
$ergebnis = welche_systemrechte_besitzt_gruppe( $mandant_name, $gruppen_name );
|
|
|
|
//xlog( 4, $ergebnis[ 0 ]);
|
|
|
|
if ( $ergebnis[ 0 ] == 0 )
|
|
{
|
|
// Die Gruppe besitzt keine Systemrechte
|
|
$rc = 0;
|
|
$meldung = $meldung = "Die Gruppe >".$gruppen_name."< besitzt im Mandant >".$mandant_name."< das Systemrecht >".$systemrecht."< NICHT.";
|
|
}
|
|
elseif ( $ergebnis[ 0 ] < 0 )
|
|
{
|
|
// Es ist ein Fehler aufgetreten
|
|
$rc = $ergebnis[ 0 ];
|
|
$meldung = $ergebnis[ 1 ];
|
|
}
|
|
else
|
|
{
|
|
// Die Gruppe besitzt Systemrechte, jetzt muß festgestellt werden, ob das gefragte Systemrecht dabei ist
|
|
|
|
// erstmal legen wir fest, daß das Recht nicht zugewiesen ist, und prüfen dann das Gegenteil.
|
|
$rc = 0;
|
|
$meldung = "Die Gruppe >".$gruppen_name."< besitzt im Mandant >".$mandant_name."< das Systemrecht >".$systemrecht."< NICHT.";
|
|
|
|
foreach( $ergebnis[ 2 ] as $sys_recht )
|
|
{
|
|
if ( mb_strtoupper( $sys_recht, "UTF-8" ) == mb_strtoupper( $systemrecht, "UTF-8" ) )
|
|
{
|
|
$rc = 1;
|
|
$meldung = "Die Gruppe >".$gruppen_name."< besitzt im Mandant >".$mandant_name."< das Systemrecht >".$systemrecht."<.";
|
|
break;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
/*
|
|
|
|
///////////////////
|
|
|
|
Alte Implementierung:
|
|
|
|
///////////////////
|
|
if ( strlen( $systemrecht ) > 0 )
|
|
{
|
|
$ok_1 = existiert_mandant( $mandant_name );
|
|
|
|
if ( $ok_1[ 0 ] > 0 )
|
|
{
|
|
$ok_2 = existiert_gruppe( $mandant_name, $gruppen_name );
|
|
|
|
if ( $ok_2[ 0 ] > 0 )
|
|
{
|
|
$systemrecht = strtoupper( $systemrecht );
|
|
|
|
$STATEMENT = "select count(*) calbers from ca_gruppe_system_rechte where mandant_id = ".$ok_1[ 0 ]." and gruppen_id = ".$ok_2[ 0 ]." and systemrecht = '".$systemrecht."'";
|
|
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
|
|
if ( $ergebnis[ 1 ][ 0 ][ "calbers" ] > 0 )
|
|
{
|
|
$rc = 1;
|
|
$meldung = "Die Gruppe >".$gruppen_name."< (ID ".$ok_2[ 0 ].") besitzt im Mandant >".$mandant_name."< (ID ".$ok_1[ 0 ].") das Systemrecht >".$systemrecht."<.";
|
|
}
|
|
else
|
|
{
|
|
$rc = 0;
|
|
$meldung = "Die Gruppe >".$gruppen_name."< (ID ".$ok_2[ 0 ].") besitzt im Mandant >".$mandant_name."< (ID ".$ok_1[ 0 ].") das Systemrecht >".$systemrecht."< NICHT.";
|
|
}
|
|
|
|
}
|
|
else
|
|
{
|
|
$rc = $ok_2[ 0 ];
|
|
$meldung = $ok_2[ 1 ];
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = $ok_1[ 0 ];
|
|
$meldung = $ok_1[ 1 ];
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -1;
|
|
$meldung = "Es wurde kein Systemrecht angegeben.";
|
|
}
|
|
*/
|
|
|
|
|
|
if ( $rc < 0 )
|
|
{
|
|
$level = 2;
|
|
}
|
|
else
|
|
{
|
|
$level = 6;
|
|
}
|
|
|
|
xlog( $level, "admin.besitzt_gruppe_systemrecht: RC ".$rc.": ".$meldung );
|
|
return array( $rc, $meldung );
|
|
|
|
}
|
|
|
|
function welche_systemrechte_besitzt_gruppe( $mandant_name, $gruppen_name )
|
|
{
|
|
|
|
$ok_1 = existiert_mandant( $mandant_name );
|
|
|
|
if ( $ok_1[ 0 ] > 0 )
|
|
{
|
|
$ok_2 = existiert_gruppe( $mandant_name, $gruppen_name );
|
|
|
|
if ( $ok_2[ 0 ] > 0 )
|
|
{
|
|
$systemrecht = strtoupper( $systemrecht );
|
|
|
|
$STATEMENT = "select systemrecht from ca_gruppe_systemrechte where gruppen_id = ".$ok_2[ 0 ];
|
|
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
//xlog( 4, "anzahl treffer: ".$ergebnis[ 0 ] );
|
|
|
|
if ( $ergebnis[ 0 ] > 0 )
|
|
{
|
|
$erstes_ergebnis = array();
|
|
|
|
foreach ( $ergebnis[ 1 ] as $zeile )
|
|
{
|
|
$finales_ergebnis_nachher[] = $zeile[ "systemrecht" ];
|
|
}
|
|
|
|
$nur_direkte_systemrechte = $finales_ergebnis_nachher;
|
|
|
|
//xlog( 4, "anzahl sysrechte: ".count( $finales_ergebnis_nachher ) );
|
|
|
|
$finales_ergebnis_vorher = array();
|
|
|
|
//xlog( 4, "count vorher ".count( $finales_ergebnis_vorher )." nachher ".count( $finales_ergebnis_nachher ) );
|
|
|
|
while ( count( $finales_ergebnis_vorher ) <> count( $finales_ergebnis_nachher ) )
|
|
{
|
|
|
|
$finales_ergebnis_vorher = $finales_ergebnis_nachher;
|
|
|
|
foreach( $finales_ergebnis_vorher as $systemrecht )
|
|
{
|
|
$STATEMENT = "select systemrecht from ca_systemrecht where ober_systemrecht = '".$systemrecht."' and mandant_id = ".$ok_1[ 0 ];
|
|
|
|
$ergebnis_2 = xdb( $STATEMENT );
|
|
|
|
if ( $ergebnis_2[ 0 ] > 0 )
|
|
{
|
|
foreach ( $ergebnis_2[ 1 ] as $zeile )
|
|
{
|
|
$finales_ergebnis_nachher[] = $zeile[ "systemrecht" ];
|
|
}
|
|
}
|
|
}
|
|
|
|
$finales_ergebnis_nachher = array_unique( $finales_ergebnis_nachher );
|
|
|
|
}
|
|
|
|
$rc = count( $finales_ergebnis_nachher );
|
|
$meldung = "Liefere ".$rc." Systemrechte für die Gruppe ".$gruppen_name." im Mandanten ".$mandant_name.".";
|
|
|
|
}
|
|
else
|
|
{
|
|
$finales_ergebnis_nachher = array();
|
|
$nur_direkte_systemrechte = array();
|
|
$rc = 0;
|
|
$meldung = "Für die Gruppe ".$gruppen_name." sind im Mandanten ".$mandant_name." keine Systemrechte eingetragen.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = $ok_2[ 0 ];
|
|
$meldung = $ok_2[ 1 ];
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = $ok_1[ 0 ];
|
|
$meldung = $ok_1[ 1 ];
|
|
}
|
|
|
|
if ( $rc < 0 )
|
|
{
|
|
$level = 2;
|
|
}
|
|
else
|
|
{
|
|
$level = 6;
|
|
}
|
|
|
|
xlog( $level, "admin.welche_systemrechte_besitzt_gruppe: RC ".$rc.": ".$meldung );
|
|
|
|
return array( $rc, $meldung, $finales_ergebnis_nachher, $nur_direkte_systemrechte );
|
|
|
|
}
|
|
|
|
function welche_systemrechte_besitzt_gruppe_nicht( $mandant_name, $gruppen_name )
|
|
{
|
|
|
|
$ok_1 = existiert_mandant( $mandant_name );
|
|
|
|
if ( $ok_1[ 0 ] > 0 )
|
|
{
|
|
$ok_2 = existiert_gruppe( $mandant_name, $gruppen_name );
|
|
|
|
if ( $ok_2[ 0 ] > 0 )
|
|
{
|
|
$systemrecht = strtoupper( $systemrecht );
|
|
|
|
$STATEMENT = "select distinct systemrecht from ca_systemrecht where mandant_id = ".$ok_1[ 0 ]." and systemrecht not in ( select systemrecht from ca_gruppe_systemrechte where gruppen_id = ".$ok_2[ 0 ]." ) order by systemrecht ";
|
|
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
//xlog( 4, "anzahl treffer: ".$ergebnis[ 0 ] );
|
|
|
|
if ( $ergebnis[ 0 ] > 0 )
|
|
{
|
|
|
|
foreach ( $ergebnis[ 1 ] as $zeile )
|
|
{
|
|
$finales_ergebnis[] = $zeile[ "systemrecht" ];
|
|
}
|
|
|
|
|
|
$rc = count( $finales_ergebnis );
|
|
$meldung = "Liefere ".$rc." Systemrechte, die die Gruppe ".$gruppen_name." im Mandanten ".$mandant_name." nicht besitzt.";
|
|
|
|
}
|
|
else
|
|
{
|
|
$rc = 0;
|
|
$meldung = "Für die Gruppe ".$gruppen_name." sind im Mandanten ".$mandant_name." alle Systemrechte eingetragen.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = $ok_2[ 0 ];
|
|
$meldung = $ok_2[ 1 ];
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = $ok_1[ 0 ];
|
|
$meldung = $ok_1[ 1 ];
|
|
}
|
|
|
|
if ( $rc < 0 )
|
|
{
|
|
$level = 2;
|
|
}
|
|
else
|
|
{
|
|
$level = 4;
|
|
}
|
|
|
|
xlog( $level, "admin.welche_systemrechte_besitzt_gruppe: RC ".$rc.": ".$meldung );
|
|
|
|
return array( $rc, $meldung, $finales_ergebnis );
|
|
|
|
}
|
|
|
|
function besitzt_benutzer_systemrecht( $mandant_name, $benutzer_anmeldename, $systemrecht )
|
|
{
|
|
$gruppen = in_welchen_gruppen_ist_benutzer_mitglied( $mandant_name, $benutzer_anmeldename );
|
|
//xlog( 4, "hallo");
|
|
$rc = 0;
|
|
$meldung = "Der Benutzer >".$benutzer_anmeldename."< aus dem Mandanten >".$mandant_name."< besitzt über die Mitgliedschaft in der Gruppe >".$gruppen_name."< das Systemrecht ".$systemrecht." NICHT.";
|
|
|
|
if ( $gruppen[ 0 ] > 0 )
|
|
{
|
|
foreach( $gruppen[ 2 ] as $gruppen_name )
|
|
{
|
|
$ergebnis = besitzt_gruppe_systemrecht( $mandant_name, $gruppen_name, $systemrecht );
|
|
if ( $ergebnis[ 0 ] == 1 )
|
|
{
|
|
$rc = 1;
|
|
$meldung = "Der Benutzer >".$benutzer_anmeldename."< aus dem Mandanten >".$mandant_name."< besitzt über die Mitgliedschaft in der Gruppe >".$gruppen_name."< das Systemrecht ".$systemrecht.".";
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
if ( $rc <> 1 )
|
|
{
|
|
$rc = 0;
|
|
$meldung = "Der Benutzer >".$benutzer_anmeldename."< aus dem Mandanten >".$mandant_name."< besitzt das Systemrecht ".$systemrecht." nicht.";
|
|
}
|
|
|
|
if ( $rc < 0 )
|
|
{
|
|
$level = 2;
|
|
}
|
|
else
|
|
{
|
|
$level = 6;
|
|
}
|
|
|
|
xlog( $level, "admin.besitzt_benutzer_systemrecht: RC ".$rc.": ".$meldung );
|
|
|
|
return array( $rc, $meldung );
|
|
|
|
}
|
|
|
|
function welche_systemrechte_besitzt_benutzer( $mandant_name, $benutzer_anmeldename )
|
|
{
|
|
//xlog( 4, "admin.welche_systemrechte_besitzt_benutzer ----------------- START" );
|
|
|
|
$ok_1 = existiert_mandant( $mandant_name );
|
|
|
|
if ( $ok_1[ 0 ] > 0 )
|
|
{
|
|
|
|
$gruppen = in_welchen_gruppen_ist_benutzer_mitglied( $mandant_name, $benutzer_anmeldename );
|
|
|
|
$benutzer_final_systemrechte = array();
|
|
|
|
if ( $gruppen[ 0 ] > 0 )
|
|
{
|
|
foreach( $gruppen[ 2 ] as $gruppen_name )
|
|
{
|
|
$ergebnis = welche_systemrechte_besitzt_gruppe( $mandant_name, $gruppen_name, $systemrecht );
|
|
if ( $ergebnis[ 0 ] > 0 )
|
|
{
|
|
foreach( $ergebnis[ 2 ] as $systemrecht )
|
|
{
|
|
$benutzer_final_systemrechte[ ] = $systemrecht;
|
|
}
|
|
}
|
|
}
|
|
$benutzer_final_systemrechte = array_unique( $benutzer_final_systemrechte );
|
|
sort( $benutzer_final_systemrechte );
|
|
$rc = count( $benutzer_final_systemrechte );
|
|
$meldung = "Liefere ".$rc." Systemrechte für den Benutzer ".$benutzer_anmeldename." aus dem Mandanten ".$mandant_name.".";
|
|
}
|
|
else
|
|
{
|
|
$rc = 0;
|
|
$meldung = "Der Benutzer ".$benutzer_anmeldename." aus dem Mandanten ".$mandant_name." besitzt keine Systemrechte.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = $ok_1[ 0 ];
|
|
$meldung = $ok_1[ 1 ];
|
|
}
|
|
|
|
if ( $rc < 0 )
|
|
{
|
|
$level = 2;
|
|
}
|
|
else
|
|
{
|
|
$level = 6;
|
|
}
|
|
|
|
xlog( $level, "admin.welche_systemrechte_besitzt_benutzer: RC ".$rc.": ".$meldung );
|
|
|
|
return array( $rc, $meldung, $benutzer_final_systemrechte );
|
|
}
|
|
|
|
function welche_systemrecht_gruppen_besitzt_gruppe( $mandant_name, $gruppen_name )
|
|
{
|
|
$ok_1 = existiert_mandant( $mandant_name );
|
|
|
|
if ( $ok_1[ 0 ] > 0 )
|
|
{
|
|
$ok_2 = existiert_gruppe( $mandant_name, $gruppen_name );
|
|
|
|
if ( $ok_2[ 0 ] > 0 )
|
|
{
|
|
$systemrechte = welche_systemrechte_besitzt_gruppe( $mandant_name, $gruppen_name );
|
|
|
|
if ( $systemrechte[ 0 ] > 0 )
|
|
{
|
|
|
|
$STATEMENT = "select distinct rechte_gruppe from ca_systemrecht where mandant_id = ".$ok_1[ 0 ]." and systemrecht in ( ";
|
|
|
|
foreach ( $systemrechte[ 2 ] as $systemrecht )
|
|
{
|
|
$STATEMENT = $STATEMENT." '".$systemrecht."', ";
|
|
}
|
|
|
|
$STATEMENT = substr( $STATEMENT, 0, -2 )." )";
|
|
|
|
//xlog( 4, $STATEMENT );
|
|
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
$liste_str = "";
|
|
$liste_arr = array();
|
|
|
|
if ( count( $ergebnis[ 1 ] ) > 0 )
|
|
{
|
|
foreach( $ergebnis[ 1 ] as $zeile )
|
|
{
|
|
$liste_str = $liste_str.$zeile[ "rechte_gruppe" ].", ";
|
|
$liste_arr[] = $zeile[ "rechte_gruppe" ];
|
|
}
|
|
|
|
$liste_str = substr( $liste_str, 0, -2 );
|
|
}
|
|
else
|
|
{
|
|
$liste_str = "-keine-";
|
|
}
|
|
|
|
$rc = count( $ergebnis[ 1 ] );
|
|
$meldung = "Die Gruppe ".$gruppen_name." im Mandanten ".$mandant_name." besitzt folgende Rechtegruppen: ( ".$liste_str." ).";
|
|
$ergebnis = $ergebnis[ 1 ];
|
|
}
|
|
else
|
|
{
|
|
$rc = 0;
|
|
$meldung = "Die Gruppe ".$gruppen_name." im Mandanten ".$mandant_name." besitzt keine Rechtegruppen.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = $ok_2[ 0 ];
|
|
$meldung = $ok_2[ 1 ];
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = $ok_1[ 0 ];
|
|
$meldung = $ok_1[ 1 ];
|
|
}
|
|
|
|
if ( $rc < 0 )
|
|
{
|
|
$level = 2;
|
|
}
|
|
else
|
|
{
|
|
$level = 6;
|
|
}
|
|
|
|
xlog( $level, "admin.welche_systemrecht_gruppen_besitzt_gruppe: RC ".$rc.": ".$meldung );
|
|
|
|
return array( $rc, $meldung, $liste_arr );
|
|
|
|
}
|
|
|
|
function welche_systemrecht_gruppen_besitzt_benutzer( $mandant_name, $benutzer_anmeldename )
|
|
{
|
|
$gruppen = in_welchen_gruppen_ist_benutzer_mitglied( $mandant_name, $benutzer_anmeldename );
|
|
|
|
$liste_arr = array();
|
|
|
|
foreach( $gruppen[ 2 ] as $gruppe )
|
|
{
|
|
$ergebnis = welche_systemrecht_gruppen_besitzt_gruppe( $mandant_name, $gruppe );
|
|
|
|
if ( $ergebnis[ 0 ] > 0 )
|
|
{
|
|
foreach( $ergebnis[ 2 ] as $ksdjf )
|
|
{
|
|
$liste_arr[] = $ksdjf;
|
|
}
|
|
}
|
|
}
|
|
|
|
$liste_arr = array_unique( $liste_arr );
|
|
|
|
foreach( $liste_arr as $element )
|
|
{
|
|
$liste_str = $liste_str.$element.", ";
|
|
}
|
|
|
|
$liste_str = substr( $liste_str, 0, -2 );
|
|
|
|
$rc = count( $liste_arr );
|
|
$meldung = "Der Benutzer ".$benutzer_anmeldename." besitzt im Mandanten ".$mandant_name." folgende Rechtegruppen: ( ".$liste_str." ).";
|
|
|
|
if ( $rc < 0 )
|
|
{
|
|
$level = 2;
|
|
}
|
|
else
|
|
{
|
|
$level = 6;
|
|
}
|
|
|
|
xlog( $level, "admin.welche_systemrecht_gruppen_besitzt_benutzer: RC ".$rc.": ".$meldung );
|
|
|
|
return array( $rc, $meldung, $liste_arr );
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function welche_dok_akt_rechte_hat_benutzer( $mandant_name, $benutzer_anmeldename, $typ = "", $sysdokuarten_auflisten = false )
|
|
{
|
|
|
|
if ( $sysdokuarten_auflisten !== true )
|
|
{
|
|
$sysdokuarten_auflisten = false;
|
|
}
|
|
|
|
$ergebnis = welche_systemrechte_besitzt_benutzer( $mandant_name, $benutzer_anmeldename );
|
|
|
|
//$sysdokarten = liefere_wertemengen_elemente( $mandant_name, "systemdokarten" );
|
|
|
|
|
|
if ( $ergebnis[ 0 ] > 0 )
|
|
{
|
|
|
|
// IMPORT
|
|
// AENDERN
|
|
// LESEN
|
|
// LOESCHEN
|
|
$typ = mb_strtoupper( $typ );
|
|
if ( ( $typ == "D" ) || ( $typ == "A" ) || ( strlen( $typ ) == 0 ) )
|
|
{
|
|
|
|
$i = 0;
|
|
foreach ( $ergebnis[ 2 ] as $systemrecht )
|
|
{
|
|
//xlog( 1, $systemrecht );
|
|
//xlog( 1, substr( $systemrecht, 2, 1 ) );
|
|
|
|
$sysrecht = explode( "_", $systemrecht );
|
|
if ( ( count( $sysrecht ) == 3 ) && ( ( $sysrecht[ 2 ] == "IMPORT" ) || ( $sysrecht[ 2 ] == "AENDERN" ) || ( $sysrecht[ 2 ] == "LESEN" ) || ( $sysrecht[ 2 ] == "LOESCHEN" ) ) )
|
|
{
|
|
if ( ! $sysdokuarten_auflisten )
|
|
{
|
|
$enth = ist_element_in_wertemenge( $mandant_name, "systemdokarten", $sysrecht[ 1 ] );
|
|
if ( $enth[ 0 ] > 0 )
|
|
{
|
|
continue;
|
|
}
|
|
}
|
|
|
|
|
|
switch( $sysrecht[ 2 ] )
|
|
{
|
|
case "IMPORT":
|
|
if ( strlen ( $typ ) > 0 )
|
|
{
|
|
//xlog( 1, "Typ: ".$typ." sysrecht[ 0 ]: ".$sysrecht[ 0 ]." dokuart ".$sysrecht[ 1 ] );
|
|
if ( $sysrecht[ 0 ] == $typ )
|
|
{
|
|
$ergebnis_IMP[] = $sysrecht[ 1 ];
|
|
$erg_IMP_liste = $erg_IMP_liste.$sysrecht[ 1 ]."|";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$ergebnis_IMP[] = $sysrecht[ 1 ];
|
|
$erg_IMP_liste = $erg_IMP_liste.$sysrecht[ 1 ]."|";
|
|
}
|
|
//xlog( 1, "systemrecht".$systemrecht );
|
|
//xlog( 1, "typ".$typ );
|
|
//xlog( 1, "sysrecht[0]".$sysrecht[0] );
|
|
$i++;
|
|
break;
|
|
case "AENDERN":
|
|
if ( strlen ( $typ ) > 0 )
|
|
{
|
|
if ( $sysrecht[ 0 ] == $typ )
|
|
{
|
|
$ergebnis_AEN[] = $sysrecht[ 1 ];
|
|
$erg_AEN_liste = $erg_AEN_liste.$sysrecht[ 1 ]."|";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$ergebnis_AEN[] = $sysrecht[ 1 ];
|
|
$erg_AEN_liste = $erg_AEN_liste.$sysrecht[ 1 ]."|";
|
|
}
|
|
$i++;
|
|
break;
|
|
case "LESEN":
|
|
if ( strlen ( $typ ) > 0 )
|
|
{
|
|
if ( $sysrecht[ 0 ] == $typ )
|
|
{
|
|
$ergebnis_LES[] = $sysrecht[ 1 ];
|
|
$erg_LES_liste = $erg_LES_liste.$sysrecht[ 1 ]."|";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$ergebnis_LES[] = $sysrecht[ 1 ];
|
|
$erg_LES_liste = $erg_LES_liste.$sysrecht[ 1 ]."|";
|
|
}
|
|
$i++;
|
|
break;
|
|
case "LOESCHEN":
|
|
if ( strlen ( $typ ) > 0 )
|
|
{
|
|
if ( $sysrecht[ 0 ] == $typ )
|
|
{
|
|
$ergebnis_LOE[] = $sysrecht[ 1 ];
|
|
$erg_LOE_liste = $erg_LOE_liste.$sysrecht[ 1 ]."|";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$ergebnis_LOE[] = $sysrecht[ 1 ];
|
|
$erg_LOE_liste = $erg_LOE_liste.$sysrecht[ 1 ]."|";
|
|
}
|
|
$i++;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
if ( strlen( $erg_IMP_liste ) > 0 )
|
|
{
|
|
$erg_IMP_liste = substr( $erg_IMP_liste, 0, strlen( $erg_IMP_liste ) -1 );
|
|
}
|
|
|
|
if ( strlen( $erg_AEN_liste ) > 0 )
|
|
{
|
|
$erg_AEN_liste = substr( $erg_AEN_liste, 0, strlen( $erg_AEN_liste ) -1 );
|
|
}
|
|
|
|
if ( strlen( $erg_LES_liste ) > 0 )
|
|
{
|
|
$erg_LES_liste = substr( $erg_LES_liste, 0, strlen( $erg_LES_liste ) -1 );
|
|
}
|
|
|
|
if ( strlen( $erg_LOE_liste ) > 0 )
|
|
{
|
|
$erg_LOE_liste = substr( $erg_LOE_liste, 0, strlen( $erg_LOE_liste ) -1 );
|
|
}
|
|
|
|
switch ( $typ )
|
|
{
|
|
case "D":
|
|
$text_dummy = "Dokumentart-Systemrechte";
|
|
break;
|
|
case "A":
|
|
$text_dummy = "Aktenart-Systemrechte";
|
|
break;
|
|
default:
|
|
$text_dummy = "Dok.- und Aktenart-Systemrechte";
|
|
break;
|
|
}
|
|
|
|
$rc = $i;
|
|
$meldung = "Liefere ".$rc." ".$text_dummy." für Benutzer ".$benutzer_anmeldename.".";
|
|
}
|
|
else
|
|
{
|
|
$rc = -1;
|
|
$meldung = "Der Typ ".$typ." ist nicht erlaubt.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = $ergebnis[ 0 ];
|
|
$meldung = $ergebnis[ 1 ];
|
|
}
|
|
|
|
if ( $rc < 0 )
|
|
{
|
|
$level = 2;
|
|
}
|
|
else
|
|
{
|
|
$level = 4;
|
|
}
|
|
|
|
xlog( $level, "admin.welche_dok_akt_rechte_hat_benutzer: RC ".$rc.": ".$meldung );
|
|
return array( $rc, $meldung, $ergebnis_IMP, $ergebnis_AEN, $ergebnis_LES, $ergebnis_LOE, $erg_IMP_liste, $erg_AEN_liste, $erg_LES_liste, $erg_LOE_liste );
|
|
}
|
|
|
|
function welche_dokumentartrechte_hat_benutzer( $mandant_name, $benutzer_anmeldename )
|
|
{
|
|
$ergebnis = welche_dok_akt_rechte_hat_benutzer( $mandant_name, $benutzer_anmeldename, "D" );
|
|
|
|
return $ergebnis;
|
|
}
|
|
|
|
function welche_dokumentarten_darf_benutzer_importieren( $mandant_name, $benutzer_anmeldename )
|
|
{
|
|
$ergebnis = welche_dok_akt_rechte_hat_benutzer( $mandant_name, $benutzer_anmeldename, "D" );
|
|
|
|
if ( count( $ergebnis[ 2 ] ) == 0 )
|
|
{
|
|
$ergebnis = welche_dok_akt_rechte_hat_benutzer( $mandant_name, $benutzer_anmeldename, "A" );
|
|
}
|
|
|
|
//xlog( 4, "admin.welche_dokumentarten_darf_benutzer_importieren: RC ".count( $ergebnis[ 2 ] ).": ".$ergebnis[ 1 ] );
|
|
|
|
return array( count( $ergebnis[ 2 ] ), $ergebnis[ 2 ] );
|
|
}
|
|
|
|
function welche_dokumentarten_darf_benutzer_lesen( $mandant_name, $benutzer_anmeldename )
|
|
{
|
|
$ergebnis = welche_dok_akt_rechte_hat_benutzer( $mandant_name, $benutzer_anmeldename, "D" );
|
|
|
|
return array( count( $ergebnis[ 4 ] ), $ergebnis[ 4 ] );
|
|
}
|
|
|
|
function welche_dokumentarten_darf_benutzer_aendern( $mandant_name, $benutzer_anmeldename )
|
|
{
|
|
$ergebnis = welche_dok_akt_rechte_hat_benutzer( $mandant_name, $benutzer_anmeldename, "D" );
|
|
|
|
return array( count( $ergebnis[ 3 ] ), $ergebnis[ 3 ] );
|
|
}
|
|
|
|
function welche_dokumentarten_darf_benutzer_loeschen( $mandant_name, $benutzer_anmeldename )
|
|
{
|
|
$ergebnis = welche_dok_akt_rechte_hat_benutzer( $mandant_name, $benutzer_anmeldename, "D" );
|
|
|
|
return array( count( $ergebnis[ 5 ] ), $ergebnis[ 5 ] );
|
|
}
|
|
|
|
function welche_aktenartrechte_hat_benutzer( $mandant_name, $benutzer_anmeldename )
|
|
{
|
|
$ergebnis = welche_dok_akt_rechte_hat_benutzer( $mandant_name, $benutzer_anmeldename, "A" );
|
|
|
|
return $ergebnis;
|
|
}
|
|
|
|
function welche_aktenarten_darf_benutzer_importieren( $mandant_name, $benutzer_anmeldename )
|
|
{
|
|
$ergebnis = welche_dok_akt_rechte_hat_benutzer( $mandant_name, $benutzer_anmeldename, "A" );
|
|
|
|
return array( count( $ergebnis[ 2 ] ), $ergebnis[ 2 ] );
|
|
}
|
|
|
|
function welche_aktenarten_darf_benutzer_lesen( $mandant_name, $benutzer_anmeldename )
|
|
{
|
|
$ergebnis = welche_dok_akt_rechte_hat_benutzer( $mandant_name, $benutzer_anmeldename, "A" );
|
|
|
|
return array( count( $ergebnis[ 4 ] ), $ergebnis[ 4 ] );
|
|
}
|
|
|
|
function welche_aktenarten_darf_benutzer_aendern( $mandant_name, $benutzer_anmeldename )
|
|
{
|
|
$ergebnis = welche_dok_akt_rechte_hat_benutzer( $mandant_name, $benutzer_anmeldename, "A" );
|
|
|
|
return array( count( $ergebnis[ 3 ] ), $ergebnis[ 3 ] );
|
|
}
|
|
|
|
function welche_aktenarten_darf_benutzer_loeschen( $mandant_name, $benutzer_anmeldename )
|
|
{
|
|
$ergebnis = welche_dok_akt_rechte_hat_benutzer( $mandant_name, $benutzer_anmeldename, "A" );
|
|
|
|
return array( count( $ergebnis[ 5 ] ), $ergebnis[ 5 ] );
|
|
}
|
|
|
|
function welche_dokaktenarten_darf_benutzer_lesen( $mandant_name, $benutzer_anmeldename )
|
|
{
|
|
$ergebnis = welche_dok_akt_rechte_hat_benutzer( $mandant_name, $benutzer_anmeldename );
|
|
|
|
return array( count( $ergebnis[ 4 ] ), $ergebnis[ 4 ] );
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function welche_rechte_hat_benutzer_auf_dokuaktenart( $mandant_name, $benutzer_anmeldename, $dokart_kuerzel )
|
|
{
|
|
$e = welche_dok_akt_rechte_hat_benutzer( $mandant_name, $benutzer_anmeldename );
|
|
|
|
//xlog( 2, json_encode( $e ) );
|
|
|
|
$dokart = liefere_dokartinformationen( $mandant_name, $dokart_kuerzel );
|
|
|
|
$dokart_rechte = array();
|
|
|
|
if ( ( $e[ 0 ] > 0 ) and ( $dokart[ 0 ] > 0 ) )
|
|
{
|
|
|
|
foreach( $e[ 2 ] as $recht )
|
|
{
|
|
if ( $recht == $dokart_kuerzel )
|
|
{
|
|
$dokart_rechte[ "IMPORT" ] = "ja";
|
|
break;
|
|
}
|
|
}
|
|
if ( $dokart_rechte[ "IMPORT" ] != "ja" )
|
|
{
|
|
$dokart_rechte[ "IMPORT" ] = "nein";
|
|
}
|
|
|
|
|
|
foreach( $e[ 3 ] as $recht )
|
|
{
|
|
if ( $recht == $dokart_kuerzel )
|
|
{
|
|
$dokart_rechte[ "AENDERN" ] = "ja";
|
|
break;
|
|
}
|
|
}
|
|
if ( $dokart_rechte[ "AENDERN" ] != "ja" )
|
|
{
|
|
$dokart_rechte[ "AENDERN" ] = "nein";
|
|
}
|
|
|
|
|
|
foreach( $e[ 4 ] as $recht )
|
|
{
|
|
if ( $recht == $dokart_kuerzel )
|
|
{
|
|
$dokart_rechte[ "LESEN" ] = "ja";
|
|
break;
|
|
}
|
|
}
|
|
if ( $dokart_rechte[ "LESEN" ] != "ja" )
|
|
{
|
|
$dokart_rechte[ "LESEN" ] = "nein";
|
|
}
|
|
|
|
|
|
foreach( $e[ 5 ] as $recht )
|
|
{
|
|
if ( $recht == $dokart_kuerzel )
|
|
{
|
|
$dokart_rechte[ "LOESCHEN" ] = "ja";
|
|
break;
|
|
}
|
|
}
|
|
if ( $dokart_rechte[ "LOESCHEN" ] != "ja" )
|
|
{
|
|
$dokart_rechte[ "LOESCHEN" ] = "nein";
|
|
}
|
|
|
|
$rc = 1;
|
|
$meldung = "Liefere Rechte für Benutzer ".$benutzer_anmeldename." auf Dokumentart ".$dokart_kuerzel.".";
|
|
|
|
}
|
|
else
|
|
{
|
|
$rc = -1;
|
|
$meldung = "Es ist ein Fehler aufgetreten: ".$e[ 1 ]." | ".$dokart[ 1 ];
|
|
}
|
|
|
|
|
|
if ( $rc < 0 )
|
|
{
|
|
$level = 2;
|
|
}
|
|
else
|
|
{
|
|
$level = 4;
|
|
}
|
|
|
|
xlog( $level, "admin.welche_rechte_hat_benutzer_auf_dokuaktenart: RC ".$rc.": ".$meldung );
|
|
return array( $rc, $meldung, $dokart_rechte );
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function systemrecht_anlegen( $mandant_name, $systemrecht, $rechtegruppe, $ober_systemrecht = "root" )
|
|
{
|
|
$exekutor = $_SESSION[ "benutzer_anmeldename" ];
|
|
$connection = mysqli_connect( "localhost", "ca_db", "ca_db", "ca_system" );
|
|
|
|
$ok_1 = existiert_mandant( $mandant_name );
|
|
|
|
if ( $ok_1[ 0 ] > 0 )
|
|
{
|
|
if ( strlen( $systemrecht ) > 0 )
|
|
{
|
|
if ( mb_strtoupper( $exekutor, "UTF-8" ) == "SUPERUSER" )
|
|
{
|
|
$exec[ 0 ] = 1;
|
|
}
|
|
else
|
|
{
|
|
$exec = besitzt_benutzer_systemrecht( $mandant_name, $exekutor, "ADMINISTRATOR" );
|
|
}
|
|
|
|
if ( $exec[ 0 ] == 1 )
|
|
{
|
|
$systemrecht = mb_strtoupper( $systemrecht, "UTF-8" );
|
|
|
|
if ( strlen( $ober_systemrecht ) == 0 )
|
|
{
|
|
$ober_systemrecht = "root";
|
|
}
|
|
|
|
if ( ( strlen( $ober_systemrecht ) > 0 ) and ( $ober_systemrecht <> "root" ) )
|
|
{
|
|
$ober_systemrecht = mb_strtoupper( $ober_systemrecht, "UTF-8" );
|
|
}
|
|
|
|
$STATEMENT = "insert into ca_systemrecht ( mandant_id, ober_systemrecht, systemrecht, rechte_gruppe ) values ( ".$ok_1[ 0 ].", '".mysqli_real_escape_string( $connection, $ober_systemrecht )."', '".mysqli_real_escape_string( $connection, $systemrecht )."', ".mysqli_real_escape_string( $connection, $rechtegruppe )." )";
|
|
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
if ( $ergebnis[ 0 ] == 0 )
|
|
{
|
|
$rc = 0;
|
|
$meldung = "Das Systemrecht ".$systemrecht." wurde unterhalb des Systemrechts ".$ober_systemrecht." im Mandanten ".$mandant_name." angelegt.";
|
|
}
|
|
else
|
|
{
|
|
$rc = -2;
|
|
$meldung = "Es ist ein Fehler aufgetreten: '".$ergebnis[ 1 ]."'.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -12;
|
|
$meldung = "Der Benutzer >".$exekutor."< verfügt nicht über ausreichende Berechtigungen.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -1;
|
|
$meldung = "Es wurde kein Systemrecht angegeben.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = $ok_1[ 0 ];
|
|
$meldung = $ok_1[ 1 ];
|
|
}
|
|
|
|
|
|
if ( $rc < 0 )
|
|
{
|
|
$level = 2;
|
|
}
|
|
else
|
|
{
|
|
$level = 6;
|
|
}
|
|
mysqli_close( $connection );
|
|
|
|
xlog( $level, "admin.systemrecht_anlegen: RC ".$rc.": ".$meldung );
|
|
return array( $rc, $meldung );
|
|
}
|
|
|
|
function systemrecht_loeschen( $mandant_name, $systemrecht )
|
|
{
|
|
$exekutor = $_SESSION[ "benutzer_anmeldename" ];
|
|
|
|
$ok_1 = existiert_mandant( $mandant_name );
|
|
|
|
if ( $ok_1[ 0 ] > 0 )
|
|
{
|
|
if ( strlen( $systemrecht ) > 0 )
|
|
{
|
|
if ( mb_strtoupper( $exekutor, "UTF-8" ) == "SUPERUSER" )
|
|
{
|
|
$exec[ 0 ] = 1;
|
|
}
|
|
else
|
|
{
|
|
$exec = besitzt_benutzer_systemrecht( $mandant_name, $exekutor, "ADMINISTRATOR" );
|
|
}
|
|
|
|
if ( $exec[ 0 ] == 1 )
|
|
{
|
|
$systemrecht = mb_strtoupper( $systemrecht, "UTF-8" );
|
|
|
|
$STATEMENT = "delete from ca_systemrecht where mandant_id = ".$ok_1[ 0 ]." and systemrecht = '".$systemrecht."'";
|
|
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
$STATEMENT = "delete from ca_gruppe_systemrechte where systemrecht = '".$systemrecht."' and gruppen_id in ( select gruppen_id from ca_gruppe where mandant_id = ".$ok_1[ 0 ]." ) ";
|
|
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
|
|
if ( $ergebnis[ 0 ] == 0 )
|
|
{
|
|
$rc = 0;
|
|
$meldung = "Das Systemrecht ".$systemrecht." wurde im Mandanten ".$mandant_name." gelöscht.";
|
|
}
|
|
else
|
|
{
|
|
$rc = -2;
|
|
$meldung = "Es ist ein Fehler aufgetreten: '".$ergebnis[ 1 ]."'.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -12;
|
|
$meldung = "Der Benutzer >".$exekutor."< verfügt nicht über ausreichende Berechtigungen.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -1;
|
|
$meldung = "Es wurde kein Systemrecht angegeben.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = $ok_1[ 0 ];
|
|
$meldung = $ok_1[ 1 ];
|
|
}
|
|
|
|
|
|
if ( $rc < 0 )
|
|
{
|
|
$level = 2;
|
|
}
|
|
else
|
|
{
|
|
$level = 4;
|
|
}
|
|
|
|
xlog( $level, "admin.systemrecht_loeschen: RC ".$rc.": ".$meldung );
|
|
return array( $rc, $meldung, $masken );
|
|
}
|
|
|
|
function liefere_alle_systemrechte( $mandant_name )
|
|
{
|
|
$ok_1 = existiert_mandant( $mandant_name );
|
|
|
|
if ( $ok_1[ 0 ] > 0 )
|
|
{
|
|
$systemrechte = array();
|
|
|
|
$STATEMENT = "select systemrecht from ca_systemrecht where mandant_id = ".$ok_1[ 0 ];
|
|
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
if ( $ergebnis[ 0 ] > 0 )
|
|
{
|
|
foreach ( $ergebnis[ 1 ] as $zeile )
|
|
{
|
|
$systemrechte[ ] = $zeile[ "systemrecht" ];
|
|
}
|
|
|
|
$rc = $ergebnis[ 0 ];
|
|
$meldung = "Liefere ".$rc." Systemrechte im Mandanten ".$mandant_name.".";
|
|
}
|
|
else
|
|
{
|
|
$rc = $ergebnis[ 0 ];
|
|
$meldung = "Es wurden keine Systemrechte gefunden oder ein Fehler ist aufgetreten.";
|
|
}
|
|
|
|
|
|
}
|
|
else
|
|
{
|
|
$rc = $ok_1[ 0 ];
|
|
$meldung = $ok_1[ 1 ];
|
|
}
|
|
|
|
|
|
if ( $rc < 0 )
|
|
{
|
|
$level = 2;
|
|
}
|
|
else
|
|
{
|
|
$level = 4;
|
|
}
|
|
|
|
xlog( $level, "admin.liefere_alle_systemrechte: RC ".$rc.": ".$meldung );
|
|
return array( $rc, $meldung, $systemrechte );
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
Gruppenzugehörigkeiten
|
|
*/
|
|
|
|
function benutzer_einer_gruppe_hinzufuegen( $mandant_name, $benutzer_anmeldename, $gruppen_name )
|
|
{
|
|
$exekutor = $_SESSION[ "benutzer_anmeldename" ];
|
|
$ok_1 = existiert_mandant( $mandant_name );
|
|
|
|
if ( $ok_1[ 0 ] > 0 )
|
|
{
|
|
$ok_2 = existiert_benutzer( $mandant_name, $benutzer_anmeldename );
|
|
|
|
if ( $ok_2[ 0 ] > 0 )
|
|
{
|
|
$ok_3 = existiert_gruppe( $mandant_name, $gruppen_name );
|
|
|
|
if ( $ok_3[ 0 ] > 0 )
|
|
{
|
|
if ( mb_strtoupper( $exekutor, "UTF-8" ) == "SUPERUSER" )
|
|
{
|
|
$exec[ 0 ] = 1;
|
|
}
|
|
else
|
|
{
|
|
$exec = besitzt_benutzer_systemrecht( $mandant_name, $exekutor, "ADMIN_BENUTZER_GRUPPE" );
|
|
}
|
|
|
|
if ( $exec[ 0 ] == 1 )
|
|
{
|
|
$STATEMENT = "insert into ca_benutzer_in_gruppe ( mandant_id, benutzer_id, gruppen_id ) values ( ".$ok_1[ 0 ].", ".$ok_2[ 0 ].", ".$ok_3[ 0 ]." )";
|
|
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
if ( $ergebnis[ 0 ] <> -1 )
|
|
{
|
|
$rc = 0;
|
|
$meldung = "Der Benutzer >".$benutzer_anmeldename."< (ID ".$ok_2[ 0 ].") wurde im Mandant >".$mandant_name."< (ID ".$ok_1[ 0 ].") der Gruppe >".$gruppen_name."< (ID ".$ok_3[ 0 ].") zugewiesen.";
|
|
}
|
|
else
|
|
{
|
|
$rc = -4;
|
|
$meldung = "Es ist ein Fehler aufgetreten: '".$ergebnis[ 1 ]."'.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -12;
|
|
$meldung = "Der Benutzer >".$exekutor."< verfügt nicht über ausreichende Berechtigungen.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = $ok_3[ 0 ];
|
|
$meldung = $ok_3[ 1 ];
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = $ok_2[ 0 ];
|
|
$meldung = $ok_2[ 1 ];
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = $ok_1[ 0 ];
|
|
$meldung = $ok_1[ 1 ];
|
|
}
|
|
|
|
if ( $rc < 0 )
|
|
{
|
|
$level = 2;
|
|
}
|
|
else
|
|
{
|
|
$level = 4;
|
|
}
|
|
|
|
xlog( $level, "admin.benutzer_einer_gruppe_zuweisen: RC ".$rc.": ".$meldung );
|
|
return array( $rc, $meldung );
|
|
|
|
}
|
|
|
|
function benutzer_aus_gruppe_entfernen( $mandant_name, $benutzer_anmeldename, $gruppen_name, $force = false )
|
|
{
|
|
|
|
if ( ( $force !== true ) && ( $force !== false ) )
|
|
{
|
|
$force = false;
|
|
}
|
|
|
|
|
|
$exekutor = $_SESSION[ "benutzer_anmeldename" ];
|
|
$ok_1 = existiert_mandant( $mandant_name );
|
|
|
|
if ( $ok_1[ 0 ] > 0 )
|
|
{
|
|
|
|
if ( ( ! ( ( mb_strtoupper( $benutzer_anmeldename, "UTF-8" ) == "CA_ADMIN" ) and ( mb_strtoupper( $gruppen_name, "UTF-8" ) == "ADMINISTRATOREN" ) ) ) || ( $force === true ) )
|
|
{
|
|
$ok_2 = existiert_benutzer( $mandant_name, $benutzer_anmeldename );
|
|
|
|
if ( $ok_2[ 0 ] > 0 )
|
|
{
|
|
$ok_3 = existiert_gruppe( $mandant_name, $gruppen_name );
|
|
|
|
if ( $ok_3[ 0 ] > 0 )
|
|
{
|
|
if ( mb_strtoupper( $exekutor, "UTF-8" ) == "SUPERUSER" )
|
|
{
|
|
$exec[ 0 ] = 1;
|
|
}
|
|
else
|
|
{
|
|
$exec = besitzt_benutzer_systemrecht( $mandant_name, $exekutor, "ADMIN_BENUTZER_GRUPPE" );
|
|
}
|
|
|
|
if ( $exec[ 0 ] == 1 )
|
|
{
|
|
$STATEMENT = "delete from ca_benutzer_in_gruppe where mandant_id = ".$ok_1[ 0 ]." and benutzer_id = ".$ok_2[ 0 ]." and gruppen_id = ".$ok_3[ 0 ];
|
|
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
if ( $ergebnis[ 0 ] <> -1 )
|
|
{
|
|
$rc = 0;
|
|
$meldung = "Der Benutzer >".$benutzer_anmeldename."< (ID ".$ok_2[ 0 ].") wurde im Mandant >".$mandant_name."< (ID ".$ok_1[ 0 ].") aus der Gruppe >".$gruppen_name."< (ID ".$ok_3[ 0 ].") entfernt.";
|
|
}
|
|
else
|
|
{
|
|
$rc = -4;
|
|
$meldung = "Es ist ein Fehler aufgetreten: '".$ergebnis[ 1 ]."'.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -12;
|
|
$meldung = "Der Benutzer >".$exekutor."< verfügt nicht über ausreichende Berechtigungen.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = $ok_3[ 0 ];
|
|
$meldung = $ok_3[ 1 ];
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = $ok_2[ 0 ];
|
|
$meldung = $ok_2[ 1 ];
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -7;
|
|
$meldung = "Der Administrationsbenutzer ca_admin kann nicht aus der Administratorgruppe entfernt werden.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = $ok_1[ 0 ];
|
|
$meldung = $ok_1[ 1 ];
|
|
}
|
|
|
|
if ( $rc < 0 )
|
|
{
|
|
$level = 2;
|
|
}
|
|
else
|
|
{
|
|
$level = 4;
|
|
}
|
|
|
|
xlog( $level, "admin.benutzer_aus_gruppe_entfernen: RC ".$rc.": ".$meldung );
|
|
return array( $rc, $meldung );
|
|
|
|
}
|
|
|
|
function gruppe_einer_gruppe_hinzufuegen( $mandant_name, $ober_gruppe, $unter_gruppe )
|
|
{
|
|
$exekutor = $_SESSION[ "benutzer_anmeldename" ];
|
|
$ok_1 = existiert_mandant( $mandant_name );
|
|
|
|
if ( $ok_1[ 0 ] > 0 )
|
|
{
|
|
$ok_2 = existiert_gruppe( $mandant_name, $ober_gruppe );
|
|
|
|
if ( $ok_2[ 0 ] > 0 )
|
|
{
|
|
$ok_3 = existiert_gruppe( $mandant_name, $unter_gruppe );
|
|
|
|
if ( $ok_3[ 0 ] > 0 )
|
|
{
|
|
if ( mb_strtoupper( $exekutor, "UTF-8" ) == "SUPERUSER" )
|
|
{
|
|
$exec[ 0 ] = 1;
|
|
}
|
|
else
|
|
{
|
|
$exec = besitzt_benutzer_systemrecht( $mandant_name, $exekutor, "ADMIN_BENUTZER_GRUPPE" );
|
|
}
|
|
|
|
if ( $exec[ 0 ] == 1 )
|
|
{
|
|
$STATEMENT = "insert into ca_gruppe_in_gruppe ( ober_gruppen_id, unter_gruppen_id ) values ( ".$ok_2[ 0 ].", ".$ok_3[ 0 ]." )";
|
|
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
if ( $ergebnis[ 0 ] <> -1 )
|
|
{
|
|
$rc = 0;
|
|
$meldung = "Die Gruppe >".$unter_gruppe."< (ID ".$ok_3[ 0 ].") wurde im Mandant >".$mandant_name."< (ID ".$ok_1[ 0 ].") der Gruppe >".$ober_gruppe."< (ID ".$ok_2[ 0 ].") hinzugefügt.";
|
|
}
|
|
else
|
|
{
|
|
$rc = -4;
|
|
$meldung = "Es ist ein Fehler aufgetreten: '".$ergebnis[ 1 ]."'.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -12;
|
|
$meldung = "Der Benutzer >".$exekutor."< verfügt nicht über ausreichende Berechtigungen.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = $ok_3[ 0 ];
|
|
$meldung = $ok_3[ 1 ];
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = $ok_2[ 0 ];
|
|
$meldung = $ok_2[ 1 ];
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = $ok_1[ 0 ];
|
|
$meldung = $ok_1[ 1 ];
|
|
}
|
|
|
|
if ( $rc < 0 )
|
|
{
|
|
$level = 2;
|
|
}
|
|
else
|
|
{
|
|
$level = 4;
|
|
}
|
|
|
|
xlog( $level, "admin.gruppe_einer_gruppe_hinzufuegen: RC ".$rc.": ".$meldung );
|
|
return array( $rc, $meldung );
|
|
}
|
|
|
|
function gruppe_aus_einer_gruppe_entfernen( $mandant_name, $ober_gruppe, $unter_gruppe, $force = false )
|
|
{
|
|
$exekutor = $_SESSION[ "benutzer_anmeldename" ];
|
|
$ok_1 = existiert_mandant( $mandant_name );
|
|
|
|
if ( $ok_1[ 0 ] > 0 )
|
|
{
|
|
$ok_2 = existiert_gruppe( $mandant_name, $ober_gruppe );
|
|
|
|
if ( $ok_2[ 0 ] > 0 )
|
|
{
|
|
$ok_3 = existiert_gruppe( $mandant_name, $unter_gruppe );
|
|
|
|
if ( $ok_3[ 0 ] > 0 )
|
|
{
|
|
if ( mb_strtoupper( $exekutor, "UTF-8" ) == "SUPERUSER" )
|
|
{
|
|
$exec[ 0 ] = 1;
|
|
}
|
|
else
|
|
{
|
|
$exec = besitzt_benutzer_systemrecht( $mandant_name, $exekutor, "ADMIN_BENUTZER_GRUPPE" );
|
|
}
|
|
|
|
if ( $exec[ 0 ] == 1 )
|
|
{
|
|
$STATEMENT = "delete from ca_gruppe_in_gruppe where ( ober_gruppen_id = ".$ok_2[ 0 ]." and unter_gruppen_id = ".$ok_3[ 0 ]." )";
|
|
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
if ( $ergebnis[ 0 ] <> -1 )
|
|
{
|
|
$rc = 0;
|
|
$meldung = "Die Gruppe >".$unter_gruppe."< (ID ".$ok_3[ 0 ].") wurde im Mandant >".$mandant_name."< (ID ".$ok_1[ 0 ].") aus der Gruppe >".$ober_gruppe."< (ID ".$ok_2[ 0 ].") entfernt.";
|
|
}
|
|
else
|
|
{
|
|
$rc = -4;
|
|
$meldung = "Es ist ein Fehler aufgetreten: '".$ergebnis[ 1 ]."'.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -12;
|
|
$meldung = "Der Benutzer >".$exekutor."< verfügt nicht über ausreichende Berechtigungen.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = $ok_3[ 0 ];
|
|
$meldung = $ok_3[ 1 ];
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = $ok_2[ 0 ];
|
|
$meldung = $ok_2[ 1 ];
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = $ok_1[ 0 ];
|
|
$meldung = $ok_1[ 1 ];
|
|
}
|
|
|
|
if ( $rc < 0 )
|
|
{
|
|
$level = 2;
|
|
}
|
|
else
|
|
{
|
|
$level = 4;
|
|
}
|
|
|
|
xlog( $level, "admin.gruppe_aus_einer_gruppe_entfernen: RC ".$rc.": ".$meldung );
|
|
return array( $rc, $meldung );
|
|
}
|
|
|
|
function in_welchen_gruppen_ist_gruppe_mitglied( $mandant_name, $gruppen_name )
|
|
{
|
|
$gruppenliste = array();
|
|
|
|
$ok_1 = existiert_mandant( $mandant_name );
|
|
|
|
if ( $ok_1[ 0 ] > 0 )
|
|
{
|
|
$ok_2 = existiert_gruppe( $mandant_name, $gruppen_name );
|
|
|
|
if ( $ok_2[ 0 ] > 0 )
|
|
{
|
|
$STATEMENT = "select g.gruppen_name g_name from ca_gruppe g, ca_gruppe_in_gruppe m where m.unter_gruppen_id = ".$ok_2[ 0 ]." and m.ober_gruppen_id = g.gruppen_id";
|
|
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
if ( $ergebnis[ 0 ] > 0 )
|
|
{
|
|
foreach ( $ergebnis[ 1 ] as $zeile )
|
|
{
|
|
$gruppenliste[ ] = (string)$zeile[ "g_name" ];
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -4;
|
|
$meldung = "Es ist ein Fehler aufgetreten: '".$ergebnis[ 1 ]."'.";
|
|
}
|
|
|
|
$rc = count( $gruppenliste );
|
|
$meldung = "Die Gruppe ".$gruppen_name." ist im Mandant >".$mandant_name."< in ".$rc." Gruppen enthalten.";
|
|
|
|
}
|
|
else
|
|
{
|
|
$rc = $ok_2[ 0 ];
|
|
$meldung = $ok_2[ 1 ];
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = $ok_1[ 0 ];
|
|
$meldung = $ok_1[ 1 ];
|
|
}
|
|
|
|
if ( $rc < 0 )
|
|
{
|
|
$level = 2;
|
|
}
|
|
else
|
|
{
|
|
$level = 6;
|
|
}
|
|
|
|
xlog( $level, "admin.in_welchen_gruppen_ist_gruppe_mitglied: RC ".$rc.": ".$meldung );
|
|
return array( $rc, $meldung, $gruppenliste );
|
|
|
|
}
|
|
|
|
function liefere_benutzer_die_in_gruppe_sind( $mandant_name, $gruppen_name )
|
|
{
|
|
$benutzerliste = array();
|
|
|
|
$ok_1 = existiert_mandant( $mandant_name );
|
|
|
|
if ( $ok_1[ 0 ] > 0 )
|
|
{
|
|
$ok_2 = existiert_gruppe( $mandant_name, $gruppen_name );
|
|
|
|
if ( $ok_2[ 0 ] > 0 )
|
|
{
|
|
$STATEMENT = "select b.benutzer_id, b.benutzer_anmeldename b_aname from ca_benutzer b, ca_benutzer_in_gruppe g where g.benutzer_id = b.benutzer_id and g.gruppen_id = ".$ok_2[ 0 ];
|
|
//xlog( 5, $STATEMENT );
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
if ( $ergebnis[ 0 ] > 0 )
|
|
{
|
|
foreach( $ergebnis[ 1 ] as $zeile )
|
|
{
|
|
$benutzerliste[ ] = (string)$zeile[ "b_aname" ];
|
|
}
|
|
}
|
|
|
|
$rc = count( $benutzerliste );
|
|
$meldung = "Liefere ".$rc." Gruppenmitglieder der Gruppe ".$gruppen_name." (Mandant >".$mandant_name."<).";
|
|
|
|
}
|
|
else
|
|
{
|
|
$rc = $ok_2[ 0 ];
|
|
$meldung = $ok_2[ 1 ];
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = $ok_1[ 0 ];
|
|
$meldung = $ok_1[ 1 ];
|
|
}
|
|
|
|
if ( $rc < 0 )
|
|
{
|
|
$level = 2;
|
|
}
|
|
else
|
|
{
|
|
$level = 4;
|
|
}
|
|
|
|
xlog( $level, "admin.liefere_benutzer_die_in_gruppe_sind: RC ".$rc.": ".$meldung );
|
|
return array( $rc, $meldung, $benutzerliste );
|
|
}
|
|
|
|
function in_welchen_gruppen_ist_benutzer_mitglied( $mandant_name, $benutzer_anmeldename )
|
|
{
|
|
// return array( $rc, $meldung, $gruppenliste, $direkte_gruppenliste, $indirekte_gruppenliste_gefiltert );
|
|
|
|
$ok_1 = existiert_mandant( $mandant_name );
|
|
|
|
if ( $ok_1[ 0 ] > 0 )
|
|
{
|
|
$ok_2 = existiert_benutzer( $mandant_name, $benutzer_anmeldename );
|
|
|
|
if ( $ok_2[ 0 ] > 0 )
|
|
{
|
|
$STATEMENT = "select big.gruppen_id g_id, g.gruppen_name g_name from ca_benutzer_in_gruppe big, ca_gruppe g where big.benutzer_id = ".$ok_2[ 0 ]." and big.gruppen_id = g.gruppen_id;";
|
|
|
|
//xlog( 4, $STATEMENT );
|
|
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
$direkte_gruppenliste = array();
|
|
|
|
$indirekte_gruppenliste = array();
|
|
|
|
if ( $ergebnis[ 0 ] <> -1 )
|
|
{
|
|
if ( $ergebnis[ 0 ] > 0 )
|
|
{
|
|
foreach ( $ergebnis[ 1 ] as $zeile )
|
|
{
|
|
$direkte_gruppenliste[ ] = (string)$zeile[ "g_name" ];
|
|
|
|
$ergebnis_2 = in_welchen_gruppen_ist_gruppe_mitglied( $mandant_name, (string)$zeile[ "g_name" ] );
|
|
|
|
$neue_indirekte_gruppenliste = $ergebnis_2[ 2 ];
|
|
|
|
while ( count( $neue_indirekte_gruppenliste ) > count( $indirekte_gruppenliste ) )
|
|
{
|
|
$indirekte_gruppenliste = $neue_indirekte_gruppenliste;
|
|
|
|
foreach( $indirekte_gruppenliste as $gruppe )
|
|
{
|
|
$ergebnis_3 = in_welchen_gruppen_ist_gruppe_mitglied( $mandant_name, $gruppe );
|
|
|
|
$neue_indirekte_gruppenliste = array_unique( array_merge( $ergebnis_3[ 2 ], $neue_indirekte_gruppenliste ) );
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = 0;
|
|
$meldung = "Der Benutzer ".$benutzer_anmeldename." ist im Mandanten ".$mandant_name." in keiner Gruppe Mitglied.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -4;
|
|
$meldung = "Es ist ein Fehler aufgetreten: '".$ergebnis[ 1 ]."'.";
|
|
}
|
|
|
|
$indirekte_gruppenliste_gefiltert = array();
|
|
|
|
foreach( $indirekte_gruppenliste as $igruppe )
|
|
{
|
|
foreach( $direkte_gruppenliste as $dgruppe )
|
|
{
|
|
if ( $dgruppe == $igruppe )
|
|
{
|
|
$flag = true;
|
|
break;
|
|
}
|
|
else
|
|
{
|
|
$flag = false;
|
|
}
|
|
}
|
|
if ( ! $flag )
|
|
{
|
|
$indirekte_gruppenliste_gefiltert[] = $igruppe;
|
|
}
|
|
|
|
}
|
|
|
|
$indirekte_gruppenliste_gefiltert = array_unique( $indirekte_gruppenliste_gefiltert );
|
|
|
|
$gruppenliste = array_merge( $direkte_gruppenliste, $indirekte_gruppenliste_gefiltert );
|
|
|
|
$rc = bcadd( count( $direkte_gruppenliste ), count( $indirekte_gruppenliste_gefiltert ), 0 );
|
|
$meldung = "Liefere ".$rc." Gruppen, in denen der Benutzer >".$benutzer_anmeldename."< des Mandants >".$mandant_name."< Mitglied ist (davon ".count( $direkte_gruppenliste )." direkte Gruppenmitgliedschaften und ".count( $indirekte_gruppenliste_gefiltert )." indirekte Gruppenmitgliedschaften).";
|
|
}
|
|
else
|
|
{
|
|
$rc = $ok_2[ 0 ];
|
|
$meldung = $ok_2[ 1 ];
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = $ok_1[ 0 ];
|
|
$meldung = $ok_1[ 1 ];
|
|
}
|
|
|
|
if ( $rc < 0 )
|
|
{
|
|
$level = 2;
|
|
}
|
|
else
|
|
{
|
|
$level = 6;
|
|
}
|
|
|
|
xlog( $level, "admin.in_welchen_gruppen_ist_benutzer_mitglied: RC ".$rc.": ".$meldung );
|
|
|
|
return array( $rc, $meldung, $gruppenliste, $direkte_gruppenliste, $indirekte_gruppenliste_gefiltert );
|
|
}
|
|
|
|
function in_welchen_gruppen_ist_benutzer_nicht_mitglied( $mandant_name, $benutzer_anmeldename )
|
|
{
|
|
$ok_1 = existiert_mandant( $mandant_name );
|
|
|
|
if ( $ok_1[ 0 ] > 0 )
|
|
{
|
|
$ok_2 = existiert_benutzer( $mandant_name, $benutzer_anmeldename );
|
|
|
|
if ( $ok_2[ 0 ] > 0 )
|
|
{
|
|
$gruppenliste = array();
|
|
$STATEMENT = "select gruppen_name from ca_gruppe where mandant_id = ".$ok_1[ 0 ]." and gruppen_id not in ( select gruppen_id from ca_benutzer_in_gruppe where benutzer_id = ".$ok_2[ 0 ]." )";
|
|
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
if ( $ergebnis[ 0 ] <> -1 )
|
|
{
|
|
if ( $ergebnis[ 0 ] > 0 )
|
|
{
|
|
|
|
|
|
foreach( $ergebnis[ 1 ] as $zeile )
|
|
{
|
|
$gruppenliste[] = $zeile[ "gruppen_name" ];
|
|
}
|
|
$rc = count( $gruppenliste );
|
|
$meldung = "Der Benutzer ".$benutzer_anmeldename." ist im Mandanten ".$mandant_name." in ".$rc." Gruppen Mitglied.";
|
|
}
|
|
else
|
|
{
|
|
$rc = 0;
|
|
$meldung = "Der Benutzer ".$benutzer_anmeldename." ist im Mandanten ".$mandant_name." in jeder Gruppe Mitglied.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -4;
|
|
$meldung = "Es ist ein Fehler aufgetreten: '".$ergebnis[ 1 ]."'.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = $ok_2[ 0 ];
|
|
$meldung = $ok_2[ 1 ];
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = $ok_1[ 0 ];
|
|
$meldung = $ok_1[ 1 ];
|
|
}
|
|
|
|
if ( $rc < 0 )
|
|
{
|
|
$level = 2;
|
|
}
|
|
else
|
|
{
|
|
$level = 4;
|
|
}
|
|
|
|
xlog( $level, "admin.in_welchen_gruppen_ist_benutzer_nicht_mitglied: RC ".$rc.": ".$meldung );
|
|
|
|
return array( $rc, $meldung, $gruppenliste );
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
benutzerspezifische Einstellungen
|
|
*/
|
|
|
|
function liefere_benutzerspezifische_einstellung( $mandant_name, $benutzer_anmeldename, $einstellung )
|
|
{
|
|
// liefert nur den Wert
|
|
$ok_1 = existiert_mandant( $mandant_name );
|
|
|
|
if ( $ok_1[ 0 ] > 0 )
|
|
{
|
|
$ok_2 = existiert_benutzer( $mandant_name, $benutzer_anmeldename );
|
|
|
|
if ( $ok_2[ 0 ] > 0 )
|
|
{
|
|
if ( strlen( $einstellung ) > 0 )
|
|
{
|
|
$STATEMENT = "select wert from ca_benutzer_einstellungen where benutzer_id = ".$ok_2[ 0 ]." and einstellung = '".$einstellung."'";
|
|
|
|
|
|
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
if ( $ergebnis[ 0 ] > 0 )
|
|
{
|
|
$rc = $ergebnis[ 1 ][ 0 ][ "wert" ];
|
|
}
|
|
else
|
|
{
|
|
$rc = "";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = "";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = "";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = "";
|
|
}
|
|
|
|
|
|
xlog( 6, "admin.liefere_benutzerspezifische_einstellung: Liefere Wert ".$rc." für die Einstellung ".$einstellung."." );
|
|
|
|
return $rc;
|
|
}
|
|
|
|
function liefere_benutzerspezifische_einstellung_2( $mandant_name, $benutzer_anmeldename, $einstellung )
|
|
{
|
|
// liefert ein Array
|
|
$ok_1 = existiert_mandant( $mandant_name );
|
|
|
|
if ( $ok_1[ 0 ] > 0 )
|
|
{
|
|
$ok_2 = existiert_benutzer( $mandant_name, $benutzer_anmeldename );
|
|
|
|
if ( $ok_2[ 0 ] > 0 )
|
|
{
|
|
if ( strlen( $einstellung ) > 0 )
|
|
{
|
|
$STATEMENT = "select wert from ca_benutzer_einstellungen where benutzer_id = ".$ok_2[ 0 ]." and einstellung = '".$einstellung."'";
|
|
|
|
//xlog( 4, $STATEMENT );
|
|
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
if ( $ergebnis[ 0 ] > 0 )
|
|
{
|
|
$rc = 0;
|
|
$wert = $ergebnis[ 1 ][ 0 ][ "wert" ];
|
|
$meldung = "Die Einstellung >".$einstellung."< ist für den Benutzer >".$benutzer_anmeldename."< im Mandanten >".$mandant_name."< auf folgenden Wert gesetzt: >".$wert."<.";
|
|
|
|
}
|
|
else
|
|
{
|
|
$rc = -4;
|
|
$meldung = "Die Einstellung >".$einstellung."< ist für den Benutzer >".$benutzer_anmeldename."< im Mandanten >".$mandant_name."< nicht gesetzt.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -5;
|
|
$meldung = "Es wurde keine Einstellung angegeben.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = $ok_2[ 0 ];
|
|
$meldung = $ok_2[ 1 ];
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = $ok_1[ 0 ];
|
|
$meldung = $ok_1[ 1 ];
|
|
}
|
|
|
|
|
|
|
|
xlog( 6, "admin.liefere_benutzerspezifische_einstellung_2: RC ".$rc.": ".$meldung );
|
|
|
|
return array( $rc, $meldung, $wert );
|
|
}
|
|
|
|
function liefere_benutzerspezifische_einstellung_3( $mandant_name, $benutzer_anmeldename, $einstellung )
|
|
{
|
|
// liefert ein Array mit allen Infos über die Einstellung
|
|
$ok_1 = existiert_mandant( $mandant_name );
|
|
|
|
if ( $ok_1[ 0 ] > 0 )
|
|
{
|
|
$ok_2 = existiert_benutzer( $mandant_name, $benutzer_anmeldename );
|
|
|
|
if ( $ok_2[ 0 ] > 0 )
|
|
{
|
|
if ( strlen( $einstellung ) > 0 )
|
|
{
|
|
$STATEMENT = "select kategorie, einstellung, bezeichnung, wertemenge, benutzer_darf_wert_aendern, beschreibung, benutzer_id, wert from ca_benutzer_einstellungen where benutzer_id = ".$ok_2[ 0 ]." and einstellung = '".$einstellung."'";
|
|
|
|
xlog( 4, $STATEMENT );
|
|
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
if ( $ergebnis[ 0 ] > 0 )
|
|
{
|
|
$rc = 0;
|
|
$infos = $ergebnis[ 1 ][ 0 ];
|
|
$meldung = "Die Einstellung >".$einstellung."< ist für den Benutzer >".$benutzer_anmeldename."< im Mandanten >".$mandant_name."< auf folgenden Wert gesetzt: >".$infos[ "wert" ]."<.";
|
|
|
|
}
|
|
else
|
|
{
|
|
$rc = -4;
|
|
$meldung = "Die Einstellung >".$einstellung."< ist für den Benutzer >".$benutzer_anmeldename."< im Mandanten >".$mandant_name."< nicht gesetzt.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -5;
|
|
$meldung = "Es wurde keine Einstellung angegeben.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = $ok_2[ 0 ];
|
|
$meldung = $ok_2[ 1 ];
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = $ok_1[ 0 ];
|
|
$meldung = $ok_1[ 1 ];
|
|
}
|
|
|
|
|
|
|
|
xlog( 6, "admin.liefere_benutzerspezifische_einstellung_3: RC ".$rc.": ".$meldung );
|
|
|
|
return array( $rc, $meldung, $infos );
|
|
}
|
|
|
|
|
|
function liefere_benutzerspezifische_einstellungen_kategorien( $mandant_name, $benutzer_anmeldename )
|
|
{
|
|
$ok_1 = existiert_mandant( $mandant_name );
|
|
|
|
if ( $ok_1[ 0 ] > 0 )
|
|
{
|
|
$ok_2 = existiert_benutzer( $mandant_name, $benutzer_anmeldename );
|
|
|
|
if ( $ok_2[ 0 ] > 0 )
|
|
{
|
|
$kategorien = array();
|
|
|
|
$STATEMENT = "select distinct kategorie from ca_benutzer_einstellungen where benutzer_id = ".$ok_2[ 0 ]." order by kategorie";
|
|
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
if ( $ergebnis[ 0 ] > 0 )
|
|
{
|
|
foreach ( $ergebnis[ 1 ] as $zeile )
|
|
{
|
|
$kategorien[] = $zeile[ "kategorie" ];
|
|
}
|
|
$rc = count( $kategorien );
|
|
$meldung = "Liefere ".$rc." Kategorien für Benutzer ".$benutzer_anmeldename." im Mandanten ".$mandant_name.".";
|
|
}
|
|
else
|
|
{
|
|
$rc = -4;
|
|
$meldung = "Es wurden keine Einstellungen für den Benutzer ".$benutzer_anmeldename." im Mandanten ".$mandant_name." gefunden.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = $ok_2[ 0 ];
|
|
$meldung = $ok_2[ 1 ];
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = $ok_1[ 0 ];
|
|
$meldung = $ok_1[ 1 ];
|
|
}
|
|
|
|
if ( $rc < 0 )
|
|
{
|
|
$level = 2;
|
|
}
|
|
else
|
|
{
|
|
$level = 6;
|
|
}
|
|
|
|
xlog( $level, "admin.liefere_benutzerspezifische_einstellungen_kategorien: RC ".$rc.": ".$meldung );
|
|
|
|
return array( $rc, $meldung, $kategorien );
|
|
}
|
|
|
|
function aktualisiere_benutzerspezifische_einstellung( $mandant_name, $benutzer_anmeldename, $einstellung, $neuer_wert, $kategorie = "Sonstiges", $wertemenge = "", $benutzer_darf_wert_aendern = "ja", $bezeichnung = "Einstellung", $beschreibung = "" )
|
|
{
|
|
// setzt Wertemenge nur, wenn sie angegeben wurde (leere Angabe => keine Änderung der bestehenden Konfiguration), das gleiche gilt für den Parameter "Benutzer darf Wert ändern".
|
|
|
|
$connection = mysqli_connect( "localhost", "ca_db", "ca_db", "ca_system" );
|
|
$ok_1 = existiert_mandant( $mandant_name );
|
|
|
|
if ( $ok_1[ 0 ] > 0 )
|
|
{
|
|
$ok_2 = existiert_benutzer( $mandant_name, $benutzer_anmeldename );
|
|
|
|
if ( $ok_2[ 0 ] > 0 )
|
|
{
|
|
if ( strlen( $einstellung ) > 0 )
|
|
{
|
|
$wert = liefere_benutzerspezifische_einstellung_2( $mandant_name, $benutzer_anmeldename, $einstellung );
|
|
|
|
if ( $wert[ 0 ] == 0 )
|
|
{
|
|
// Eintrag gefunden
|
|
|
|
if ( strlen( $wertemenge ) > 0 )
|
|
{
|
|
$STATEMENT_ERW = ", wertemenge = '".mysqli_real_escape_string( $connection, $wertemenge )."'";
|
|
}
|
|
|
|
if ( strlen( $benutzer_darf_wert_aendern ) > 0 )
|
|
{
|
|
$STATEMENT_ERW = $STATEMENT_ERW.", benutzer_darf_wert_aendern = '".mysqli_real_escape_string( $connection, $benutzer_darf_wert_aendern )."'";
|
|
}
|
|
|
|
$STATEMENT = "update ca_benutzer_einstellungen set wert = '".mysqli_real_escape_string( $connection, $neuer_wert )."'".$STATEMENT_ERW." where benutzer_id = ".$ok_2[ 0 ]." and einstellung = '".$einstellung."'";
|
|
//xlog( 4, $STATEMENT );
|
|
xdb( $STATEMENT );
|
|
|
|
$rc = 1;
|
|
$meldung = "Die Einstellung ".$einstellung." für den Benutzer ".$benutzer_anmeldename." im Mandanten ".$mandant_name." wurde auf den Wert >".$neuer_wert."< gesetzt.";
|
|
|
|
}
|
|
else
|
|
{
|
|
// Eintrag nicht gefunden
|
|
$STATEMENT = "insert into ca_benutzer_einstellungen ( benutzer_id, kategorie, einstellung, wert, wertemenge, benutzer_darf_wert_aendern, beschreibung, bezeichnung ) values ( ".$ok_2[ 0 ].", '".mysqli_real_escape_string( $connection, $kategorie )."', '".mysqli_real_escape_string( $connection, $einstellung )."', '".mysqli_real_escape_string( $connection, $neuer_wert )."', '".mysqli_real_escape_string( $connection, $wertemenge )."', '".mysqli_real_escape_string( $connection, $benutzer_darf_wert_aendern )."', '".mysqli_real_escape_string( $connection, $beschreibung )."', '".mysqli_real_escape_string( $connection, $bezeichnung )."' ) ";
|
|
|
|
xdb( $STATEMENT );
|
|
|
|
$rc = 2;
|
|
$meldung = "Die Einstellung ".$einstellung." für den Benutzer ".$benutzer_anmeldename." im Mandanten ".$mandant_name." wurde auf den Wert >".$neuer_wert."< gesetzt.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -5;
|
|
$meldung = "Es wurde keine Einstellung angegeben.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = $ok_2[ 0 ];
|
|
$meldung = $ok_2[ 1 ];
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = $ok_1[ 0 ];
|
|
$meldung = $ok_1[ 1 ];
|
|
}
|
|
|
|
if ( $rc < 0 )
|
|
{
|
|
$level = 2;
|
|
}
|
|
else
|
|
{
|
|
$level = 4;
|
|
}
|
|
|
|
mysqli_close( $connection );
|
|
|
|
|
|
xlog( $level, "admin.aktualisiere_benutzerspezifische_einstellung: RC ".$rc.": ".$meldung );
|
|
|
|
return array( $rc, $meldung );
|
|
}
|
|
|
|
function aktualisiere_benutzerspezifische_einstellung_2( $mandant_name, $benutzer_anmeldename, $einstellung, $neuer_wert, $kategorie = "Sonstiges", $wertemenge, $benutzer_darf_wert_aendern = "ja", $bezeichnung = "", $beschreibung = "" )
|
|
{
|
|
// setzt immer auch die Wertemenge (leere Angabe => setzen von "keine Wertemenge") und das "benutzer darf ändern"-Flag (dito).
|
|
$ok_1 = existiert_mandant( $mandant_name );
|
|
$connection = mysqli_connect( "localhost", "ca_db", "ca_db", "ca_system" );
|
|
|
|
if ( $ok_1[ 0 ] > 0 )
|
|
{
|
|
$ok_2 = existiert_benutzer( $mandant_name, $benutzer_anmeldename );
|
|
|
|
if ( $ok_2[ 0 ] > 0 )
|
|
{
|
|
if ( strlen( $einstellung ) > 0 )
|
|
{
|
|
$wert = liefere_benutzerspezifische_einstellung_2( $mandant_name, $benutzer_anmeldename, $einstellung );
|
|
|
|
if ( $wert[ 0 ] == 0 )
|
|
{
|
|
// Eintrag gefunden
|
|
|
|
$STATEMENT = "update ca_benutzer_einstellungen set wert = '".mysqli_real_escape_string( $connection, $neuer_wert )."', wertemenge = '".mysqli_real_escape_string( $connection, $wertemenge )."', benutzer_darf_wert_aendern = '".mysqli_real_escape_string( $connection, $benutzer_darf_wert_aendern )."' where benutzer_id = ".$ok_2[ 0 ]." and einstellung = '".mysqli_real_escape_string( $connection, $einstellung )."'";
|
|
//xlog( 4, $STATEMENT );
|
|
xdb( $STATEMENT );
|
|
|
|
$rc = 1;
|
|
$meldung = "Die Einstellung ".$einstellung." für den Benutzer ".$benutzer_anmeldename." im Mandanten ".$mandant_name." wurde auf den Wert >".$neuer_wert."< gesetzt.";
|
|
|
|
}
|
|
else
|
|
{
|
|
if ( strlen( $bezeichnung ) == 0 )
|
|
{
|
|
$bezeichnung = "Einstellung ".$einstellung;
|
|
}
|
|
// Eintrag nicht gefunden
|
|
$STATEMENT = "insert into ca_benutzer_einstellungen ( benutzer_id, kategorie, einstellung, wert, wertemenge, benutzer_darf_wert_aendern, beschreibung, bezeichnung ) values ( ".$ok_2[ 0 ].", '".mysqli_real_escape_string( $connection, $kategorie )."', '".mysqli_real_escape_string( $connection, $einstellung )."', '".mysqli_real_escape_string( $connection, $neuer_wert )."', '".mysqli_real_escape_string( $connection, $wertemenge )."', '".mysqli_real_escape_string( $connection, $benutzer_darf_wert_aendern )."', '".mysqli_real_escape_string( $connection, $beschreibung )."', '".mysqli_real_escape_string( $connection, $bezeichnung )."' ) ";
|
|
|
|
xdb( $STATEMENT );
|
|
|
|
$rc = 2;
|
|
$meldung = "Die Einstellung ".$einstellung." für den Benutzer ".$benutzer_anmeldename." im Mandanten ".$mandant_name." wurde auf den Wert >".$neuer_wert."< gesetzt.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -5;
|
|
$meldung = "Es wurde keine Einstellung angegeben.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = $ok_2[ 0 ];
|
|
$meldung = $ok_2[ 1 ];
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = $ok_1[ 0 ];
|
|
$meldung = $ok_1[ 1 ];
|
|
}
|
|
|
|
if ( $rc < 0 )
|
|
{
|
|
$level = 2;
|
|
}
|
|
else
|
|
{
|
|
$level = 4;
|
|
}
|
|
|
|
mysqli_close( $connection );
|
|
|
|
|
|
xlog( $level, "admin.aktualisiere_benutzerspezifische_einstellung: RC ".$rc.": ".$meldung );
|
|
|
|
return array( $rc, $meldung );
|
|
}
|
|
|
|
function liefere_benutzerspezifische_einstellungen_anhand_kategorie( $mandant_name, $benutzer_anmeldename, $kategorie )
|
|
{
|
|
/*
|
|
Liefert die Einstellungen und die Werte, verzichtet aber auf genauere Informationen (Wertemenge, ...)
|
|
*/
|
|
$ok_1 = existiert_mandant( $mandant_name );
|
|
|
|
if ( $ok_1[ 0 ] > 0 )
|
|
{
|
|
$ok_2 = existiert_benutzer( $mandant_name, $benutzer_anmeldename );
|
|
|
|
if ( $ok_2[ 0 ] > 0 )
|
|
{
|
|
if ( strlen( $kategorie ) > 0 )
|
|
{
|
|
$STATEMENT = "select einstellung, wert from ca_benutzer_einstellungen where benutzer_id = ".$ok_2[ 0 ]." and kategorie = '".$kategorie."' order by einstellung";
|
|
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
$einstellungen = array();
|
|
|
|
if ( $ergebnis[ 0 ] > 0 )
|
|
{
|
|
foreach( $ergebnis[ 1 ] as $zeile )
|
|
{
|
|
$einstellungen[ $zeile[ "einstellung" ] ] = $zeile[ "wert" ];
|
|
}
|
|
$rc = count( $einstellungen );
|
|
$meldung = "Für den Benutzer ".$benutzer_anmeldename." im Mandanten ".$mandant_name." wurden ".$rc." Einstellungen in der Kategorie ".$kategorie." gefunden.";
|
|
}
|
|
else
|
|
{
|
|
$rc = -4;
|
|
$meldung = "Es wurden keine Einstellungen für den Benutzer ".$benutzer_anmeldename." im Mandanten ".$mandant_name." gefunden.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -5;
|
|
$meldung = "Es wurde keine Kategorie angegeben.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = $ok_2[ 0 ];
|
|
$meldung = $ok_2[ 1 ];
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = $ok_1[ 0 ];
|
|
$meldung = $ok_1[ 1 ];
|
|
}
|
|
|
|
if ( $rc < 0 )
|
|
{
|
|
$level = 2;
|
|
}
|
|
else
|
|
{
|
|
$level = 4;
|
|
}
|
|
|
|
xlog( $level, "admin.liefere_benutzerspezifische_einstellungen_anhand_kategorie: RC ".$rc.": ".$meldung );
|
|
|
|
return array( $rc, $meldung, $einstellungen );
|
|
}
|
|
|
|
function liefere_benutzerspezifische_einstellungen_anhand_kategorie_vollstaendig( $mandant_name, $benutzer_anmeldename, $kategorie )
|
|
{
|
|
/*
|
|
Liefert alle Einstellungen mit allen Parametern (Wertemenge, Benutzer darf Wert ändern, ...)
|
|
*/
|
|
$ok_1 = existiert_mandant( $mandant_name );
|
|
|
|
if ( $ok_1[ 0 ] > 0 )
|
|
{
|
|
$ok_2 = existiert_benutzer( $mandant_name, $benutzer_anmeldename );
|
|
|
|
if ( $ok_2[ 0 ] > 0 )
|
|
{
|
|
if ( strlen( $kategorie ) > 0 )
|
|
{
|
|
$STATEMENT = "select einstellung, bezeichnung, wert, kategorie, wertemenge, benutzer_darf_wert_aendern, beschreibung from ca_benutzer_einstellungen where benutzer_id = ".$ok_2[ 0 ]." and kategorie = '".$kategorie."' order by einstellung";
|
|
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
$einstellungen = array();
|
|
|
|
if ( $ergebnis[ 0 ] > 0 )
|
|
{
|
|
$einstellungen = $ergebnis[ 1 ];
|
|
$rc = count( $einstellungen );
|
|
$meldung = "Für den Benutzer ".$benutzer_anmeldename." im Mandanten ".$mandant_name." wurden ".$rc." Einstellungen in der Kategorie ".$kategorie." gefunden.";
|
|
}
|
|
else
|
|
{
|
|
$rc = -4;
|
|
$meldung = "Es wurden keine Einstellungen für den Benutzer ".$benutzer_anmeldename." im Mandanten ".$mandant_name." gefunden.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -5;
|
|
$meldung = "Es wurde keine Kategorie angegeben.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = $ok_2[ 0 ];
|
|
$meldung = $ok_2[ 1 ];
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = $ok_1[ 0 ];
|
|
$meldung = $ok_1[ 1 ];
|
|
}
|
|
|
|
if ( $rc < 0 )
|
|
{
|
|
$level = 2;
|
|
}
|
|
else
|
|
{
|
|
$level = 4;
|
|
}
|
|
|
|
xlog( $level, "admin.liefere_benutzerspezifische_einstellungen_anhand_kategorie: RC ".$rc.": ".$meldung );
|
|
|
|
return array( $rc, $meldung, $einstellungen );
|
|
}
|
|
|
|
function loesche_benutzerspezifische_einstellung( $mandant_name, $benutzer_anmeldename, $einstellung )
|
|
{
|
|
$ok_1 = existiert_mandant( $mandant_name );
|
|
|
|
if ( $ok_1[ 0 ] > 0 )
|
|
{
|
|
$ok_2 = existiert_benutzer( $mandant_name, $benutzer_anmeldename );
|
|
|
|
if ( $ok_2[ 0 ] > 0 )
|
|
{
|
|
if ( strlen( $einstellung ) > 0 )
|
|
{
|
|
$STATEMENT = "delete from ca_benutzer_einstellungen where benutzer_id = ".$ok_2[ 0 ]." and einstellung = '".$einstellung."'";
|
|
|
|
//xlog( 4, $STATEMENT );
|
|
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
if ( $ergebnis[ 0 ] == 0 )
|
|
{
|
|
$rc = 0;
|
|
$meldung = "Die Einstellung >".$einstellung."< wurde für den Benutzer >".$benutzer_anmeldename."< im Mandanten >".$mandant_name."< gelöscht.";
|
|
|
|
}
|
|
else
|
|
{
|
|
$rc = -4;
|
|
$meldung = "Es ist ein Fehler aufgetreten: ".$ergebnis[ 1 ];
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -5;
|
|
$meldung = "Es wurde keine Einstellung angegeben.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = $ok_2[ 0 ];
|
|
$meldung = $ok_2[ 1 ];
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = $ok_1[ 0 ];
|
|
$meldung = $ok_1[ 1 ];
|
|
}
|
|
|
|
|
|
|
|
xlog( 4, "admin.loesche_benutzerspezifische_einstellung: RC ".$rc.": ".$meldung );
|
|
|
|
return array( $rc, $meldung, $wert );
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
Arbeitsfunktionen
|
|
*/
|
|
|
|
function pruefe_password( $mandant_name, $password )
|
|
{
|
|
/****************
|
|
BESCHREIBUNG_____Prüft ein Passwort, ob es die in der DB hinterlegten Richtlinien für Passwörter einhält
|
|
RETURNS_____array( (integer) Returncode, (string) Meldung) ($rc = 0 wenn alles ok, < 0 wenn Fehler)
|
|
****************/
|
|
|
|
if ( strlen( $password ) <> 0 )
|
|
{
|
|
|
|
|
|
$pruefe_grossbuchstaben = liefere_konfig( $mandant_name, "pwd_rl_grossbuchstaben" );
|
|
$pruefe_kleinbuchstaben = liefere_konfig( $mandant_name, "pwd_rl_kleinbuchstaben" );
|
|
$pruefe_zahlen = liefere_konfig( $mandant_name, "pwd_rl_zahlen" );
|
|
$pruefe_sonderzeichen = liefere_konfig( $mandant_name, "pwd_rl_sonderzeichen" );
|
|
$pruefe_min_laenge = liefere_konfig( $mandant_name, "pwd_rl_min_laenge" );
|
|
$pruefe_max_laenge = liefere_konfig( $mandant_name, "pwd_rl_max_laenge" );
|
|
$min_grp = liefere_konfig( $mandant_name, "pwd_rl_min_zeichgrp" );
|
|
$max_grp = liefere_konfig( $mandant_name, "pwd_rl_max_zeichgrp" );
|
|
|
|
// Großbuchstaben
|
|
if ( $pruefe_grossbuchstaben == "ja" )
|
|
{
|
|
if ( preg_match( "/[A-Z]/", $password ) == "1" )
|
|
{
|
|
$ergebnis_grossbuchstaben = "1";
|
|
}
|
|
else
|
|
{
|
|
$ergebnis_grossbuchstaben = "0";
|
|
$fehlermeldung = "Obwohl benötigt, wurden im Passwort keine Großbuchstaben (A, B, C, ...) verwendet.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$ergebnis_grossbuchstaben = "1";
|
|
}
|
|
|
|
|
|
// Kleinbuchstaben
|
|
if ( ( $pruefe_kleinbuchstaben == "ja" ) )
|
|
{
|
|
if ( $ergebnis_grossbuchstaben == "1" )
|
|
{
|
|
if ( preg_match( "/[a-z]/", $password ) == "1" )
|
|
{
|
|
$ergebnis_kleinbuchstaben = "1";
|
|
}
|
|
else
|
|
{
|
|
$ergebnis_kleinbuchstaben = "0";
|
|
$fehlermeldung = "Obwohl benötigt, wurden im Passwort keine Kleinbuchstaben (a, b, c, ...) verwendet.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$ergebnis_kleinbuchstaben = "0";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$ergebnis_kleinbuchstaben = "1";
|
|
}
|
|
|
|
|
|
// Zahlen
|
|
if ( $pruefe_zahlen == "ja" )
|
|
{
|
|
if ( $ergebnis_kleinbuchstaben == "1" )
|
|
{
|
|
if ( preg_match( "/[0-9]/", $password ) == "1" )
|
|
{
|
|
$ergebnis_zahlen = "1";
|
|
}
|
|
else
|
|
{
|
|
$ergebnis_zahlen = "0";
|
|
$fehlermeldung = "Obwohl benötigt, wurden im Passwort keine Zahlen (1, 2, 3, ...) verwendet.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$ergebnis_zahlen = "0";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$ergebnis_zahlen = "1";
|
|
}
|
|
|
|
|
|
// Sonderzeichen
|
|
if ( $pruefe_sonderzeichen == "ja" )
|
|
{
|
|
if ( $ergebnis_zahlen == "1" )
|
|
{
|
|
if ( preg_match( "/[!§$%&()=?+#\-_ \[\]\{\}]/", $password ) == "1" )
|
|
{
|
|
$ergebnis_sonderzeichen = "1";
|
|
}
|
|
else
|
|
{
|
|
$ergebnis_sonderzeichen = "0";
|
|
$fehlermeldung = "Obwohl benötigt, wurden im Passwort keine Sonderzeichen ( !§$%&()=?+#-_ []{} ) verwendet.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$ergebnis_sonderzeichen = "0";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$ergebnis_sonderzeichen = "1";
|
|
}
|
|
|
|
|
|
// Passwortmindestlänge
|
|
if ( $ergebnis_sonderzeichen == "1" )
|
|
{
|
|
if ( strlen( $password ) >= $pruefe_min_laenge )
|
|
{
|
|
$ergebnis_min_laenge = "1";
|
|
}
|
|
else
|
|
{
|
|
$ergebnis_min_laenge = "0";
|
|
$fehlermeldung = "Das Passwort ist zu kurz (mindestens ".$pruefe_min_laenge." Zeichen).";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$ergebnis_min_laenge = "0";
|
|
}
|
|
|
|
|
|
// Passwortmaximumlänge
|
|
if ( $ergebnis_min_laenge == "1" )
|
|
{
|
|
if ( strlen( $password ) <= $pruefe_max_laenge )
|
|
{
|
|
$ergebnis_max_laenge = "1";
|
|
}
|
|
else
|
|
{
|
|
$ergebnis_max_laenge = "0";
|
|
$fehlermeldung = "Das Passwort ist zu lang (maximal ".$pruefe_max_laenge." Zeichen).";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$ergebnis_max_laenge = "0";
|
|
}
|
|
|
|
|
|
|
|
// Passwort-Zeichengruppen
|
|
$zeichengrp = bcadd( bcadd( preg_match( "/[A-Z]/", $password ), preg_match( "/[a-z]/", $password ) ), bcadd( preg_match( "/[0-9]/", $password ), preg_match( "/[!§$%&()=?+#\-_ \[\]\{\}]/", $password ) ) );
|
|
|
|
|
|
if ( $zeichengrp >= $min_grp )
|
|
{
|
|
if ( $zeichengrp <= $max_grp )
|
|
{
|
|
$ergebnis_zeichengrp = "1";
|
|
}
|
|
else
|
|
{
|
|
$ergebnis_zeichengrp = "0";
|
|
$fehlermeldung = "Es wurden zuviele Zeichengruppen (".$zeichengrp.") verwendet (max. erlaubt: ".$max_grp.").";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$ergebnis_zeichengrp = "0";
|
|
$fehlermeldung = "Es wurden zuwenige Zeichengruppen (".(int)$zeichengrp.") verwendet (min. benötigt: ".$min_grp.").";
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Zusammenfassen der einzelnen Prüfungen
|
|
|
|
$gesamt_ergebnis = $ergebnis_grossbuchstaben.$ergebnis_kleinbuchstaben.$ergebnis_zahlen.$ergebnis_sonderzeichen.$ergebnis_min_laenge.$ergebnis_max_laenge.$ergebnis_zeichengrp;
|
|
|
|
|
|
if ( strpos( $gesamt_ergebnis, "0" ) === false )
|
|
{
|
|
// das Ergebnis besteht nur aus Einsen "1", also ist alles gut
|
|
$rc = 0;
|
|
$meldung = "Das Passwort entspricht den Anforderungen.";
|
|
}
|
|
else
|
|
{
|
|
// das Ergebnis enthält Nullen "0", also wurde eine Richtlinie nicht eingehalten.
|
|
$rc = -1;
|
|
$meldung = $fehlermeldung;
|
|
}
|
|
|
|
}
|
|
else
|
|
{
|
|
$rc = -2;
|
|
$meldung = "Es wurde kein Passwort zur Prüfung übergeben.";
|
|
}
|
|
|
|
|
|
if ( $rc < 0 )
|
|
{
|
|
$level = 2;
|
|
}
|
|
else
|
|
{
|
|
$level = 4;
|
|
}
|
|
|
|
xlog( $level, "admin.pruefe_password: RC ".$rc.": ".$meldung );
|
|
return array( $rc, $meldung );
|
|
|
|
}
|
|
|
|
function existiert_dokument( $mandant_name, $dokument_id )
|
|
{
|
|
/****************
|
|
BESCHREIBUNG_____Prüft, ob ein Dokument existiert
|
|
RETURNS_____array( Dokument-ID, Meldung )
|
|
****************/
|
|
|
|
if ( strlen( $dokument_id ) > 0 )
|
|
{
|
|
|
|
$ok = existiert_mandant( $mandant_name );
|
|
|
|
// Feststellen der Dokument-ID zum Gruppennamen
|
|
$STATEMENT = "select i.dok_id from ca_index i, ca_dok_ablage a where i.dok_id = ".$dokument_id." and a.mandant_id = ".$ok[ 0 ]." and i.dok_id = a.dok_id;";
|
|
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
if ( $ergebnis[ 0 ] <> -1 )
|
|
{
|
|
if ( $ergebnis[ 0 ] > 0 )
|
|
{
|
|
$rc = $ergebnis[ 1 ][ 0 ][ "dok_id" ];
|
|
$meldung = "Das Dokument ".$dokument_id." existiert im Mandanten ".$mandant_name.".";
|
|
}
|
|
else
|
|
{
|
|
$rc = -1;
|
|
$meldung = "Das Dokument ".$gruppen_name." existiert im Mandanten ".$mandant_name." nicht.";
|
|
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -1;
|
|
$meldung = "Es ist ein Fehler aufgetreten: '".$ergebnis[ 1 ]."'.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -1;
|
|
$meldung = "Es wurde keine Dokument-ID angegeben.";
|
|
}
|
|
|
|
if ( $rc < 0 )
|
|
{
|
|
$level = 2;
|
|
}
|
|
else
|
|
{
|
|
$level = 6;
|
|
}
|
|
|
|
xlog( $level, "admin.existiert_dokument: ".$meldung );
|
|
|
|
return array( $rc, $meldung );
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function attribut_anlegen( $mandant_name, $attrib_name, $attrib_db_spalte, $attrib_wertemenge, $attrib_beschreibung )
|
|
{
|
|
$exekutor = $_SESSION[ "benutzer_anmeldename" ];
|
|
$ok = existiert_mandant( $mandant_name );
|
|
$connection = mysqli_connect( "localhost", "ca_db", "ca_db", "ca_system" );
|
|
|
|
if ( $ok[ 0 ] > 0 )
|
|
{
|
|
if ( mb_strtoupper( $exekutor, "UTF-8" ) == "SUPERUSER" )
|
|
{
|
|
$exec[ 0 ] = 1;
|
|
}
|
|
else
|
|
{
|
|
$exec = besitzt_benutzer_systemrecht( $mandant_name, $exekutor, "ADMINISTRATOR" );
|
|
}
|
|
|
|
if ( $exec[ 0 ] == 1 )
|
|
{
|
|
if ( strlen( $attrib_name ) > 0 )
|
|
{
|
|
if ( strlen( $attrib_db_spalte ) > 0 )
|
|
{
|
|
$raus = false;
|
|
if ( strlen( $attrib_wertemenge ) > 0 )
|
|
{
|
|
$ergebnis = existiert_wertemenge( $mandant_name, $attrib_wertemenge );
|
|
if ( $ergebnis[ 0 ] <> 1 )
|
|
{
|
|
$raus = true;
|
|
}
|
|
}
|
|
|
|
$a = liefere_attributinformationen( $mandant_name, $attrib_name );
|
|
|
|
if ( $a[ 0 ] > 0 )
|
|
{
|
|
$raus = true;
|
|
$ergebnis[ 0 ] = -3;
|
|
$ergebnis[ 1 ] = "Das Attribut ".$attrib_name." existiert bereits.";
|
|
}
|
|
|
|
if ( $raus == false )
|
|
{
|
|
$STATEMENT = "insert into ca_attribut ( mandant_id, attrib_name, attrib_db_spalte, attrib_wertemenge, attrib_beschreibung, attrib_erstellt_am, attrib_geaendert_am ) values ( ".$ok[ 0 ].", '".mysqli_real_escape_string( $connection, $attrib_name )."', '".mysqli_real_escape_string( $connection, $attrib_db_spalte )."', '".mysqli_real_escape_string( $connection, $attrib_wertemenge )."', '".mysqli_real_escape_string( $connection, $attrib_beschreibung )."', '".time()."', '' );";
|
|
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
if ( $ergebnis[ 0 ] > 0 )
|
|
{
|
|
$rc = $ergebnis[ 0 ];
|
|
$meldung = "Das Attribut <".$attrib_name."> wurde mit der ID ".$ergebnis[0]." angelegt.";
|
|
}
|
|
else
|
|
{
|
|
$rc = $ergebnis[ 0 ];
|
|
$meldung = $ergebnis[ 1 ];
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = $ergebnis[ 0 ];
|
|
$meldung = $ergebnis[ 1 ];
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -2;
|
|
$meldung = "Es wurde keine Ziel-DB-Spalte angegeben.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -1;
|
|
$meldung = "Es wurde kein Attributname angegeben.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -12;
|
|
$meldung = "Der ausführende Benutzer >".$exekutor."< besitzt nicht das notwendige Recht.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = $ok[ 0 ];
|
|
$meldung = $ok[ 1 ];
|
|
}
|
|
|
|
if ( $rc < 0 )
|
|
{
|
|
$level = 2;
|
|
}
|
|
else
|
|
{
|
|
$level = 4;
|
|
}
|
|
|
|
mysqli_close( $connection );
|
|
|
|
xlog( $level, "admin.erstelle_attribut: RC ".$rc.": ".$meldung );
|
|
|
|
return array( $rc, $meldung );
|
|
|
|
}
|
|
|
|
function liefere_attributinformationen( $mandant_name, $attrib_name )
|
|
{
|
|
$exekutor = $_SESSION[ "benutzer_anmeldename" ];
|
|
$ok = existiert_mandant( $mandant_name );
|
|
|
|
if ( $ok[ 0 ] > 0 )
|
|
{
|
|
if ( strlen( $attrib_name ) > 0 )
|
|
{
|
|
$STATEMENT = "select mandant_id, attrib_id, attrib_name, attrib_db_spalte, attrib_wertemenge, attrib_beschreibung, attrib_erstellt_am, attrib_geaendert_am from ca_attribut where mandant_id = ".$ok[0]." and attrib_name = '".$attrib_name."';";
|
|
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
if ( $ergebnis[ 0 ] > 0 )
|
|
{
|
|
$zeile = $ergebnis[ 1 ][ 0 ];
|
|
$attribut_array = array( );
|
|
|
|
$attribut_array[ "mandant_id" ] = (int) $zeile[ "mandant_id" ];
|
|
$attribut_array[ "attrib_id" ] = (int) $zeile[ "attrib_id" ];
|
|
$attribut_array[ "attrib_name" ] = (string) $zeile[ "attrib_name" ];
|
|
$attribut_array[ "attrib_db_spalte" ] = (string) $zeile[ "attrib_db_spalte" ];
|
|
$attribut_array[ "attrib_wertemenge" ] = (string) $zeile[ "attrib_wertemenge" ];
|
|
$attribut_array[ "attrib_beschreibung" ] = (string) $zeile[ "attrib_beschreibung" ];
|
|
$attribut_array[ "attrib_erstellt_am" ] = (string) $zeile[ "attrib_erstellt_am" ];
|
|
|
|
if ( strlen( $zeile[ "attrib_geaendert_am" ] ) > 0 )
|
|
{
|
|
$attrib_geaendert_am = (string) $zeile[ "attrib_geaendert_am" ];
|
|
}
|
|
else
|
|
{
|
|
$attrib_geaendert_am = "";
|
|
}
|
|
$attribut_array[ "attrib_geaendert_am" ] = $attrib_geaendert_am;
|
|
|
|
|
|
$rc = $attribut_array[ "attrib_id" ];
|
|
$meldung = "Liefere Informationen zum Attribut ".$attrib_name." im Mandanten ".$mandant_name.".";
|
|
}
|
|
else
|
|
{
|
|
if ( $ergebnis[ 0 ] == 0 )
|
|
{
|
|
$rc = 0;
|
|
$meldung = "Das Attribut ".$attrib_name." wurde nicht gefunden.";
|
|
}
|
|
else
|
|
{
|
|
$rc = -3;
|
|
$meldung = "Es ist ein Fehler aufgetreten: '".$ergebnis[ 1 ]."'.";
|
|
}
|
|
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -1;
|
|
$meldung = "Es wurde kein Attributname angegeben.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = $ok[ 0 ];
|
|
$meldung = $ok[ 1 ];
|
|
}
|
|
|
|
if ( $rc < 0 )
|
|
{
|
|
$level = 2;
|
|
}
|
|
else
|
|
{
|
|
$level = 4;
|
|
}
|
|
|
|
xlog( $level, "admin.liefere_attributinformationen: RC ".$rc.": ".$meldung );
|
|
|
|
return array( $rc, $meldung, $attribut_array );
|
|
}
|
|
|
|
function attribut_loeschen( $mandant_name, $attrib_name )
|
|
{
|
|
$exekutor = $_SESSION[ "benutzer_anmeldename" ];
|
|
$ok = existiert_mandant( $mandant_name );
|
|
|
|
if ( $ok[ 0 ] > 0 )
|
|
{
|
|
if ( mb_strtoupper( $exekutor, "UTF-8" ) == "SUPERUSER" )
|
|
{
|
|
$exec[ 0 ] = 1;
|
|
}
|
|
else
|
|
{
|
|
$exec = besitzt_benutzer_systemrecht( $mandant_name, $exekutor, "ADMINISTRATOR" );
|
|
}
|
|
|
|
if ( $exec[ 0 ] == 1 )
|
|
{
|
|
if ( strlen( $attrib_name ) > 0 )
|
|
{
|
|
// Prüfen, in welchen Dokumentarten ein Attribut enthalten ist, bevor es gelöscht wird.
|
|
$erg = in_welchen_dokarten_ist_attribut_enthalten( $mandant_name, $attrib_name );
|
|
|
|
if ( $erg[ 0 ] == 0 )
|
|
{
|
|
$STATEMENT = "delete from ca_attribut where mandant_id = ".$ok[ 0 ]." and attrib_name = '".$attrib_name."'";
|
|
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
if ( $ergebnis[ 0 ] == 0 )
|
|
{
|
|
$rc = 0;
|
|
$meldung = "Das Attribut ".$attrib_name." wurde im Mandanten ".$mandant_name." gelöscht.";
|
|
}
|
|
else
|
|
{
|
|
$rc = -2;
|
|
$meldung = "Das Attribut ".$attrib_name." konnte im Mandanten ".$mandant_name." nicht gelöscht werden. ".$ergebnis[ 1 ];
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if ( $erg[ 0 ] > 0 )
|
|
{
|
|
$rc = -3;
|
|
if ( $erg[ 0 ] == 1 )
|
|
{
|
|
$text = "in der Dokument-/Aktenart ";
|
|
}
|
|
else
|
|
{
|
|
$text = "in den Dokument-/ und Aktenarten ";
|
|
}
|
|
|
|
$meldung = "Das Attribut ".$attrib_name." kann nicht gelöscht werden, da es noch ".$text.$erg[ 3 ]." enthalten ist.";
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -1;
|
|
$meldung = "Es wurde kein Attributname angegeben.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -12;
|
|
$meldung = "Der ausführende Benutzer >".$exekutor."< besitzt nicht das notwendige Recht.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = $ok[ 0 ];
|
|
$meldung = $ok[ 1 ];
|
|
}
|
|
|
|
if ( $rc < 0 )
|
|
{
|
|
$level = 2;
|
|
}
|
|
else
|
|
{
|
|
$level = 4;
|
|
}
|
|
|
|
xlog( $level, "admin.attribut_loeschen: RC ".$rc.": ".$meldung );
|
|
|
|
return array( $rc, $meldung );
|
|
}
|
|
|
|
function attribut_aendern( $mandant_name, $attrib_name_alt, $attrib_db_spalte, $attrib_wertemenge = "", $attrib_beschreibung = "", $attrib_name_neu = "")
|
|
{
|
|
$exekutor = $_SESSION[ "benutzer_anmeldename" ];
|
|
$ok = existiert_mandant( $mandant_name );
|
|
$connection = mysqli_connect( "localhost", "ca_db", "ca_db", "ca_system" );
|
|
|
|
if ( $ok[ 0 ] > 0 )
|
|
{
|
|
if ( mb_strtoupper( $exekutor, "UTF-8" ) == "SUPERUSER" )
|
|
{
|
|
$exec[ 0 ] = 1;
|
|
}
|
|
else
|
|
{
|
|
$exec = besitzt_benutzer_systemrecht( $mandant_name, $exekutor, "ADMINISTRATOR" );
|
|
}
|
|
|
|
if ( $exec[ 0 ] == 1 )
|
|
{
|
|
if ( strlen( $attrib_name_neu ) > 0 )
|
|
{
|
|
if ( strlen( $attrib_db_spalte ) > 0 )
|
|
{
|
|
$raus = false;
|
|
if ( strlen( $attrib_wertemenge ) > 0 )
|
|
{
|
|
$ergebnis = existiert_wertemenge( $mandant_name, $attrib_wertemenge );
|
|
if ( $ergebnis[ 0 ] <> 1 )
|
|
{
|
|
$raus = true;
|
|
}
|
|
}
|
|
|
|
if ( $raus == false )
|
|
{
|
|
$STATEMENT = "update ca_attribut set attrib_name = '".mysqli_real_escape_string( $connection, $attrib_name_neu )."', attrib_db_spalte = '".mysqli_real_escape_string( $connection, $attrib_db_spalte )."', attrib_wertemenge = '".mysqli_real_escape_string( $connection, $attrib_wertemenge )."', attrib_beschreibung = '".mysqli_real_escape_string( $connection, $attrib_beschreibung )."', attrib_geaendert_am = '".time()."' where mandant_id = ".$ok[ 0 ]." and attrib_name = '".mysqli_real_escape_string( $connection, $attrib_name_alt )."';";
|
|
|
|
$sqlergebnis = xdb( $STATEMENT );
|
|
|
|
if ( $sqlergebnis[ 0 ] <> -1 )
|
|
{
|
|
$rc = $sqlergebnis[ 0 ];
|
|
if ( ( strlen( $attrib_name_neu ) > 0 ) && ( $attrib_name_neu <> $attrib_name_alt ) )
|
|
{
|
|
$meld = " (vormals ".$attrib_name_alt.")";
|
|
}
|
|
else
|
|
{
|
|
$meld = "";
|
|
}
|
|
$meldung = "Das Attribut ".$attrib_name_neu.$meld." wurde geändert.";
|
|
}
|
|
else
|
|
{
|
|
$rc = $sqlergebnis[ 0 ];
|
|
$meldung = $sqlergebnis[ 1 ];
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = $ergebnis[ 0 ];
|
|
$meldung = $ergebnis[ 1 ];
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -2;
|
|
$meldung = "Es wurde keine Ziel-DB-Spalte angegeben.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -1;
|
|
$meldung = "Es wurde kein Attributname angegeben.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -12;
|
|
$meldung = "Der ausführende Benutzer >".$exekutor."< besitzt nicht das notwendige Recht.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = $ok[ 0 ];
|
|
$meldung = $ok[ 1 ];
|
|
}
|
|
|
|
if ( $rc < 0 )
|
|
{
|
|
$level = 2;
|
|
}
|
|
else
|
|
{
|
|
$level = 4;
|
|
}
|
|
|
|
mysqli_close( $connection );
|
|
|
|
xlog( $level, "admin.attribut_aendern: RC ".$rc.": ".$meldung );
|
|
|
|
return array( $rc, $meldung );
|
|
|
|
}
|
|
|
|
function liefere_attributliste( $mandant_name, $liefere_sysattribs = true )
|
|
{
|
|
$ok_1 = existiert_mandant( $mandant_name );
|
|
|
|
$attributliste = array();
|
|
|
|
if ( $liefere_sysattribs !== true )
|
|
{
|
|
$liefere_sysattribs = false;
|
|
}
|
|
|
|
if ( $liefere_sysattribs )
|
|
{
|
|
$where = "";
|
|
}
|
|
else
|
|
{
|
|
$where = " and attrib_name not like '[%]'";
|
|
}
|
|
if ( $ok_1[ 0 ] > 0 )
|
|
{
|
|
$STATEMENT = "select attrib_name from ca_attribut where mandant_id = ".$ok_1[ 0 ].$where." order by attrib_name";
|
|
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
if ( $ergebnis[ 0 ] <> -1 )
|
|
{
|
|
$rc = $ergebnis[ 0 ];
|
|
$attributliste = $ergebnis[ 1 ];
|
|
$meldung = "Liefere ".$rc." Attribute des Mandants ".$mandant_name.".";
|
|
}
|
|
else
|
|
{
|
|
$rc = -1;
|
|
$meldung = "Es ist ein Fehler aufgetreten: '".$ergebnis[ 1 ]."'.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = $ok_1[ 0 ];
|
|
$meldung = $ok_1[ 1 ];
|
|
}
|
|
|
|
|
|
if ( $rc < 0 )
|
|
{
|
|
$level = 2;
|
|
}
|
|
else
|
|
{
|
|
$level = 4;
|
|
}
|
|
|
|
if ( $rc < 0 )
|
|
{
|
|
$level = 2;
|
|
}
|
|
else
|
|
{
|
|
$level = 4;
|
|
}
|
|
|
|
xlog( $level, "admin.liefere_attributliste: RC ".$rc.": ".$meldung );
|
|
|
|
return array( $rc, $meldung, $attributliste );
|
|
}
|
|
|
|
function attribut_suchen( $mandant_name, $suchstring )
|
|
{
|
|
$ok_1 = existiert_mandant( $mandant_name );
|
|
|
|
$attributliste = array();
|
|
|
|
if ( $ok_1[ 0 ] > 0 )
|
|
{
|
|
|
|
$STATEMENT = "select attrib_name from ca_attribut where mandant_id = ".$ok_1[ 0 ]." and attrib_name like '%".$suchstring."%' order by attrib_name";
|
|
|
|
//xlog( 4, $STATEMENT );
|
|
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
if ( $ergebnis[ 0 ] > 0 )
|
|
{
|
|
$rc = $ergebnis[ 0 ];
|
|
$attributliste = $ergebnis[ 1 ];
|
|
$meldung = "Liefere ".$rc." Attribute des Mandants ".$mandant_name.".";
|
|
}
|
|
else
|
|
{
|
|
|
|
$rc = -1;
|
|
$meldung = "Es ist ein Fehler aufgetreten: '".$ergebnis[ 1 ]."'.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = $ok_1[ 0 ];
|
|
$meldung = $ok_1[ 1 ];
|
|
}
|
|
|
|
if ( $rc < 0 )
|
|
{
|
|
$level = 2;
|
|
}
|
|
else
|
|
{
|
|
$level = 6;
|
|
}
|
|
|
|
xlog( $level, "admin.suche_attribut: RC ".$rc.": ".$meldung );
|
|
return array( $rc, $meldung, $attributliste );
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function dokart_anlegen( $mandant_name, $dokart_kuerzel, $dokart_name, $dokart_beschreibung, $dokart_typ, $depot, $arr_attribute, $flags )
|
|
{
|
|
$exekutor = $_SESSION[ "benutzer_anmeldename" ];
|
|
$ok = existiert_mandant( $mandant_name );
|
|
$dokart_kuerzel = mb_strtoupper( $dokart_kuerzel );
|
|
$connection = mysqli_connect( "localhost", "ca_db", "ca_db", "ca_system" );
|
|
|
|
if ( $ok[ 0 ] > 0 )
|
|
{
|
|
if ( mb_strtoupper( $exekutor, "UTF-8" ) == "SUPERUSER" )
|
|
{
|
|
$exec[ 0 ] = 1;
|
|
}
|
|
else
|
|
{
|
|
$exec = besitzt_benutzer_systemrecht( $mandant_name, $exekutor, "ADMINISTRATOR" );
|
|
}
|
|
|
|
if ( $exec[ 0 ] == 1 )
|
|
{
|
|
if ( strlen( $dokart_kuerzel ) > 0 )
|
|
{
|
|
if ( strpos( $dokart_kuerzel, "_" ) === false )
|
|
{
|
|
if ( strlen( $dokart_name ) > 0 )
|
|
{
|
|
if ( ( mb_strtoupper( $dokart_typ ) == "D" ) || ( mb_strtoupper( $dokart_typ ) == "A" ) )
|
|
{
|
|
/*
|
|
Aufbau des $arr_attribute-Arrays:
|
|
array( array( "attrib_name"=>name1, "pflichtfeld"=>pflicht ), array( "attrib_name"=>name2, ....
|
|
*/
|
|
|
|
if ( count( $arr_attribute ) > 0 )
|
|
{
|
|
$erg = liefere_attributliste( $mandant_name, true );
|
|
|
|
$breaker = false;
|
|
|
|
foreach ( $arr_attribute as $attrib )
|
|
{
|
|
$gefunden = false;
|
|
|
|
foreach ( $erg[ 2 ] as $zeile )
|
|
{
|
|
|
|
if ( $attrib[ "attrib_name" ] == $zeile[ "attrib_name" ] )
|
|
{
|
|
$gefunden = true;
|
|
break;
|
|
}
|
|
}
|
|
|
|
if ( $gefunden == false )
|
|
{
|
|
$breaker = true;
|
|
break;
|
|
}
|
|
}
|
|
|
|
if ( $breaker == false )
|
|
{
|
|
// jetzt kanns losgehen
|
|
|
|
// parsen der Flags
|
|
/*
|
|
if ( $flags[ "dok_ablage" ] == "D" )
|
|
{
|
|
$insert_flag = "D";
|
|
}
|
|
else
|
|
{
|
|
$insert_flag = "F";
|
|
}
|
|
*/
|
|
// ggf. parsen weiterer Flags....
|
|
|
|
$dep_ok = liefere_depotinformationen( $mandant_name, $depot );
|
|
|
|
if ( $dep_ok[ 0 ] > 0 )
|
|
{
|
|
// auffüllen noch nicht verwendeter Flags
|
|
for ( $i = 1; $i <= 15; $i ++ )
|
|
{
|
|
$insert_flag = $insert_flag."0";
|
|
}
|
|
|
|
$dokart_kuerzel = mb_strtoupper( $dokart_kuerzel );
|
|
|
|
$STATEMENT = "insert into ca_dokart ( mandant_id, dokart_kuerzel, dokart_name, dokart_beschreibung, dokart_typ, dokart_erstellt_am, flags, dokart_depot, dokart_geaendert_am ) values ( ".$ok[ 0 ].", '".mysqli_real_escape_string( $connection, $dokart_kuerzel )."', '".mysqli_real_escape_string( $connection, $dokart_name )."', '".mysqli_real_escape_string( $connection, $dokart_beschreibung )."', '".mysqli_real_escape_string( $connection, $dokart_typ )."', '".time()."', '".mysqli_real_escape_string( $connection, $insert_flag )."', '".mysqli_real_escape_string( $connection, $depot )."', 0 );";
|
|
|
|
//xlog(5, $STATEMENT );
|
|
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
if ( $ergebnis >= 0 )
|
|
{
|
|
// Jetzt müssen noch die Attribute zur Dokument-/Aktenart hinzugefügt werden.
|
|
|
|
$fehler = false;
|
|
$pos_in_maske = 0;
|
|
foreach( $arr_attribute as $attrib )
|
|
{
|
|
$pos_in_maske = bcadd( $pos_in_maske, 1 );
|
|
|
|
$erg = attrib_zu_dokart_hinzufuegen( $mandant_name, $dokart_kuerzel, $attrib[ "attrib_name" ], array(), $pos_in_maske );
|
|
|
|
if ( $erg[ 0 ] <= 0 )
|
|
{
|
|
$fehler = true;
|
|
break;
|
|
}
|
|
}
|
|
|
|
// Hinzufügen der Systemrechte
|
|
if ( $fehler == false )
|
|
{
|
|
$ergebnis = systemrecht_anlegen( $mandant_name, $dokart_typ."_".$dokart_kuerzel, 10, "root" );
|
|
$ergebnis = systemrecht_anlegen( $mandant_name, $dokart_typ."_".$dokart_kuerzel."_LESEN", 10, $dokart_typ."_".$dokart_kuerzel );
|
|
|
|
if ( $dokart_kuerzel != "SCHABLONE" )
|
|
{
|
|
$ergebnis = systemrecht_anlegen( $mandant_name, $dokart_typ."_".$dokart_kuerzel."_LOESCHEN", 10, $dokart_typ."_".$dokart_kuerzel );
|
|
$ergebnis = systemrecht_anlegen( $mandant_name, $dokart_typ."_".$dokart_kuerzel."_IMPORT", 10, $dokart_typ."_".$dokart_kuerzel );
|
|
$ergebnis = systemrecht_anlegen( $mandant_name, $dokart_typ."_".$dokart_kuerzel."_AENDERN", 10, $dokart_typ."_".$dokart_kuerzel );
|
|
}
|
|
|
|
$rc = 1;
|
|
$meldung = "Die Dokumentart ".$dokart_name." (".$dokart_kuerzel.") wurde erfolgreich angelegt.";
|
|
}
|
|
else
|
|
{
|
|
$rc = $erg[ 0 ];
|
|
$meldung = "Die Dokument-/Aktenart wurde angelegt. Beim Hinzufügen der Attribute gab es einen Fehler: >".$erg[ 1 ]."<";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = $ergebnis[ 0 ];
|
|
$meldung = $ergebnis[ 1 ];
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = $dep_ok[ 0 ];
|
|
$meldung = $dep_ok[ 1 ];
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -5;
|
|
$meldung = "Es wurden nicht existente Attribute (".$attrib[ "attrib_name" ].") angegeben.";
|
|
}
|
|
|
|
}
|
|
else
|
|
{
|
|
$rc = -4;
|
|
$meldung = "Es wurden keine Attribute angegeben.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -3;
|
|
$meldung = "Es wurde kein korrekter Dokumentarttyp angegeben.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -2;
|
|
$meldung = "Es wurde kein Dokumentartname angegeben.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -6;
|
|
$meldung = "Das Dokumentartkürzel enthält unerlaubte Unterstriche.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -1;
|
|
$meldung = "Es wurde kein Dokumentartkürzel angegeben.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -12;
|
|
$meldung = "Der ausführende Benutzer >".$exekutor."< besitzt nicht das notwendige Recht.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = $ok[ 0 ];
|
|
$meldung = $ok[ 1 ];
|
|
}
|
|
|
|
if ( $rc < 0 )
|
|
{
|
|
$level = 2;
|
|
}
|
|
else
|
|
{
|
|
$level = 4;
|
|
}
|
|
|
|
mysqli_close( $connection );
|
|
|
|
xlog( $level, "admin.dokumentart_anlegen: RC ".$rc.": ".$meldung );
|
|
|
|
return array( $rc, $meldung );
|
|
|
|
}
|
|
|
|
function liefere_dokartinformationen( $mandant_name, $dokart_kuerzel, $ausfuehrlich = false )
|
|
{
|
|
$ok = existiert_mandant( $mandant_name );
|
|
$dokart_kuerzel = mb_strtoupper( $dokart_kuerzel );
|
|
|
|
if ( $ok[ 0 ] > 0 )
|
|
{
|
|
if ( strlen( $dokart_kuerzel ) > 0 )
|
|
{
|
|
$STATEMENT = "select dokart_kuerzel, dokart_name, dokart_beschreibung, dokart_typ, flags, dokart_depot, dokart_erstellt_am, dokart_geaendert_am from ca_dokart where dokart_kuerzel = '".$dokart_kuerzel."' and mandant_id = ".$ok[ 0 ];
|
|
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
//xlog( 2, $STATEMENT );
|
|
|
|
//xlog( 1, "ergebnis ".$ergebnis[ 0 ] );
|
|
|
|
if ( $ergebnis[ 0 ] > 0 )
|
|
{
|
|
$zeile = $ergebnis[ 1 ][ 0 ];
|
|
$dokart = array();
|
|
|
|
$dokart[ "mandant_id" ] = $ok[ 0 ];
|
|
$dokart[ "dokart_kuerzel" ] = $zeile[ "dokart_kuerzel" ];
|
|
$dokart[ "dokart_name" ] = $zeile[ "dokart_name" ];
|
|
$dokart[ "dokart_beschreibung" ] = $zeile[ "dokart_beschreibung" ];
|
|
$dokart[ "dokart_typ" ] = $zeile[ "dokart_typ" ];
|
|
$dokart[ "dokart_depot" ] = $zeile[ "dokart_depot" ];
|
|
$dokart[ "flags" ] = $zeile[ "flags" ];
|
|
$dokart[ "dokart_erstellt_am" ] = $zeile[ "dokart_erstellt_am" ];
|
|
$dokart[ "dokart_geaendert_am" ] = $zeile[ "dokart_geaendert_am" ];
|
|
|
|
$dokart[ "dokart_dok_ablage" ] = substr( $zeile[ "flags" ], 0, 1 );
|
|
|
|
if ( $ausfuehrlich == true )
|
|
{
|
|
$STATEMENT = "select count(*) anzahl from ca_dok_ablage where dokart_kuerzel = '".$zeile[ "dokart_kuerzel" ]."'";
|
|
$anzahl = xdb( $STATEMENT );
|
|
$dokart[ "anzahl_doks" ] = $anzahl[ 1 ][ 0 ][ "anzahl" ];
|
|
}
|
|
else
|
|
{
|
|
$dokart[ "anzahl_doks" ] = "./.";
|
|
}
|
|
|
|
$attribute = liefere_attribute_zu_dokumentart( $mandant_name, $dokart_kuerzel );
|
|
|
|
if ( $attribute[ 0 ] > 0 )
|
|
{
|
|
// es wurden Attribute gefunden.
|
|
$dokart[ "attribute" ] = $attribute[ 2 ];
|
|
|
|
$rc = $attribute[ 0 ];
|
|
$meldung = "Liefere Informationen (inklusive ".$rc." Attribute) über Dokument-/Aktenart ".$dokart_kuerzel.".";
|
|
}
|
|
else
|
|
{
|
|
$rc = 0;
|
|
$meldung = "Liefere Informationen über Dokument-/Aktenart ".$dokart_kuerzel.".";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if ( $ergebnis[ 0 ] == 0 )
|
|
{
|
|
$rc = -2;
|
|
$meldung = "Die Dokument-/Aktenart ".$dokart_kuerzel." wurde nicht im System gefunden.";
|
|
}
|
|
else
|
|
{
|
|
$rc = -3;
|
|
$meldung = "Es ist ein Fehler aufgetreten: ".$ergebnis[ 1 ];
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -1;
|
|
$meldung = "Es wurde kein Dokument-/Aktenartkürzel angegeben.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = $ok[ 0 ];
|
|
$meldung = $ok[ 1 ];
|
|
}
|
|
|
|
if ( $rc < 0 )
|
|
{
|
|
$level = 2;
|
|
}
|
|
else
|
|
{
|
|
$level = 6;
|
|
}
|
|
|
|
xlog( $level, "admin.liefere_dokartinformationen: RC ".$rc.": ".$meldung );
|
|
|
|
return array( $rc, $meldung, $dokart );
|
|
}
|
|
|
|
function liefere_dokartinformationen_multi( $mandant_name, $dokart_kuerzel_arr, $ausfuehrlich = false )
|
|
{
|
|
$ok = existiert_mandant( $mandant_name );
|
|
//$dokart_kuerzel = mb_strtoupper( $dokart_kuerzel );
|
|
|
|
if ( $ok[ 0 ] > 0 )
|
|
{
|
|
if ( is_array( $dokart_kuerzel_arr ) )
|
|
{
|
|
$dokart_kuerzel = " ( ";
|
|
foreach( $dokart_kuerzel_arr as $kuerzel )
|
|
{
|
|
$dokart_kuerzel = $dokart_kuerzel."'".$kuerzel."', ";
|
|
}
|
|
|
|
$dokart_kuerzel = substr( $dokart_kuerzel, 0, -2 )." ) ";
|
|
|
|
$STATEMENT = "select dokart_kuerzel, dokart_name, dokart_beschreibung, dokart_typ, flags, dokart_depot, dokart_erstellt_am, dokart_geaendert_am from ca_dokart where dokart_kuerzel in ".$dokart_kuerzel." and mandant_id = ".$ok[ 0 ];
|
|
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
//xlog( 2, $STATEMENT );
|
|
|
|
//xlog( 1, "ergebnis ".$ergebnis[ 0 ] );
|
|
|
|
if ( $ergebnis[ 0 ] > 0 )
|
|
{
|
|
$e = array();
|
|
foreach( $ergebnis[ 1 ] as $zeile )
|
|
{
|
|
$dokart = array();
|
|
|
|
$dokart[ "mandant_id" ] = $ok[ 0 ];
|
|
$dokart[ "dokart_kuerzel" ] = $zeile[ "dokart_kuerzel" ];
|
|
$dokart[ "dokart_name" ] = $zeile[ "dokart_name" ];
|
|
$dokart[ "dokart_beschreibung" ] = $zeile[ "dokart_beschreibung" ];
|
|
$dokart[ "dokart_typ" ] = $zeile[ "dokart_typ" ];
|
|
$dokart[ "dokart_depot" ] = $zeile[ "dokart_depot" ];
|
|
$dokart[ "flags" ] = $zeile[ "flags" ];
|
|
$dokart[ "dokart_erstellt_am" ] = $zeile[ "dokart_erstellt_am" ];
|
|
$dokart[ "dokart_geaendert_am" ] = $zeile[ "dokart_geaendert_am" ];
|
|
|
|
$dokart[ "dokart_dok_ablage" ] = substr( $zeile[ "flags" ], 0, 1 );
|
|
|
|
if ( $ausfuehrlich == true )
|
|
{
|
|
$STATEMENT = "select count(*) anzahl from ca_dok_ablage where dokart_kuerzel = '".$zeile[ "dokart_kuerzel" ]."'";
|
|
$anzahl = xdb( $STATEMENT );
|
|
$dokart[ "anzahl_doks" ] = $anzahl[ 1 ][ 0 ][ "anzahl" ];
|
|
}
|
|
else
|
|
{
|
|
$dokart[ "anzahl_doks" ] = "./.";
|
|
}
|
|
|
|
$attribute = liefere_attribute_zu_dokumentart( $mandant_name, $dokart[ "dokart_kuerzel" ] );
|
|
|
|
if ( $attribute[ 0 ] > 0 )
|
|
{
|
|
// es wurden Attribute gefunden.
|
|
$dokart[ "attribute" ] = $attribute[ 2 ];
|
|
|
|
|
|
}
|
|
|
|
$e[ $dokart[ "dokart_kuerzel" ] ] = $dokart;
|
|
}
|
|
|
|
$rc = count( $e );
|
|
$meldung = "Liefere Informationen über die Dokumentarten ".$dokart_kuerzel.".";
|
|
|
|
|
|
}
|
|
else
|
|
{
|
|
if ( $ergebnis[ 0 ] == 0 )
|
|
{
|
|
$rc = -2;
|
|
$meldung = "Die Dokument-/Aktenarten ".$dokart_kuerzel." wurde nicht im System gefunden.";
|
|
}
|
|
else
|
|
{
|
|
$rc = -3;
|
|
$meldung = "Es ist ein Fehler aufgetreten: ".$ergebnis[ 1 ];
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -1;
|
|
$meldung = "Es wurde keine Dokument-/Aktenartkürzel in Arrayform angegeben.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = $ok[ 0 ];
|
|
$meldung = $ok[ 1 ];
|
|
}
|
|
|
|
if ( $rc < 0 )
|
|
{
|
|
$level = 2;
|
|
}
|
|
else
|
|
{
|
|
$level = 4;
|
|
}
|
|
|
|
xlog( $level, "admin.liefere_dokartinformationen: RC ".$rc.": ".$meldung );
|
|
|
|
return array( $rc, $meldung, $e );
|
|
}
|
|
|
|
function dokart_loeschen( $mandant_name, $dokart_kuerzel, $dokumente_loeschen = false )
|
|
{
|
|
$dokart_kuerzel = mb_strtoupper( $dokart_kuerzel );
|
|
$ok = existiert_mandant( $mandant_name );
|
|
|
|
// 1. Dokumente löschen
|
|
// 2. Attribute aus Dokumentart entfernen
|
|
// 3. Systemrechte löschen
|
|
// 4. Dokumentart löschen
|
|
|
|
$dokart = liefere_dokartinformationen( $mandant_name, $dokart_kuerzel );
|
|
|
|
if ( $dokart[ 0 ] > 0 )
|
|
{
|
|
// Dokumentart existiert.
|
|
|
|
// 1. Dokumente löschen (geht das schon?!)
|
|
if ( $dokumente_loeschen == true )
|
|
{
|
|
xlog( 3, "admin.dokart_loeschen: Dokumente löschen geht noch nicht!");
|
|
}
|
|
|
|
// 2. Attribute aus Dokumentart entfernen
|
|
$fehler = false;
|
|
foreach ( $dokart[ 2 ][ "attribute" ] as $attribut )
|
|
{
|
|
|
|
$erg = attrib_aus_dokart_loeschen( $mandant_name, $dokart_kuerzel, $attribut[ "attrib_name" ] );
|
|
if ( $erg[ 0 ] < 0 )
|
|
{
|
|
$fehler = true;
|
|
$rc = $erg[ 0 ];
|
|
$meldung = "Es ist ein Fehler aufgetreten: ".$erg[ 1 ];
|
|
}
|
|
}
|
|
|
|
|
|
|
|
if ( $fehler == false )
|
|
{
|
|
// 3. Systemrechte löschen
|
|
|
|
$ergebnis = systemrecht_loeschen( $mandant_name, $dokart[ 2 ][ "dokart_typ" ]."_".$dokart_kuerzel );
|
|
$ergebnis = systemrecht_loeschen( $mandant_name, $dokart[ 2 ][ "dokart_typ" ]."_".$dokart_kuerzel."_LESEN" );
|
|
$ergebnis = systemrecht_loeschen( $mandant_name, $dokart[ 2 ][ "dokart_typ" ]."_".$dokart_kuerzel."_LOESCHEN" );
|
|
$ergebnis = systemrecht_loeschen( $mandant_name, $dokart[ 2 ][ "dokart_typ" ]."_".$dokart_kuerzel."_IMPORT" );
|
|
$ergebnis = systemrecht_loeschen( $mandant_name, $dokart[ 2 ][ "dokart_typ" ]."_".$dokart_kuerzel."_AENDERN" );
|
|
|
|
// 4. Dokumentart löschen
|
|
|
|
$STATEMENT = "delete from ca_dokart where mandant_id = ".$ok[ 0 ]." and dokart_kuerzel = '".$dokart_kuerzel."'; ";
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
if ( $ergebnis[ 0 ] == 0 )
|
|
{
|
|
$rc = 0;
|
|
$meldung = "Die Dokumentart ".$dokart[ 2 ][ "dokart_name" ]." (".$dokart[ 2 ][ "dokart_kuerzel" ].") wurde gelöscht.";
|
|
}
|
|
else
|
|
{
|
|
$rc = -1;
|
|
$meldung = "Es ist ein Fehler aufgetreten: ".$ergebnis[ 1 ];
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if ( $rc < 0 )
|
|
{
|
|
$level = 2;
|
|
}
|
|
else
|
|
{
|
|
$level = 4;
|
|
}
|
|
|
|
xlog( $level, "admin.dokart_loeschen: RC ".$rc.": ".$meldung );
|
|
|
|
return array( $rc, $meldung, $dokart );
|
|
|
|
}
|
|
|
|
function dokart_aendern( $mandant_name, $dokart_kuerzel, $dokart_name, $dokart_beschreibung, $depot, $arr_attribute, $flags )
|
|
{
|
|
// $flags wird aktuell noch nicht ausgewertet.
|
|
$connection = mysqli_connect( "localhost", "ca_db", "ca_db", "ca_system" );
|
|
|
|
if ( strlen( $dokart_kuerzel ) > 0 )
|
|
{
|
|
$dokart_kuerzel = mb_strtoupper( $dokart_kuerzel );
|
|
|
|
$ok = existiert_mandant( $mandant_name );
|
|
|
|
if ( $ok[ 0 ] > 0 )
|
|
{
|
|
$dokart = liefere_dokartinformationen( $mandant_name, $dokart_kuerzel );
|
|
|
|
$STATEMENT = "update ca_dokart set dokart_name = '".mysqli_real_escape_string( $connection, $dokart_name )."', dokart_beschreibung = '".mysqli_real_escape_string( $connection, $dokart_beschreibung )."', dokart_geaendert_am = '".time()."', dokart_depot = '".mysqli_real_escape_string( $connection, $depot )."' where dokart_kuerzel = '".mysqli_real_escape_string( $connection, $dokart_kuerzel )."' and mandant_id = ".$ok[ 0 ];
|
|
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
if ( $ergebnis[ 0 ] == 0 )
|
|
{
|
|
// jetzt noch Attribute aktualisieren
|
|
|
|
|
|
// zuerst die löschen, die nicht mehr in der Dokumentart enthalten sind
|
|
foreach( $dokart[ 2 ][ "attribute" ] as $aktuelles_attribut )
|
|
{
|
|
$gefunden = false;
|
|
foreach( $arr_attribute as $neues_attribut )
|
|
{
|
|
if ( $aktuelles_attribut[ "attrib_name" ] == $neues_attribut[ "attrib_name" ] )
|
|
{
|
|
$gefunden = true;
|
|
break;
|
|
}
|
|
}
|
|
if ( $gefunden == false )
|
|
{
|
|
// Lösche das Attribut aus der Dokumentart
|
|
|
|
$erg = attrib_aus_dokart_loeschen( $mandant_name, $dokart_kuerzel, $aktuelles_attribut[ "attrib_name" ] );
|
|
|
|
}
|
|
}
|
|
|
|
|
|
// dann die hinzufügen, die dazugekommen sind
|
|
|
|
foreach( $arr_attribute as $neues_attribut )
|
|
{
|
|
$gefunden = false;
|
|
foreach( $dokart[ 2 ][ "attribute" ] as $aktuelles_attribut )
|
|
{
|
|
if ( $aktuelles_attribut[ "attrib_name" ] == $neues_attribut[ "attrib_name" ] )
|
|
{
|
|
$gefunden = true;
|
|
break;
|
|
}
|
|
}
|
|
if ( $gefunden == false )
|
|
{
|
|
// Füge das Attribut der Dokumentart hinzu
|
|
|
|
$erg = attrib_zu_dokart_hinzufuegen( $mandant_name, $dokart_kuerzel, $neues_attribut[ "attrib_name" ], array(), count( $dokart[ 2 ][ "attribute" ] ) + 1 );
|
|
|
|
}
|
|
}
|
|
|
|
$rc = 0;
|
|
$meldung = "Die Dokumentart ".$dokart_name." (".$dokart_kuerzel.") wurde geändert.";
|
|
}
|
|
else
|
|
{
|
|
$rc = -2;
|
|
$meldung = "Es ist ein Fehler aufgetreten: ".$ergebnis[ 1 ];
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -1;
|
|
$meldung = "Es wurde kein Dokument-/Aktenartkürzel angegeben.";
|
|
}
|
|
|
|
if ( $rc < 0 )
|
|
{
|
|
$level = 2;
|
|
}
|
|
else
|
|
{
|
|
$level = 4;
|
|
}
|
|
|
|
mysqli_close( $connection );
|
|
|
|
xlog( $level, "admin.dokart_aendern: RC ".$rc.": ".$meldung );
|
|
|
|
return array( $rc, $meldung );
|
|
}
|
|
|
|
function liefere_dok_akten_art_liste( $mandant_name, $menge = "", $liefere_sysdokarten = true )
|
|
{
|
|
// $menge => "A" für Aktenarten, "D" für Dokumentarten
|
|
$ok = existiert_mandant( $mandant_name );
|
|
|
|
if ( $ok[ 0 ] > 0 )
|
|
{
|
|
if ( $liefere_sysdokarten !== true )
|
|
{
|
|
$liefere_sysdokarten = false;
|
|
}
|
|
|
|
if ( $liefere_sysdokarten )
|
|
{
|
|
$where_2 = "";
|
|
}
|
|
else
|
|
{
|
|
$sysdokarten = liefere_wertemenge_elemente( $mandant_name, "systemdokarten" );
|
|
|
|
|
|
|
|
if ( $sysdokarten[ 0 ] > 0 )
|
|
{
|
|
$where_2 = " and dokart_kuerzel not in ( ";
|
|
foreach ( $sysdokarten[ 2 ] as $dokart_kurz )
|
|
{
|
|
$where_2 = $where_2." '".$dokart_kurz[ "alpha_01" ]."', ";
|
|
}
|
|
$where_2 = substr( $where_2, 0, strlen( $where_2 ) - 2 )." )";
|
|
}
|
|
|
|
}
|
|
|
|
if ( strlen( $menge ) > 0 )
|
|
{
|
|
$where = " and dokart_typ = '".$menge."'";
|
|
}
|
|
else
|
|
{
|
|
$where = "";
|
|
}
|
|
|
|
$STATEMENT = "select dokart_kuerzel, dokart_name, dokart_typ from ca_dokart where mandant_id = ".$ok[ 0 ].$where.$where_2." order by dokart_name";
|
|
|
|
//xlog( 6, $STATEMENT );
|
|
|
|
$erg = xdb( $STATEMENT );
|
|
|
|
if ( $erg[ 0 ] > 0 )
|
|
{
|
|
$rc = $erg[ 0 ];
|
|
$meldung = "Liefere ".$rc." Dokument-/Aktenarten für Mandant ".$mandant_name.".";
|
|
$dokart = $erg[ 1 ];
|
|
}
|
|
else
|
|
{
|
|
if ( $erg[ 0 ] == 0 )
|
|
{
|
|
$rc = 0;
|
|
$meldung = "Es wurden im Mandanten ".$mandant_name." keine Dokument-/Aktenarten gefunden.";
|
|
}
|
|
else
|
|
{
|
|
$rc = $erg[ 0 ];
|
|
$meldung = "Es ist ein Fehler aufgetreten: ".$erg[ 1 ];
|
|
}
|
|
}
|
|
|
|
}
|
|
else
|
|
{
|
|
$rc = $ok[ 0 ];
|
|
$meldung = $ok[ 1 ];
|
|
}
|
|
|
|
if ( $rc < 0 )
|
|
{
|
|
$level = 2;
|
|
}
|
|
else
|
|
{
|
|
$level = 4;
|
|
}
|
|
|
|
xlog( $level, "admin.liefere_dok_akten_art_liste: RC ".$rc.": ".$meldung );
|
|
|
|
return array( $rc, $meldung, $dokart );
|
|
}
|
|
|
|
function liefere_aktenartliste( $mandant_name )
|
|
{
|
|
$ok = liefere_dok_akten_art_liste( $mandant_name, "A" );
|
|
|
|
return $ok;
|
|
}
|
|
|
|
function liefere_dokartliste( $mandant_name )
|
|
{
|
|
$ok = liefere_dok_akten_art_liste( $mandant_name, "D" );
|
|
|
|
return $ok;
|
|
}
|
|
|
|
function dokart_suchen( $mandant_name, $suchstring )
|
|
{}
|
|
|
|
|
|
|
|
|
|
function attrib_zu_dokart_hinzufuegen( $mandant_name, $dokart_kuerzel, $attrib_name, $flags = array(), $pos_in_maske = 9 )
|
|
{
|
|
$exekutor = $_SESSION[ "benutzer_anmeldename" ];
|
|
$ok = existiert_mandant( $mandant_name );
|
|
$dokart_kuerzel = mb_strtoupper( $dokart_kuerzel );
|
|
$connection = mysqli_connect( "localhost", "ca_db", "ca_db", "ca_system" );
|
|
|
|
|
|
|
|
if ( $ok[ 0 ] > 0 )
|
|
{
|
|
if ( mb_strtoupper( $exekutor, "UTF-8" ) == "SUPERUSER" )
|
|
{
|
|
$exec[ 0 ] = 1;
|
|
}
|
|
else
|
|
{
|
|
$exec = besitzt_benutzer_systemrecht( $mandant_name, $exekutor, "ADMINISTRATOR" );
|
|
}
|
|
|
|
if ( $exec[ 0 ] == 1 )
|
|
{
|
|
if ( strlen( $dokart_kuerzel ) > 0 )
|
|
{
|
|
$erg = ist_attrib_in_dokart_enthalten( $mandant_name, $dokart_kuerzel, $attrib_name );
|
|
|
|
if ( $erg[ 0 ] <= 0 )
|
|
{
|
|
// Attribut ist nicht in Dokumentart enthalten. Es kann also hinzugefügt werden.
|
|
|
|
// Herausfinden der Attribut-ID
|
|
$ergeb = liefere_attributinformationen( $mandant_name, $attrib_name );
|
|
|
|
if ( $ergeb[ 0 ] > 0 )
|
|
{
|
|
$aid = $ergeb[ 0 ];
|
|
// Herausfinden der Flags
|
|
|
|
if ( strlen( $flags[ "pflicht" ] ) > 0 )
|
|
{
|
|
$flags_setup = "1";
|
|
}
|
|
else
|
|
{
|
|
$flags_setup = "0";
|
|
}
|
|
|
|
$flags_setup = $flags_setup."00000000000000"; // 14 Nullen. Eine ist belegt.
|
|
|
|
$attrib_laenge = "";
|
|
|
|
if ( strpos( $ergeb[ 2 ][ "attrib_db_spalte" ], "num" ) !== false )
|
|
{
|
|
$sql_attrib_laenge = ", attrib_laenge ";
|
|
$wert_attrib_laenge = ", 3 ";
|
|
}
|
|
else
|
|
{
|
|
$sql_attrib_laenge = "";
|
|
$wert_attrib_laenge = "";
|
|
}
|
|
|
|
$STATEMENT = "insert into ca_dokart_attrib ( mandant_id, dokart_kuerzel, attrib_id, flags, pos_in_maske, hinzugefuegt_am ".$sql_attrib_laenge." ) values ( ".$ok[ 0 ].", '".mysqli_real_escape_string( $connection, $dokart_kuerzel )."', ".mysqli_real_escape_string( $connection, $aid ).", '".mysqli_real_escape_string( $connection, $flags_setup )."', ".mysqli_real_escape_string( $connection, $pos_in_maske ).", '".time()."' ".$wert_attrib_laenge." );";
|
|
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
if ( $ergebnis[ 0 ] >= 0 )
|
|
{
|
|
$rc = 1;
|
|
$meldung = "Das Attribut ".$attrib_name." wurde der Dokument-/Aktenart ".$dokart_kuerzel." hinzugefügt.";
|
|
}
|
|
else
|
|
{
|
|
$rc = $ergebnis[ 0 ];
|
|
$meldung = $ergebnis[ 1 ];
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = $ergeb[ 0 ];
|
|
$meldung = $ergeb[ 1 ];
|
|
}
|
|
|
|
|
|
}
|
|
else
|
|
{
|
|
// Attribut ist in Dokumentart enthalten
|
|
$rc = $erg[ 0 ];
|
|
$meldung = $erg[ 1 ];
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -1;
|
|
$meldung = "Es wurde kein Dokument-/Aktenartkürzel angegeben.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -12;
|
|
$meldung = "Der ausführende Benutzer >".$exekutor."< besitzt nicht das notwendige Recht.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = $ok[ 0 ];
|
|
$meldung = $ok[ 1 ];
|
|
}
|
|
|
|
if ( $rc < 0 )
|
|
{
|
|
$level = 2;
|
|
}
|
|
else
|
|
{
|
|
$level = 4;
|
|
}
|
|
|
|
xlog( $level, "admin.attrib_zu_dokuart_hinzufuegen: RC ".$rc.": ".$meldung );
|
|
|
|
return array( $rc, $meldung );
|
|
}
|
|
|
|
function ist_attrib_in_dokart_enthalten( $mandant_name, $dokart_kuerzel, $attrib_name )
|
|
{
|
|
$ok = existiert_mandant( $mandant_name );
|
|
$dokart_kuerzel = mb_strtoupper( $dokart_kuerzel );
|
|
|
|
if ( $ok[ 0 ] > 0 )
|
|
{
|
|
if ( strlen( $dokart_kuerzel ) > 0 )
|
|
{
|
|
if ( strlen( $attrib_name ) > 0 )
|
|
{
|
|
$erg = liefere_attributinformationen( $mandant_name, $attrib_name );
|
|
//erg2 = function liefere_dokumentartinformationen( $mandant_name, $dokart_kuerzel ); -- fehlt noch, weil die Funktion noch nicht implementiert ist.
|
|
|
|
if ( $erg[ 0 ] > 0 )
|
|
{
|
|
$STATEMENT = "select count(*) anzahl from ca_dokart_attrib where mandant_id = ".$ok[ 0 ]." and dokart_kuerzel = '".$dokart_kuerzel."' and attrib_id = ".$erg[ 0 ].";";
|
|
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
if ( $ergebnis[ 0 ] <> -1 )
|
|
{
|
|
//$zeile = $ergebnis[ 1 ][ 0 ];
|
|
|
|
if ( $ergebnis[ 1 ][ 0 ][ "anzahl" ] == "0" )
|
|
{
|
|
$rc = 0;
|
|
$meldung = "Das Attribut ".$attrib_name." ist nicht in der Dokument-/Aktenart ".$dokart_kuerzel." enthalten.";
|
|
}
|
|
else
|
|
{
|
|
$rc = $erg[ 0 ];
|
|
$meldung = "Das Attribut ".$attrib_name." ist in der Dokument-/Aktenart ".$dokart_kuerzel." enthalten.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -4;
|
|
$meldung = $ergebnis[ 1 ];
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -3;
|
|
$meldung = "Das angegebene Attribut existiert nicht.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -2;
|
|
$meldung = "Es wurde kein Attributname angegeben.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -1;
|
|
$meldung = "Es wurde kein Dokument-/Aktenartkürzel angegeben.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = $ok[ 0 ];
|
|
$meldung = $ok[ 1 ];
|
|
}
|
|
|
|
if ( $rc < 0 )
|
|
{
|
|
$level = 2;
|
|
}
|
|
else
|
|
{
|
|
$level = 4;
|
|
}
|
|
|
|
xlog( $level, "admin.ist_attrib_in_dokart_enthalten: RC ".$rc.": ".$meldung );
|
|
|
|
return array( $rc, $meldung );
|
|
}
|
|
|
|
function liefere_attribute_zu_dokumentart( $mandant_name, $dokart_kuerzel )
|
|
{
|
|
$ok = existiert_mandant( $mandant_name );
|
|
$dokart_kuerzel = mb_strtoupper( $dokart_kuerzel );
|
|
|
|
if ( $ok[ 0 ] > 0 )
|
|
{
|
|
if ( strlen( $dokart_kuerzel ) > 0 )
|
|
{
|
|
$STATEMENT = "select a.attrib_id attrib_id, a.dokart_kuerzel dokart_kuerzel, a.pos_in_maske pos_in_maske, a.attrib_laenge attrib_laenge, a.attrib_einheit attrib_einheit, a.flags flags, a.hinzugefuegt_am hinzugefuegt_am, a.mandant_id mandant_id, b.attrib_beschreibung attrib_beschreibung, b.attrib_db_spalte attrib_db_spalte, b.attrib_erstellt_am attrib_erstellt_am, b.attrib_geaendert_am attrib_geaendert_am, b.attrib_name attrib_name, b.attrib_wertemenge attrib_wertemenge from ca_dokart_attrib a, ca_attribut b where a.attrib_id = b.attrib_id and a.mandant_id = b.mandant_id and a.mandant_id = ".$ok[ 0 ]." and a.dokart_kuerzel = '".$dokart_kuerzel."' order by a.pos_in_maske, a.attrib_id";
|
|
|
|
//xlog( 4, $STATEMENT );
|
|
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
if ( $ergebnis[ 0 ] > 0 )
|
|
{
|
|
$dokart_attribs = array();
|
|
foreach( $ergebnis[ 1 ] as $zeile )
|
|
{
|
|
//xlog( 4, $zeile[ "attrib_db_spalte"] );
|
|
|
|
if ( substr( $zeile[ "flags" ], 0, 1 ) == 0 )
|
|
{
|
|
$pflicht = false;
|
|
}
|
|
else
|
|
{
|
|
$pflicht = true;
|
|
}
|
|
//xlog( 4, $zeile[ "attrib_db_spalte"] ." => ".substr( $zeile[ "flags" ], 0, 1 )." => ".$pflicht );
|
|
|
|
|
|
switch ( substr( $zeile[ "flags" ], 1, 1 ) )
|
|
{
|
|
case "0":
|
|
$farbe = "standard";
|
|
break;
|
|
case "1":
|
|
$farbe = "gruen";
|
|
break;
|
|
case "2":
|
|
$farbe = "blau";
|
|
break;
|
|
case "3":
|
|
$farbe = "gelb";
|
|
break;
|
|
case "4":
|
|
$farbe = "rot";
|
|
break;
|
|
case "5":
|
|
$farbe = "braun";
|
|
break;
|
|
}
|
|
|
|
switch ( substr( $zeile[ "flags" ], 2, 1 ) )
|
|
{
|
|
/*
|
|
$fett = Bit 1
|
|
$unterstrichen = Bit 2
|
|
$kursiv = Bit 3
|
|
*/
|
|
case "0":
|
|
$fett = false;
|
|
$unterstrichen = false;
|
|
$kursiv = false;
|
|
break;
|
|
case "1":
|
|
$fett = true;
|
|
$unterstrichen = false;
|
|
$kursiv = false;
|
|
break;
|
|
case "2":
|
|
$fett = false;
|
|
$unterstrichen = true;
|
|
$kursiv = false;
|
|
break;
|
|
case "3":
|
|
$fett = true;
|
|
$unterstrichen = true;
|
|
$kursiv = false;
|
|
break;
|
|
case "4":
|
|
$fett = false;
|
|
$unterstrichen = false;
|
|
$kursiv = true;
|
|
break;
|
|
case "5":
|
|
$fett = true;
|
|
$unterstrichen = false;
|
|
$kursiv = true;
|
|
break;
|
|
case "6":
|
|
$fett = false;
|
|
$unterstrichen = true;
|
|
$kursiv = true;
|
|
break;
|
|
case "7":
|
|
$fett = true;
|
|
$unterstrichen = true;
|
|
$kursiv = true;
|
|
break;
|
|
}
|
|
|
|
if ( substr( $zeile[ "flags" ], 3, 1 ) == 0 )
|
|
{
|
|
$vorhanden = false;
|
|
}
|
|
else
|
|
{
|
|
$vorhanden = true;
|
|
}
|
|
|
|
if ( substr( $zeile[ "flags" ], 4, 1 ) == 0 )
|
|
{
|
|
$titel = false;
|
|
}
|
|
else
|
|
{
|
|
$titel = true;
|
|
}
|
|
|
|
|
|
//$pflicht.$farbe.$fuk.$vorhanden.$titel.$pos_in_maske."000000000";
|
|
|
|
$pos_in_maske = $zeile[ "pos_in_maske" ];
|
|
|
|
|
|
|
|
|
|
|
|
$attrib_typ = explode( "_", $zeile[ "attrib_db_spalte"] );
|
|
if ( mb_strtoupper( $attrib_typ[ 0 ] ) == "P" )
|
|
{
|
|
$attrib_typ = $attrib_typ[ 0 ]."_".$attrib_typ[ 1 ];
|
|
}
|
|
else
|
|
{
|
|
$attrib_typ = $attrib_typ[ 0 ];
|
|
}
|
|
|
|
|
|
$dokart_attribs[ $zeile[ "attrib_db_spalte"] ] = array( "attrib_laenge"=>$zeile[ "attrib_laenge"], "attrib_einheit"=>$zeile[ "attrib_einheit"], "attrib_pflicht"=>$pflicht, "attrib_farbe"=>$farbe, "attrib_layout_fett"=>$fett, "attrib_layout_unterstrichen"=>$unterstrichen, "attrib_layout_kursiv"=>$kursiv, "attrib_id"=>$zeile[ "attrib_id"], "dokart_kuerzel"=>$zeile[ "dokart_kuerzel"], "flags"=>$zeile[ "flags"], "hinzugefuegt_am"=>$zeile[ "hinzugefuegt_am"], "mandant_id"=>$zeile[ "mandant_id"], "attrib_beschreibung"=>$zeile[ "attrib_beschreibung"], "attrib_db_spalte"=>$zeile[ "attrib_db_spalte"], "attrib_erstellt_am"=>$zeile[ "attrib_erstellt_am"], "attrib_geaendert_am"=>$zeile[ "attrib_geaendert_am"], "attrib_name"=>$zeile[ "attrib_name"], "attrib_wertemenge"=>$zeile[ "attrib_wertemenge"], "attrib_vorhandene_werte"=>$vorhanden, "attrib_typ"=>$attrib_typ, "attrib_titel"=>$titel, "attrib_pos_in_maske"=>$pos_in_maske );
|
|
}
|
|
$rc = count( $dokart_attribs );
|
|
$meldung = "Liefere ".$rc." Attribute für Dokument-/Aktenart ".$dokart_kuerzel.".";
|
|
}
|
|
else
|
|
{
|
|
if ( $ergebnis[ 0 ] == 0 )
|
|
{
|
|
$rc = 0;
|
|
$meldung = "Es wurden keine Attribute für Dokument-/Aktenart ".$dokart_kuerzel." gefunden.";
|
|
}
|
|
else
|
|
{
|
|
$rc = $ergebnis[ 0 ];
|
|
$meldung = $ergebnis[ 1 ];
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -1;
|
|
$meldung = "Es wurde kein Dokument-/Aktenartkürzel angegeben.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = $ok[ 0 ];
|
|
$meldung = $ok[ 1 ];
|
|
}
|
|
|
|
if ( $rc < 0 )
|
|
{
|
|
$level = 2;
|
|
}
|
|
else
|
|
{
|
|
$level = 6;
|
|
}
|
|
|
|
xlog( $level, "admin.liefere_attribute_zu_dokumentart: RC ".$rc.": ".$meldung );
|
|
|
|
return array( $rc, $meldung, $dokart_attribs );
|
|
|
|
}
|
|
|
|
function attrib_aus_dokart_loeschen( $mandant_name, $dokart_kuerzel, $attrib_name )
|
|
{
|
|
$erg = ist_attrib_in_dokart_enthalten( $mandant_name, $dokart_kuerzel, $attrib_name );
|
|
|
|
$ok = existiert_mandant( $mandant_name );
|
|
|
|
$dokart_kuerzel = mb_strtoupper( $dokart_kuerzel );
|
|
|
|
if ( $erg[ 0 ] > 0 )
|
|
{
|
|
$STATEMENT = "delete from ca_dokart_attrib where dokart_kuerzel = '".$dokart_kuerzel."' and attrib_id = ".$erg[ 0 ]." and mandant_id = ".$ok[ 0 ].";";
|
|
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
if ( $ergebnis[ 0 ] == 0 )
|
|
{
|
|
$rc = 0;
|
|
$meldung = "Das Attribut ".$attrib_name." wurde aus der Dokumentart ".$dokart_kuerzel." gelöscht.";
|
|
}
|
|
else
|
|
{
|
|
$rc = $ergebnis[ 0 ];
|
|
$meldung = "Das Attribut ".$attrib_name." wurde nicht aus der Dokumentart ".$dokart_kuerzel." gelöscht: ".$ergebnis[ 1 ];
|
|
}
|
|
|
|
}
|
|
else
|
|
{
|
|
if ( $erg[ 0 ] == 0 )
|
|
{
|
|
$rc = 0;
|
|
$meldung = "Das Attribut ".$attrib_name." ist nicht in der Dokumentart ".$dokart_kuerzel." enthalten.";
|
|
}
|
|
else
|
|
{
|
|
$rc = $erg[ 0 ];
|
|
$meldung = "Bei der Verarbeitung ist ein Fehler aufgetreten: ".$erg[ 1 ];
|
|
}
|
|
}
|
|
|
|
if ( $rc < 0 )
|
|
{
|
|
$level = 2;
|
|
}
|
|
else
|
|
{
|
|
$level = 4;
|
|
}
|
|
|
|
xlog( $level, "admin.attrib_aus_dokart_loeschen: RC ".$rc.": ".$meldung );
|
|
|
|
return array( $rc, $meldung );
|
|
}
|
|
|
|
function in_welchen_dokarten_ist_attribut_enthalten( $mandant_name, $attrib_name )
|
|
{
|
|
$ok = existiert_mandant( $mandant_name );
|
|
|
|
if ( strlen( $attrib_name ) > 0 )
|
|
{
|
|
$STATEMENT = "select d.dokart_kuerzel dokart_kuerzel from ca_dokart_attrib d, ca_attribut a where d.attrib_id = a.attrib_id and a.attrib_name = '".$attrib_name."' and a.mandant_id = ".$ok[ 0 ];
|
|
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
if ( $ergebnis[ 0 ] > 0 )
|
|
{
|
|
foreach( $ergebnis[ 1 ] as $zeile )
|
|
{
|
|
$dokartliste_arr[] = $zeile[ "dokart_kuerzel" ];
|
|
$dokartliste_txt = $dokartliste_txt.$zeile[ "dokart_kuerzel" ]." | ";
|
|
}
|
|
|
|
$dokartliste_txt = substr( $dokartliste_txt, 0, strlen( $dokartliste_txt ) - 3 );
|
|
|
|
$rc = $ergebnis[ 0 ];
|
|
$meldung = "Das Attribut ".$attrib_name." ist in ".$rc." Dokument-/Aktenarten enthalten.";
|
|
}
|
|
else if ( $ergebnis[ 0 ] == 0 )
|
|
{
|
|
$dokartliste_arr = array();
|
|
|
|
$rc = $ergebnis[ 0 ];
|
|
$meldung = "Das Attribut ".$attrib_name." ist in ".$rc." Dokument-/Aktenarten enthalten.";
|
|
}
|
|
else
|
|
{
|
|
$rc = -2;
|
|
$meldung = "Es ist ein Fehler aufgetreten: ".$ergebnis[ 1 ];
|
|
}
|
|
|
|
}
|
|
else
|
|
{
|
|
$rc = -1;
|
|
$meldung = "Es wurde kein Attribut angegeben.";
|
|
}
|
|
|
|
if ( $rc < 0 )
|
|
{
|
|
$level = 2;
|
|
}
|
|
else
|
|
{
|
|
$level = 4;
|
|
}
|
|
|
|
xlog( $level, "admin.in_welchen_dokarten_ist_attribut_enthalten: RC ".$rc.": ".$meldung );
|
|
|
|
return array( $rc, $meldung, $dokartliste_arr, $dokartliste_txt );
|
|
}
|
|
|
|
function attrib_in_dokart_konfigurieren( $mandant_name, $dokart_kuerzel, $attrib_name, $flags_arr )
|
|
{
|
|
/*
|
|
erwartet ein Array in der Form:
|
|
|
|
$flags_arr[ "pflicht" ] = true
|
|
$flags_arr[ "farbe" ] = "gruen"
|
|
$flags_arr[ "fett" ] = false
|
|
$flags_arr[ "unterstrichen" ] = false
|
|
$flags_arr[ "kursiv" ] = false
|
|
$flags_arr[ "titel" ] = false
|
|
$flags_arr[ "einheit" ] = "km/h";
|
|
$flags_arr[ "anzahl_nachkommastellen" ] = 3;
|
|
|
|
Falls einer der Werte nicht angegeben wurde, wird auf "standard" bzw. false defaulted.
|
|
*/
|
|
$ok = existiert_mandant( $mandant_name );
|
|
$connection = mysqli_connect( "localhost", "ca_db", "ca_db", "ca_system" );
|
|
|
|
$dokart_kuerzel = mb_strtoupper( $dokart_kuerzel );
|
|
|
|
if ( $ok[ 0 ] > 0 )
|
|
{
|
|
$erg = ist_attrib_in_dokart_enthalten( $mandant_name, $dokart_kuerzel, $attrib_name );
|
|
if ( $erg[ 0 ] > 0 )
|
|
{
|
|
if ( $flags_arr[ "pflicht" ] == true )
|
|
{
|
|
$pflicht = "1";
|
|
}
|
|
else
|
|
{
|
|
$pflicht = "0";
|
|
}
|
|
|
|
if ( $flags_arr[ "vorhandene_werte" ] == true )
|
|
{
|
|
$vorhanden = "1";
|
|
}
|
|
else
|
|
{
|
|
$vorhanden = "0";
|
|
}
|
|
|
|
//xlog( 1, "pflicht >".$flags_arr[ "pflicht" ]."< ");
|
|
|
|
switch ( $flags_arr[ "farbe" ] )
|
|
{
|
|
case "standard":
|
|
$farbe = "0";
|
|
break;
|
|
case "gruen":
|
|
$farbe = "1";
|
|
break;
|
|
case "blau":
|
|
$farbe = "2";
|
|
break;
|
|
case "gelb":
|
|
$farbe = "3";
|
|
break;
|
|
case "rot":
|
|
$farbe = "4";
|
|
break;
|
|
case "braun":
|
|
$farbe = "5";
|
|
break;
|
|
default:
|
|
$farbe = "0";
|
|
break;
|
|
}
|
|
|
|
////////////////////////////////////
|
|
//xlog(2, "fett >".$flags_arr[ "fett" ]."<" );
|
|
if ( $flags_arr[ "fett" ] == true )
|
|
{
|
|
$fett = "1";
|
|
}
|
|
else
|
|
{
|
|
$fett = "0";
|
|
}
|
|
|
|
////////////////////////////////////
|
|
//xlog(2, "unterstrichen >".$flags_arr[ "unterstrichen" ]."<" );
|
|
if ( $flags_arr[ "unterstrichen" ] == true )
|
|
{
|
|
$unterstrichen = "1";
|
|
}
|
|
else
|
|
{
|
|
$unterstrichen = "0";
|
|
}
|
|
|
|
////////////////////////////////////
|
|
//xlog(2, "kursiv >".$flags_arr[ "kursiv" ]."<" );
|
|
if ( $flags_arr[ "kursiv" ] == true )
|
|
{
|
|
$kursiv = "1";
|
|
}
|
|
else
|
|
{
|
|
$kursiv = "0";
|
|
}
|
|
|
|
////////////////////////////////////
|
|
|
|
//xlog(2, "kursiv >".$flags_arr[ "titel" ]."<" );
|
|
if ( $flags_arr[ "titel" ] == true )
|
|
{
|
|
$titel = "1";
|
|
}
|
|
else
|
|
{
|
|
$titel = "0";
|
|
}
|
|
|
|
////////////////////////////////////
|
|
|
|
|
|
|
|
switch ( $kursiv.$unterstrichen.$fett )
|
|
{
|
|
case "000":
|
|
$fuk = "0";
|
|
break;
|
|
case "001":
|
|
$fuk = "1";
|
|
break;
|
|
case "010":
|
|
$fuk = "2";
|
|
break;
|
|
case "011":
|
|
$fuk = "3";
|
|
break;
|
|
case "100":
|
|
$fuk = "4";
|
|
break;
|
|
case "101":
|
|
$fuk = "5";
|
|
break;
|
|
case "110":
|
|
$fuk = "6";
|
|
break;
|
|
case "111":
|
|
$fuk = "7";
|
|
break;
|
|
default:
|
|
$fuk = "0";
|
|
break;
|
|
}
|
|
|
|
$hochkomma = "'";
|
|
if ( strlen( $flags_arr[ "anzahl_nachkommastellen" ] ) == 0 )
|
|
{
|
|
$flags_arr[ "anzahl_nachkommastellen" ] = "null";
|
|
$hochkomma = "";
|
|
}
|
|
|
|
$flags = $pflicht.$farbe.$fuk.$vorhanden.$titel."0000000000";
|
|
|
|
|
|
$STATEMENT = "update ca_dokart_attrib set attrib_einheit = '".mysqli_real_escape_string( $connection, $flags_arr[ "einheit" ] )."', attrib_laenge = ".$hochkomma.mysqli_real_escape_string( $connection, $flags_arr[ "anzahl_nachkommastellen" ] ).$hochkomma.", flags = '".mysqli_real_escape_string( $connection, $flags )."', pos_in_maske = ".mysqli_real_escape_string( $connection, $flags_arr[ "pos_in_maske" ] )." where mandant_id = ".$ok[ 0 ]." and dokart_kuerzel = '".mysqli_real_escape_string( $connection, $dokart_kuerzel )."' and attrib_id = ".$erg[ 0 ];
|
|
|
|
//xlog( 1, $STATEMENT );
|
|
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
if ( $ergebnis[ 0 ] == 0 )
|
|
{
|
|
$rc = 0;
|
|
$meldung = "Die Flags des Attributs ".$attrib_name." in der Dokumentart ".$dokart_kuerzel." wurden geändert.";
|
|
}
|
|
else
|
|
{
|
|
$rc = $ergebnis[ 0 ];
|
|
$meldung = "Es ist ein Fehler aufgetreten: ".$ergebnis[ 1 ];
|
|
}
|
|
}
|
|
else
|
|
{
|
|
// Attribut ist nicht in Dokumentart enthalten oder Fehler.
|
|
$rc = $ergebnis[ 0 ];
|
|
$meldung = "Das Attribut ".$attrib_name." ist nicht in der Dokumentart ".$dokart_kuerzel." enthalten oder Fehler: ".$ergebnis[ 1 ];
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = $ok[ 0 ];
|
|
$meldung = $ok[ 1 ];
|
|
}
|
|
|
|
if ( $rc < 0 )
|
|
{
|
|
$level = 2;
|
|
}
|
|
else
|
|
{
|
|
$level = 4;
|
|
}
|
|
|
|
xlog( $level, "admin.attrib_in_dokart_konfigurieren: RC ".$rc.": ".$meldung );
|
|
|
|
return array( $rc, $meldung );
|
|
}
|
|
|
|
function liefere_vorhandene_werte_zu_attrib( $mandant_name, $dokart_kuerzel, $attrib_name )
|
|
{
|
|
$ok = existiert_mandant( $mandant_name );
|
|
|
|
$dokart_kuerzel = mb_strtoupper( $dokart_kuerzel );
|
|
|
|
if ( $ok[ 0 ] > 0 )
|
|
{
|
|
$erg = ist_attrib_in_dokart_enthalten( $mandant_name, $dokart_kuerzel, $attrib_name );
|
|
if ( $erg[ 0 ] > 0 )
|
|
{
|
|
$attrib = liefere_attributinformationen( $mandant_name, $attrib_name );
|
|
|
|
$STATEMENT = "select distinct i.".$attrib[ 2 ][ "attrib_db_spalte" ]." spalte from ca_index i, ca_dok_ablage a where a.mandant_id = ".$ok[ 0 ]." and a.dokart_kuerzel = '".$dokart_kuerzel."' and i.dok_id = a.dok_id order by i.".$attrib[ 2 ][ "attrib_db_spalte" ];
|
|
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
if ( $ergebnis[ 0 ] > 0 )
|
|
{
|
|
foreach ( $ergebnis[ 1 ] as $element )
|
|
{
|
|
$ergebnis_arr[] = $element[ "spalte" ];
|
|
$ergebnis_liste = $ergebnis_liste.$element[ "spalte" ]."|";
|
|
}
|
|
$ergebnis_liste = substr( $ergebnis_liste, 0, strlen( $ergebnis_liste ) - 1 );
|
|
|
|
$rc = $ergebnis[ 0 ];
|
|
$meldung = "Liefere ".$rc." gefundene Elemente.";
|
|
}
|
|
else
|
|
{
|
|
$rc = 0;
|
|
$meldung = "Es wurden keine Elemente gefunden.";
|
|
$ergebnis_arr = array();
|
|
$ergebnis_liste = "";
|
|
}
|
|
|
|
}
|
|
else
|
|
{
|
|
// Attribut ist nicht in Dokumentart enthalten oder Fehler.
|
|
$rc = $ergebnis[ 0 ];
|
|
$meldung = "Das Attribut ".$attrib_name." ist nicht in der Dokumentart ".$dokart_kuerzel." enthalten oder Fehler: ".$ergebnis[ 1 ];
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = $ok[ 0 ];
|
|
$meldung = $ok[ 1 ];
|
|
}
|
|
|
|
if ( $rc < 0 )
|
|
{
|
|
$level = 2;
|
|
}
|
|
else
|
|
{
|
|
$level = 4;
|
|
}
|
|
|
|
xlog( $level, "admin.liefere_vorhandene_werte_zu_attrib: RC ".$rc.": ".$meldung );
|
|
|
|
return array( $rc, $meldung, $ergebnis_arr, $ergebnis_liste );
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function depot_anlegen( $mandant_name, $kuerzel, $typ, $ort, $schranke = 0, $scramble = false, $status="offen", $beschreibung = "" )
|
|
{
|
|
// Schranke: default 2 GB, wird unten gesetzt
|
|
|
|
$ok = existiert_mandant( $mandant_name );
|
|
$connection = mysqli_connect( "localhost", "ca_db", "ca_db", "ca_system" );
|
|
|
|
if ( $ok[ 0 ] > 0 )
|
|
{
|
|
if ( strlen( $kuerzel ) > 0 )
|
|
{
|
|
$kuerzel = mb_strtoupper( $kuerzel );
|
|
$typ = mb_strtoupper( $typ );
|
|
$status = mb_strtolower( $status );
|
|
|
|
if ( ( $typ == "D" ) || ( $typ == "F" ) )
|
|
{
|
|
$rc = 0;
|
|
if ( $typ == "F" )
|
|
{
|
|
if ( strlen( $ort ) > 0 )
|
|
{
|
|
/*
|
|
// Prüfen ob korrektes Verzeichnis
|
|
$ort_arr = explode( DIRECTORY_SEPARATOR, $ort );
|
|
|
|
foreach( $ort_arr as $elem )
|
|
{
|
|
if ( strlen( $elem ) > 0 )
|
|
{
|
|
if ( strlen( $ort_fix ) > 0 )
|
|
{
|
|
$ort_fix = $ort_fix.DIRECTORY_SEPARATOR.$elem;
|
|
}
|
|
else
|
|
{
|
|
$ort_fix = $elem;
|
|
}
|
|
}
|
|
}
|
|
*/
|
|
|
|
if ( is_dir( $ort ) )
|
|
{
|
|
|
|
$test1 = fopen( $ort.DIRECTORY_SEPARATOR."test.test", "w" );
|
|
$test2 = fwrite( $test1, "123");
|
|
|
|
if ( ( $test1 !== false ) && ( $test2 !== false ) )
|
|
{
|
|
// alles gut!
|
|
fclose( $test );
|
|
unlink( $ort.DIRECTORY_SEPARATOR."test.test" );
|
|
$ort_fix = $ort.DIRECTORY_SEPARATOR;
|
|
}
|
|
else
|
|
{
|
|
$rc = -3;
|
|
$meldung = "Es gab einen Dateisystemfehler beim Testen des Depot-Verzeichnisses.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -7;
|
|
$meldung = "Der angegebene Speicherort '".$ort."' ist kein gültiges Verzeichnis.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -6;
|
|
$meldung = "Zu einem Dateisystem-Depot wurde kein Ablageort (Verzeichnis auf der Festplatte) angegeben.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if ( strlen( $ort ) > 0 )
|
|
{
|
|
// Beim Typ "D" darf kein Ort angegeben sein.
|
|
xlog( 3, "Bei Ablage im Typ 'D' (Datenbank) darf kein Ort angegeben sein. Die Angabe wird ignoriert." );
|
|
$ort = "";
|
|
}
|
|
}
|
|
|
|
if ( $schranke == 0 )
|
|
{
|
|
$schranke = 2 * 1024 * 1024 * 1024;
|
|
}
|
|
|
|
if ( $rc == 0 )
|
|
{
|
|
if ( $scramble == true )
|
|
{
|
|
$scramble_wert = "ja";
|
|
}
|
|
else
|
|
{
|
|
$scramble_wert = "nein";
|
|
}
|
|
|
|
// alles gut, die Tests waren erfolgreich
|
|
$STATEMENT = "insert into ca_depot( mandant_id, ao_kuerzel, ao_typ, ao_ort, ao_erstellt_am, ao_beschreibung, ao_scramble, ao_status, ao_schranke, ao_geaendert_am ) values ( ".$ok[ 0 ].", '".mysqli_real_escape_string( $connection, $kuerzel )."', '".mysqli_real_escape_string( $connection, $typ )."', '".mysqli_real_escape_string( $connection, $ort )."', '".time()."', '".mysqli_real_escape_string( $connection, $beschreibung )."', '".mysqli_real_escape_string( $connection, $scramble_wert )."', '".mysqli_real_escape_string( $connection, $status )."', ".mysqli_real_escape_string( $connection, $schranke ).", '' ); ";
|
|
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
if ( $ergebnis[ 0 ] == 0 )
|
|
{
|
|
$rc = 0;
|
|
$meldung = "Das Depot '".$kuerzel."' wurde erfolgreich angelegt.";
|
|
}
|
|
else
|
|
{
|
|
$rc = -5;
|
|
$meldung = "Es gab einen Fehler bei Anlage des Depots '".$kuerzel."'.";
|
|
}
|
|
}
|
|
|
|
// else wurde oben schon gesetzt
|
|
|
|
}
|
|
else
|
|
{
|
|
$rc = -2;
|
|
$meldung = "Es wurde kein (korrekter) Typ angegeben.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -1;
|
|
$meldung = "Es wurde kein Kürzel angegeben.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = $ok[ 0 ];
|
|
$meldung = $ok[ 1 ];
|
|
}
|
|
|
|
if ( $rc < 0 )
|
|
{
|
|
$level = 2;
|
|
}
|
|
else
|
|
{
|
|
$level = 4;
|
|
}
|
|
|
|
xlog( $level, "admin.depot_anlegen: RC ".$rc.": ".$meldung );
|
|
|
|
return array( $rc, $meldung );
|
|
}
|
|
|
|
function liefere_depotinformationen( $mandant_name, $kuerzel, $ausfuehrlich = false )
|
|
{
|
|
$ok = existiert_mandant( $mandant_name );
|
|
|
|
if ( $ok[ 0 ] > 0 )
|
|
{
|
|
if ( strlen( $kuerzel ) > 0 )
|
|
{
|
|
$kuerzel = mb_strtoupper( $kuerzel );
|
|
|
|
$STATEMENT = "select mandant_id, ao_kuerzel, ao_typ, ao_ort, ao_erstellt_am, ao_beschreibung, ao_geaendert_am, ao_scramble, ao_status, ao_schranke from ca_depot where mandant_id = ".$ok[ 0 ]." and ao_kuerzel = '".$kuerzel."'";
|
|
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
if ( $ergebnis[ 0 ] == 1 )
|
|
{
|
|
foreach( $ergebnis[ 1 ] as $dep )
|
|
{
|
|
foreach( $dep as $eigenschaft => $wert )
|
|
{
|
|
|
|
switch ( $eigenschaft )
|
|
{
|
|
case "ao_geaendert_am":
|
|
case "ao_erstellt_am":
|
|
//$wert_fertig = date( "d.m.Y H:i", $wert )." Uhr";
|
|
$wert_fertig = $wert;
|
|
break;
|
|
case "ao_scramble":
|
|
if ( $wert == "ja" )
|
|
{
|
|
$wert_fertig = true;
|
|
}
|
|
else
|
|
{
|
|
$wert_fertig = false;
|
|
}
|
|
break;
|
|
case "ao_schranke":
|
|
$original_wert = $wert;
|
|
$wert_fertig = $wert / 1024 / 1024;
|
|
break;
|
|
default:
|
|
$wert_fertig = $wert;
|
|
break;
|
|
|
|
}
|
|
|
|
if ( $eigenschaft != "mandant_id" )
|
|
{
|
|
$eigenschaft = substr( $eigenschaft, 3 );
|
|
}
|
|
|
|
$erg_arr[ $eigenschaft ] = $wert_fertig;
|
|
}
|
|
}
|
|
$erg_arr[ "kuerzel" ] = $kuerzel;
|
|
$erg_arr[ "schranke_byte" ] = $original_wert;
|
|
$erg_arr[ "schranke_text" ] = round( $original_wert / 1024 / 1024 , 2)." MB";
|
|
|
|
if ( $ausfuehrlich == true )
|
|
{
|
|
$STATEMENT = "select sum( groesse ) summe from ca_dok_datei where mandant_id = ".$ok[ 0 ]." and dok_id in ( select dok_id from ca_dok_ablage where depot = '".$kuerzel."' and mandant_id = ".$ok[ 0 ]." )";
|
|
|
|
//xlog( 4, $STATEMENT );
|
|
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
|
|
if ( strlen( $ergebnis[ 1 ][ 0 ][ "summe" ] ) == 0 )
|
|
{
|
|
$aktuelle_groesse_byte = 0;
|
|
}
|
|
else
|
|
{
|
|
$aktuelle_groesse_byte = $ergebnis[ 1 ][ 0 ][ "summe" ];
|
|
}
|
|
|
|
|
|
$erg_arr[ "aktuelle_groesse_byte" ] = $aktuelle_groesse_byte;
|
|
|
|
//xlog( 1, $aktuelle_groesse_byte );
|
|
|
|
//$aktuelle_groesse_byte = str_replace( ".", ",", $aktuelle_groesse_byte );
|
|
|
|
$megabyte = round( $aktuelle_groesse_byte / 1024 / 1024 , 2);
|
|
|
|
$aktuelle_groesse_text = "0 MB";
|
|
|
|
if ( $megabyte > 0 )
|
|
{
|
|
$aktuelle_groesse_text = $megabyte." MB ";
|
|
}
|
|
|
|
$erg_arr[ "aktuelle_groesse_text" ] = $aktuelle_groesse_text;
|
|
}
|
|
else
|
|
{
|
|
$erg_arr[ "aktuelle_groesse_text" ] = "unbekannt.";
|
|
$erg_arr[ "aktuelle_groesse_byte" ] = 0;
|
|
}
|
|
|
|
|
|
|
|
|
|
$rc = 1;
|
|
$meldung = "Liefere Informationen zu Depot '".$kuerzel."'.";
|
|
}
|
|
else
|
|
{
|
|
$rc = -2;
|
|
$meldung = "Es ist ein Fehler aufgetreten: ".$ergebnis[ 1 ];
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -1;
|
|
$meldung = "Es wurde kein Kürzel angegeben.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = $ok[ 0 ];
|
|
$meldung = $ok[ 1 ];
|
|
}
|
|
|
|
if ( $rc < 0 )
|
|
{
|
|
$level = 2;
|
|
}
|
|
else
|
|
{
|
|
$level = 6;
|
|
}
|
|
|
|
xlog( $level, "admin.liefere_depotinformationen: RC ".$rc.": ".$meldung );
|
|
|
|
return array( $rc, $meldung, $erg_arr );
|
|
}
|
|
|
|
function depot_loeschen( $mandant_name, $kuerzel )
|
|
{
|
|
$ok = existiert_mandant( $mandant_name );
|
|
|
|
if ( $ok[ 0 ] > 0 )
|
|
{
|
|
if ( strlen( $kuerzel ) > 0 )
|
|
{
|
|
$kuerzel = mb_strtoupper( $kuerzel );
|
|
|
|
$STATEMENT = "select count(*) anzahl from ca_dok_ablage where mandant_id = ".$ok[ 0 ]." and depot = '".$kuerzel."'";
|
|
|
|
//xlog( 4, $STATEMENT );
|
|
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
if ( $ergebnis[ 1 ][ 0 ][ "anzahl" ] == 0 )
|
|
{
|
|
|
|
$ergebnis = welche_dokumentarten_verwenden_depot( $mandant_name, $kuerzel );
|
|
|
|
if ( $ergebnis[ 0 ] == 0 )
|
|
{
|
|
$STATEMENT = "delete from ca_depot where mandant_id = ".$ok[ 0 ]." and ao_kuerzel = '".$kuerzel."'";
|
|
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
if ( $ergebnis[ 0 ] <> -1 )
|
|
{
|
|
$rc = 0;
|
|
$meldung = "Das Depot '".$kuerzel."' wurde im Mandanten '".$mandant_name."' gelöscht.";
|
|
}
|
|
else
|
|
{
|
|
$rc = -4;
|
|
$meldung = "Es ist ein Fehler aufgetreten: '".$ergebnis[ 1 ]."'.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -3;
|
|
$meldung = "Das Depot '".$kuerzel."' wird noch von den Dokumentarten ".$ergebnis[ 3 ]." verwendet und kann daher nicht gelöscht werden.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -2;
|
|
$meldung = "Das Depot '".$kuerzel."' kann nicht gelöscht werden, weil es noch Dokumente enthält.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -1;
|
|
$meldung = "Es wurde kein Kürzel angegeben.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = $ok[ 0 ];
|
|
$meldung = $ok[ 1 ];
|
|
}
|
|
|
|
if ( $rc < 0 )
|
|
{
|
|
$level = 2;
|
|
}
|
|
else
|
|
{
|
|
$level = 4;
|
|
}
|
|
|
|
xlog( $level, "admin.depot_loeschen: RC ".$rc.": ".$meldung );
|
|
|
|
return array( $rc, $meldung, $ergebnis_arr, $ergebnis_liste );
|
|
}
|
|
|
|
function welche_dokumentarten_verwenden_depot( $mandant_name, $kuerzel )
|
|
{
|
|
$ok = existiert_mandant( $mandant_name );
|
|
|
|
if ( $ok[ 0 ] > 0 )
|
|
{
|
|
if ( strlen( $kuerzel ) > 0 )
|
|
{
|
|
$kuerzel = mb_strtoupper( $kuerzel );
|
|
$STATEMENT = "select dokart_kuerzel from ca_dokart where dokart_depot = '".$kuerzel."' and mandant_id = ".$ok[ 0 ];
|
|
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
foreach ( $ergebnis[ 1 ] as $zeile )
|
|
{
|
|
$ergebnis_arr[] = $zeile[ "dokart_kuerzel" ];
|
|
$ergebnis_list = $ergebnis_list.$zeile[ "dokart_kuerzel" ]."|";
|
|
}
|
|
$ergebnis_list = substr( $ergebnis_list, 0, -1 );
|
|
$rc = count( $ergebnis_arr );
|
|
$meldung = "Das Depot '".$kuerzel."' wird von ".$rc." Dokumentarten verwendet.";
|
|
|
|
}
|
|
else
|
|
{
|
|
$rc = -1;
|
|
$meldung = "Es wurde kein Kürzel angegeben.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = $ok[ 0 ];
|
|
$meldung = $ok[ 1 ];
|
|
}
|
|
|
|
if ( $rc < 0 )
|
|
{
|
|
$level = 2;
|
|
}
|
|
else
|
|
{
|
|
$level = 4;
|
|
}
|
|
|
|
xlog( $level, "admin.welche_dokumentarten_verwenden_depot: RC ".$rc.": ".$meldung );
|
|
|
|
return array( $rc, $meldung, $ergebnis_arr, $ergebnis_list );
|
|
}
|
|
|
|
function depot_aendern( $mandant_name, $kuerzel, $ort, $schranke = 0, $status = "offen", $beschreibung = "" )
|
|
{
|
|
// Scramble und Typ sind nicht änderbar
|
|
// Datenbank-Depots sind ebenfalls nicht änderbar.
|
|
|
|
$ok = existiert_mandant( $mandant_name );
|
|
$connection = mysqli_connect( "localhost", "ca_db", "ca_db", "ca_system" );
|
|
|
|
if ( $ok[ 0 ] > 0 )
|
|
{
|
|
if ( strlen( $kuerzel ) > 0 )
|
|
{
|
|
$kuerzel = mb_strtoupper( $kuerzel );
|
|
$typ = mb_strtoupper( $typ );
|
|
|
|
$rc = 0;
|
|
$depot = liefere_depotinformationen( $mandant_name, $kuerzel );
|
|
|
|
if ( $depot[ 0 ] > 0 )
|
|
{
|
|
if ( $depot[ 2 ][ "typ" ] == "F" )
|
|
{
|
|
/*
|
|
// Prüfen ob korrektes Verzeichnis
|
|
$ort_arr = explode( DIRECTORY_SEPARATOR, $ort );
|
|
|
|
foreach( $ort_arr as $elem )
|
|
{
|
|
if ( strlen( $elem ) > 0 )
|
|
{
|
|
if ( strlen( $ort_fix ) > 0 )
|
|
{
|
|
$ort_fix = $ort_fix.DIRECTORY_SEPARATOR.$elem;
|
|
}
|
|
else
|
|
{
|
|
$ort_fix = $elem;
|
|
}
|
|
}
|
|
}
|
|
*/
|
|
|
|
if ( is_dir( $ort ) )
|
|
{
|
|
|
|
$test1 = fopen( $ort.DIRECTORY_SEPARATOR."test.test", "w" );
|
|
$test2 = fwrite( $test1, "123");
|
|
|
|
if ( ( $test1 !== false ) && ( $test2 !== false ) )
|
|
{
|
|
// alles gut!
|
|
fclose( $test );
|
|
unlink( $ort.DIRECTORY_SEPARATOR."test.test" );
|
|
//$ort_fix = $ort.DIRECTORY_SEPARATOR;
|
|
}
|
|
else
|
|
{
|
|
$rc = -3;
|
|
$meldung = "Es gab einen Dateisystemfehler beim Testen des Depot-Verzeichnisses.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -7;
|
|
$meldung = "Der angegebene Speicherort '".$ort."' ist kein gültiges Verzeichnis.";
|
|
}
|
|
}
|
|
|
|
$status = mb_strtolower( $status );
|
|
|
|
if ( ( $status != "offen" ) && ( $status != "geschlossen" ) )
|
|
{
|
|
$rc = -7;
|
|
$meldung = "Es wurde kein korrekter neuer Status ('".$status."') angegeben.";
|
|
}
|
|
|
|
if ( $schranke == 0 )
|
|
{
|
|
$schranke = 50 * 1024 * 1024;
|
|
}
|
|
|
|
if ( $rc == 0 )
|
|
{
|
|
// alles gut, die Tests waren erfolgreich
|
|
$STATEMENT = "update ca_depot set ao_ort='".mysqli_real_escape_string( $connection, $ort )."', ao_beschreibung='".mysqli_real_escape_string( $connection, $beschreibung )."', ao_geaendert_am='".time()."', ao_status = '".mysqli_real_escape_string( $connection, $status )."', ao_schranke = ".mysqli_real_escape_string( $connection, $schranke )." where ao_kuerzel = '".mysqli_real_escape_string( $connection, $kuerzel )."' and mandant_id=".$ok[ 0 ];
|
|
|
|
//xlog( 4, $STATEMENT );
|
|
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
if ( $ergebnis[ 0 ] == 0 )
|
|
{
|
|
$rc = 0;
|
|
$meldung = "Das Depot '".$kuerzel."' wurde erfolgreich aktualisiert.";
|
|
}
|
|
else
|
|
{
|
|
$rc = -5;
|
|
$meldung = "Es gab einen Fehler beim Ändern des Depots '".$kuerzel."'.";
|
|
}
|
|
}
|
|
|
|
}
|
|
else
|
|
{
|
|
$rc = -4;
|
|
$meldung = "Das gewünschte Depot '".$kuerzel."' wurde nicht gefunden und kann daher nicht geändert werden.";
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
else
|
|
{
|
|
$rc = -1;
|
|
$meldung = "Es wurde kein Kürzel angegeben.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = $ok[ 0 ];
|
|
$meldung = $ok[ 1 ];
|
|
}
|
|
|
|
if ( $rc < 0 )
|
|
{
|
|
$level = 2;
|
|
}
|
|
else
|
|
{
|
|
$level = 4;
|
|
}
|
|
|
|
xlog( $level, "admin.depot_aendern: RC ".$rc.": ".$meldung );
|
|
|
|
return array( $rc, $meldung );
|
|
}
|
|
|
|
function welche_depots_gibt_es( $mandant_name )
|
|
{
|
|
$ok = existiert_mandant( $mandant_name );
|
|
|
|
if ( $ok[ 0 ] > 0 )
|
|
{
|
|
$STATEMENT = "select ao_kuerzel from ca_depot where mandant_id = ".$ok[ 0 ];
|
|
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
if ( $ergebnis[ 0 ] > 0 )
|
|
{
|
|
foreach( $ergebnis[ 1 ] as $zeile )
|
|
{
|
|
$ergebnis_arr[ ] = $zeile[ "ao_kuerzel" ];
|
|
}
|
|
$rc = count( $ergebnis_arr );
|
|
$meldung = "Liefere ".$rc." Depots für Mandant '".$mandant_name."'.";
|
|
}
|
|
else
|
|
{
|
|
$ergebnis_arr = array();
|
|
$rc = 0;
|
|
$meldung = "Entweder gibt es keine Depots, oder es ist ein Fehler aufgetreten (".$ergebnis[ 1 ].").";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = $ok[ 0 ];
|
|
$meldung = $ok[ 1 ];
|
|
}
|
|
|
|
if ( $rc < 0 )
|
|
{
|
|
$level = 2;
|
|
}
|
|
else
|
|
{
|
|
$level = 4;
|
|
}
|
|
|
|
xlog( $level, "admin.welche_depots_gibt_es: RC ".$rc.": ".$meldung );
|
|
|
|
return array( $rc, $meldung, $ergebnis_arr );
|
|
}
|
|
|
|
function lege_dokument_in_depot_ab( $mandant_name, $depot_name, $dok_id, $kennung, $dokument_binary, $optionen = array() )
|
|
{
|
|
$ok = existiert_mandant( $mandant_name );
|
|
$connection = mysqli_connect( "localhost", "ca_db", "ca_db", "ca_system" );
|
|
|
|
if ( $ok[ 0 ] > 0 )
|
|
{
|
|
$depot = liefere_depotinformationen( $mandant_name, $depot_name, true );
|
|
|
|
if ( $depot[ 0 ] == 1 )
|
|
{
|
|
|
|
$mime_type = $optionen[ "mime_type" ];
|
|
$ursprungs_dateiname = $optionen[ "ursprungs_dateiname" ];
|
|
$zeitstempel = $optionen[ "zeitstempel" ];
|
|
$neues_dokument = $optionen[ "neues_dokument" ];
|
|
$datei_erw_typ = $optionen[ "datei_erw_typ" ];
|
|
$md5 = $optionen[ "md5" ];
|
|
|
|
$status = $depot[ 2 ][ "status" ];
|
|
$schranke = $depot[ 2 ][ "schranke_byte" ];
|
|
$typ = $depot[ 2 ][ "typ" ];
|
|
$ort = $depot[ 2 ][ "ort" ];
|
|
$scramble = $depot[ 2 ][ "scramble" ];
|
|
$aktuelle_groesse_byte = $depot[ 2 ][ "aktuelle_groesse_byte" ];
|
|
$kuerzel = $depot[ 2 ][ "kuerzel" ];
|
|
|
|
// dieses Statement wäre noch zu prüfen, wenn man mal weitere Dateitypen zu einem Dokument (z. B. OCR-Dateien, ....) archivieren will - dann sollte $datei_erw_typ auch andere Werte annehmen können als 0 und 1.
|
|
if ( $datei_erw_typ <> 1 )
|
|
{
|
|
$datei_erw_typ = 0;
|
|
}
|
|
|
|
|
|
if ( $scramble )
|
|
{
|
|
$dokument_binary = substr( $dokument_binary, 20 ).substr( $dokument_binary, 0, 20);
|
|
$dokument_binary = str_rot13( $dokument_binary );
|
|
}
|
|
|
|
$pruef_summe = bcadd( $aktuelle_groesse_byte, strlen( $dokument_binary ) );
|
|
|
|
if ( $pruef_summe <= $schranke )
|
|
{
|
|
if ( $status == "offen" )
|
|
{
|
|
|
|
if ( strlen( $dok_id ) == 0 )
|
|
{
|
|
$update = " kennung = '".mysqli_real_escape_string( $connection, $kennung )."' ";
|
|
|
|
}
|
|
else
|
|
{
|
|
$update = " dok_id = ".$dok_id;
|
|
|
|
}
|
|
|
|
$STATEMENT = "select d_version, dok_id, kennung from ca_dok_ablage where ".$update;
|
|
|
|
//xlog( 1, $STATEMENT );
|
|
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
//xlog( 1, "Anzahl treffer: ".json_encode( $ergebnis ) );
|
|
|
|
if ( strlen( $ergebnis[ 1 ][ 0 ][ "d_version" ] ) == 0 )
|
|
{
|
|
$version = 0;
|
|
}
|
|
else
|
|
{
|
|
$version = $ergebnis[ 1 ][ 0 ][ "d_version" ];
|
|
}
|
|
|
|
$dok_id = $ergebnis[ 1 ][ 0 ][ "dok_id" ];
|
|
$kennung = $ergebnis[ 1 ][ 0 ][ "kennung" ];
|
|
$log_erg = "";
|
|
$j_flag = 0;
|
|
|
|
if ( $neues_dokument )
|
|
{
|
|
$ereignis = "IMPORT";
|
|
$k_version = "+";
|
|
$d_version = "+";
|
|
$erw_datei_typ = "0";
|
|
}
|
|
else
|
|
{
|
|
switch( $datei_erw_typ )
|
|
{
|
|
// sollte man diese Liste von Case-Fällen mal erweitern wollen, z. B. um auch OCR-Dateien ablegen zu können, müßte ebenfalls erzeuge_neuen_versionseintrag() angepasst werden.
|
|
case "1":
|
|
$erw_datei_typ = "1";
|
|
$j_flag = 1;
|
|
$k_version = "";
|
|
$d_version = "";
|
|
$ereignis = "PIC_RESIZE";
|
|
$log_erg = " / ".$ereignis;
|
|
break;
|
|
default:
|
|
$erw_datei_typ = "0";
|
|
$k_version = "";
|
|
$d_version = "+";
|
|
$ereignis = "NEUE_DATEI";
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
//erzeuge_neuen_versionseintrag( $dok_id, $ereignis, $d_version = "", $k_version = "", $info = "" )
|
|
$neuer_versionseintrag = erzeuge_neuen_versionseintrag( $dok_id, $ereignis, $d_version, $k_version, "" );
|
|
|
|
//xlog( 1, json_encode( $neuer_versionseintrag ) );
|
|
|
|
$neue_d_version = $neuer_versionseintrag[ 2 ];
|
|
|
|
if ( $neue_d_version > 1 )
|
|
{
|
|
$v_flag = "1";
|
|
}
|
|
else
|
|
{
|
|
$v_flag = "0";
|
|
}
|
|
|
|
/*
|
|
xlog( 1, "dok_id ".$dok_id );
|
|
xlog( 1, "version ".$version );
|
|
xlog( 1, "kennung ".$kennung );
|
|
xlog( 1, "neue_d_version ".$neue_d_version );
|
|
*/
|
|
|
|
$groesse = strlen( $dokument_binary );
|
|
|
|
/// Ablage wo genau?
|
|
if ( $typ == "D" )
|
|
{
|
|
// Datenbank
|
|
$abl_verfahren = 20;
|
|
|
|
if ( $pic_resize != "gesetzt" )
|
|
{
|
|
|
|
$STATEMENT = "insert into ca_dok_datei ( mandant_id, dok_id, version, dokument, groesse, mime_type, ursprungs_dateiname, erstellt_am, md5, erw, abl_verfahren, opt_info_1, opt_info_2, opt_info_3, opt_info_4, opt_info_5 ) values ( ".$ok[ 0 ].", ".$dok_id.", ".$neue_d_version.", '".mysqli_real_escape_string( $connection, $dokument_binary )."', ".$groesse.", '".mysqli_real_escape_string( $connection, $mime_type )."', '".mysqli_real_escape_string( $connection, $ursprungs_dateiname )."', '".$neuer_versionseintrag[ 4 ]."', '".$md5."', 0, 0, '' , '' , '' , '' , '' )";
|
|
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
//xlog( 1, $STATEMENT );
|
|
//xlog( 1, $ergebnis[ 0 ] );
|
|
|
|
$STATEMENT = "update ca_dok_ablage set depot = '".mysqli_real_escape_string( $connection, $kuerzel )."', v_flag = '".$v_flag."', abl_verfahren = ".$abl_verfahren." where dok_id = ".$dok_id." and mandant_id = ".$ok[ 0 ];
|
|
|
|
//xlog( 4, $STATEMENT );
|
|
|
|
$ergebnis2 = xdb( $STATEMENT );
|
|
|
|
|
|
|
|
|
|
|
|
if ( $ergebnis[ 0 ] == 0 )
|
|
{
|
|
$rc = 1;
|
|
$meldung = "Die Nutzdatei zu Dokument ".$dok_id." wurde im Depot '".$kuerzel."' abgelegt.";
|
|
}
|
|
else
|
|
{
|
|
$rc = -41;
|
|
$meldung = "Die Nutzdatei zu Dokument ".$dok_id." konnte nicht im Depot '".$kuerzel."' abgelegt werden: ".$ergebnis[ 1 ];
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -42;
|
|
$meldung = "PIC_RESIZE-Dokumente können nicht in DB-Depots abgelegt werden.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
// Dateisystem
|
|
$rc = 0;
|
|
$abl_verfahren = 110;
|
|
|
|
$ablagepfad = liefere_ablagepfad_zu_dokument( $mandant_name, $dok_id, $depot, $neuer_versionseintrag[ 2 ], $erw_datei_typ, $abl_verfahren );
|
|
|
|
if ( $ablagepfad[ 0 ] == 0 )
|
|
{
|
|
$dateidok = $ablagepfad[ 2 ];
|
|
$ablagepfad = $ablagepfad[ 3 ];
|
|
$gesamt = $ablagepfad[ 4 ];
|
|
|
|
}
|
|
|
|
$ergebnis = is_dir( $ablagepfad );
|
|
|
|
if ( !$ergebnis )
|
|
{
|
|
$ergebnis = mkdir( $ablagepfad, 0777, true );
|
|
|
|
if ( !$ergebnis )
|
|
{
|
|
$rc = -5;
|
|
$meldung = "Das Ablageverzeichnis existiert nicht, ließ sich aber nicht anlegen.";
|
|
}
|
|
}
|
|
|
|
if ( $rc == 0 )
|
|
{
|
|
// ab hier sollte das Ablageverzeichnis existieren.
|
|
xlog( 1, "Ablagepfad ". $ablagepfad.$dateidok );
|
|
$ergebnis = file_put_contents( $ablagepfad.$dateidok, $dokument_binary);
|
|
|
|
if ( $ergebnis !== false )
|
|
{
|
|
$STATEMENT = "insert into ca_dok_datei ( mandant_id, dok_id, version, groesse, mime_type, ursprungs_dateiname, erstellt_am, abl_verfahren, erw, md5, opt_info_1, opt_info_2, opt_info_3, opt_info_4, opt_info_5, dokument ) values ( ".$ok[ 0 ].", ".$dok_id.", ".$neue_d_version.", ".$groesse.", '".mysqli_real_escape_string( $connection, $mime_type )."', '".mysqli_real_escape_string( $connection, $ursprungs_dateiname )."', '".$neuer_versionseintrag[ 4 ]."', ".$abl_verfahren.", ".$j_flag.", '".$md5."', '' , '' , '' , '' , '', '' )";
|
|
|
|
//xlog( 1, $STATEMENT );
|
|
//xlog( 1, $ergebnis[ 0 ] );
|
|
|
|
|
|
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
|
|
|
|
$STATEMENT = "update ca_dok_ablage set depot = '".mysqli_real_escape_string( $connection, $kuerzel )."', v_flag = '".$v_flag."', j_flag = '".$j_flag."' where dok_id = ".$dok_id." and mandant_id = ".$ok[ 0 ];
|
|
//$STATEMENT = "update ca_dok_ablage set depot = '".mysqli_real_escape_string( $connection, $kuerzel )."', v_flag = '".$v_flag."', j_flag = '".$j_flag."', archivierungsdatum = '".time()."' where dok_id = ".$dok_id." and mandant_id = ".$ok[ 0 ];
|
|
//xlog( 5, $STATEMENT );
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
|
|
if ( $ergebnis[ 0 ] == 0 )
|
|
{
|
|
$rc = 1;
|
|
$meldung = "Die Nutzdatei zu Dokument ".$dok_id." (Version ".$neuer_versionseintrag[ 2 ].$log_erg.") wurde im Depot '".$kuerzel."' abgelegt.";
|
|
}
|
|
else
|
|
{
|
|
unlink( $ablagepfad.$dateidok );
|
|
$rc = -41;
|
|
$meldung = "Die Nutzdatei zu Dokument ".$dok_id." (Version ".$neuer_versionseintrag[ 2 ].$log_erg.") konnte nicht im Depot '".$kuerzel."' abgelegt werden: ".$ergebnis[ 1 ];
|
|
}
|
|
|
|
}
|
|
else
|
|
{
|
|
$rc = -41;
|
|
$meldung = "Die Nutzdatei zu Dokument ".$dok_id." konnte nicht im Depot '".$kuerzel."' abgelegt werden: ".$ergebnis[ 1 ];
|
|
}
|
|
}
|
|
|
|
// else-Zweig unnötig, da $rc oben bereits gesetzt wird.
|
|
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -42;
|
|
$meldung = "Die Nutzdatei zu Dokument ".$dok_id." konnte nicht im Depot '".$kuerzel."' abgelegt werden, da das Depot nicht offen ist.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -3;
|
|
$meldung = "Der Einlagern dieses Dokuments (ID: ".$dok_id.") in das Depot '".$kuerzel."' würde die maximale Größe des Depots überschreiten.";
|
|
}
|
|
|
|
}
|
|
else
|
|
{
|
|
$rc = -2;
|
|
$meldung = $depot[ 1 ];
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = $ok[ 0 ];
|
|
$meldung = $ok[ 1 ];
|
|
}
|
|
|
|
if ( $rc < 0 )
|
|
{
|
|
$level = 2;
|
|
}
|
|
else
|
|
{
|
|
$level = 6;
|
|
}
|
|
|
|
xlog( $level, "admin.lege_dokument_in_depot_ab: RC ".$rc.": ".$meldung );
|
|
|
|
return array( $rc, $meldung, $neuer_versionseintrag[ 2 ], $dok_id, $kennung );
|
|
}
|
|
|
|
function liefere_dokumentbinary( $mandant_name, $benutzer_anmeldename, $dok_id, $optionen = array() )
|
|
{
|
|
/*
|
|
abl_verfahren = 100 =>
|
|
{
|
|
if ( $scramble )
|
|
{
|
|
$dokument_binary = "0000".$dokument_binary;
|
|
}
|
|
|
|
$dateidok = str_pad( $dok_id, 12, "0", STR_PAD_LEFT);
|
|
|
|
$ebene_1 = substr( $dateidok, 0, 6 );
|
|
$ebene_2 = substr( $dateidok, 6, 2 );
|
|
$ebene_3 = substr( $dateidok, 8, 4 );
|
|
|
|
$ablagepfad = $ort.DIRECTORY_SEPARATOR.$ok[ 0 ].DIRECTORY_SEPARATOR.$kuerzel.DIRECTORY_SEPARATOR.$ebene_1.DIRECTORY_SEPARATOR.$ebene_2.DIRECTORY_SEPARATOR;
|
|
|
|
$ergebnis = file_put_contents( $ablagepfad.$dateidok, $dokument_binary);
|
|
}
|
|
|
|
abl_verfahren = 102 =>
|
|
{
|
|
if ( $scramble )
|
|
{
|
|
$dokument_binary = substr( $dokument_binary, 20, 0).substr( $dokument_binary, 0, 20);
|
|
}
|
|
|
|
$dateidok = str_pad( $dok_id, 12, "0", STR_PAD_LEFT);
|
|
|
|
$ebene_1 = substr( $dateidok, 0, 6 );
|
|
$ebene_2 = substr( $dateidok, 6, 2 );
|
|
$ebene_3 = substr( $dateidok, 8, 4 );
|
|
|
|
$ablagepfad = $ort.DIRECTORY_SEPARATOR.$ok[ 0 ].DIRECTORY_SEPARATOR.$kuerzel.DIRECTORY_SEPARATOR.$ebene_1.DIRECTORY_SEPARATOR.$ebene_2.DIRECTORY_SEPARATOR;
|
|
|
|
$ergebnis = file_put_contents( $ablagepfad.$dateidok, $dokument_binary);
|
|
}
|
|
|
|
*/
|
|
|
|
$version = $optionen[ "version" ];
|
|
$erw_datei_typ = $optionen[ "erw_datei_typ" ];
|
|
|
|
switch( $erw_datei_typ )
|
|
{
|
|
case "1":
|
|
$erw_datei_typ = "1";
|
|
break;
|
|
default:
|
|
$erw_datei_typ = "0";
|
|
break;
|
|
}
|
|
|
|
|
|
$ok = existiert_mandant( $mandant_name );
|
|
|
|
if ( $ok[ 0 ] > 0 )
|
|
{
|
|
//xlog( 1, "strlen".strlen( $dok_id ));
|
|
//xlog( 1, "is_int".is_int( $dok_id ) );
|
|
if ( strlen( $dok_id ) > 0 )
|
|
{
|
|
|
|
// Depot feststellen
|
|
// Feststellen, ob typ = D oder typ = F
|
|
// Scramble feststellen
|
|
// Benutzerrechte prüfen
|
|
// ggf. Pfad zusammensetzen
|
|
// Dokument ausliefern
|
|
|
|
if ( strlen( $version ) > 0 )
|
|
{
|
|
$STATEMENT = "select a.depot depot, c.dokument dokument, c.abl_verfahren abl_verfahren, d.ao_typ typ, d.ao_scramble scramble, d.ao_ort ort, a.dokart_kuerzel dokart_kuerzel, c.ursprungs_dateiname ursprungs_dateiname, c.erw erw, c.mime_type mime_type FROM ca_depot d, ca_dok_ablage a, ca_dok_datei c WHERE c.version = ".$version." and c.dok_id = a.dok_id and a.depot = d.ao_kuerzel AND a.dok_id = ".$dok_id." and d.mandant_id = ".$ok[ 0 ];
|
|
}
|
|
else
|
|
{
|
|
$STATEMENT = "select a.depot depot, c.dokument dokument, a.d_version d_version, c.abl_verfahren abl_verfahren, d.ao_typ typ, d.ao_scramble scramble, d.ao_ort ort, a.dokart_kuerzel dokart_kuerzel, c.ursprungs_dateiname ursprungs_dateiname, c.erw erw, c.mime_type mime_type FROM ca_depot d, ca_dok_ablage a, ca_dok_datei c WHERE c.version = a.d_version and c.dok_id = a.dok_id and a.depot = d.ao_kuerzel AND a.dok_id = ".$dok_id." and d.mandant_id = ".$ok[ 0 ];
|
|
}
|
|
|
|
//xlog( 1, $STATEMENT );
|
|
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
|
|
if ( $ergebnis[ 0 ] > 0 )
|
|
{
|
|
$sicherungs_arr = array();
|
|
$ziel_arr = array();
|
|
|
|
//xlog( 5, json_encode( $ergebnis[ 1 ]) );
|
|
|
|
foreach( $ergebnis[ 1 ] as $treffer )
|
|
{
|
|
//xlog( 4, json_encode( $treffer ) );
|
|
if ( $treffer[ "erw" ] == 0 )
|
|
{
|
|
$sicherungs_arr = $treffer;
|
|
}
|
|
|
|
if ( $treffer[ "erw" ] == $erw_datei_typ )
|
|
{
|
|
$ziel_arr = $treffer;
|
|
break;
|
|
}
|
|
}
|
|
|
|
if ( count( $ziel_arr ) == 0 )
|
|
{
|
|
$ziel_arr = $sicherungs_arr;
|
|
}
|
|
|
|
//xlog( 4, json_encode( $ziel_arr) );
|
|
|
|
( $ziel_arr[ "scramble" ] == "ja" ) ? $scramble = true : $scramble = false;
|
|
$depot = $ziel_arr[ "depot" ];
|
|
$typ = $ziel_arr[ "typ" ];
|
|
$ort = $ziel_arr[ "ort" ];
|
|
$erw = $ziel_arr[ "erw" ];
|
|
|
|
if ( $erw == 0 )
|
|
{
|
|
$erw_datei_typ = "0";
|
|
}
|
|
|
|
//xlog( 1, "Ort ".$ort );
|
|
|
|
if ( strlen( $version ) > 0 )
|
|
{
|
|
$d_version = $version;
|
|
}
|
|
else
|
|
{
|
|
$d_version = $ziel_arr[ "d_version" ];
|
|
}
|
|
$dokart_kuerzel = $ziel_arr[ "dokart_kuerzel" ];
|
|
$abl_verfahren = $ziel_arr[ "abl_verfahren" ];
|
|
$dokument_binary = $ziel_arr[ "dokument" ];
|
|
|
|
|
|
$weitere_infos[ "mime_type" ] = $ziel_arr[ "mime_type" ];
|
|
$weitere_infos[ "ursprungs_dateiname" ] = $ziel_arr[ "ursprungs_dateiname" ];
|
|
|
|
|
|
|
|
// Check Benutzerrechte
|
|
|
|
$sysrechte = besitzt_benutzer_systemrecht( $mandant_name, $benutzer_anmeldename, "D_".$dokart_kuerzel."_LESEN" );
|
|
|
|
if ( $sysrechte[ 0 ] == 1 )
|
|
{
|
|
if ( $typ == "D" )
|
|
{
|
|
$rc = 1;
|
|
$meldung = "Liefere Dokument-Binary zu Dokument ".$dok_id.".";
|
|
}
|
|
else
|
|
{
|
|
switch( $abl_verfahren )
|
|
{
|
|
case "110":
|
|
|
|
$pfad = liefere_ablagepfad_zu_dokument( $mandant_name, $dok_id, $depot, $d_version, $erw_datei_typ, $abl_verfahren );
|
|
|
|
|
|
|
|
$dokument_binary = file_get_contents( $pfad[ 4 ] );
|
|
|
|
|
|
|
|
if ( $scramble )
|
|
{
|
|
$dokument_binary = str_rot13( $dokument_binary );
|
|
$dokument_binary = substr( $dokument_binary, -20, 20).substr( $dokument_binary, 0, -20 );
|
|
|
|
}
|
|
else
|
|
{
|
|
$dokument_binary = $dokument_binary;
|
|
}
|
|
|
|
//xlog( 1, "Länge Dokument-binary ".strlen( $dokument_binary ) );
|
|
break;
|
|
}
|
|
|
|
$rc = 1;
|
|
$meldung = "Liefere Dokument-Binary zu Dokument ".$dok_id." (Version ".$d_version.").";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -3;
|
|
$meldung = "Der Benutzer '".$benutzer_anmeldename."' besitzt nicht das entsprechende Systemrecht, um sich das Dokument ".$dok_id." anzeigen zu lassen.";
|
|
$dokument_binary = file_get_contents( "img/geht_nicht.png" );
|
|
$weitere_infos[ "mime_type" ] = "image/png";
|
|
$weitere_infos[ "ursprungs_dateiname" ] = "nix_da.png";
|
|
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -2;
|
|
$meldung = "Es ist ein Fehler aufgetreten: ".$ergebnis[ 0 ];
|
|
}
|
|
|
|
}
|
|
else
|
|
{
|
|
$rc = -4;
|
|
$meldung = "Es wurde keine gültige Dok-ID angegeben ('".$dok_id."').";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = $ok[ 0 ];
|
|
$meldung = $ok[ 1 ];
|
|
}
|
|
|
|
if ( $rc < 0 )
|
|
{
|
|
$level = 2;
|
|
}
|
|
else
|
|
{
|
|
$level = 4;
|
|
}
|
|
|
|
xlog( $level, "admin.liefere_dokumentbinary: RC ".$rc.": ".$meldung );
|
|
|
|
return array( $rc, $meldung, $dokument_binary, $weitere_infos );
|
|
}
|
|
|
|
function liefere_ablagepfad_zu_dokument( $mandant_name, $dok_id, $depot, $version = 1, $erw_datei_typ = 0, $ablage_verfahren = 110 )
|
|
{
|
|
|
|
$ok = existiert_mandant( $mandant_name );
|
|
//$connection = mysqli_connect( "localhost", "ca_db", "ca_db", "ca_system" );
|
|
|
|
if ( $ok[ 0 ] > 0 )
|
|
{
|
|
if ( ! is_array( $depot ) )
|
|
{
|
|
$depot = liefere_depotinformationen( $mandant_name, $depot );
|
|
}
|
|
|
|
|
|
if ( $depot[ 0 ] == 1 )
|
|
{
|
|
$ort = $depot[ 2 ][ "ort" ];
|
|
$kuerzel = $depot[ 2 ][ "kuerzel" ];
|
|
|
|
switch ( $ablage_verfahren )
|
|
{
|
|
case 110:
|
|
|
|
$dateidok = str_pad( $dok_id, 12, "0", STR_PAD_LEFT);
|
|
|
|
//000001000104
|
|
|
|
$ebene_1 = substr( $dateidok, 0, 6 );
|
|
$ebene_2 = substr( $dateidok, 6, 3 );
|
|
//$ebene_3 = substr( $dateidok, 8, 4 );
|
|
|
|
$dateidok = $dateidok.".".$version.".".$erw_datei_typ;
|
|
|
|
$ablagepfad = $ort.DIRECTORY_SEPARATOR.$ok[ 0 ].DIRECTORY_SEPARATOR.$kuerzel.DIRECTORY_SEPARATOR.$ebene_1.DIRECTORY_SEPARATOR.$ebene_2.DIRECTORY_SEPARATOR;
|
|
|
|
$vollstaendig = $ablagepfad.$dateidok;
|
|
|
|
$rc = 0;
|
|
$meldung = "Liefere Ablagepfad zu Dokument ".$dok_id.".";
|
|
break;
|
|
|
|
default:
|
|
$rc = -3;
|
|
$meldung = "Das Ablageverfahren ".$ablage_verfahren." ist nicht bekannt.";
|
|
break;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -2;
|
|
$meldung = $depot[ 1 ];
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = $ok[ 0 ];
|
|
$meldung = $ok[ 1 ];
|
|
}
|
|
|
|
if ( $rc < 0 )
|
|
{
|
|
$level = 2;
|
|
}
|
|
else
|
|
{
|
|
$level = 6;
|
|
}
|
|
|
|
xlog( $level, "admin.liefere_ablagepfad_zu_dokument: RC ".$rc.": ".$meldung );
|
|
|
|
return array( $rc, $meldung, $dateidok, $ablagepfad, $vollstaendig );
|
|
}
|
|
|
|
function liefere_dateien_zu_dokument( $mandant_name, $dok_id )
|
|
{
|
|
$ok = existiert_mandant( $mandant_name );
|
|
$connection = mysqli_connect( "localhost", "ca_db", "ca_db", "ca_system" );
|
|
|
|
if ( $ok[ 0 ] > 0 )
|
|
{
|
|
if ( strlen( $dok_id ) > 0 )
|
|
{
|
|
$dok = liefere_dokumentinformationen( $mandant_name, $dok_id );
|
|
$depot = $dok[ 2 ][ "depot" ];
|
|
$abl_verfahren = $dok[ 2 ][ "abl_verfahren" ];
|
|
|
|
$versionen = liefere_versionseintraege( $dok_id );
|
|
if ( $versionen[ 0 ] > 0 )
|
|
{
|
|
foreach ( $versionen[ 2 ] as $version )
|
|
{
|
|
switch( $version[ "ereignis" ] )
|
|
{
|
|
case "IMPORT":
|
|
case "NEUE_DATEI":
|
|
case "PIC_RESIZE":
|
|
$ergebnis = liefere_ablagepfad_zu_dokument( $mandant_name, $dok_id, $depot, $version[ "d_version" ], $version[ "erw" ], $abl_verfahren );
|
|
$dateien[] = $ergebnis[ 4 ];
|
|
break;
|
|
}
|
|
}
|
|
$rc = count( $dateien );
|
|
$meldung = "Zum Dokument ".$dok_id." wurden ".$rc." Dateien gefunden.";
|
|
}
|
|
else
|
|
{
|
|
$rc = -3;
|
|
$meldung = "Zum Dokument ".$dok_id." wurden keine Versionseinträge gefunden oder Fehler: ".$versionen[ 0 ]." / ".$versionen[ 1 ];
|
|
}
|
|
|
|
}
|
|
else
|
|
{
|
|
$rc = -2;
|
|
$meldung = "Es wurde keine Dokument-ID angegeben.";
|
|
}
|
|
|
|
|
|
}
|
|
else
|
|
{
|
|
$rc = $ok[ 0 ];
|
|
$meldung = $ok[ 1 ];
|
|
}
|
|
|
|
if ( $rc < 0 )
|
|
{
|
|
$level = 2;
|
|
}
|
|
else
|
|
{
|
|
$level = 4;
|
|
}
|
|
|
|
xlog( $level, "admin.liefere_dateien_zu_dokument: RC ".$rc.": ".$meldung );
|
|
|
|
return array( $rc, $meldung, $dateien );
|
|
}
|
|
|
|
|
|
|
|
function aktualisiere_dokument_attribute( $mandant_name, $dok_id, $neue_attribute_arr, $mehrfachattribute )
|
|
{
|
|
|
|
$ok = existiert_mandant( $mandant_name );
|
|
$connection = mysqli_connect( "localhost", "ca_db", "ca_db", "ca_system" );
|
|
|
|
if ( $ok[ 0 ] > 0 )
|
|
{
|
|
// Dokumentart feststellen
|
|
// Feststellen, ob sich Attribute geändert haben
|
|
// alte Attribute sichern
|
|
// alte Attribute aktualisieren
|
|
// fertig.
|
|
|
|
$dok = liefere_dokumentinformationen( $mandant_name, $dok_id );
|
|
|
|
$dokart = liefere_dokartinformationen( $mandant_name, $dok[ 2 ][ "dokart_kuerzel" ] );
|
|
|
|
// Dokumentart:
|
|
//$dokart_attribs[ $zeile[ "attrib_db_spalte"] ] = array( "attrib_pflicht"=>$pflicht, "attrib_farbe"=>$farbe, "attrib_layout_fett"=>$fett, "attrib_layout_unterstrichen"=>$unterstrichen, "attrib_layout_kursiv"=>$kursiv, "attrib_id"=>$zeile[ "attrib_id"], "dokart_kuerzel"=>$zeile[ "dokart_kuerzel"], "flags"=>$zeile[ "flags"], "hinzugefuegt_am"=>$zeile[ "hinzugefuegt_am"], "mandant_id"=>$zeile[ "mandant_id"], "attrib_beschreibung"=>$zeile[ "attrib_beschreibung"], "attrib_db_spalte"=>$zeile[ "attrib_db_spalte"], "attrib_erstellt_am"=>$zeile[ "attrib_erstellt_am"], "attrib_geaendert_am"=>$zeile[ "attrib_geaendert_am"], "attrib_name"=>$zeile[ "attrib_name"], "attrib_wertemenge"=>$zeile[ "attrib_wertemenge"], "attrib_vorhandene_werte"=>$vorhanden, "attrib_typ"=>$attrib_typ, "attrib_titel"=>$titel, "attrib_pos_in_maske"=>$pos_in_maske );
|
|
|
|
|
|
|
|
|
|
// Dokument:
|
|
// $ergebnis_arr[ $attribut[ "attrib_db_spalte" ] ] = $ergebnis[ 1 ][ 0 ][ $attribut[ "attrib_db_spalte" ] ];
|
|
|
|
|
|
// Neue Attribute:
|
|
// $neue_attribute_arr[ "alpha_01" ] = $alpha_01;
|
|
// $neue_attribute_arr[ "alpha_02" ] = $alpha_02;
|
|
// $neue_attribute_arr[ "alpha_03" ] = $alpha_03;
|
|
|
|
$aenderung_gefunden = false;
|
|
|
|
if ( ( is_array( $mehrfachattribute ) ) && ( count( $mehrfachattribute ) > 0 ) )
|
|
{
|
|
// Bei neuen Mehrfachattributen wird immer aktualisiert
|
|
$aenderung_gefunden = true;
|
|
}
|
|
|
|
if ( ! ( $aenderung_gefunden ) )
|
|
{
|
|
foreach( $dokart[ 2 ][ "attribute" ] as $dokart_attrib )
|
|
{
|
|
//xlog( 3, "spalte ".$dokart_attrib[ "attrib_db_spalte" ] );
|
|
//xlog( 3, "Attribut Dokument: ".$dok[ 2 ][ $dokart_attrib[ "attrib_db_spalte" ] ] );
|
|
//xlog( 3, "neues Attribut : ".$neue_attribute_arr[ $dokart_attrib[ "attrib_db_spalte" ] ] );
|
|
|
|
//xlog( 1, ">".$dok[ 2 ][ $dokart_attrib[ "attrib_db_spalte" ] ]."< >".$neue_attribute_arr[ $dokart_attrib[ "attrib_db_spalte" ] ]."<" );
|
|
|
|
|
|
|
|
|
|
if ( $dok[ 2 ][ $dokart_attrib[ "attrib_db_spalte" ] ] != $neue_attribute_arr[ $dokart_attrib[ "attrib_db_spalte" ] ] )
|
|
{
|
|
$aenderung_gefunden = true;
|
|
break;
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
|
|
if ( $aenderung_gefunden )
|
|
{
|
|
$versionseintrag = erzeuge_neuen_versionseintrag( $dok_id, "ATTRIB_UPDATE", "", "+" );
|
|
|
|
// Attribute sichern
|
|
|
|
$STATEMENT_I = "insert into ca_index_history ( dok_id, aktualisierungs_zeitpunkt, aktualisierungs_benutzer, version, ";
|
|
$VALUES_I = $dok_id.", '".$versionseintrag[ 4 ]."', '".$_SESSION[ "benutzer_anmeldename" ]."', ".$versionseintrag[ 3 ].", ";
|
|
|
|
$STATEMENT_U = "update ca_index set ";
|
|
|
|
$mehrfach = array();
|
|
|
|
foreach( $dokart[ 2 ][ "attribute" ] as $dokart_attrib )
|
|
{
|
|
|
|
if ( ! ( substr( $dokart_attrib[ "attrib_db_spalte" ], 0, 2 ) == "p_" ) )
|
|
{
|
|
if ( ( $dokart_attrib[ "attrib_titel" ] == true ) && ( strlen( $neue_attribute_arr[ $dokart_attrib[ "attrib_db_spalte" ] ] ) > 0 ) )
|
|
{
|
|
$titel = $titel.$neue_attribute_arr[ $dokart_attrib[ "attrib_db_spalte" ] ]." | ";
|
|
}
|
|
|
|
$STATEMENT_I = $STATEMENT_I.$dokart_attrib[ "attrib_db_spalte" ].", ";
|
|
|
|
switch( $dokart_attrib[ "attrib_typ" ] )
|
|
{
|
|
case "datum":
|
|
if ( strlen( $neue_attribute_arr[ $dokart_attrib[ "attrib_db_spalte" ] ] ) == 0 )
|
|
{
|
|
$datevalue = "null";
|
|
$anfuehrung = "";
|
|
}
|
|
else
|
|
{
|
|
$datevalue = $neue_attribute_arr[ $dokart_attrib[ "attrib_db_spalte" ] ];
|
|
$anfuehrung = "'";
|
|
}
|
|
$VALUES_I = $VALUES_I.$anfuehrung.datum2mysql( $datevalue ).$anfuehrung.", ";
|
|
$STATEMENT_U = $STATEMENT_U.$dokart_attrib[ "attrib_db_spalte" ]." = ".$anfuehrung.datum2mysql( $datevalue ).$anfuehrung.", ";
|
|
break;
|
|
case "alpha":
|
|
case "geld":
|
|
case "text":
|
|
//case "num":
|
|
$VALUES_I = $VALUES_I."'".$neue_attribute_arr[ $dokart_attrib[ "attrib_db_spalte" ] ]."', ";
|
|
$STATEMENT_U = $STATEMENT_U.$dokart_attrib[ "attrib_db_spalte" ]." = '".$neue_attribute_arr[ $dokart_attrib[ "attrib_db_spalte" ] ]."', ";
|
|
break;
|
|
case "num":
|
|
$wert = str_replace( ",", ".", $neue_attribute_arr[ $dokart_attrib[ "attrib_db_spalte" ] ] );
|
|
if ( strlen( $wert ) == 0 )
|
|
{
|
|
$wert = 0;
|
|
}
|
|
$VALUES_I = $VALUES_I.$wert.", ";
|
|
$STATEMENT_U = $STATEMENT_U.$dokart_attrib[ "attrib_db_spalte" ]." = ".$wert.", ";
|
|
break;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$mehrfach[] = $dokart_attrib;
|
|
$mehrfach_gefunden = true;
|
|
}
|
|
}
|
|
|
|
if ( strlen( $titel ) > 0 )
|
|
{
|
|
$titel = substr( $titel, 0, -3 );
|
|
$titel_lang = "(".$dokart[ 2 ][ "dokart_name" ].") ".$titel;
|
|
}
|
|
else
|
|
{
|
|
$titel = ""; //"Dokument-ID ".$dok_id;
|
|
$titel_lang = "";
|
|
}
|
|
|
|
$STATEMENT_I = substr( $STATEMENT_I, 0, -2 )." ) values ( ".substr( $VALUES_I, 0, -2 )." )";
|
|
|
|
$STATEMENT_U = substr( $STATEMENT_U, 0, -2 )." where dok_id = ".$dok_id;
|
|
|
|
$STATEMENT_A = "update ca_dok_ablage set titel = '".$titel."', titel_lang = '".$titel_lang."' where dok_id = ".$dok_id;
|
|
|
|
//xlog( 5, $STATEMENT_I );
|
|
//xlog( 5, $STATEMENT_U );
|
|
xdb( $STATEMENT_I );
|
|
xdb( $STATEMENT_U );
|
|
xdb( $STATEMENT_A );
|
|
|
|
|
|
if ( $mehrfach_gefunden )
|
|
{
|
|
// Mehrfachattribute
|
|
// $mehrfachattribute hat folgenden Aufbau:
|
|
|
|
// array( array( p_alpha_01 => "Wert", p_alpha_02 = "Wert", ...), array( p_alpha_01 => "Wert", p_alpha_02 = "Wert"...), array( p_alpha_01 => "Wert", p_alpha_02 => "Wert", ...))
|
|
|
|
// Nicht ganz einfach, aber was ist schon einfach ???
|
|
|
|
// Zuerst werden die aktuellen Attribute gelöscht, dann die neuen eingetragen (in ca_posdaten und ca_posdaten_history).
|
|
|
|
|
|
$STATEMENT = "delete from ca_posdaten where dok_id = ".$dok_id;
|
|
|
|
xdb( $STATEMENT );
|
|
|
|
//xlog( 4, json_encode( $mehrfach ) ) ;
|
|
|
|
|
|
|
|
$pos_ids = array();
|
|
$pos_ids_text = "";
|
|
|
|
foreach( $mehrfachattribute as $attributzeile )
|
|
{
|
|
$p_felder = "";
|
|
$p_werte = "";
|
|
if ( count( $attributzeile ) > 0 )
|
|
{
|
|
foreach( $attributzeile as $attribut => $wert )
|
|
{
|
|
$p_felder = $p_felder.$attribut.", ";
|
|
|
|
$attr_typ = substr( $attribut, 2, 4 );
|
|
|
|
switch ( $attr_typ )
|
|
{
|
|
case "datu":
|
|
//userlog(5, "Datum ".$wert )
|
|
$wert_passend_pos = datum2mysql( $wert );
|
|
$p_werte = $p_werte."'".mysqli_real_escape_string( $connection, $wert_passend_pos )."', ";
|
|
break;
|
|
case "geld":
|
|
if ( strlen( $wert ) == 0 )
|
|
{
|
|
$wert = "0";
|
|
}
|
|
$wert_passend_pos = str_replace( ",", ".", $wert );
|
|
$p_werte = $p_werte." ".mysqli_real_escape_string( $connection, $wert_passend_pos ).", ";
|
|
break;
|
|
case "alph":
|
|
$wert_passend_pos = $wert;
|
|
$p_werte = $p_werte."'".mysqli_real_escape_string( $connection, $wert_passend_pos )."', ";
|
|
break;
|
|
case "num_":
|
|
if ( strlen( $wert ) == 0 )
|
|
{
|
|
$wert = "0";
|
|
}
|
|
$wert_passend_pos = str_replace( ",", ".", $wert );
|
|
$p_werte = $p_werte." ".mysqli_real_escape_string( $connection, $wert_passend_pos ).", ";
|
|
break;
|
|
}
|
|
|
|
}
|
|
$STATEMENT = "insert into ca_posdaten ( dok_id, ".substr( $p_felder, 0, strlen( $p_felder ) - 2 ).") values (".$dok_id.", ".substr( $p_werte, 0, strlen( $p_werte ) - 2 )." );";
|
|
|
|
//xlog( 5, $STATEMENT );
|
|
|
|
$ergebnis_3 = xdb( $STATEMENT );
|
|
|
|
$STATEMENT = "insert into ca_posdaten_history ( aktualisierungs_zeitpunkt, aktualisierungs_benutzer, version, pos_id, dok_id, ".substr( $p_felder, 0, strlen( $p_felder ) - 2 ).") values ( '".$versionseintrag[ 4 ]."', '".$_SESSION[ "benutzer_anmeldename" ]."', ".$versionseintrag[ 3 ].", ".$ergebnis_3[ 0 ].", ".$dok_id.", ".substr( $p_werte, 0, strlen( $p_werte ) - 2 )." );";
|
|
|
|
//xlog( 5, $STATEMENT );
|
|
|
|
$ergebnis_4 = xdb( $STATEMENT );
|
|
|
|
$pos_ids[] = $ergebnis_3[ 0 ];
|
|
|
|
if ( strlen( $pos_ids_text ) == 0 )
|
|
{
|
|
$pos_ids_text = "( ".$ergebnis_3[ 0 ];
|
|
}
|
|
else
|
|
{
|
|
$pos_ids_text = $pos_ids_text." | ".$ergebnis_3[ 0 ];
|
|
}
|
|
}
|
|
else
|
|
{
|
|
xlog( 3, "admin.aktualisiere_dokument_attribute: leere Positionszeile ignoriert (Dokument-ID ".$dok_id.").");
|
|
}
|
|
}
|
|
|
|
$pos_ids_text = $pos_ids_text." )";
|
|
|
|
$pos_text = " Erzeugte Positions-IDs (".count($pos_ids)."): ".$pos_ids_text;
|
|
}
|
|
|
|
|
|
$rc = 1;
|
|
$meldung = "Für das Dokument ".$dok_id." wurde eine neue Attributversion angelegt.".$pos_text;
|
|
|
|
}
|
|
else
|
|
{
|
|
$rc = -3;
|
|
$meldung = "Es wurden keine geänderten Attribute festgestellt.";
|
|
}
|
|
|
|
|
|
}
|
|
else
|
|
{
|
|
$rc = $ok[ 0 ];
|
|
$meldung = $ok[ 1 ];
|
|
}
|
|
|
|
if ( $rc < 0 )
|
|
{
|
|
$level = 2;
|
|
}
|
|
else
|
|
{
|
|
$level = 4;
|
|
}
|
|
|
|
xlog( $level, "admin.aktualisiere_dokument_attribute: RC ".$rc.": ".$meldung );
|
|
|
|
return array( $rc, $meldung, $dokument_binary, $mime_type );
|
|
}
|
|
|
|
function erzeuge_neuen_versionseintrag( $dok_id, $ereignis, $d_version = "", $k_version = "", $info = "" )
|
|
{
|
|
|
|
if ( strlen( $dok_id ) > 0 )
|
|
{
|
|
if ( strlen( $ereignis ) > 0 )
|
|
{
|
|
|
|
$STATEMENT = "select d_version from ca_dok_history where dok_id = ".$dok_id." and zeitstempel = (select max(zeitstempel) from ca_dok_history where dok_id = ".$dok_id." ) ";
|
|
|
|
//$STATEMENT = "select d_version, dok_id, kennung from ca_dok_ablage where ".$update;
|
|
|
|
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
$bekannte_d_version = $ergebnis[ 1 ][ 0 ][ "d_version" ];
|
|
|
|
if ( strlen( $bekannte_d_version ) == 0 )
|
|
{
|
|
$bekannte_d_version = 0;
|
|
}
|
|
|
|
$STATEMENT = "select k_version from ca_dok_history where dok_id = ".$dok_id." and zeitstempel = (select max(zeitstempel) from ca_dok_history where dok_id = ".$dok_id." ) ";
|
|
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
$bekannte_k_version = $ergebnis[ 1 ][ 0 ][ "k_version" ];
|
|
|
|
if ( strlen( $bekannte_k_version ) == 0 )
|
|
{
|
|
$bekannte_k_version = 0;
|
|
}
|
|
|
|
if ( $k_version == "+" )
|
|
{
|
|
$bekannte_k_version = bcadd( $bekannte_k_version, 1, 0 );
|
|
}
|
|
|
|
if ( $d_version == "+" )
|
|
{
|
|
$bekannte_d_version = bcadd( $bekannte_d_version, 1, 0 );
|
|
}
|
|
|
|
|
|
|
|
if ( !( ( $bekannte_k_version == 0 ) || ( $bekannte_d_version == 0 ) ) )
|
|
{
|
|
switch ( $ereignis )
|
|
{
|
|
case "PIC_RESIZE":
|
|
$erw = 1;
|
|
$j_flag_0 = ", j_flag = 0 ";
|
|
break;
|
|
default:
|
|
$erw = 0;
|
|
$j_flag_0 = "";
|
|
break;
|
|
}
|
|
|
|
|
|
$zeitstempel = time();
|
|
|
|
$STATEMENT = "insert into ca_dok_history ( dok_id, ereignis, info, d_version, k_version, zeitstempel, benutzer_anmeldename, erw ) values ( ".$dok_id.", '".$ereignis."', '".$info."', ".$bekannte_d_version.", ".$bekannte_k_version.", ".$zeitstempel.", '".$_SESSION[ "benutzer_anmeldename" ]."', ".$erw." )";
|
|
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
|
|
|
|
$STATEMENT = "update ca_dok_ablage set d_version = ".$bekannte_d_version.", k_version = ".$bekannte_k_version.$j_flag_0." where dok_id = ".$dok_id;
|
|
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
$rc = 0;
|
|
$meldung = "Es wurde ein History-Eintrag für Dokument-ID ".$dok_id." erzeugt (Zeitstempel: ".date( "d.m.Y H:i", $zeitstempel )." Uhr).";
|
|
|
|
}
|
|
else
|
|
{
|
|
$rc = -3;
|
|
$meldung = "Eine Version 0 kann nicht erzeugt werden: K|D ".$bekannte_k_version."|".$bekannte_d_version.".";
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
else
|
|
{
|
|
$rc = -2;
|
|
$meldung = "Es wurde kein Ereignis angegeben.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -1;
|
|
$meldung = "Es wurde keine Dokument-ID angegeben.";
|
|
}
|
|
|
|
if ( $rc < 0 )
|
|
{
|
|
$level = 2;
|
|
}
|
|
else
|
|
{
|
|
$level = 6;
|
|
}
|
|
|
|
xlog( $level, "admin.erzeuge_neuen_versionseintrag: RC ".$rc.": ".$meldung );
|
|
|
|
return array( $rc, $meldung, $bekannte_d_version, $bekannte_k_version, $zeitstempel );
|
|
|
|
}
|
|
|
|
function liefere_versionseintraege( $dok_id )
|
|
{
|
|
|
|
$ok = existiert_mandant( $_SESSION[ "mandant_name" ] );
|
|
|
|
if ( $ok[ 0 ] > 0 )
|
|
{
|
|
if ( strlen( $dok_id ) > 0 )
|
|
{
|
|
$STATEMENT = "select h.dok_id, h.ereignis, h.info, h.d_version, h.k_version, h.zeitstempel, h.benutzer_anmeldename, a.groesse, a.mime_type, a.erw from ca_dok_history h, ca_dok_datei a where a.dok_id = ".$dok_id." and h.dok_id = a.dok_id and h.d_version = a.version and h.erw = a.erw order by zeitstempel";
|
|
|
|
//xlog( 1, $STATEMENT );
|
|
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
if ( $ergebnis[ 0 ] != 0 )
|
|
{
|
|
$ergebnis_arr = $ergebnis[ 1 ];
|
|
$rc = $ergebnis[ 0 ];
|
|
$meldung = "Liefere ".$rc." Versionseintraege für Dokument-ID ".$dok_id.".";
|
|
}
|
|
else
|
|
{
|
|
$rc = -3;
|
|
$meldung = "Zur angegebenen Dokument-ID ".$dok_id." wurde keine Versionen gefunden.";
|
|
}
|
|
|
|
}
|
|
else
|
|
{
|
|
$rc = -2;
|
|
$meldung = "Es wurde keine Dokument-ID angegeben.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = $ok[ 0 ];
|
|
$meldung = $ok[ 1 ];
|
|
}
|
|
|
|
if ( $rc < 0 )
|
|
{
|
|
$level = 2;
|
|
}
|
|
else
|
|
{
|
|
$level = 4;
|
|
}
|
|
|
|
xlog( $level, "admin.liefere_versionseintraege: RC ".$rc.": ".$meldung );
|
|
|
|
return array( $rc, $meldung, $ergebnis_arr );
|
|
}
|
|
|
|
function loesche_dokument( $mandant_name, $dok_id, $hartes_loeschen = false )
|
|
{
|
|
$ok = existiert_mandant( $mandant_name );
|
|
|
|
if ( $ok[ 0 ] > 0 )
|
|
{
|
|
if ( strlen( $dok_id ) > 0 )
|
|
{
|
|
$dok = liefere_dokumentinformationen( $mandant_name, $dok_id );
|
|
|
|
$ergebnis = besitzt_benutzer_systemrecht( $mandant_name, $_SESSION[ "benutzer_anmeldename" ], $dok[ 2 ][ "dokart_typ" ]."_".$dok[ 2 ][ "dokart_kuerzel" ]."_LOESCHEN" );
|
|
|
|
if ( $ergebnis[ 0 ] == 1 )
|
|
{
|
|
if ( $hartes_loeschen != true )
|
|
{
|
|
$STATEMENT = "update ca_dok_ablage set status = 'geloescht' where dok_id = ".$dok_id." and mandant_id = ".$ok[ 0 ];
|
|
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
$rc = 1;
|
|
$meldung = "Das Dokument ".$dok_id." wurde im Mandanten ".$mandant_name." gelöscht.";
|
|
}
|
|
else
|
|
{
|
|
$STATEMENT = "delete from ca_dok_history where dok_id = ".$dok_id." and dok_id in (select dok_id from ca_dok_ablage where mandant_id = ".$ok[ 0 ].") ";
|
|
xlog( 6, $STATEMENT );
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
$STATEMENT = "delete from ca_dok_datei where dok_id = ".$dok_id." and dok_id in (select dok_id from ca_dok_ablage where mandant_id = ".$ok[ 0 ].") ";
|
|
xlog( 6, $STATEMENT );
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
$STATEMENT = "delete from ca_index where dok_id = ".$dok_id." and dok_id in (select dok_id from ca_dok_ablage where mandant_id = ".$ok[ 0 ].") ";
|
|
xlog( 6, $STATEMENT );
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
$STATEMENT = "delete from ca_index_history where dok_id = ".$dok_id." and dok_id in (select dok_id from ca_dok_ablage where mandant_id = ".$ok[ 0 ].") ";
|
|
xlog( 6, $STATEMENT );
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
$STATEMENT = "delete from ca_notiz where element_id = ".$dok_id." and element_typ = 'd'"." and element_id in (select dok_id from ca_dok_ablage where mandant_id = ".$ok[ 0 ].") ";
|
|
xlog( 6, $STATEMENT );
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
$STATEMENT = "delete from ca_jobs where element = ".$dok_id." and element_typ = 'd'"." and element in (select dok_id from ca_dok_ablage where mandant_id = ".$ok[ 0 ].") ";
|
|
xlog( 6, $STATEMENT );
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
$STATEMENT = "delete from ca_posdaten where dok_id = ".$dok_id." and dok_id in (select dok_id from ca_dok_ablage where mandant_id = ".$ok[ 0 ].") ";
|
|
xlog( 6, $STATEMENT );
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
$STATEMENT = "delete from ca_posdaten_history where dok_id = ".$dok_id." and dok_id in (select dok_id from ca_dok_ablage where mandant_id = ".$ok[ 0 ].") ";
|
|
xlog( 6, $STATEMENT );
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
$STATEMENT = "delete from ca_bezug where ( dok_id_1 = ".$dok_id." or dok_id_2 = ".$dok_id." ) and ( ( dok_id_1 in ( select dok_id from ca_dok_ablage where mandant_id = ".$ok[ 0 ]." ) ) or ( dok_id_2 in ( select dok_id from ca_dok_ablage where mandant_id = ".$ok[ 0 ]." ) ) )";
|
|
xlog( 6, $STATEMENT );
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
$STATEMENT = "delete from ca_wfl_protokoll where dok_id = ".$dok_id." and dok_id in (select dok_id from ca_dok_ablage where mandant_id = ".$ok[ 0 ].") ";
|
|
xlog( 6, $STATEMENT );
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
$STATEMENT = "delete from ca_favoriten where unter_elem = '".$dok_id."' and unter_elem_typ = 'd' and unter_elem in (select dok_id from ca_dok_ablage where mandant_id = ".$ok[ 0 ].") ";
|
|
xlog( 6, $STATEMENT );
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
$STATEMENT = "delete from ca_postkorb where dok_id = ".$dok_id." and dok_id in (select dok_id from ca_dok_ablage where mandant_id = ".$ok[ 0 ].") ";
|
|
xlog( 6, $STATEMENT );
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
$STATEMENT = "delete from ca_dok_ablage where dok_id = ".$dok_id." and mandant_id = ".$ok[ 0 ];
|
|
xlog( 6, $STATEMENT );
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
// eigentlich muss jetzt noch die Dokumentdatei gelöscht werden.
|
|
|
|
$rc = 2;
|
|
$meldung = "Das Dokument ".$dok_id." wurde im Mandanten ".$mandant_name." gelöscht (the hard way).";
|
|
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -5;
|
|
$meldung = "Es ist ein Fehler aufgetreten oder nicht ausreichende Berechtigungen (".$dok_id."): ".$ergebnis[ 1 ];
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -2;
|
|
$meldung = "Es wurde keine Dokument-ID angegeben.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = $ok[ 0 ];
|
|
$meldung = $ok[ 1 ];
|
|
}
|
|
|
|
if ( $rc < 0 )
|
|
{
|
|
$level = 2;
|
|
}
|
|
else
|
|
{
|
|
$level = 4;
|
|
}
|
|
|
|
xlog( $level, "admin.loesche_dokument: RC ".$rc.": ".$meldung );
|
|
|
|
return array( $rc, $meldung );
|
|
}
|
|
|
|
function loesche_dokument_2( $mandant_name, $dok_id, $hartes_loeschen = false )
|
|
{
|
|
// Diese Funktion soll Dokumente inkl. der dazugehörigen Dateien im Dateibaum löschen
|
|
|
|
$ok = existiert_mandant( $mandant_name );
|
|
|
|
if ( $ok[ 0 ] > 0 )
|
|
{
|
|
if ( strlen( $dok_id ) > 0 )
|
|
{
|
|
$dok = liefere_dokumentinformationen( $mandant_name, $dok_id );
|
|
|
|
$ergebnis = besitzt_benutzer_systemrecht( $mandant_name, $_SESSION[ "benutzer_anmeldename" ], $dok[ 2 ][ "dokart_typ" ]."_".$dok[ 2 ][ "dokart_kuerzel" ]."_LOESCHEN" );
|
|
|
|
if ( $ergebnis[ 0 ] == 1 )
|
|
{
|
|
if ( $hartes_loeschen != true )
|
|
{
|
|
$STATEMENT = "update ca_dok_ablage set status = 'geloescht' where dok_id = ".$dok_id." and mandant_id = ".$ok[ 0 ];
|
|
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
$rc = 1;
|
|
$meldung = "Das Dokument ".$dok_id." wurde im Mandanten ".$mandant_name." gelöscht.";
|
|
}
|
|
else
|
|
{
|
|
// Zuerst die Nutzdatei löschen
|
|
$ergebnis = liefere_dateien_zu_dokument( $mandant_name, $dok_id );
|
|
|
|
//xlog( 3, "ergebnis ".json_encode( $ergebnis ) );
|
|
|
|
if ( $ergebnis[ 0 ] > 0 )
|
|
{
|
|
$co = 0;
|
|
$cu = 0;
|
|
foreach( $ergebnis[ 2 ] as $dateipfad )
|
|
{
|
|
//xlog( 3, "Dateipfad ".$dateipfad );
|
|
$dateipfad = realpath( $dateipfad );
|
|
$e = unlink( $dateipfad );
|
|
|
|
if ( $e == false )
|
|
{
|
|
xlog( 2, "admin.loesche_dokument_2: Die Datei ".$dateipfad." konnte nicht gelöscht werden." );
|
|
$co++;
|
|
}
|
|
else
|
|
{
|
|
$cu++;
|
|
xlog( 3, "admin.loesche_dokument_2: Die Datei ".$dateipfad." wurde gelöscht." );
|
|
}
|
|
}
|
|
|
|
if ( $co > 0 )
|
|
{
|
|
$dat_meldung_2 = $co." Dateien konnten nicht gelöscht werden (siehe Log).";
|
|
}
|
|
|
|
$rc = ergebnis[ 0 ];
|
|
$dat_meldung = " Es wurden ".$cu." Dateien gelöscht. ".$dat_meldung_2;
|
|
}
|
|
else
|
|
{
|
|
$dat_meldung = " Es wurden keine Nutzdateien zu Dokument ".$dok_id." gefunden.";
|
|
}
|
|
|
|
$STATEMENT = "delete from ca_dok_history where dok_id = ".$dok_id." and dok_id in (select dok_id from ca_dok_ablage where mandant_id = ".$ok[ 0 ].") ";
|
|
xlog( 6, $STATEMENT );
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
$STATEMENT = "delete from ca_dok_datei where dok_id = ".$dok_id." and dok_id in (select dok_id from ca_dok_ablage where mandant_id = ".$ok[ 0 ].") ";
|
|
xlog( 6, $STATEMENT );
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
$STATEMENT = "delete from ca_index where dok_id = ".$dok_id." and dok_id in (select dok_id from ca_dok_ablage where mandant_id = ".$ok[ 0 ].") ";
|
|
xlog( 6, $STATEMENT );
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
$STATEMENT = "delete from ca_index_history where dok_id = ".$dok_id." and dok_id in (select dok_id from ca_dok_ablage where mandant_id = ".$ok[ 0 ].") ";
|
|
xlog( 6, $STATEMENT );
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
$STATEMENT = "delete from ca_notiz where element_id = ".$dok_id." and element_typ = 'd'"." and element_id in (select dok_id from ca_dok_ablage where mandant_id = ".$ok[ 0 ].") ";
|
|
xlog( 6, $STATEMENT );
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
$STATEMENT = "delete from ca_jobs where element = ".$dok_id." and element_typ = 'd'"." and element in (select dok_id from ca_dok_ablage where mandant_id = ".$ok[ 0 ].") ";
|
|
xlog( 6, $STATEMENT );
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
$STATEMENT = "delete from ca_posdaten where dok_id = ".$dok_id." and dok_id in (select dok_id from ca_dok_ablage where mandant_id = ".$ok[ 0 ].") ";
|
|
xlog( 6, $STATEMENT );
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
$STATEMENT = "delete from ca_posdaten_history where dok_id = ".$dok_id." and dok_id in (select dok_id from ca_dok_ablage where mandant_id = ".$ok[ 0 ].") ";
|
|
xlog( 6, $STATEMENT );
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
$STATEMENT = "delete from ca_bezug where ( dok_id_1 = ".$dok_id." or dok_id_2 = ".$dok_id." ) and ( ( dok_id_1 in ( select dok_id from ca_dok_ablage where mandant_id = ".$ok[ 0 ]." ) ) or ( dok_id_2 in ( select dok_id from ca_dok_ablage where mandant_id = ".$ok[ 0 ]." ) ) )";
|
|
xlog( 6, $STATEMENT );
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
$STATEMENT = "delete from ca_wfl_protokoll where dok_id = ".$dok_id." and dok_id in (select dok_id from ca_dok_ablage where mandant_id = ".$ok[ 0 ].") ";
|
|
xlog( 6, $STATEMENT );
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
$STATEMENT = "delete from ca_favoriten where unter_elem = '".$dok_id."' and unter_elem_typ = 'd' and unter_elem in (select dok_id from ca_dok_ablage where mandant_id = ".$ok[ 0 ].") ";
|
|
xlog( 6, $STATEMENT );
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
$STATEMENT = "delete from ca_postkorb where dok_id = ".$dok_id." and dok_id in (select dok_id from ca_dok_ablage where mandant_id = ".$ok[ 0 ].") ";
|
|
xlog( 6, $STATEMENT );
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
$STATEMENT = "delete from ca_dok_ablage where dok_id = ".$dok_id." and mandant_id = ".$ok[ 0 ];
|
|
xlog( 6, $STATEMENT );
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
|
|
|
|
|
|
$rc = 2;
|
|
$meldung = "Das Dokument ".$dok_id." wurde im Mandanten ".$mandant_name." gelöscht (the hard way).".$dat_meldung;
|
|
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -5;
|
|
$meldung = "Es ist ein Fehler aufgetreten oder nicht ausreichende Berechtigungen (".$dok_id."): ".$ergebnis[ 1 ];
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -2;
|
|
$meldung = "Es wurde keine Dokument-ID angegeben.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = $ok[ 0 ];
|
|
$meldung = $ok[ 1 ];
|
|
}
|
|
|
|
if ( $rc < 0 )
|
|
{
|
|
$level = 2;
|
|
}
|
|
else
|
|
{
|
|
$level = 4;
|
|
}
|
|
|
|
xlog( $level, "admin.loesche_dokument: RC ".$rc.": ".$meldung );
|
|
|
|
return array( $rc, $meldung );
|
|
}
|
|
|
|
function liefere_kenndaten_versionseintrag( $mandant_name, $dok_id, $k_version, $dokart_kuerzel = "" )
|
|
{
|
|
$ok = existiert_mandant( $mandant_name );
|
|
|
|
if ( $ok[ 0 ] > 0 )
|
|
{
|
|
if ( ( strlen( $dok_id ) > 0 ) && ( strlen( $k_version ) > 0 ) )
|
|
{
|
|
if ( strlen( $dokart_kuerzel ) == 0 )
|
|
{
|
|
$dokument = liefere_dokumentinformationen( $mandant_name, $dok_id );
|
|
$dokart_kuerzel = $dokument[ 2 ][ "dokart_kuerzel" ];
|
|
}
|
|
|
|
$dokart = liefere_dokartinformationen( $mandant_name, $dokart_kuerzel );
|
|
|
|
$SELECT = "dok_id, aktualisierungs_zeitpunkt, aktualisierungs_benutzer, version, ";
|
|
|
|
foreach( $dokart[ 2 ][ "attribute" ] as $attribut )
|
|
{
|
|
if ( substr( $attribut[ "attrib_db_spalte" ], 0, 2 ) != "p_" )
|
|
{
|
|
$SELECT = $SELECT.$attribut[ "attrib_db_spalte" ].", ";
|
|
}
|
|
else
|
|
{
|
|
$POS_SELECT = $POS_SELECT.$attribut[ "attrib_db_spalte" ].", ";
|
|
}
|
|
}
|
|
|
|
$SELECT = substr( $SELECT, 0, strlen( $SELECT ) - 2 );
|
|
$POS_SELECT = substr( $POS_SELECT, 0, strlen( $POS_SELECT ) - 2 );
|
|
|
|
if ( strlen( $POS_SELECT ) > 0 )
|
|
{
|
|
$POS_SELECT = ", ".$POS_SELECT;
|
|
}
|
|
|
|
$STATEMENT = "select ".$SELECT." from ca_index_history where dok_id = ".$dok_id." and version = ".$k_version;
|
|
|
|
//xlog( 4, $STATEMENT);
|
|
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
if ( $ergebnis[ 0 ] == 1 )
|
|
{
|
|
|
|
foreach( $ergebnis[ 1 ][ 0 ] as $key => $value )
|
|
{
|
|
$key_split = explode( "_", $key );
|
|
$key_split = mb_strtolower( $key_split[ 0 ] );
|
|
|
|
switch ( $key_split )
|
|
{
|
|
case "datum":
|
|
$treffer[ $key ] = mysql2datum( $value );
|
|
break;
|
|
default:
|
|
$treffer[ $key ] = $value;
|
|
break;
|
|
}
|
|
}
|
|
|
|
//xlog( 4, json_encode( $treffer ) );
|
|
|
|
$STATEMENT = "select pos_id, aktualisierungs_zeitpunkt, aktualisierungs_benutzer, version ".$POS_SELECT." from ca_posdaten_history where dok_id = ".$dok_id." and version = ".$k_version;
|
|
|
|
xlog( 6, "admin.liefere_kenndaten_versionseintrag: ".$STATEMENT );
|
|
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
|
|
if ( $ergebnis[ 0 ] > 0 )
|
|
{
|
|
$i = 0;
|
|
foreach( $ergebnis[ 1 ] as $trefferzeile )
|
|
{
|
|
$i++;
|
|
$zeile = array();
|
|
foreach( $trefferzeile as $feld=>$wert )
|
|
{
|
|
//xlog( 4, $i." Feld ".$feld." Wert ".$wert );
|
|
|
|
$f = explode( "_", $feld );
|
|
|
|
$f = $f[ 0 ]."_".$f[ 1 ];
|
|
|
|
switch ( $f )
|
|
{
|
|
case "p_alpha":
|
|
case "p_num":
|
|
case "p_geld":
|
|
$zeile[ $feld ] = $wert;
|
|
break;
|
|
case "p_datum":
|
|
$zeile[ $feld ] = mysql2datum( $wert );
|
|
break;
|
|
}
|
|
|
|
}
|
|
$mehrfachattribute[] = $zeile;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$mehrfachattribute = array();
|
|
}
|
|
|
|
|
|
$rc = 1;
|
|
$meldung = "Liefere Kenndaten-Version ".$k_version." zur Dokument-ID ".$dok_id.".";
|
|
}
|
|
else
|
|
{
|
|
$rc = -4;
|
|
$meldung = "Es ist ein Fehler aufgetreten: RC ".$ergebnis[ 0 ].", Meldung: ".$ergebnis[ 1 ];
|
|
}
|
|
|
|
}
|
|
else
|
|
{
|
|
$rc = -3;
|
|
$meldung = "Entweder Dokument-ID >".$dok_id."< oder Kenndaten-Version >".$k_version."< wurden nicht angegeben.";
|
|
}
|
|
|
|
|
|
}
|
|
else
|
|
{
|
|
$rc = $ok[ 0 ];
|
|
$meldung = $ok[ 1 ];
|
|
}
|
|
|
|
if ( $rc < 0 )
|
|
{
|
|
$level = 2;
|
|
}
|
|
else
|
|
{
|
|
$level = 4;
|
|
}
|
|
|
|
xlog( $level, "admin.liefere_kenndaten_versionseintrag: RC ".$rc.": ".$meldung );
|
|
|
|
return array( $rc, $meldung, $treffer, $dokart[ 2 ], $mehrfachattribute );
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function exportiere_dokument( $mandant_name, $dok_id, $export_pfad )
|
|
{
|
|
$ok_1 = existiert_mandant( $mandant_name );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if ( $ok_1[ 0 ] > 0 )
|
|
{
|
|
if ( strlen( $dok_id ) > 0 )
|
|
{
|
|
if ( strlen( $export_pfad ) == 0 )
|
|
{
|
|
$ep = liefere_konfig( $mandant_name, "import_ordner" );
|
|
if ( strlen( $ep ) > 0 )
|
|
{
|
|
$export_pfad = $ep;
|
|
xlog( 3, "admin.exportiere_dokument: Import-Parameter >export_pfad< nicht gesetzt, benutze Konfigurationsoption >import_ordner< (Wert: >".$ep."<." );
|
|
}
|
|
}
|
|
|
|
if ( strlen( $export_pfad ) > 0 )
|
|
{
|
|
$ergebnis = liefere_dokumentinformationen( $mandant_name, $dok_id );
|
|
|
|
if ( $ergebnis[ 0 ] > 0 )
|
|
{
|
|
$file_text = "";
|
|
$file_text = $file_text."dokart = \"".$ergebnis[ 2 ][ "dokart_kuerzel" ]."\"\n";
|
|
$file_text = $file_text."mime_type = \"".$ergebnis[ 2 ][ "mime_type" ]."\"\n";
|
|
$file_text = $file_text."kennung = \"".$ergebnis[ 2 ][ "kennung" ]."\"\n";
|
|
$file_text = $file_text."ursprungs_dateiname = \"".$ergebnis[ 2 ][ "ursprungs_dateiname" ]."\"\n";
|
|
|
|
foreach( $ergebnis[ 2 ] as $eigenschaft=>$wert )
|
|
{
|
|
$key = substr( $eigenschaft, 0, 4 );
|
|
|
|
switch ( $key )
|
|
{
|
|
case "alph":
|
|
case "datu":
|
|
case "num_":
|
|
case "geld":
|
|
$file_text = $file_text.$eigenschaft." = \"".$ergebnis[ 2 ][ $eigenschaft ]."\"\n";
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
|
|
}
|
|
|
|
//xlog( 1, $file_text );
|
|
if ( $ergebnis[ 2 ][ "dokart_typ" ] == "D" )
|
|
{
|
|
$optionen[ "erw_datei_typ" ] = 0;
|
|
$dokument = liefere_dokumentbinary( $mandant_name, $_SESSION[ "benutzer_anmeldename" ], $dok_id, $optionen );
|
|
$ext = pathinfo( $ergebnis[ 2 ][ "ursprungs_dateiname" ], PATHINFO_EXTENSION );
|
|
}
|
|
else
|
|
{
|
|
$dokument = array( "", "", "" );
|
|
$ext = "akte";
|
|
}
|
|
|
|
// Dateien schreiben
|
|
$dateiname = str_pad( $ok_1[ 0 ], 3, "0", STR_PAD_LEFT )."_".str_pad( $dok_id, 12, "0", STR_PAD_LEFT);
|
|
|
|
$b = file_put_contents( $export_pfad.DIRECTORY_SEPARATOR.$dateiname.".idx", $file_text );
|
|
|
|
if ( $b !== false )
|
|
{
|
|
$f = file_put_contents( $export_pfad.DIRECTORY_SEPARATOR.$dateiname.".".$ext, $dokument[ 2 ] );
|
|
|
|
if ( $f !== false )
|
|
{
|
|
$rc = 1;
|
|
$meldung = "Das Dokument ".$dok_id." wurde erfolgreich exporiert.";
|
|
}
|
|
else
|
|
{
|
|
unlink( $export_pfad.DIRECTORY_SEPARATOR.$dateiname.".idx" );
|
|
$rc = -6;
|
|
$meldung = "Die Nutzdatei zu Dokument ".$dok_id." konnte nicht geschrieben werden.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -4;
|
|
$meldung = "Die Indexdatei zu Dokument ".$dok_id." konnte nicht geschrieben werden.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = $ergebnis[ 0 ];
|
|
$meldung = $ergebnis[ 1 ];
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -3;
|
|
$meldung = "Es wurde kein Export-Pfad angegeben und <import_ordner> ist nicht gesetzt.";
|
|
}
|
|
|
|
}
|
|
else
|
|
{
|
|
$rc = -2;
|
|
$meldung = "Es wurde keine Dokument-ID angegeben.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = $ok_1[ 0 ];
|
|
$meldung = $ok_1[ 1 ];
|
|
}
|
|
|
|
if ( $rc < 0 )
|
|
{
|
|
$level = 2;
|
|
}
|
|
else
|
|
{
|
|
$level = 4;
|
|
}
|
|
|
|
xlog( $level, "admin.exportiere_dokument: RC ".$rc.": ".$meldung );
|
|
return array( $rc, $meldung, $ergebnis_arr );
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function sperre_dokument( $dok_id, $benutzer_anmeldename )
|
|
{
|
|
if ( strlen( $dok_id ) > 0 )
|
|
{
|
|
if ( strlen( $benutzer_anmeldename ) > 0 )
|
|
{
|
|
$STATEMENT = "select sperr_status, sperr_beginn, sperr_benutzer from ca_dok_ablage where dok_id = ".$dok_id;
|
|
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
//xlog( 1, json_encode( $ergebnis ) );
|
|
|
|
if ( strlen( $ergebnis[ 1 ][ 0 ][ "sperr_benutzer" ] ) == 0 )
|
|
{
|
|
|
|
$STATEMENT = "update ca_dok_ablage set sperr_status = '1', sperr_beginn = '".time()."', sperr_benutzer = '".$benutzer_anmeldename."' where dok_id = ".$dok_id;
|
|
|
|
xdb( $STATEMENT );
|
|
|
|
$STATEMENT = "select sperr_status, sperr_beginn, sperr_benutzer from ca_dok_ablage where dok_id = ".$dok_id;
|
|
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
if ( $ergebnis[ 1 ][ 0 ][ "sperr_benutzer" ] == $benutzer_anmeldename )
|
|
{
|
|
$rc = 1;
|
|
$meldung = "Das Dokument ".$dok_id." wurde vom Benutzer ".$benutzer_anmeldename." gesperrt.";
|
|
}
|
|
else
|
|
{
|
|
$rc = -12;
|
|
$meldung = "Das Dokument wurde zwischenzeitlich vom Benutzer ".$ergebnis[ 1 ][ 0 ][ "sperr_benutzer" ]." gesperrt.";
|
|
}
|
|
|
|
|
|
}
|
|
else
|
|
{
|
|
if ( $ergebnis[ 1 ][ 0 ][ "sperr_benutzer" ] == $benutzer_anmeldename )
|
|
{
|
|
$rc = 2;
|
|
$meldung = "Das Dokument ".$dok_id." wurde bereits vom Benutzer ".$benutzer_anmeldename." gesperrt.";
|
|
}
|
|
else
|
|
{
|
|
$rc = -19;
|
|
$meldung = "Das Dokument wurde bereits am ".date( "d.m.Y H:i", (integer)$ergebnis[ 1 ][ 0 ][ "sperr_beginn" ] )." Uhr vom Benutzer ".$ergebnis[ 1 ][ 0 ][ "sperr_benutzer" ]." gesperrt.";
|
|
}
|
|
}
|
|
|
|
}
|
|
else
|
|
{
|
|
$rc = -1;
|
|
$meldung = "Es wurde kein Benutzer-Name angegeben.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$rc = -1;
|
|
$meldung = "Es wurde keine Dokument-ID angegeben.";
|
|
}
|
|
|
|
if ( $rc < 0 )
|
|
{
|
|
$level = 2;
|
|
}
|
|
else
|
|
{
|
|
$level = 6;
|
|
}
|
|
|
|
xlog( $level, "admin.sperre_dokument: RC ".$rc.": ".$meldung );
|
|
return array( $rc, $meldung );
|
|
}
|
|
|
|
function entsperre_dokument( $dok_id )
|
|
{
|
|
if ( strlen( $dok_id ) > 0 )
|
|
{
|
|
|
|
$STATEMENT = "update ca_dok_ablage set sperr_status = '0', sperr_beginn = '', sperr_benutzer = '' where dok_id = ".$dok_id;
|
|
|
|
xdb( $STATEMENT );
|
|
|
|
$rc = 1;
|
|
$meldung = "Das Dokument ".$dok_id." wurde entsperrt.";
|
|
|
|
}
|
|
else
|
|
{
|
|
$rc = -1;
|
|
$meldung = "Es wurde keine Dokument-ID angegeben.";
|
|
}
|
|
|
|
if ( $rc < 0 )
|
|
{
|
|
$level = 2;
|
|
}
|
|
else
|
|
{
|
|
$level = 6;
|
|
}
|
|
|
|
xlog( $level, "admin.entsperre_dokument: RC ".$rc.": ".$meldung );
|
|
return array( $rc, $meldung );
|
|
}
|
|
|
|
function ist_dokument_gesperrt( $dok_id )
|
|
{
|
|
if ( strlen( $dok_id ) > 0 )
|
|
{
|
|
$STATEMENT = "select sperr_status, sperr_beginn, sperr_benutzer from ca_dok_ablage where dok_id = ".$dok_id;
|
|
|
|
$ergebnis = xdb( $STATEMENT );
|
|
|
|
if ( strlen( $ergebnis[ 1 ][ 0 ][ "sperr_status" ] ) == 0 )
|
|
{
|
|
$sperr_status = "0";
|
|
}
|
|
else
|
|
{
|
|
$sperr_status = $ergebnis[ 1 ][ 0 ][ "sperr_status" ];
|
|
}
|
|
|
|
$ergebnis[ "sperr_status" ] = $sperr_status;
|
|
$ergebnis[ "sperr_beginn_ts" ] = $ergebnis[ 1 ][ 0 ][ "sperr_beginn" ];
|
|
$ergebnis[ "sperr_beginn" ] = date( "d.m.Y H:i", $ergebnis[ 1 ][ 0 ][ "sperr_beginn" ] )." Uhr";
|
|
|
|
$ergebnis[ "sperr_benutzer" ] = $ergebnis[ 1 ][ 0 ][ "sperr_benutzer" ];
|
|
|
|
$rc = 0;
|
|
$meldung = "Liefere Informationen zum Sperrstatus des Dokuments ".$dok_id.".";
|
|
|
|
}
|
|
else
|
|
{
|
|
$rc = -1;
|
|
$meldung = "Es wurde keine Dokument-ID angegeben.";
|
|
}
|
|
|
|
if ( $rc < 0 )
|
|
{
|
|
$level = 2;
|
|
}
|
|
else
|
|
{
|
|
$level = 6;
|
|
}
|
|
|
|
xlog( $level, "admin.ist_dokument_gesperrt: RC ".$rc.": ".$meldung );
|
|
return array( $rc, $meldung, $ergebnis );
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function darf_benutzer_dokument_sehen( $mandant_name, $benutzer_anmeldename, $dok_id )
|
|
{}
|
|
|
|
function darf_benutzer_dokumente_sehen( $mandant_name, $benutzer_anmeldename, $dok_ids )
|
|
{}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
?>
|