0 )
{
$aseiuzrfsuaeghfol_dok = $aseiuzrfsuaeghfol_dokument[ 2 ][ "titel_lang" ];
}
else
{
$aseiuzrfsuaeghfol_dok = $aseiuzrfsuaeghfol_dok_id;
}
if ( $aseiuzrfsuaeghfol_sp[ 0 ] > 0 )
{
$aseiuzrfsuaeghfol_kopf = liefere_kopf( $aseiuzrfsuaeghfol_workflow[ 2 ], $aseiuzrfsuaeghfol_maske[ 2 ], $aseiuzrfsuaeghfol_dok );
$aseiuzrfsuaeghfol_html_output = $aseiuzrfsuaeghfol_html_output.$aseiuzrfsuaeghfol_kopf[ "html" ];
$aseiuzrfsuaeghfol_plugins = array( "maske_plugin_01", "maske_plugin_02", "maske_plugin_03", "maske_plugin_04", "maske_plugin_05", "maske_plugin_06", "maske_plugin_07", "maske_plugin_08", "maske_plugin_09", "maske_plugin_10" );
//$aseiuzrfsuaeghfol_html_output = $aseiuzrfsuaeghfol_html_output."";
//
$aseiuzrfsuaeghfol_html_output = $aseiuzrfsuaeghfol_html_output."
"; //border: 4px solid green;
$aseiuzrfsuaeghfol_html_output = $aseiuzrfsuaeghfol_html_output."
";
$aseiuzrfsuaeghfol_html_output = $aseiuzrfsuaeghfol_html_output."
"._web_verpacke_dok_in_tags( $aseiuzrfsuaeghfol_dokument[ 2 ][ "dok_id" ], $aseiuzrfsuaeghfol_dokument[ 2 ][ "mime_type" ], 14 )."
";
$aseiuzrfsuaeghfol_html_output = $aseiuzrfsuaeghfol_html_output.liefere_fuss( $aseiuzrfsuaeghfol_kopf );
}
else
{
$aseiuzrfsuaeghfol_kopf_output = liefere_kopf( $aseiuzrfsuaeghfol_workflow[ 2 ], $aseiuzrfsuaeghfol_maske[ 2 ], $aseiuzrfsuaeghfol_dok );
$aseiuzrfsuaeghfol_kopf_output = $aseiuzrfsuaeghfol_kopf_output;
$aseiuzrfsuaeghfol_html_output = $aseiuzrfsuaeghfol_kopf_output[ "html" ]."
";
$aseiuzrfsuaeghfol_html_output = $aseiuzrfsuaeghfol_html_output.liefere_fuss( $aseiuzrfsuaeghfol_kopf );
}
return $aseiuzrfsuaeghfol_html_output;
}
function _wfl_verarbeitung( $POST )
{
//xlog( 4, json_encode( $POST ) );
//2015.01.26 10:08:33 INFO 24 {"mandant_name":"Gaia","workflow_name":"Checkup","workflow_id":"1","maske_name":"sachliche Pr\u00fcfung","maske_id":"1","element_id":"61","dok_id":"100024147","cmd":"verarbeitung","a":{"num_01":"","alpha_01":"test","alpha_02":"d3batchdocumentcheck.pdf","alpha_04":"","alpha_09":"","datum_01":"","alpha_03":"","alpha_05":""},"zeile1":{"p_datum_01":"28.01.2015","p_geld_01":"","p_num_01":"312","p_alpha_02":"Originalgr\u00f6\u00dfe","p_alpha_04":"","p_alpha_01":""},"zeile2":{"p_datum_01":"08.01.2015","p_geld_01":"","p_num_01":"123","p_alpha_02":"verkleinerte Darstellung","p_alpha_04":"","p_alpha_01":""},"zeile3":{"p_datum_01":"04.01.2015","p_geld_01":"","p_num_01":"213","p_alpha_02":"verkleinerte Darstellung","p_alpha_04":"","p_alpha_01":""},"vers_aWKy9H7bYFJd4MIuxBPoobPbe6_length":"25","weiterleitung_ziel":"","aktion":"speichern"}
$multi = array();
foreach( $POST as $key => $value )
{
switch ( $key )
{
case "a":
$kopfdaten = $value;
break;
case "mandant_name":
$mandant_name = $value;
break;
case "workflow_name":
$workflow_name = $value;
break;
case "workflow_id":
$workflow_id = $value;
break;
case "maske_name":
$maske_name = $value;
break;
case "maske_id":
$aktuelle_maske_id = $value;
break;
case "element_id":
$element_id = $value;
break;
case "dok_id":
$dok_id = $value;
break;
case "weiterleitung_ziel_oa":
$weiterleitung_ziel_oa = $value;
break;
case "weiterleitung_ziel_zs":
$weiterleitung_ziel_zs = $value;
break;
case "weiterleitung_ziel_emp":
$weiterleitung_ziel_emp = $value;
break;
case "aktion":
$aktion = $value;
break;
default:
if ( substr( $key, 0, 5 ) == "zeile" )
{
$mehrfachattribute[] = $value;
}
break;
}
}
// xlog( 5, "Aktion: ".$aktion );
// xlog( 5, "Post: ".json_encode( $POST ) );
switch( $aktion )
{
case "nicht_speichern":
// Keine Aktion nötig.
$d = entsperre_dokument( $dok_id );
break;
case "weiterleiten":
$w = liefere_workflowinformationen( $mandant_name, "", $workflow_id );
$aktuelle_maske = liefere_maskeninformationen( $mandant_name, $workflow_name, "", $aktuelle_maske_id, "" );
if ( $aktuelle_maske[ 2 ][ "maske_default_frist" ] > 0 )
{
$heute = time();
$frist = bcmul( $aktuelle_maske[ 2 ][ "maske_default_frist" ], 86400, 0 );
$ziel = bcadd( $heute, $frist, 0 );
$zieldatum = date( "d.m.Y", $ziel );
$frist_txt = " (Bearbeitungsfrist: ".$zieldatum.")";
}
else
{
$zieldatum = "";
$frist_txt = "";
}
if ( strpos( $weiterleitung_ziel_oa, "(" ) === false )
{
// Gruppe
$empfaenger = $weiterleitung_ziel_oa;
$empfaenger_typ = "g";
$weiterl = "der Gruppe ";
}
else
{
// Benutzer
$anfang = bcadd( strpos( $weiterleitung_ziel_oa, "(" ), 1, 0 );
$laenge = bcsub( strpos( $weiterleitung_ziel_oa, ")" ), $anfang, 0 );
$empfaenger = substr( $weiterleitung_ziel_oa, $anfang, $laenge );
$empfaenger_typ = "b";
$weiterl = "dem Benutzer ";
}
$e = aktualisiere_dokument_attribute( $mandant_name, $dok_id, $kopfdaten, $mehrfachattribute );
$f = erzeuge_postkorb_element( $mandant_name, $dok_id, $empfaenger, $_SESSION[ "benutzer_anmeldename" ], "Dokument zur Bearbeitung: ".$workflow_name."/".$aktuelle_maske[ 2 ][ "maske_name" ], 1, $empfaenger_typ, $zieldatum, $zieldatum, "", $workflow_id, $aktuelle_maske_id );
if ( $w[ 2 ][ "protokoll" ] == "ja" )
{
$p = erstelle_protokolleintrag( $mandant_name, $workflow_name, $dok_id, $_SESSION[ "benutzer_anmeldename" ], "WEITERLEITUNG", "Das Dokument wurde in der Maske ".$aktuelle_maske[ 2 ][ "maske_name" ]." vom Benutzer ".$_SESSION[ "benutzer_anmeldename" ]." ".$weiterl." ".$weiterleitung_ziel_oa." weitergeleitet".$frist_txt."." );
}
$g = quittiere_postkorb_element( $mandant_name, $element_id );
$d = entsperre_dokument( $dok_id );
break;
case "weiterleiten_zu_schritt":
$w = liefere_workflowinformationen( $mandant_name, "", $workflow_id );
$aktuelle_maske = liefere_maskeninformationen( $mandant_name, $workflow_name, "", $aktuelle_maske_id, "" );
$naechste_maske = liefere_maskeninformationen( $mandant_name, $workflow_name, "", $weiterleitung_ziel_zs, "" );
if ( $aktuelle_maske[ 2 ][ "maske_default_frist" ] > 0 )
{
$heute = time();
$frist = bcmul( $aktuelle_maske[ 2 ][ "maske_default_frist" ], 86400, 0 );
$ziel = bcadd( $heute, $frist, 0 );
$zieldatum = date( "d.m.Y", $ziel );
$frist_txt = " (Bearbeitungsfrist: ".$zieldatum.")";
}
else
{
$zieldatum = "";
$frist_txt = "";
}
if ( strpos( $weiterleitung_ziel_emp, "(" ) === false )
{
// Gruppe
$empfaenger = $weiterleitung_ziel_emp;
$empfaenger_typ = "g";
$weiterl = "der Gruppe ";
}
else
{
// Benutzer
$anfang = bcadd( strpos( $weiterleitung_ziel_emp, "(" ), 1, 0 );
$laenge = bcsub( strpos( $weiterleitung_ziel_emp, ")" ), $anfang, 0 );
$empfaenger = substr( $weiterleitung_ziel_emp, $anfang, $laenge );
$empfaenger_typ = "b";
$weiterl = "dem Benutzer ";
}
$e = aktualisiere_dokument_attribute( $mandant_name, $dok_id, $kopfdaten, $mehrfachattribute );
$f = erzeuge_postkorb_element( $mandant_name, $dok_id, $empfaenger, $_SESSION[ "benutzer_anmeldename" ], "Dokument zur Bearbeitung: ".$workflow_name."/".$naechste_maske[ 2 ][ "maske_name" ], 1, $empfaenger_typ, $zieldatum, $zieldatum, "", $workflow_id, $weiterleitung_ziel_zs );
//xlog( 4, json_encode( $w ) );
if ( $w[ 2 ][ "protokoll" ] == "ja" )
{
$p = erstelle_protokolleintrag( $mandant_name, $workflow_name, $dok_id, $_SESSION[ "benutzer_anmeldename" ], "WEITERLEITUNG_ZU_SCHRITT", "Das Dokument wurde in der Maske ".$aktuelle_maske[ 2 ][ "maske_name" ]." vom Benutzer ".$_SESSION[ "benutzer_anmeldename" ]." ".$weiterl." ".$weiterleitung_ziel_emp." in die Ziel-Maske ".$naechste_maske[ 2 ][ "maske_name" ]." weitergeleitet".$frist_txt."." );
}
$g = quittiere_postkorb_element( $mandant_name, $element_id );
$d = entsperre_dokument( $dok_id );
break;
case "speichern":
$e = aktualisiere_dokument_attribute( $mandant_name, $dok_id, $kopfdaten, $mehrfachattribute );
if ( $w[ 2 ][ "protokoll" ] == "ja" )
{
$p = erstelle_protokolleintrag( $mandant_name, $workflow_name, $dok_id, $_SESSION[ "benutzer_anmeldename" ], "ATTRIB_SPEICHERN", "Der Benutzer ".$_SESSION[ "benutzer_anmeldename" ]." hat die Attribute gespeichert." );
}
$d = entsperre_dokument( $dok_id );
break;
case "schritt_abschliessen":
///////////////////////////////////////////////
// Hole Informationen über den Workflow:
$w = liefere_workflowinformationen( $mandant_name, "", $workflow_id );
///////////////////////////////////////////////
// Hole Informationen über die aktuell abgeschlossene Maske:
$aktuelle_maske = liefere_maskeninformationen( $mandant_name, $workflow_name, "", $aktuelle_maske_id, "" );
///////////////////////////////////////////////
// Wenn das aktuelle Element das letzte aus diesem Workflowschritt ist und quittiert wurde (Radiobutton "Bearbeitung abschließen"), dann wird das Dokument in diese Maske weitergeleitet.
$neue_maske_id = $aktuelle_maske[ 2 ][ "maske_default_folgemaske" ];
if ( $neue_maske_id != 0 )
{
$neue_maske = liefere_maskeninformationen( $mandant_name, $workflow_name, "", $neue_maske_id, "" );
///////////////////////////////////////////////
// An diese Empfänger wird der Workflow das Element weiterleiten. Die spätere Hook-Funktion hat die Möglichkeit, das Array aus Empfänger-Arrays zu ändern.
$neue_empfaenger = array( array( "empfaenger"=>$neue_maske[ 2 ][ "maske_default_empfaenger" ], "empfaenger_typ"=>$neue_maske[ 2 ][ "maske_default_empfaenger_typ" ] ) );
}
///////////////////////////////////////////////
// Berechnung der Bearbeitungsfrist
if ( $aktuelle_maske[ 2 ][ "maske_default_frist" ] > 0 )
{
$heute = time();
$frist = bcmul( $aktuelle_maske[ 2 ][ "maske_default_frist" ], 86400, 0 );
$ziel = bcadd( $heute, $frist, 0 );
$zieldatum = date( "d.m.Y", $ziel );
$frist_txt = " (Bearbeitungsfrist: ".$zieldatum.")";
}
else
{
$zieldatum = "";
$frist_txt = "";
}
///////////////////////////////////////////////
// Hook-Funktion
$funcname = "workflow_".$workflow_id."_".$aktuelle_maske_id;
if ( function_exists( $funcname ) )
{
$erg_1 = $funcname( $dok_id, $element_id, $kopfdaten, $mehrfachattribute, $neue_empfaenger, $aktuelle_maske[ 2 ], $neue_maske_id, $POST );
//return array( $kopfdaten, $mehrfachattribute, $neue_empfaenger, $attribute, $neue_maske_id );
$kopfdaten = $erg_1[ 0 ];
$mehrfachattribute = $erg_1[ 1 ];
$neue_empfaenger = $erg_1[ 2 ];
$attribute = $erg_1[ 3 ];
$neue_maske_id = $erg_1[ 4 ];
}
if ( $neue_maske_id != 0 )
{
// Weiter im Workflow zur nächsten Maske
///////////////////////////
// Der Schritt kann nur weitergeleitet werden, wenn es keinen weiteren unquittierten Postkorbeintrag in diesem Workflowschritt gibt.
// Wenn $anzahl == 1 dann gibt es keinen weiteren Postkorbeintrag außer dem, der hier gerade behandelt wird.
// Ist $anzahl > 1, dann gibt es noch weitere Postkorbeinträge, die erst noch bearbeitet werden müssen, bevor die Maske gewechselt werden kann.
$STATEMENT = "select count( * ) anzahl from ca_postkorb where dok_id = ".$dok_id." and wid = ".$workflow_id." and mid = ".$aktuelle_maske_id." and quittiert_am = ''";
$ergebnis = xdb( $STATEMENT );
$anzahl = $ergebnis[ 1 ][ 0 ][ "anzahl" ];
if ( $w[ 2 ][ "protokoll" ] == "ja" )
{
$p = erstelle_protokolleintrag( $mandant_name, $workflow_name, $dok_id, $_SESSION[ "benutzer_anmeldename" ], "SCHRITT_ABGESCHLOSSEN", "Der Benutzer ".$_SESSION[ "benutzer_anmeldename" ]." hat die Bearbeitung des Dokumentes ".$dok_id." in der Maske ".$aktuelle_maske[ 2 ][ "maske_name" ]." (Workflow ".$workflow_name.") abgeschlossen." );
}
if ( $anzahl == 1 )
{
foreach( $neue_empfaenger as $r )
{
//xlog( 4, json_encode( $r ) );
$f = erzeuge_postkorb_element( $mandant_name, $dok_id, $r[ "empfaenger" ], $_SESSION[ "benutzer_anmeldename" ], "Dokument zur Bearbeitung: ".$workflow_name."/".$neue_maske[ 2 ][ "maske_name" ], 1, $r[ "empfaenger_typ" ], $zieldatum, $zieldatum, "", $workflow_id, $neue_maske_id );
if ( $w[ 2 ][ "protokoll" ] == "ja" )
{
if ( $r[ "empfaenger_typ" ] == "b" )
{
$empf = "Der Benutzer ";
}
else
{
$empf = "Die Gruppe ";
}
if ( $w[ 2 ][ "protokoll" ] == "ja" )
{
$p = erstelle_protokolleintrag( $mandant_name, $workflow_name, $dok_id, $_SESSION[ "benutzer_anmeldename" ], "SCHRITT_EMPFANGEN", $empf.$r[ "empfaenger" ]." hat das Dokument ".$dok_id." in der Maske ".$neue_maske[ 2 ][ "maske_name" ]." (Workflow ".$workflow_name.") zur Bearbeitung bekommen".$frist_txt."." );
}
}
}
}
}
else
{
// Workflow für dieses Dokument beenden
///////////////////////////
// Den Workflow beenden heißt, den letzten Postkorb-Eintrag zu quittieren, der im Zuge des Workflows noch unquittiert ist.
// Wir stellen also fest, ob es noch unquittierte Einträge außer dem hier behandelten gibt - falls nein ($anzahl == 1) => der Workflow wird beendet,
// d.h. das letzte Element quittiert.
$STATEMENT = "select count( * ) anzahl from ca_postkorb where dok_id = ".$dok_id." and wid = ".$workflow_id." and mid = ".$aktuelle_maske_id." and quittiert_am = ''";
$ergebnis = xdb( $STATEMENT );
$anzahl = $ergebnis[ 1 ][ 0 ][ "anzahl" ];
if ( $w[ 2 ][ "protokoll" ] == "ja" )
{
$p = erstelle_protokolleintrag( $mandant_name, $workflow_name, $dok_id, $_SESSION[ "benutzer_anmeldename" ], "SCHRITT_ABGESCHLOSSEN", "Der Benutzer ".$_SESSION[ "benutzer_anmeldename" ]." hat die Bearbeitung des Dokumentes ".$dok_id." in der Maske ".$aktuelle_maske[ 2 ][ "maske_name" ]." (Workflow ".$workflow_name.") abgeschlossen." );
}
if ( $anzahl == 1 )
{
$p = erstelle_protokolleintrag( $mandant_name, $workflow_name, $dok_id, $_SESSION[ "benutzer_anmeldename" ], "WFL_ENDE", "Der Workflow ".$workflow_name." des Dokumentes ".$dok_id." wurde beendet." );
}
}
$e = aktualisiere_dokument_attribute( $mandant_name, $dok_id, $kopfdaten, $mehrfachattribute );
$g = quittiere_postkorb_element( $mandant_name, $element_id );
$d = entsperre_dokument( $dok_id );
break;
}
//xlog( 4, json_encode( $multi ) );
//
header( "Location: us_schreibtisch.php" );
}
function liefere_kopf( $wfl, $maske, $dok_id )
{
$mandant_name = $_SESSION[ "mandant_name" ];
$benutzer_anmeldename = $_SESSION[ "benutzer_anmeldename" ];
if ( strlen( $benutzer_anmeldename ) > 0 )
{
$time = time();
$vergangene_zeit = bcsub( $time, $_SESSION[ "eingeloggt_ts" ], 0 );
$ts = berechne_zeitspanne( $vergangene_zeit );
if ( ( $benutzer_anmeldename == "superuser" ) and ( $mandant_name == "Standard" ) )
{
$name = "Superuser/Mandanten- und Systemverwaltung";
}
else
{
$benutzer = liefere_benutzerinformationen( $mandant_name, $benutzer_anmeldename );
$name = $benutzer[ 2 ][ "benutzer_vorname" ]." ".$benutzer[ 2 ][ "benutzer_nachname" ];
}
//
//
$eingeloggt_1 = "".$wfl[ "workflow_name" ]." / Schritt: ".$maske[ "maske_name" ].' / Dokument '.$dok_id."";
$eingeloggt_2 = " ";
$eingeloggt_3 = " | ";
}
else
{
$eingeloggt_1 = "";
$eingeloggt_2 = "";
}
if ( $_SESSION[ "css" ] == "index.php" )
{
$css_datei = liefere_konfig( "Standard", "login_css" );
}
else
{
$css_datei = liefere_konfig( $mandant_name, "login_css" );
}
header( "Content-Type: text/html; charset=utf-8" );
$aseiuzrfsuaeghfol_html_output = '
';
$aseiuzrfsuaeghfol_html_output = $aseiuzrfsuaeghfol_html_output. '
';
//
$aseiuzrfsuaeghfol_html_output = $aseiuzrfsuaeghfol_html_output. '
calbers.de Webapplikationen - Workflowbearbeitung
';
$aseiuzrfsuaeghfol_html_output = $aseiuzrfsuaeghfol_html_output. "";
$aseiuzrfsuaeghfol_html_output = $aseiuzrfsuaeghfol_html_output. '
Workflowbearbeitung
';
$aseiuzrfsuaeghfol_html_output = $aseiuzrfsuaeghfol_html_output. '";
return array( "html"=>$aseiuzrfsuaeghfol_html_output, "name"=>$name, "ts"=>$ts, "eingeloggt"=>$eingeloggt_2 );
}
function liefere_fuss( $input )
{
return '
';
}
?>