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."
"; foreach ( $aseiuzrfsuaeghfol_plugins as $aseiuzrfsuaeghfol_p ) { if ( strlen( $aseiuzrfsuaeghfol_maske[ 2 ][ $aseiuzrfsuaeghfol_p ] ) > 0 ) { if ( $aseiuzrfsuaeghfol_maske[ 2 ][ $aseiuzrfsuaeghfol_p."_accordion" ] == "ja" ) { $we4aifnaweufnauewfiaerw_titel = "

".$aseiuzrfsuaeghfol_maske[ 2 ][ $aseiuzrfsuaeghfol_p."_bezeichnung" ]."

"; if ( $aseiuzrfsuaeghfol_maske[ 2 ][ $aseiuzrfsuaeghfol_p."_geoeffnet" ] == "ja" ) { $aseiuzrfsuaeghfol_geoeffnet = "0"; } else { $aseiuzrfsuaeghfol_geoeffnet = "false"; } //maske_plugin_01_einklappbar if ( $aseiuzrfsuaeghfol_maske[ 2 ][ $aseiuzrfsuaeghfol_p."_einklappbar" ] == "ja" ) { $aseiuzrfsuaeghfol_einklappbar = "true"; } else { $aseiuzrfsuaeghfol_einklappbar = "false"; } $aseiuzrfsuaeghfol_accord = " id='accordion_".$aseiuzrfsuaeghfol_p."' "; $oweifhnjawoeifmskript = ""; } else { $aseiuzrfsuaeghfol_accord = ""; $oweifhnjawoeifmskript = ""; $we4aifnaweufnauewfiaerw_titel = ""; } $aseiuzrfsuaeghfol_html_output = $aseiuzrfsuaeghfol_html_output."
"; $aseiuzrfsuaeghfol_funcname = explode( ".", $aseiuzrfsuaeghfol_maske[ 2 ][ $aseiuzrfsuaeghfol_p ] ); $aseiuzrfsuaeghfol_funcname = $aseiuzrfsuaeghfol_funcname[ 0 ]; $aseiuzrfsuaeghfol_maske_pos = explode( "_", $aseiuzrfsuaeghfol_p ); $aseiuzrfsuaeghfol_maske_pos = $aseiuzrfsuaeghfol_maske_pos[ 2 ]; include_once( "wfl_plugins/".$aseiuzrfsuaeghfol_maske[ 2 ][ $aseiuzrfsuaeghfol_p ] ); $aseiuzrfsuaeghfol_id = liefere_zufaelligen_string(); //maske_plugin_01_bezeichnung $aseiuzrfsuaeghfol_html_output = $aseiuzrfsuaeghfol_html_output.$we4aifnaweufnauewfiaerw_titel; $aseiuzrfsuaeghfol_html_output = $aseiuzrfsuaeghfol_html_output."
"; $aseiuzrfsuaeghfol_html_output = $aseiuzrfsuaeghfol_html_output.$aseiuzrfsuaeghfol_funcname( $_SESSION[ "mandant_name" ], $aseiuzrfsuaeghfol_workflow, $aseiuzrfsuaeghfol_maske, $aseiuzrfsuaeghfol_maske_pos, $aseiuzrfsuaeghfol_dokument ); //maske_plugin_01_geoeffnet $aseiuzrfsuaeghfol_html_output = $aseiuzrfsuaeghfol_html_output."

".$oweifhnjawoeifmskript; } } $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_sp[ 1 ]."

"; $aseiuzrfsuaeghfol_html_output = $aseiuzrfsuaeghfol_html_output."
"; $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 = "Mandant: ".$mandant_name."  |  Benutzer: ".$name.", eingeloggt seit ".$ts.""; $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 '
'; } ?>