<?php


	
	
	
	// Workflow
	
	function workflow_anlegen( $mandant_name, $workflow_name, $dokart_kuerzel, $start_art, $protokoll_anlegen="on" )
	{
		$ok = existiert_mandant( $mandant_name );
		
		if ( $ok[ 0 ] > 0 )
		{
			if ( strlen( $workflow_name ) > 0 )
			{
				if ( strlen( $dokart_kuerzel ) > 0 )
				{
					if ( strlen( $start_art ) > 0 )
					{
						if ( $protokoll_anlegen == "on" )
						{
							$protokoll_anlegen = "ja";
						}
						else
						{
							$protokoll_anlegen = "nein";
						}
						
						$STATEMENT = "insert into ca_wfl ( mandant_id, workflow_name, dokart_kuerzel, start_art, protokoll, status, start_maske ) values ( ".$ok[ 0 ].", '".$workflow_name."', '".$dokart_kuerzel."', '".$start_art."', '".$protokoll_anlegen."', 'in Entwicklung', 0 )";
						
						$workflow_id = xdb( $STATEMENT );
						
						if ( $workflow_id[ 0 ] > 0 )
						{
							$rc = $workflow_id[ 0 ];
							$meldung = "Der Workflow ".$workflow_name." wurde mit der ID ".$rc." angelegt.";
						}
						else
						{
							$rc = -99;
							$meldung = "Der Workflow ".$workflow_name." konnte nicht angelegt werden: ".$workflow_id[ 1 ];
						}
					}
					else
					{
						$rc			= -3;
						$meldung	= "Es wurde keine Start-Art angegeben.";
					}
				}
				else
				{
					$rc			= -2;
					$meldung	= "Es wurde kein Dokumentart-Kürzel angegeben.";
				}
			}
			else
			{
				$rc			= -1;
				$meldung	= "Es wurde kein Workflow-Name angegeben.";
			}
		}
		else
		{
			$rc			= $ok[ 0 ];
			$meldung	= $ok[ 1 ];
		}
		
		if ( $rc < 0 )
		{
			$level = 2;
		}
		else
		{
			$level = 4;
		}
		
		
		
		xlog( $level, "w_fkt.workflow_anlegen: RC ".$rc.": ".$meldung );
		return array( $rc, $meldung );
		
	}
	
	function liefere_workflows( $mandant_name )
	{
		$ok = existiert_mandant( $mandant_name );
		
		if ( $ok[ 0 ] > 0 )
		{
			$STATEMENT = "select workflow_id, workflow_name, status, start_maske, dokart_kuerzel, start_art, protokoll from ca_wfl where mandant_id = ".$ok[ 0 ];
			
			$ergebnis = xdb( $STATEMENT );
			
			if ( $ergebnis[ 0 ] > 0 )
			{
				$wfl		= $ergebnis[ 1 ];
				$rc			= count( $wfl );
				$meldung	= "Liefere ".$rc." Workflows im Mandanten ".$mandant_name.".";
			}
			else
			{
				$rc			= -99;
				$meldung	= "Es ist ein Fehler aufgetreten: ".$ergebnis[ 1 ];
			}
			
		}
		else
		{
			$rc			= $ok[ 0 ];
			$meldung	= $ok[ 1 ];
		}
		
		if ( $rc < 0 )
		{
			$level = 2;
		}
		else
		{
			$level = 6;
		}
		
		
		
		xlog( $level, "w_fkt.liefere_workflows: RC ".$rc.": ".$meldung );
		return array( $rc, $meldung, $wfl );
	}
	
	function workflow_loeschen( $mandant_name, $workflow_name )
	{
		$ok = existiert_mandant( $mandant_name );
		
		if ( $ok[ 0 ] > 0 )
		{
			if ( strlen( $workflow_name ) > 0 )
			{
				$m = liefere_masken_zu_workflow( $mandant_name, $workflow_name );
				
				if ( $m[ 0 ] > 0 )
				{
					foreach( $m[ 2 ] as $maske )
					{
						loesche_maske( $mandant_name, $workflow_name, $maske[ "maske_name" ] );
					}
				}
				
				$STATEMENT = "delete from ca_wfl where mandant_id = ".$ok[ 0 ]." and workflow_name = '".$workflow_name."'";
				
				$ergebnis = xdb( $STATEMENT );
				
				if ( $ergebnis[ 0 ] >= 0 )
				{
					$rc = 0;
					$meldung = "Der Workflow ".$workflow_name." wurde im Mandanten ".$mandant_name." gelöscht.";
				}
				else
				{
					$rc = $ergebnis[ 0 ];
					$meldung = "Es ist ein Fehler aufgetreten: ".$ergebnis[ 1 ];
				}
				
			}
			else
			{
				$rc			= -2;
				$meldung	= "Es wurde kein Workflow-Name angegeben.";
			}
		}
		else
		{
			$rc			= $ok[ 0 ];
			$meldung	= $ok[ 1 ];
		}
		
		if ( $rc < 0 )
		{
			$level = 2;
		}
		else
		{
			$level = 4;
		}
		
		
		
		xlog( $level, "w_fkt.workflow_loeschen: RC ".$rc.": ".$meldung );
		return array( $rc, $meldung );
	}
	
	function liefere_workflowinformationen( $mandant_name, $workflow_name, $workflow_id = "" )
	{
		$ok = existiert_mandant( $mandant_name );
		
		if ( $ok[ 0 ] > 0 )
		{
			if ( ( strlen( $workflow_name ) > 0 ) || ( strlen( $workflow_id ) > 0 ) )
			{
				
				if ( strlen( $workflow_name ) > 0 )
				{
					$where = " and workflow_name = '".$workflow_name."' ";
				}
				else
				{
					$where = " and workflow_id = '".$workflow_id."'";
				}
				
				$STATEMENT = "select mandant_id, workflow_id, workflow_name, dokart_kuerzel, start_art, status, start_maske, protokoll from ca_wfl where mandant_id = ".$ok[ 0 ]." ".$where;
				
				$ergebnis = xdb( $STATEMENT );
				
				if ( $ergebnis[ 0 ] > 0 )
				{
					$wfl_info[ "mandant_id" ]			= $ergebnis[ 1 ][ 0 ][ "mandant_id" ];
					$wfl_info[ "workflow_id" ]			= $ergebnis[ 1 ][ 0 ][ "workflow_id" ];
					$wfl_info[ "workflow_name" ]		= $ergebnis[ 1 ][ 0 ][ "workflow_name" ];
					$wfl_info[ "dokart_kuerzel" ]		= $ergebnis[ 1 ][ 0 ][ "dokart_kuerzel" ];
					$wfl_info[ "start_art" ]			= $ergebnis[ 1 ][ 0 ][ "start_art" ];
					$wfl_info[ "protokoll" ]			= $ergebnis[ 1 ][ 0 ][ "protokoll" ];
					$wfl_info[ "status" ]				= $ergebnis[ 1 ][ 0 ][ "status" ];
					$wfl_info[ "start_maske" ]			= $ergebnis[ 1 ][ 0 ][ "start_maske" ];
					
					$rc = $wfl_info[ "workflow_id" ];
					$meldung = "Liefere Informationen zum Workflow ".$workflow_name.".";
					
				}
				else
				{
					$rc = -1;
					$meldung = "Der Workflow ".$workflow_name." wurde nicht gefunden oder Fehler: ".$ergebnis[ 1 ];
				}
				
				
			}
			else
			{
				$rc			= -2;
				$meldung	= "Es wurde kein Workflow-Name angegeben.";
			}
		}
		else
		{
			$rc			= $ok[ 0 ];
			$meldung	= $ok[ 1 ];
		}
		
		if ( $rc < 0 )
		{
			$level = 2;
		}
		else
		{
			$level = 6;
		}
		
		
		
		xlog( $level, "w_fkt.liefere_workflowinformationen: RC ".$rc.": ".$meldung );
		return array( $rc, $meldung, $wfl_info );
	}
	
	function workflow_bearbeiten( $mandant_name, $workflow_name, $dokart_kuerzel, $start_art, $status, $start_maske, $protokoll_anlegen )
	{
		$ok = existiert_mandant( $mandant_name );
		
		if ( $ok[ 0 ] > 0 )
		{
			if ( !( ( strlen( $status ) == 0 ) || ( strlen( $workflow_name ) == 0 ) || ( strlen( $dokart_kuerzel ) == 0 ) || ( strlen( $start_art ) == 0 ) || ( ( $protokoll_anlegen != "ja" ) && ( $protokoll_anlegen != "nein" ) ) ) )
			{
				if ( ( ( strlen( $start_maske ) == 0 ) || ( $start_maske == 0 ) ) && ( $status == "produktiv" ) )
				{
					$rc = -4;
					$meldung = "Ein Workflow, der produktiv gesetzt werden soll, muss eine Startmaske definiert haben.";
				}
				else
				{
					if ( strlen( $start_maske ) == 0 )
					{
						$start_m = " null ";
					}
					else
					{
						$start_m = "'".$start_maske."'";
					}
					
					
					
					$STATEMENT = "update ca_wfl set dokart_kuerzel = '".$dokart_kuerzel."', start_art = '".$start_art."', protokoll = '".$protokoll_anlegen."', start_maske = ".$start_m.", status = '".$status."' where workflow_name = '".$workflow_name."' and mandant_id = ".$ok[ 0 ];
					
					$ergebnis = xdb( $STATEMENT );
					
					$rc = 0;
					$meldung = "Der Workflow ".$workflow_name." im Mandanten ".$mandant_name." wurde geändert.";
				}
			}
			else
			{
				$rc			= -1;
				$meldung	= "Falsche Parametrisierung: mandant_name|workflow_name|dokart_kuerzel|start_art|protokoll_anlegen|status|start_maske => ".$mandant_name."|".$workflow_name."|".$dokart_kuerzel."|".$start_art."|".$protokoll_anlegen."|".$status."|".$start_maske;
			}
		}
		else
		{
			$rc			= $ok[ 0 ];
			$meldung	= $ok[ 1 ];
		}
		
		if ( $rc < 0 )
		{
			$level = 2;
		}
		else
		{
			$level = 4;
		}
		
		
		
		xlog( $level, "w_fkt.workflow_bearbeiten: RC ".$rc.": ".$meldung );
		return array( $rc, $meldung );
	}
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	// Masken
	
	function erstelle_maske( $mandant_name, $workflow_name, $maske_name, $maske_default_empfaenger, $maske_default_empfaenger_typ, $maske_default_folgemaske_id, $maske_default_frist, $plugin_01, $plugin_02 = array(), $plugin_03 = array(), $plugin_04 = array(), $plugin_05 = array(),  $plugin_06 = array(), $plugin_07 = array(), $plugin_08 = array(), $plugin_09 = array(), $plugin_10 = array() )
	{
		/*
			Beispiel:
			
			$plugin_04[ "name" ]			=> Name der PHP-Plugin-Datei
			$plugin_04[ "bezeichnung" ]		=> Bezeichnung
			$plugin_04[ "aufgeklappt" ]		=> Startet in der Maske aufgeklappt
			$plugin_04[ "einklappbar" ]		=> ist einklappbar
		*/
		
		$ok = existiert_mandant( $mandant_name );
		
		if ( $ok[ 0 ] > 0 )
		{
			if  ( !( ( strlen( $workflow_name ) == 0 ) || ( strlen( $maske_name ) == 0 ) || ( strlen( $maske_default_empfaenger ) == 0 ) || ( strlen( $maske_default_empfaenger ) == 0 ) || ( strlen( $plugin_01[ "name" ] ) == 0 ) ) )
			{
				$w = liefere_workflowinformationen( $mandant_name, $workflow_name );
				
				if ( $w[ 0 ] > 0 )
				{
					$m = liefere_maskeninformationen( $mandant_name, $workflow_name, $maske_name );
					
					if ( $m[ 0 ] <= 0 )
					{
						if ( $maske_default_folgemaske_id == "" )
						{
							$maske_default_folgemaske_id = 0;
						}
						
						if ( $maske_default_frist == "" )
						{
							$maske_default_frist = 3;
						}
						
						/////////////////////
						// Zusammensetzen der Einstellungen pro Plugin
						
						// standardmäßig geöffnet
						$c_p01 = "0";
						$c_p02 = "0";
						$c_p03 = "0";
						$c_p04 = "0";
						$c_p05 = "0";
						$c_p06 = "0";
						$c_p07 = "0";
						$c_p08 = "0";
						$c_p09 = "0";
						$c_p10 = "0";
						
						
						// einklappbar
						$e_p01 = "0";
						$e_p02 = "0";
						$e_p03 = "0";
						$e_p04 = "0";
						$e_p05 = "0";
						$e_p06 = "0";
						$e_p07 = "0";
						$e_p08 = "0";
						$e_p09 = "0";
						$e_p10 = "0";
						
						// accordion
						$a_p01 = "0";
						$a_p02 = "0";
						$a_p03 = "0";
						$a_p04 = "0";
						$a_p05 = "0";
						$a_p06 = "0";
						$a_p07 = "0";
						$a_p08 = "0";
						$a_p09 = "0";
						$a_p10 = "0";
						
						if ( $plugin_01[ "name" ] != "" )
						{
							if ( $plugin_01[ "aufgeklappt" ] == "ja" )
							{
								$c_p01 = "1";
							}
							
							if ( $plugin_01[ "einklappbar" ] == "ja" )
							{
								$e_p01 = "1";
							}
							
							if ( $plugin_01[ "accordion" ] == "ja" )
							{
								$a_p01 = "1";
							}
						}
						
						if ( $plugin_02[ "name" ] != "" )
						{
							if ( $plugin_02[ "aufgeklappt" ] == "ja" )
							{
								$c_p02 = "1";
							}
							
							if ( $plugin_02[ "einklappbar" ] == "ja" )
							{
								$e_p02 = "1";
							}
							
							if ( $plugin_02[ "accordion" ] == "ja" )
							{
								$a_p02 = "1";
							}
						}
						
						if ( $plugin_03[ "name" ] != "" )
						{
							if ( $plugin_03[ "aufgeklappt" ] == "ja" )
							{
								$c_p03 = "1";
							}
							
							if ( $plugin_03[ "einklappbar" ] == "ja" )
							{
								$e_p03 = "1";
							}
							
							if ( $plugin_03[ "accordion" ] == "ja" )
							{
								$a_p03 = "1";
							}
						}
						
						if ( $plugin_04[ "name" ] != "" )
						{
							if ( $plugin_04[ "aufgeklappt" ] == "ja" )
							{
								$c_p04 = "1";
							}
							
							if ( $plugin_04[ "einklappbar" ] == "ja" )
							{
								$e_p04 = "1";
							}
							
							if ( $plugin_04[ "accordion" ] == "ja" )
							{
								$a_p04 = "1";
							}
						}
						
						if ( $plugin_05[ "name" ] != "" )
						{
							if ( $plugin_05[ "aufgeklappt" ] == "ja" )
							{
								$c_p05 = "1";
							}
							
							if ( $plugin_05[ "einklappbar" ] == "ja" )
							{
								$e_p05 = "1";
							}
							
							if ( $plugin_05[ "accordion" ] == "ja" )
							{
								$a_p05 = "1";
							}
						}
						
						if ( $plugin_06[ "name" ] != "" )
						{
							if ( $plugin_06[ "aufgeklappt" ] == "ja" )
							{
								$c_p06 = "1";
							}
							
							if ( $plugin_06[ "einklappbar" ] == "ja" )
							{
								$e_p06 = "1";
							}
							
							if ( $plugin_06[ "accordion" ] == "ja" )
							{
								$a_p06 = "1";
							}
						}
						
						if ( $plugin_07[ "name" ] != "" )
						{
							if ( $plugin_07[ "aufgeklappt" ] == "ja" )
							{
								$c_p07 = "1";
							}
							
							if ( $plugin_07[ "einklappbar" ] == "ja" )
							{
								$e_p07 = "1";
							}
							
							if ( $plugin_07[ "accordion" ] == "ja" )
							{
								$a_p07 = "1";
							}
						}
						
						if ( $plugin_08[ "name" ] != "" )
						{
							if ( $plugin_08[ "aufgeklappt" ] == "ja" )
							{
								$c_p08 = "1";
							}
							
							if ( $plugin_08[ "einklappbar" ] == "ja" )
							{
								$e_p08 = "1";
							}
							
							if ( $plugin_08[ "accordion" ] == "ja" )
							{
								$a_p08 = "1";
							}
						}
						
						if ( $plugin_09[ "name" ] != "" )
						{
							if ( $plugin_09[ "aufgeklappt" ] == "ja" )
							{
								$c_p09 = "1";
							}
							
							if ( $plugin_09[ "einklappbar" ] == "ja" )
							{
								$e_p09 = "1";
							}
							
							if ( $plugin_09[ "accordion" ] == "ja" )
							{
								$a_p09 = "1";
							}
						}
						
						if ( $plugin_10[ "name" ] != "" )
						{
							if ( $plugin_10[ "aufgeklappt" ] == "ja" )
							{
								$c_p10 = "1";
							}
							
							if ( $plugin_10[ "einklappbar" ] == "ja" )
							{
								$e_p10 = "1";
							}
							
							if ( $plugin_10[ "accordion" ] == "ja" )
							{
								$a_p10 = "1";
							}
						}
						
						//xlog( 4, json_encode( $plugin_01 ) );
						
						$c_p01 = $c_p01.$e_p01.$a_p01."0000000";
						$c_p02 = $c_p02.$e_p02.$a_p02."0000000";
						$c_p03 = $c_p03.$e_p03.$a_p03."0000000";
						$c_p04 = $c_p04.$e_p04.$a_p04."0000000";
						$c_p05 = $c_p05.$e_p05.$a_p05."0000000";
						$c_p06 = $c_p06.$e_p06.$a_p06."0000000";
						$c_p07 = $c_p07.$e_p07.$a_p07."0000000";
						$c_p08 = $c_p08.$e_p08.$a_p08."0000000";
						$c_p09 = $c_p09.$e_p09.$a_p09."0000000";
						$c_p10 = $c_p10.$e_p10.$a_p10."0000000";
						
						$zeitpunkt = time();
						
						$STATEMENT = "insert into ca_wfl_maske ( workflow_id, maske_name, maske_default_empfaenger, maske_default_empfaenger_typ, maske_default_folgemaske, 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, maske_p01_einst, maske_p02_einst, maske_p03_einst, maske_p04_einst, maske_p05_einst, maske_p06_einst, maske_p07_einst, maske_p08_einst, maske_p09_einst, maske_p10_einst, maske_p01_bez, maske_p02_bez, maske_p03_bez, maske_p04_bez, maske_p05_bez, maske_p06_bez, maske_p07_bez, maske_p08_bez, maske_p09_bez, maske_p10_bez, maske_default_frist, erstellt_am, geaendert_am ) values ( ".$w[ 0 ].", '".$maske_name."', '".$maske_default_empfaenger."', '".$maske_default_empfaenger_typ."', ".$maske_default_folgemaske_id.", '".$plugin_01[ "name" ]."', '".$plugin_02[ "name" ]."', '".$plugin_03[ "name" ]."', '".$plugin_04[ "name" ]."', '".$plugin_05[ "name" ]."', '".$plugin_06[ "name" ]."', '".$plugin_07[ "name" ]."', '".$plugin_08[ "name" ]."', '".$plugin_09[ "name" ]."', '".$plugin_10[ "name" ]."', '".$c_p01."', '".$c_p02."', '".$c_p03."', '".$c_p04."', '".$c_p05."', '".$c_p06."', '".$c_p07."', '".$c_p08."', '".$c_p09."', '".$c_p10."', '".$plugin_01[ "bezeichnung" ]."', '".$plugin_02[ "bezeichnung" ]."', '".$plugin_03[ "bezeichnung" ]."', '".$plugin_04[ "bezeichnung" ]."', '".$plugin_05[ "bezeichnung" ]."', '".$plugin_06[ "bezeichnung" ]."', '".$plugin_07[ "bezeichnung" ]."', '".$plugin_08[ "bezeichnung" ]."', '".$plugin_09[ "bezeichnung" ]."', '".$plugin_10[ "bezeichnung" ]."', ".$maske_default_frist.", '".$zeitpunkt."', '".$zeitpunkt."' );   ";
						
						//xlog( 4, $STATEMENT );
						
						$ma = xdb( $STATEMENT );
						
						$rc = $ma[ 0 ];
						$meldung = "Die Maske ".$maske_name." wurde im Workflow ".$workflow_name." mit der ID ".$rc." erstellt.";
					}
					else
					{
						$rc = -4;
						$meldung = "Die Maske ".$maske_name." existiert bereits im Workflow ".$workflow_name.".";
					}
				}
				else
				{
					$rc = -3;
					$meldung = "Der Workflow ".$workflow_name." existiert nicht oder Fehler: ".$w[ 1 ];
				}
			}
			else
			{
				$rc = -2;
				$meldung = "Falsche Parametrisierung: workflow_name|maske_name|maske_default_empfaenger|maske_default_empfaenger_typ|plugin_01 => ".$workflow_name."|".$maske_name."|".$maske_default_empfaenger."|".$maske_default_empfaenger_typ."|".$plugin_01[ "name" ];
			}
		}
		else
		{
			$rc			= $ok[ 0 ];
			$meldung	= $ok[ 1 ];
		}
		
		if ( $rc < 0 )
		{
			$level = 2;
		}
		else
		{
			$level = 4;
		}
		
		
		
		xlog( $level, "w_fkt.erstelle_maske: RC ".$rc.": ".$meldung );
		return array( $rc, $meldung );
	}
	
	function aendere_maske( $mandant_name, $workflow_name, $maske_name, $neuer_maske_name, $maske_default_empfaenger, $maske_default_empfaenger_typ, $maske_default_folgemaske_id, $maske_default_frist, $plugin_01, $plugin_02 = array(), $plugin_03 = array(), $plugin_04 = array(), $plugin_05 = array(),  $plugin_06 = array(), $plugin_07 = array(), $plugin_08 = array(), $plugin_09 = array(), $plugin_10 = array() )
	{
		/*
			Beispiel:
			
			$plugin_04[ "name" ]			=> Name der PHP-Plugin-Datei
			$plugin_04[ "bezeichnung" ]		=> Bezeichnung
			$plugin_04[ "aufgeklappt" ]		=> Startet in der Maske aufgeklappt
			$plugin_04[ "einklappbar" ]		=> ist einklappbar
		*/
		
		//xlog( 4, "bezeichnung ".$plugin_01[ "bezeichnung" ] );
		
		$ok = existiert_mandant( $mandant_name );
		
		if ( $ok[ 0 ] > 0 )
		{
			if  ( !( ( strlen( $workflow_name ) == 0 ) || ( strlen( $maske_name ) == 0 ) || ( strlen( $maske_default_empfaenger ) == 0 ) || ( strlen( $plugin_01[ "name" ] ) == 0 ) ) )
			{
				$w = liefere_workflowinformationen( $mandant_name, $workflow_name );
				
				if ( $w[ 0 ] > 0 )
				{
					$m = liefere_maskeninformationen( $mandant_name, $workflow_name, $maske_name );
					
					if ( $m[ 0 ] > 0 )
					{
						if ( strlen( $neuer_maske_name ) == 0 )
						{
							$neuer_maske_name = $maske_name;
						}
						
						/////////////////////
						// Zusammensetzen der Einstellungen pro Plugin
						
						// standardmäßig geöffnet
						$c_p01 = "0";
						$c_p02 = "0";
						$c_p03 = "0";
						$c_p04 = "0";
						$c_p05 = "0";
						$c_p06 = "0";
						$c_p07 = "0";
						$c_p08 = "0";
						$c_p09 = "0";
						$c_p10 = "0";
						
						
						// einklappbar
						$e_p01 = "0";
						$e_p02 = "0";
						$e_p03 = "0";
						$e_p04 = "0";
						$e_p05 = "0";
						$e_p06 = "0";
						$e_p07 = "0";
						$e_p08 = "0";
						$e_p09 = "0";
						$e_p10 = "0";
						
						// accordion
						$a_p01 = "0";
						$a_p02 = "0";
						$a_p03 = "0";
						$a_p04 = "0";
						$a_p05 = "0";
						$a_p06 = "0";
						$a_p07 = "0";
						$a_p08 = "0";
						$a_p09 = "0";
						$a_p10 = "0";
						
						if ( $plugin_01[ "name" ] != "" )
						{
							if ( $plugin_01[ "aufgeklappt" ] == "ja" )
							{
								$c_p01 = "1";
							}
							
							if ( $plugin_01[ "einklappbar" ] == "ja" )
							{
								$e_p01 = "1";
							}
							
							if ( $plugin_01[ "accordion" ] == "ja" )
							{
								$a_p01 = "1";
							}
						}
						
						if ( $plugin_02[ "name" ] != "" )
						{
							if ( $plugin_02[ "aufgeklappt" ] == "ja" )
							{
								$c_p02 = "1";
							}
							
							if ( $plugin_02[ "einklappbar" ] == "ja" )
							{
								$e_p02 = "1";
							}
							
							if ( $plugin_02[ "accordion" ] == "ja" )
							{
								$a_p02 = "1";
							}
						}
						
						if ( $plugin_03[ "name" ] != "" )
						{
							if ( $plugin_03[ "aufgeklappt" ] == "ja" )
							{
								$c_p03 = "1";
							}
							
							if ( $plugin_03[ "einklappbar" ] == "ja" )
							{
								$e_p03 = "1";
							}
							
							if ( $plugin_03[ "accordion" ] == "ja" )
							{
								$a_p03 = "1";
							}
						}
						
						if ( $plugin_04[ "name" ] != "" )
						{
							if ( $plugin_04[ "aufgeklappt" ] == "ja" )
							{
								$c_p04 = "1";
							}
							
							if ( $plugin_04[ "einklappbar" ] == "ja" )
							{
								$e_p04 = "1";
							}
							
							if ( $plugin_04[ "accordion" ] == "ja" )
							{
								$a_p04 = "1";
							}
						}
						
						if ( $plugin_05[ "name" ] != "" )
						{
							if ( $plugin_05[ "aufgeklappt" ] == "ja" )
							{
								$c_p05 = "1";
							}
							
							if ( $plugin_05[ "einklappbar" ] == "ja" )
							{
								$e_p05 = "1";
							}
							
							if ( $plugin_05[ "accordion" ] == "ja" )
							{
								$a_p05 = "1";
							}
						}
						
						if ( $plugin_06[ "name" ] != "" )
						{
							if ( $plugin_06[ "aufgeklappt" ] == "ja" )
							{
								$c_p06 = "1";
							}
							
							if ( $plugin_06[ "einklappbar" ] == "ja" )
							{
								$e_p06 = "1";
							}
							
							if ( $plugin_06[ "accordion" ] == "ja" )
							{
								$a_p06 = "1";
							}
						}
						
						if ( $plugin_07[ "name" ] != "" )
						{
							if ( $plugin_07[ "aufgeklappt" ] == "ja" )
							{
								$c_p07 = "1";
							}
							
							if ( $plugin_07[ "einklappbar" ] == "ja" )
							{
								$e_p07 = "1";
							}
							
							if ( $plugin_07[ "accordion" ] == "ja" )
							{
								$a_p07 = "1";
							}
						}
						
						if ( $plugin_08[ "name" ] != "" )
						{
							if ( $plugin_08[ "aufgeklappt" ] == "ja" )
							{
								$c_p08 = "1";
							}
							
							if ( $plugin_08[ "einklappbar" ] == "ja" )
							{
								$e_p08 = "1";
							}
							
							if ( $plugin_08[ "accordion" ] == "ja" )
							{
								$a_p08 = "1";
							}
						}
						
						if ( $plugin_09[ "name" ] != "" )
						{
							if ( $plugin_09[ "aufgeklappt" ] == "ja" )
							{
								$c_p09 = "1";
							}
							
							if ( $plugin_09[ "einklappbar" ] == "ja" )
							{
								$e_p09 = "1";
							}
							
							if ( $plugin_09[ "accordion" ] == "ja" )
							{
								$a_p09 = "1";
							}
						}
						
						if ( $plugin_10[ "name" ] != "" )
						{
							if ( $plugin_10[ "aufgeklappt" ] == "ja" )
							{
								$c_p10 = "1";
							}
							
							if ( $plugin_10[ "einklappbar" ] == "ja" )
							{
								$e_p10 = "1";
							}
							
							if ( $plugin_10[ "accordion" ] == "ja" )
							{
								$a_p10 = "1";
							}
						}
						
						
						
						$c_p01 = $c_p01.$e_p01.$a_p01."0000000";
						$c_p02 = $c_p02.$e_p02.$a_p02."0000000";
						$c_p03 = $c_p03.$e_p03.$a_p03."0000000";
						$c_p04 = $c_p04.$e_p04.$a_p04."0000000";
						$c_p05 = $c_p05.$e_p05.$a_p05."0000000";
						$c_p06 = $c_p06.$e_p06.$a_p06."0000000";
						$c_p07 = $c_p07.$e_p07.$a_p07."0000000";
						$c_p08 = $c_p08.$e_p08.$a_p08."0000000";
						$c_p09 = $c_p09.$e_p09.$a_p09."0000000";
						$c_p10 = $c_p10.$e_p10.$a_p10."0000000";
						
						
						
						$STATEMENT = "update ca_wfl_maske set maske_name = '".$neuer_maske_name."', maske_default_empfaenger = '".$maske_default_empfaenger."', maske_default_empfaenger_typ = '".$maske_default_empfaenger_typ."', maske_plugin_01 = '".$plugin_01[ "name" ]."',  maske_plugin_02 = '".$plugin_02[ "name" ]."',  maske_plugin_03 = '".$plugin_03[ "name" ]."',  maske_plugin_04 = '".$plugin_04[ "name" ]."',  maske_plugin_05 = '".$plugin_05[ "name" ]."',  maske_plugin_06 = '".$plugin_06[ "name" ]."',  maske_plugin_07 = '".$plugin_07[ "name" ]."',  maske_plugin_08 = '".$plugin_08[ "name" ]."',  maske_plugin_09 = '".$plugin_09[ "name" ]."',  maske_plugin_10 = '".$plugin_10[ "name" ]."', maske_p01_einst = '".$c_p01."', maske_p01_bez = '".$plugin_01[ "bezeichnung" ]."', maske_p02_einst = '".$c_p02."', maske_p02_bez = '".$plugin_02[ "bezeichnung" ]."', maske_p03_einst = '".$c_p03."', maske_p03_bez = '".$plugin_03[ "bezeichnung" ]."', maske_p04_einst = '".$c_p04."', maske_p04_bez = '".$plugin_04[ "bezeichnung" ]."', maske_p05_einst = '".$c_p05."', maske_p05_bez = '".$plugin_05[ "bezeichnung" ]."', maske_p06_einst = '".$c_p06."', maske_p06_bez = '".$plugin_06[ "bezeichnung" ]."', maske_p07_einst = '".$c_p07."', maske_p07_bez = '".$plugin_07[ "bezeichnung" ]."', maske_p08_einst = '".$c_p08."', maske_p08_bez = '".$plugin_08[ "bezeichnung" ]."', maske_p09_einst = '".$c_p09."', maske_p09_bez = '".$plugin_09[ "bezeichnung" ]."', maske_p10_einst = '".$c_p10."', maske_p10_bez = '".$plugin_10[ "bezeichnung" ]."', maske_default_folgemaske = ".$maske_default_folgemaske_id.", maske_default_frist = '".$maske_default_frist."', geaendert_am = '".time()."' where maske_id = ".$m[ 0 ];
						
						//xlog( 4, "aendere_maske ".$STATEMENT );
						
						$ma = xdb( $STATEMENT );
						
						$rc = $ma[ 0 ];
						$meldung = "Die Maske ".$maske_name." (ID ".$m[ 0 ].") wurde im Workflow ".$workflow_name." geändert.";
					}
					else
					{
						$rc = -4;
						$meldung = "Die Maske ".$maske_name." existiert im Workflow ".$workflow_name." nicht.";
					}
				}
				else
				{
					$rc = -3;
					$meldung = "Der Workflow ".$workflow_name." existiert nicht oder Fehler: ".$w[ 1 ];
				}
			}
			else
			{
				$rc = -2;
				$meldung = "Falsche Parametrisierung: workflow_name|maske_name|maske_default_empfaenger|maske_default_empfaenger_typ|plugin_01 => ".$workflow_name."|".$maske_name."|".$maske_default_empfaenger."|".$maske_default_empfaenger_typ."|".$plugin_01[ "name" ];
			}
		}
		else
		{
			$rc			= $ok[ 0 ];
			$meldung	= $ok[ 1 ];
		}
		
		if ( $rc < 0 )
		{
			$level = 2;
		}
		else
		{
			$level = 4;
		}
		
		
		
		xlog( $level, "w_fkt.aendere_maske: RC ".$rc.": ".$meldung );
		return array( $rc, $meldung );
	}
	
	function liefere_maskeninformationen( $mandant_name, $workflow_name, $maske_name = "", $maske_id = "", $workflow = "" )
	{
		$ok = existiert_mandant( $mandant_name );
		
		$ergebnis = array();
		
		if ( $ok[ 0 ] > 0 )
		{
			
			if  ( !( ( strlen( $workflow_name ) == 0 ) || ( ( strlen( $maske_name ) == 0 ) && ( strlen( $maske_id ) == 0 )  ) ) )
			{
				if ( is_array( $workflow ) )
				{
					$w = $workflow;
				}
				else
				{
					$w =  liefere_workflowinformationen( $mandant_name, $workflow_name );
				}
				if ( $w[ 0 ] > 0 )
				{
					if ( strlen( $maske_name ) > 0 )
					{
						$where = " maske_name = '".$maske_name."'  ";
					}
					else
					{
						$where = " maske_id = ".$maske_id;
					}
					
					
					$STATEMENT = "select workflow_id, maske_id, maske_name, maske_default_empfaenger, maske_default_empfaenger_typ, maske_default_folgemaske, 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, maske_p01_einst, maske_p02_einst, maske_p03_einst, maske_p04_einst, maske_p05_einst, maske_p06_einst, maske_p07_einst, maske_p08_einst, maske_p09_einst, maske_p10_einst, maske_p01_bez, maske_p02_bez, maske_p03_bez, maske_p04_bez, maske_p05_bez, maske_p06_bez, maske_p07_bez, maske_p08_bez, maske_p09_bez, maske_p10_bez, maske_default_frist, geaendert_am, erstellt_am from ca_wfl_maske where workflow_id = ".$w[ 0 ]." and ".$where;
					
					//xlog( 4, $STATEMENT );
					
					$m = xdb( $STATEMENT );
					
					if ( $m[ 0 ] > 0 )
					{
						$ergebnis[ "workflow_id" ]					= $m[ 1 ][ 0 ][ "workflow_id" ];
						$ergebnis[ "workflow_name" ]				= $workflow_name;
						$ergebnis[ "workflow" ]						= $w[ 2 ];
						
						$ergebnis[ "workflow_id" ]						= $m[ 1 ][ 0 ][ "workflow_id" ];
						$ergebnis[ "maske_id" ]						= $m[ 1 ][ 0 ][ "maske_id" ];
						$ergebnis[ "maske_name" ]					= $m[ 1 ][ 0 ][ "maske_name" ];
						$ergebnis[ "maske_default_empfaenger" ]		= $m[ 1 ][ 0 ][ "maske_default_empfaenger" ];
						$ergebnis[ "maske_default_empfaenger_typ" ]	= $m[ 1 ][ 0 ][ "maske_default_empfaenger_typ" ];
						$ergebnis[ "maske_default_folgemaske" ]		= $m[ 1 ][ 0 ][ "maske_default_folgemaske" ];
						$ergebnis[ "maske_default_frist" ]			= $m[ 1 ][ 0 ][ "maske_default_frist" ];
						$ergebnis[ "geaendert_am" ]					= $m[ 1 ][ 0 ][ "geaendert_am" ];
						$ergebnis[ "erstellt_am" ]					= $m[ 1 ][ 0 ][ "erstellt_am" ];
						$ergebnis[ "geaendert_am_date" ]			= date( "d.m.Y H:i", $m[ 1 ][ 0 ][ "geaendert_am" ] )." Uhr";
						$ergebnis[ "erstellt_am_date" ]				= date( "d.m.Y H:i", $m[ 1 ][ 0 ][ "erstellt_am" ] )." Uhr";
						
						
						$ergebnis[ "maske_plugin_01_bez" ]			= $m[ 1 ][ 0 ][ "maske_p01_bez" ];
						$ergebnis[ "maske_plugin_01_bezeichnung" ]	= $m[ 1 ][ 0 ][ "maske_p01_bez" ];
						
						$ergebnis[ "maske_plugin_02_bez" ]			= $m[ 1 ][ 0 ][ "maske_p02_bez" ];
						$ergebnis[ "maske_plugin_02_bezeichnung" ]	= $m[ 1 ][ 0 ][ "maske_p02_bez" ];
						
						$ergebnis[ "maske_plugin_03_bez" ]			= $m[ 1 ][ 0 ][ "maske_p03_bez" ];
						$ergebnis[ "maske_plugin_03_bezeichnung" ]	= $m[ 1 ][ 0 ][ "maske_p03_bez" ];
						
						$ergebnis[ "maske_plugin_04_bez" ]			= $m[ 1 ][ 0 ][ "maske_p04_bez" ];
						$ergebnis[ "maske_plugin_04_bezeichnung" ]	= $m[ 1 ][ 0 ][ "maske_p04_bez" ];
						
						$ergebnis[ "maske_plugin_05_bez" ]			= $m[ 1 ][ 0 ][ "maske_p05_bez" ];
						$ergebnis[ "maske_plugin_05_bezeichnung" ]	= $m[ 1 ][ 0 ][ "maske_p05_bez" ];
						
						$ergebnis[ "maske_plugin_06_bez" ]			= $m[ 1 ][ 0 ][ "maske_p06_bez" ];
						$ergebnis[ "maske_plugin_06_bezeichnung" ]	= $m[ 1 ][ 0 ][ "maske_p06_bez" ];
						
						$ergebnis[ "maske_plugin_07_bez" ]			= $m[ 1 ][ 0 ][ "maske_p07_bez" ];
						$ergebnis[ "maske_plugin_07_bezeichnung" ]	= $m[ 1 ][ 0 ][ "maske_p07_bez" ];
						
						$ergebnis[ "maske_plugin_08_bez" ]			= $m[ 1 ][ 0 ][ "maske_p08_bez" ];
						$ergebnis[ "maske_plugin_08_bezeichnung" ]	= $m[ 1 ][ 0 ][ "maske_p08_bez" ];
						
						$ergebnis[ "maske_plugin_09_bez" ]			= $m[ 1 ][ 0 ][ "maske_p09_bez" ];
						$ergebnis[ "maske_plugin_09_bezeichnung" ]	= $m[ 1 ][ 0 ][ "maske_p09_bez" ];
						
						$ergebnis[ "maske_plugin_10_bez" ]			= $m[ 1 ][ 0 ][ "maske_p10_bez" ];
						$ergebnis[ "maske_plugin_10_bezeichnung" ]	= $m[ 1 ][ 0 ][ "maske_p10_bez" ];
						
						
						/////////////////////
						$ergebnis[ "maske_plugin_01" ]				= $m[ 1 ][ 0 ][ "maske_plugin_01" ];
						
						if ( substr( $m[ 1 ][ 0 ][ "maske_p01_einst" ], 0, 1 ) == "1" )
						{
							$ergebnis[ "maske_plugin_01_geoeffnet" ] = "ja";
						}
						else
						{
							$ergebnis[ "maske_plugin_01_geoeffnet" ] = "nein";
						}
						
						if ( substr( $m[ 1 ][ 0 ][ "maske_p01_einst" ], 1, 1 ) == "1" )
						{
							$ergebnis[ "maske_plugin_01_einklappbar" ] = "ja";
						}
						else
						{
							$ergebnis[ "maske_plugin_01_einklappbar" ] = "nein";
						}
						
						if ( substr( $m[ 1 ][ 0 ][ "maske_p01_einst" ], 2, 1 ) == "1" )
						{
							$ergebnis[ "maske_plugin_01_accordion" ] = "ja";
						}
						else
						{
							$ergebnis[ "maske_plugin_01_accordion" ] = "nein";
						}
						
						/////////////////////
						$ergebnis[ "maske_plugin_02" ]				= $m[ 1 ][ 0 ][ "maske_plugin_02" ];
						
						if ( substr( $m[ 1 ][ 0 ][ "maske_p02_einst" ], 0, 1 ) == "1" )
						{
							$ergebnis[ "maske_plugin_02_geoeffnet" ] = "ja";
						}
						else
						{
							$ergebnis[ "maske_plugin_02_geoeffnet" ] = "nein";
						}
						
						if ( substr( $m[ 1 ][ 0 ][ "maske_p02_einst" ], 1, 1 ) == "1" )
						{
							$ergebnis[ "maske_plugin_02_einklappbar" ] = "ja";
						}
						else
						{
							$ergebnis[ "maske_plugin_02_einklappbar" ] = "nein";
						}
						
						if ( substr( $m[ 1 ][ 0 ][ "maske_p02_einst" ], 2, 1 ) == "1" )
						{
							$ergebnis[ "maske_plugin_02_accordion" ] = "ja";
						}
						else
						{
							$ergebnis[ "maske_plugin_02_accordion" ] = "nein";
						}
						
						/////////////////////
						$ergebnis[ "maske_plugin_03" ]				= $m[ 1 ][ 0 ][ "maske_plugin_03" ];
						
						if ( substr( $m[ 1 ][ 0 ][ "maske_p03_einst" ], 0, 1 ) == "1" )
						{
							$ergebnis[ "maske_plugin_03_geoeffnet" ] = "ja";
						}
						else
						{
							$ergebnis[ "maske_plugin_03_geoeffnet" ] = "nein";
						}
						
						if ( substr( $m[ 1 ][ 0 ][ "maske_p03_einst" ], 1, 1 ) == "1" )
						{
							$ergebnis[ "maske_plugin_03_einklappbar" ] = "ja";
						}
						else
						{
							$ergebnis[ "maske_plugin_03_einklappbar" ] = "nein";
						}
						
						if ( substr( $m[ 1 ][ 0 ][ "maske_p03_einst" ], 2, 1 ) == "1" )
						{
							$ergebnis[ "maske_plugin_03_accordion" ] = "ja";
						}
						else
						{
							$ergebnis[ "maske_plugin_03_accordion" ] = "nein";
						}
						
						/////////////////////
						$ergebnis[ "maske_plugin_04" ]				= $m[ 1 ][ 0 ][ "maske_plugin_04" ];
						
						if ( substr( $m[ 1 ][ 0 ][ "maske_p04_einst" ], 0, 1 ) == "1" )
						{
							$ergebnis[ "maske_plugin_04_geoeffnet" ] = "ja";
						}
						else
						{
							$ergebnis[ "maske_plugin_04_geoeffnet" ] = "nein";
						}
						
						if ( substr( $m[ 1 ][ 0 ][ "maske_p04_einst" ], 1, 1 ) == "1" )
						{
							$ergebnis[ "maske_plugin_04_einklappbar" ] = "ja";
						}
						else
						{
							$ergebnis[ "maske_plugin_04_einklappbar" ] = "nein";
						}
						
						if ( substr( $m[ 1 ][ 0 ][ "maske_p04_einst" ], 2, 1 ) == "1" )
						{
							$ergebnis[ "maske_plugin_04_accordion" ] = "ja";
						}
						else
						{
							$ergebnis[ "maske_plugin_04_accordion" ] = "nein";
						}
						
						
						/////////////////////
						$ergebnis[ "maske_plugin_05" ]				= $m[ 1 ][ 0 ][ "maske_plugin_05" ];
						
						if ( substr( $m[ 1 ][ 0 ][ "maske_p05_einst" ], 0, 1 ) == "1" )
						{
							$ergebnis[ "maske_plugin_05_geoeffnet" ] = "ja";
						}
						else
						{
							$ergebnis[ "maske_plugin_05_geoeffnet" ] = "nein";
						}
						
						if ( substr( $m[ 1 ][ 0 ][ "maske_p05_einst" ], 1, 1 ) == "1" )
						{
							$ergebnis[ "maske_plugin_05_einklappbar" ] = "ja";
						}
						else
						{
							$ergebnis[ "maske_plugin_05_einklappbar" ] = "nein";
						}
						
						if ( substr( $m[ 1 ][ 0 ][ "maske_p05_einst" ], 2, 1 ) == "1" )
						{
							$ergebnis[ "maske_plugin_05_accordion" ] = "ja";
						}
						else
						{
							$ergebnis[ "maske_plugin_05_accordion" ] = "nein";
						}
						
						
						/////////////////////
						$ergebnis[ "maske_plugin_06" ]				= $m[ 1 ][ 0 ][ "maske_plugin_06" ];
						
						if ( substr( $m[ 1 ][ 0 ][ "maske_p06_einst" ], 0, 1 ) == "1" )
						{
							$ergebnis[ "maske_plugin_06_geoeffnet" ] = "ja";
						}
						else
						{
							$ergebnis[ "maske_plugin_06_geoeffnet" ] = "nein";
						}
						
						if ( substr( $m[ 1 ][ 0 ][ "maske_p06_einst" ], 1, 1 ) == "1" )
						{
							$ergebnis[ "maske_plugin_06_einklappbar" ] = "ja";
						}
						else
						{
							$ergebnis[ "maske_plugin_06_einklappbar" ] = "nein";
						}
						
						if ( substr( $m[ 1 ][ 0 ][ "maske_p06_einst" ], 2, 1 ) == "1" )
						{
							$ergebnis[ "maske_plugin_06_accordion" ] = "ja";
						}
						else
						{
							$ergebnis[ "maske_plugin_06_accordion" ] = "nein";
						}
						
						
						/////////////////////
						$ergebnis[ "maske_plugin_07" ]				= $m[ 1 ][ 0 ][ "maske_plugin_07" ];
						
						if ( substr( $m[ 1 ][ 0 ][ "maske_p07_einst" ], 0, 1 ) == "1" )
						{
							$ergebnis[ "maske_plugin_07_geoeffnet" ] = "ja";
						}
						else
						{
							$ergebnis[ "maske_plugin_07_geoeffnet" ] = "nein";
						}
						
						if ( substr( $m[ 1 ][ 0 ][ "maske_p07_einst" ], 1, 1 ) == "1" )
						{
							$ergebnis[ "maske_plugin_07_einklappbar" ] = "ja";
						}
						else
						{
							$ergebnis[ "maske_plugin_07_einklappbar" ] = "nein";
						}
						
						if ( substr( $m[ 1 ][ 0 ][ "maske_p07_einst" ], 2, 1 ) == "1" )
						{
							$ergebnis[ "maske_plugin_07_accordion" ] = "ja";
						}
						else
						{
							$ergebnis[ "maske_plugin_07_accordion" ] = "nein";
						}
						
						/////////////////////
						$ergebnis[ "maske_plugin_08" ]				= $m[ 1 ][ 0 ][ "maske_plugin_08" ];
						
						if ( substr( $m[ 1 ][ 0 ][ "maske_p08_einst" ], 0, 1 ) == "1" )
						{
							$ergebnis[ "maske_plugin_08_geoeffnet" ] = "ja";
						}
						else
						{
							$ergebnis[ "maske_plugin_08_geoeffnet" ] = "nein";
						}
						
						if ( substr( $m[ 1 ][ 0 ][ "maske_p08_einst" ], 1, 1 ) == "1" )
						{
							$ergebnis[ "maske_plugin_08_einklappbar" ] = "ja";
						}
						else
						{
							$ergebnis[ "maske_plugin_08_einklappbar" ] = "nein";
						}
						
						if ( substr( $m[ 1 ][ 0 ][ "maske_p08_einst" ], 2, 1 ) == "1" )
						{
							$ergebnis[ "maske_plugin_08_accordion" ] = "ja";
						}
						else
						{
							$ergebnis[ "maske_plugin_08_accordion" ] = "nein";
						}
						
						/////////////////////
						$ergebnis[ "maske_plugin_09" ]				= $m[ 1 ][ 0 ][ "maske_plugin_09" ];
						
						if ( substr( $m[ 1 ][ 0 ][ "maske_p09_einst" ], 0, 1 ) == "1" )
						{
							$ergebnis[ "maske_plugin_09_geoeffnet" ] = "ja";
						}
						else
						{
							$ergebnis[ "maske_plugin_09_geoeffnet" ] = "nein";
						}
						
						if ( substr( $m[ 1 ][ 0 ][ "maske_p09_einst" ], 1, 1 ) == "1" )
						{
							$ergebnis[ "maske_plugin_09_einklappbar" ] = "ja";
						}
						else
						{
							$ergebnis[ "maske_plugin_09_einklappbar" ] = "nein";
						}
						
						if ( substr( $m[ 1 ][ 0 ][ "maske_p09_einst" ], 2, 1 ) == "1" )
						{
							$ergebnis[ "maske_plugin_09_accordion" ] = "ja";
						}
						else
						{
							$ergebnis[ "maske_plugin_09_accordion" ] = "nein";
						}
						
						/////////////////////
						$ergebnis[ "maske_plugin_10" ]				= $m[ 1 ][ 0 ][ "maske_plugin_10" ];
						
						if ( substr( $m[ 1 ][ 0 ][ "maske_p10_einst" ], 0, 1 ) == "1" )
						{
							$ergebnis[ "maske_plugin_10_geoeffnet" ] = "ja";
						}
						else
						{
							$ergebnis[ "maske_plugin_10_geoeffnet" ] = "nein";
						}
						
						if ( substr( $m[ 1 ][ 0 ][ "maske_p10_einst" ], 1, 1 ) == "1" )
						{
							$ergebnis[ "maske_plugin_10_einklappbar" ] = "ja";
						}
						else
						{
							$ergebnis[ "maske_plugin_10_einklappbar" ] = "nein";
						}
						
						if ( substr( $m[ 1 ][ 0 ][ "maske_p10_einst" ], 2, 1 ) == "1" )
						{
							$ergebnis[ "maske_plugin_10_accordion" ] = "ja";
						}
						else
						{
							$ergebnis[ "maske_plugin_10_accordion" ] = "nein";
						}
						
						$rc = $m[ 1 ][ 0 ][ "maske_id" ];
						$meldung = "Liefere Informationen zur Maske ".$ergebnis[ "maske_name" ]." aus dem Workflow ".$workflow_name.".";
						
					}
					else
					{
						$rc = -4;
						$meldung = "Die Maske ".$maske_name." / ID ".$maske_id." existiert im Workflow ".$workflow_name." nicht.";
					}
					
					
				}
				else
				{
					$rc = -3;
					$meldung = "Der Workflow ".$workflow_name." existiert nicht oder Fehler: ".$w[ 1 ];
				}
			}
			else
			{
				$rc = -2;
				$meldung = "Falsche Parametrisierung: workflow_name|maske_name|maske_id => ".$workflow_name."|".$maske_name."|".$maske_id;
			}
		}
		else
		{
			$rc			= $ok[ 0 ];
			$meldung	= $ok[ 1 ];
		}
		
		if ( $rc < 0 )
		{
			$level = 2;
		}
		else
		{
			$level = 6;
		}
		
		
		
		xlog( $level, "w_fkt.liefere_maskeninformationen: RC ".$rc.": ".$meldung );
		return array( $rc, $meldung, $ergebnis );
	}
	
	function liefere_masken_zu_workflow( $mandant_name, $workflow_name )
	{
		$ok = existiert_mandant( $mandant_name );
		
		$ergebnisarray = array();
		
		if ( $ok[ 0 ] > 0 )
		{
			$w = liefere_workflowinformationen( $mandant_name, $workflow_name );
			
			if ( $w[ 0 ] > 0 )
			{
				$STATEMENT = "select workflow_id, maske_id, maske_name, maske_default_empfaenger, maske_default_empfaenger_typ, maske_default_folgemaske, 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 from ca_wfl_maske where workflow_id = ".$w[ 0 ]." ";
				
				//xlog( 5, $STATEMENT );
				
				$m = xdb( $STATEMENT );
				
				if ( $m[ 0 ] > 0 )
				{
					$ergebnisarray = $m[ 1 ];
					$rc = count( $ergebnisarray );
					$meldung = "Liefere ".$rc." Masken für den Workflow ".$workflow_name.".";
				}
				else
				{
					$rc = 0;
					$meldung = "Es wurden keine Masken gefunden oder Fehler: ".$ergebnis[ 1 ];
				}
			}
			else
			{
				$rc = -2;
				$meldung = "Falsche Parametrisierung: workflow_name => ".$workflow_name;
			}
		}
		else
		{
			$rc			= $ok[ 0 ];
			$meldung	= $ok[ 1 ];
		}
		
		if ( $rc < 0 )
		{
			$level = 2;
		}
		else
		{
			$level = 4;
		}
		
		
		
		xlog( $level, "w_fkt.liefere_masken_zu_workflow: RC ".$rc.": ".$meldung );
		return array( $rc, $meldung, $ergebnisarray );
	}
	
	function loesche_maske( $mandant_name, $workflow_name, $maske_name )
	{
		$ok = existiert_mandant( $mandant_name );
		
		$ergebnisarray = array();
		
		if ( $ok[ 0 ] > 0 )
		{
			$w = liefere_workflowinformationen( $mandant_name, $workflow_name );
			
			if ( $w[ 0 ] > 0 )
			{
				$m = liefere_maskeninformationen( $mandant_name, $workflow_name, $maske_name );
				
				if ( $m[ 0 ] > 0 )
				{
					$STATEMENT = "delete from ca_wfl_maske_einstellungen where maske_id = ".$m[ 0 ];
					
					xdb( $STATEMENT );
					
					$STATEMENT = "delete from ca_wfl_maske where maske_id = ".$m[ 0 ];
					
					xdb( $STATEMENT );
					
					$rc = 0;
					$meldung = "Die Maske ".$maske_name." wurde im Workflow ".$workflow_name." gelöscht.";
				}
				else
				{
					$rc = -4;
					$meldung = "Die Maske ".$maske_name." existiert nicht im Workflow ".$workflow_name.".";
				}
			}
			else
			{
				$rc = -2;
				$meldung = "Falsche Parametrisierung: workflow_name => ".$workflow_name;
			}
		}
		else
		{
			$rc			= $ok[ 0 ];
			$meldung	= $ok[ 1 ];
		}
		
		if ( $rc < 0 )
		{
			$level = 2;
		}
		else
		{
			$level = 4;
		}
		
		
		
		xlog( $level, "w_fkt.loesche_maske: RC ".$rc.": ".$meldung );
		return array( $rc, $meldung );
	}
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	///// Workflow-Protokoll
	
	function erstelle_protokolleintrag( $mandant_name, $workflow_name, $dok_id, $benutzer_anmeldename, $ereignis, $text )
	{
		$ok = existiert_mandant( $mandant_name );
		
		$ergebnisarray = array();
		
		if ( $ok[ 0 ] > 0 )
		{
			$w = liefere_workflowinformationen( $mandant_name, $workflow_name );
			
			if ( $w[ 0 ] > 0 )
			{
				
				$STATEMENT = "insert into ca_wfl_protokoll ( dok_id, workflow_id, zeitstempel, benutzer_anmeldename, ereignis, text ) values ( ".$dok_id.", ".$w[ 0 ].", '".time()."', '".$benutzer_anmeldename."', '".$ereignis."', '".$text."' )";
				
				xdb( $STATEMENT );
				
				$rc = 0;
				$meldung = "Es wurde ein Workflow-Protokolleintrag für das Dokument ".$dok_id." erzeugt.";
				
				
			}
			else
			{
				$rc = -2;
				$meldung = "Falsche Parametrisierung: workflow_name => ".$workflow_name;
			}
		}
		else
		{
			$rc			= $ok[ 0 ];
			$meldung	= $ok[ 1 ];
		}
		
		if ( $rc < 0 )
		{
			$level = 2;
		}
		else
		{
			$level = 4;
		}
		
		
		
		xlog( $level, "w_fkt.erstelle_protokolleintrag: RC ".$rc.": ".$meldung );
		return array( $rc, $meldung );
	}
	
	function liefere_protokoll( $mandant_name, $dok_id )
	{
		$ok = existiert_mandant( $mandant_name );
		
		if ( $ok[ 0 ] > 0 )
		{
			if ( strlen( $dok_id ) > 0 )
			{
				$STATEMENT = "select id, dok_id, workflow_id, zeitstempel, benutzer_anmeldename, ereignis, text from ca_wfl_protokoll where dok_id = ".$dok_id." order by zeitstempel";
				
				$ergebnis = xdb( $STATEMENT );
				
				if ( $ergebnis[ 0 ] > 0 )
				{
					$wid = -1;
					foreach( $ergebnis[ 1 ] as $zeile )
					{
						if ( $zeile[ "workflow_id" ] != $wid )
						{
							$w = liefere_workflowinformationen( $mandant_name, "", $zeile[ "workflow_id" ] );
							
							$wid = $zeile[ "workflow_id" ];
							
						}
						
						$protokoll[] = array( 
							"id"					=>	$zeile[ "id" ],
							"workflow_id"			=>	$zeile[ "workflow_id" ],
							"zeitstempel"			=>	$zeile[ "zeitstempel" ],
							"benutzer_anmeldename"	=>	$zeile[ "benutzer_anmeldename" ],
							"ereignis"				=>	$zeile[ "ereignis" ],
							"text"					=>	$zeile[ "text" ],
							"zeitstempel_h"			=>	date( "d.m.Y H:i", $zeile[ "zeitstempel" ] )." Uhr",
							"workflow_name"			=>	$w[ 2 ][ "workflow_name" ]
						);
					}
					
					$rc = count( $protokoll );
					$meldung = "Liefere Workflow-Protokoll zu Dokument ".$dok_id.".";
				}
				else
				{
					$protokoll = array( "dok_id"=>$dok_id, "zeitstempel"=>"n.a.", "text"=>"Zu diesem Dokument gibt es kein Workflowprotokoll." );
				}
			
				
			}
			else
			{
				$rc			= -3;
				$meldung	= "Es wurde keine Dokument-ID angegeben.";
				
			}
		}
		else
		{
			$rc			= $ok[ 0 ];
			$meldung	= $ok[ 1 ];
		}
		
		if ( $rc < 0 )
		{
			$level = 2;
		}
		else
		{
			$level = 4;
		}
		
		
		
		xlog( $level, "w_fkt.liefere_protokoll: RC ".$rc.": ".$meldung );
		return array( $rc, $meldung, $protokoll );
	}
	
	
	
	
	
	
	
	
	
	
	function starte_workflow( $mandant_name, $workflow_name, $dok_id, $benutzer_anmeldename = "", $empfaenger = "", $empfaenger_typ = "" )
	{
		$ok = existiert_mandant( $mandant_name );
		
		
		if ( $ok[ 0 ] > 0 )
		{
			$w = liefere_workflowinformationen( $mandant_name, $workflow_name );
			
			if ( $w[ 0 ] > 0 )
			{
				
				$m = liefere_maskeninformationen( $mandant_name, $workflow_name, "", $w[ 2 ][ "start_maske" ], $w );
				
				
				if ( ( $w[ 2 ][ "status" ] == "in Entwicklung" ) || ( $w[ 2 ][ "status" ] == "im Test" ) )
				{
					$emp			= "ca_admin";
					$emp_typ		= "b";
				}
				else
				{
					// produktiver Workflow
					
					
					if ( ( strlen( $empfaenger ) > 0 ) && ( strlen( $empfaenger_typ ) > 0 ) )
					{
						// Es wurde jemand angegeben
						
						$emp			= $empfaenger;
						$emp_typ		= $empfaenger_typ;
					}
					else
					{
						// es wurde niemand angegeben. Also feststellen, wer der Default-Empfänger der ersten Maske ist:
						
						$emp		= $m[ 2 ][ "maske_default_empfaenger" ];
						$emp_typ	= $m[ 2 ][ "maske_default_empfaenger_typ" ];
						
					}
					
				}
				
				if ( $m[ 2 ][ "maske_default_frist" ] > 0 )
				{
					$heute = time();
					
					$frist = bcmul( $m[ 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 = "";
					
				}
				
				$STATEMENT = "select w_flag from ca_dok_ablage where dok_id = ".$dok_id;
				
				$w_flag_ergebnis = xdb( $STATEMENT );
				
				$w_flag = $w_flag_ergebnis[ 1 ][ 0 ][ "w_flag" ];
				
				if ( $w_flag != 1 )
				{
					
					$p = erzeuge_postkorb_element( $mandant_name, $dok_id, $emp, "ca_system", "Dokument zur Bearbeitung: ".$workflow_name."/".$m[ 2 ][ "maske_name" ], 1, $emp_typ, $zieldatum, $zieldatum, "", $w[ 0 ], $w[ 2 ][ "start_maske" ] );
					
					if  ( $p[ 0 ] > 0 )
					{
						$STATEMENT = "update ca_dok_ablage set w_flag = 1 where dok_id = ".$dok_id." and mandant_id = ".$ok[ 0 ];
						
						$er = xdb( $STATEMENT );
						
						if ( $w[ 2 ][ "protokoll" ] == "ja" )
						{
							$e = erstelle_protokolleintrag( $mandant_name, $workflow_name, $dok_id, $benutzer_anmeldename, "WFL_START", "Der Workflow ".$workflow_name." wurde für das Dokument ".$dok_id." gestartet." );
							
							if ( $emp_typ == "b" )
							{
								$b_txt = "dem Benutzer ".$emp;
							}
							else
							{
								$b_txt = "der Gruppe ".$emp;
							}
							
							$e = erstelle_protokolleintrag( $mandant_name, $workflow_name, $dok_id, $benutzer_anmeldename, "WEITERLEITUNG", "Das Dokument wurde in der Maske ".$m[ 2 ][ "maske_name" ]." ".$b_txt." in den Postkorb gelegt".$frist_txt."." );
						}
						
						$rc = $p[ 0 ];
						$meldung = "Der Workflow ".$workflow_name." wurde für das Dokument ".$dok_id." gestartet.";
						
					}
					else
					{
						// Sollte man etwas tun (außer einen Fehler zurückgeben)?
						
						$rc			= $p[ 0 ];
						$meldung	= "Es gab einen Fehler beim Erzeugen des Postkorbeintrags: ".$p[ 1 ];
					}
				}
				else
				{
					$rc = -5;
					$meldung = "Das Dokument ".$dok_id." befindet sich bereits in einem Workflow.";
					
				}
			}
			else
			{
				$rc = -2;
				$meldung = "Falsche Parametrisierung: workflow_name => ".$workflow_name;
			}
		}
		else
		{
			$rc			= $ok[ 0 ];
			$meldung	= $ok[ 1 ];
		}
		
		if ( $rc < 0 )
		{
			$level = 2;
		}
		else
		{
			$level = 4;
		}
		
		
		
		xlog( $level, "w_fkt.starte_workflow: RC ".$rc.": ".$meldung );
		return array( $rc, $meldung );
	}
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
?>