> // ID=(new) , TYPE=PROCES_INIT , ID_PROCES_INIT=ID_PROCESU , ID_EXIT=0 , WAIT_FOR_SIGNAL=SIGTRM (. . . ) //jezeli proces ma w sobie zawarta instrukcje dotyczaca uzycia funkcji, powinna byc ona wyzwolona w sposob: // SELF::CHILD(ID_PROCESU) - spowoduje to dodanie do tabeli CRM_PROCES_LOG wiersza nastepujacego: // ID(new), TYPE(CHILD), ID_PROCES_INIT=ID_PROCESU(nowego) , PARENT_ID=ID_PROCESU , w wierszu txt nie ma nic // Uzupelnia sie miejsce BREAKPOINT w procesie macierzystym nazwa funkcji , do ktorej system powinien powrocic po zakonczeniu sie procesu CHILD // - proces // SIGCHLD -- po zakonczeniu procesu potomnego proces potomny wyzwala ten sygnal . To powinno zabic proces potomny i wrocic do // procesu macierzystego - wyrazonego w PARENT_ID tego procesu do miejsca opisanego w polu BREAKPOINT . // error_reporting(E_ALL & ~E_NOTICE); define('DS', DIRECTORY_SEPARATOR); define('APP_PATH_ROOT', dirname(__FILE__)); define('APP_PATH_WWW', dirname(__FILE__)); define('APP_PATH_CONFIG', APP_PATH_ROOT . DS . 'config'); //session_save_path("../session") ; session_start(); date_default_timezone_set('Europe/Warsaw');// PHP 5 >= 5.1.0 required by date functions if (file_exists(".config.php")) include(".config.php"); SEF('DEBUG_S'); SEF('ZAP_SQL'); SEF('ZAP_SQL_UPDATE'); SEF('USERS_COLUMN_INIT'); SEF('AUTHORIZE_USER'); SEF('AUTHORIZE_USER_LOGIN'); //SEF("AUTHORIZE_USER_BY_AUTH_MODULE"); //SEF("AUTHORIZE_USER_LOGIN_BY_AUTH_MODULE"); SEF('GETFORMITEM'); SEF('T_WORKPOINTS_USER_SELECT'); require_once dirname(__FILE__) . '/' . 'se-lib' . '/' . 'Lib.php'; Lib::loadClass('V'); Lib::loadClass('User'); Lib::loadClass('Config'); Lib::loadClass('App'); Lib::loadClass('DB'); Lib::loadClass('S'); Lib::loadClass('ProcesHelper'); Lib::loadClass('Tree'); Lib::loadClass('TreeHelper'); Lib::loadClass('Table_View'); require('superedit-CRM_PROCESS_CALL_class.php'); echo "Odswiez\n"; function CRM_PROCES_CALL($ID_PROCES,$SIGNAL,$ID_LOG,$PIPE_FORMAT,$PIPE) { if($SIGNAL=='INIT') { $CRM_PROCES_CALL_init=new CRM_PROCES_CALL_cls('',''); $CRM_PROCES_CALL_init->CRM_PROCES_CALL_init_new_proces($ID_PROCES); $ID_LOG_new=$CRM_PROCES_CALL_init->ID_LOG_new; DEBUG_S(-3,'ID_LOG_new',$ID_LOG_new, __FILE__, __FUNCTION__, __LINE__); CRM_PROCES_CALL($ID_PROCES,'CALL',$ID_LOG_new); } else if($SIGNAL=='CALL') { $CRM_PROCES_CALL_cls=new CRM_PROCES_CALL_cls($ID_LOG,'SIGTERM'); $CRM_PROCES_CALL_cls->CRM_PROCES_CALL_get_data_from_log(); $log_unserialized=$CRM_PROCES_CALL_cls->log_unserialized; $ID_STEP=$CRM_PROCES_CALL_cls->ID_STEP; //1.zakladamy, ze mozemy robic ten proces //2.wylistuj wskazniki //3.podziel na kroki //4.zaladuj zmienne ( z bazy danych ) //5.wykonaj operacje logiczne na (X) //6.sprawdz warunki na X //6c. Zapis do bazy danych jak sa gotowe //7. jak jest blad to CALL(SIGTERM) z opisem //8a. robie zapytanie do bazy danych dla zmiennych //8b. jak nie ma bledu to ekran dla usera CALL(BREAK?) dla zmiennych R //9. odbior zmiennych od usera R //10. or zapis do bazy danych W //11. or wprowadzenie nowego rekordu C //12. CALL(NEXT) $CRM_PROCES_CALL_process_log=new CRM_PROCES_CALL_process_log($log_unserialized,$ID_STEP); $CRM_PROCES_CALL_process_log->CRM_PROCESS_CALL_list_proc_w(); $CRM_PROCES_CALL_process_log->CRM_PROCES_CALL_group_kroki_p(); DEBUG_S(-3,'ID_LOG 1',$CRM_PROCES_CALL_cls->ID_LOG, __FILE__, __FUNCTION__, __LINE__); DEBUG_S(-3,'KROKI_Z_PROCESU 1 CRM_PROCES_CALL_group_kroki_p',$CRM_PROCES_CALL_process_log->CRM_PROCES_CALL_group_kroki_p, __FILE__, __FUNCTION__, __LINE__); DEBUG_S(-3,'WSKAZNIKI 0 CRM_PROCESS_CALL_list_proc_w',$CRM_PROCES_CALL_process_log->CRM_PROCESS_CALL_list_proc_w, __FILE__, __FUNCTION__, __LINE__); //4.ladujemy zmienne $CRM_PROCES_CALL_process_log->CRM_PROCES_CALL_evaluate_possible_variables(); DEBUG_S(-3,'WSKAZNIKI 1 CRM_PROCESS_CALL_list_proc_w',$CRM_PROCES_CALL_process_log->CRM_PROCESS_CALL_list_proc_w, __FILE__, __FUNCTION__, __LINE__); DEBUG_S(-3,'log_unserialized',$CRM_PROCES_CALL_process_log->log_unserialized, __FILE__, __FUNCTION__, __LINE__); //$LISTA_WSK_R_MA_WSZYSTKIE_ZMIENNE=true; //jezeli sa wszystkie zmienne nie trzeba nic robic dla usera $CRM_PROCES_CALL_process_log->CRM_PROCES_CALL_check_if_all_variables_exists_to_call_next_process(); DEBUG_S(-3,'LISTA_WSK_R_MA_WSZYSTKIE_ZMIENNE?',$CRM_PROCES_CALL_process_log->LISTA_WSK_R_MA_WSZYSTKIE_ZMIENNE, __FILE__, __FUNCTION__, __LINE__); //5. wykonaj operacje logiczne na (X) //6. sprawdzam warunki na X $CRM_PROCES_CALL_process_log->CRM_PROCES_CALL_if_parent_id_X_types_are_true_else_to_call_COND_process(); if(!$CRM_PROCES_CALL_process_log->CRM_PROCES_CALL_if_parent_id_X_types_are_true_else_to_call_COND_process) CRM_PROCES_CALL('','COND',$ID_LOG); //6c ewentualny zapis do bazy danych UPDATE jezeli sa warunki if($CRM_PROCES_CALL_process_log->LISTA_WSK_R_MA_WSZYSTKIE_ZMIENNE) { $CRM_PROCES_CALL_process_log->CRM_PROCES_CALL_check_if_have_variables_to_update_to_db(); if($CRM_PROCES_CALL_process_log->CRM_PROCES_CALL_check_if_have_variables_to_update_to_db) { $CRM_PROCES_CALL_process_log->CRM_PROCES_CALL_prepare_sql_update_query(); DEBUG_S(-3,'Przygotowane zapytanie sql do update ',$CRM_PROCES_CALL_process_log->CRM_PROCES_CALL_prepare_sql_update_query, __FILE__, __FUNCTION__, __LINE__); $CRM_PROCES_CALL_process_log->CRM_PROCES_CALL_commit_sql_update_query(); } $CRM_PROCES_CALL_process_log->CRM_PROCES_CALL_check_if_have_variables_to_insert_to_db(); if($CRM_PROCES_CALL_process_log->CRM_PROCES_CALL_check_if_have_variables_to_insert_to_db) { } } //8a. robimy zapytanie do bazy danych dla zmiennych // if(!$LISTA_WSK_R_MA_WSZYSTKIE_ZMIENNE) //jezeli nie ma wszystkich zmiennych //8xxx zapisuje dane z kazdego zapytania do $log i przekazuje do usera instrukcje do wyboru danych - SIGCONT if(!$CRM_PROCES_CALL_process_log->LISTA_WSK_R_MA_WSZYSTKIE_ZMIENNE) { //jezeli nie ma wszystkich zmiennych DEBUG_S(-3,'WSKAZNIKI 127 CRM_PROCESS_CALL_list_proc_w',$CRM_PROCES_CALL_process_log->CRM_PROCESS_CALL_list_proc_w, __FILE__, __FUNCTION__, __LINE__); //x2 po co je zapisywac DEBUG_S(-3,'zapisujemy dane do log dla usera aby je odczytal, wybral dane i kontynuowal proces ',$CRM_PROCES_CALL_process_log->log_unserialized, __FILE__, __FUNCTION__, __LINE__); //x2 po co je zapisywac $CRM_PROCES_CALL_process_log->CRM_PROCES_CALL_prepare_data_for_user_for_terminate_it_and_recieve_with_SIGCONT(); //x1 $CRM_PROCES_CALL_process_log->CRM_PROCES_CALL_from_prepared_data_load_sql_to_log_unserialized(); //zapisujemy dane do log //$CRM_PROCES_CALL_cls=new CRM_PROCES_CALL_cls($ID_LOG,'SIGTERM'); $CRM_PROCES_CALL_cls->CRM_PROCES_CALL_set_process_log($CRM_PROCES_CALL_process_log->log_unserialized); $CRM_PROCES_CALL_cls->CRM_PROCES_CALL_set_process_NEW_WAIT_FOR_SIGNAL('SIGCONT'); $CRM_PROCES_CALL_cls->CRM_PROCES_CALL_set_process_params(); DEBUG_S(-3,'ID_LOG 2',$CRM_PROCES_CALL_cls->ID_LOG, __FILE__, __FUNCTION__, __LINE__); DEBUG_S(-3,'WSKAZNIKI 2',$CRM_PROCES_CALL_cls->CRM_PROCESS_CALL_list_proc_w, __FILE__, __FUNCTION__, __LINE__); DEBUG_S(-3,'KROKI_Z_PROCESU 2',$CRM_PROCES_CALL_cls->CRM_PROCES_CALL_group_kroki_p, __FILE__, __FUNCTION__, __LINE__); return ; //i wychodizmy z funkcji } else { //skoro wszystko jest mozemy robic NEXT . Powinnismy zapisac poprawione zmienne? //10. teraz bedziemy zapisywac do bazy danych W . . TODO //DEBUG_S(-3,'ID_LOG 2',$ID_LOG, __FILE__, __FUNCTION__, __LINE__); $CRM_PROCES_CALL_process_log->CRM_PROCES_CALL_prepare_data_for_user_for_terminate_it_and_recieve_with_SIGCONT(); $CRM_PROCES_CALL_process_log->CRM_PROCES_CALL_cleanup_last_step_data_from_log(); DEBUG_S(-3,'LOG_3 Zapisujemy loga i robimy next',$CRM_PROCES_CALL_process_log->log_unserialized, __FILE__, __FUNCTION__, __LINE__); DEBUG_S(-3,'KROKI_Z_PROCESU 3',$CRM_PROCES_CALL_process_log->CRM_PROCES_CALL_group_kroki_p, __FILE__, __FUNCTION__, __LINE__); DEBUG_S(-3,'WSKAZNIKI 3',$CRM_PROCES_CALL_process_log->CRM_PROCESS_CALL_list_proc_w, __FILE__, __FUNCTION__, __LINE__); $CRM_PROCES_CALL_cls->CRM_PROCES_CALL_set_process_log($CRM_PROCES_CALL_process_log->log_unserialized); $CRM_PROCES_CALL_cls->CRM_PROCES_CALL_set_process_params(); //11. wprowadzeni nowego rekordu C TODO } //tylko kiedy sa wszystkie wskazniki oraz nie trzeba robic update do bazy danych mozna isc dalej... if( (!$CRM_PROCES_CALL_process_log->CRM_PROCES_CALL_check_if_have_variables_to_insert_to_db)&& ($CRM_PROCES_CALL_process_log->LISTA_WSK_R_MA_WSZYSTKIE_ZMIENNE)&& (!$CRM_PROCES_CALL_process_log->CRM_PROCES_CALL_check_if_have_variables_to_update_to_db) ) { CRM_PROCES_CALL('','NEXT',$ID_LOG); } else DEBUG_S(-3,'Nie wyzwolilem NEXT z powodu warunkow','', __FILE__, __FUNCTION__, __LINE__); }else if($SIGNAL=='SIGCONT') { //tutaj wyswietlamy zawartosc danych do uzytkownika i je przetwarzamy do skutku az nie bedzie zadnego arraya $CRM_PROCES_CALL_cls=new CRM_PROCES_CALL_cls($ID_LOG,'SIGCONT'); $CRM_PROCES_CALL_cls->CRM_PROCES_CALL_get_data_from_log(); $log_unserialized=$CRM_PROCES_CALL_cls->log_unserialized; //$CRM_PROCES_CALL_process_log=new CRM_PROCES_CALL_process_log($log_unserialized,$ID_STEP); $CRM_PROCES_CALL_process_log=new CRM_PROCES_CALL_process_log($CRM_PROCES_CALL_cls->log_unserialized,$CRM_PROCES_CALL_cls->ID_STEP,$ID_LOG); //begin x1 $CRM_PROCES_CALL_process_log->CRM_PROCESS_CALL_list_proc_w(); $CRM_PROCES_CALL_process_log->CRM_PROCES_CALL_group_kroki_p(); DEBUG_S(-3,'ID_LOG 1',$CRM_PROCES_CALL_cls->ID_LOG, __FILE__, __FUNCTION__, __LINE__); DEBUG_S(-3,'KROKI_Z_PROCESU 1 CRM_PROCES_CALL_group_kroki_p',$CRM_PROCES_CALL_process_log->CRM_PROCES_CALL_group_kroki_p, __FILE__, __FUNCTION__, __LINE__); DEBUG_S(-3,'WSKAZNIKI 0 CRM_PROCESS_CALL_list_proc_w',$CRM_PROCES_CALL_process_log->CRM_PROCESS_CALL_list_proc_w, __FILE__, __FUNCTION__, __LINE__); DEBUG_S(-3,'CRM_PROCES_CALL_cls->log_unserialized 0',$CRM_PROCES_CALL_cls->log_unserialized, __FILE__, __FUNCTION__, __LINE__); $CRM_PROCES_CALL_process_log->CRM_PROCES_CALL_evaluate_possible_variables(); $CRM_PROCES_CALL_process_log->CRM_PROCES_CALL_check_if_all_variables_exists_to_call_next_process(); if(!$CRM_PROCES_CALL_process_log->LISTA_WSK_R_MA_WSZYSTKIE_ZMIENNE) { $CRM_PROCES_CALL_process_log->CRM_PROCES_CALL_user_window_control(); $CRM_PROCES_CALL_process_log->CRM_PROCES_CALL_prepare_data_for_user_for_terminate_it_and_recieve_with_SIGCONT(); $CRM_PROCES_CALL_process_log->CRM_PROCES_CALL_from_prepared_data_load_sql_to_log_unserialized(); DEBUG_S(-3,'KROKI_Z_PROCESU 2 CRM_PROCES_CALL_group_kroki_p',$CRM_PROCES_CALL_process_log->CRM_PROCES_CALL_group_kroki_p, __FILE__, __FUNCTION__, __LINE__); DEBUG_S(-3,'WSKAZNIKI 2 CRM_PROCESS_CALL_list_proc_w',$CRM_PROCES_CALL_process_log->CRM_PROCESS_CALL_list_proc_w, __FILE__, __FUNCTION__, __LINE__); } //eof x1 $CRM_PROCES_CALL_process_log->CRM_PROCES_SIGCONT_check_if_column_isnot_rwx(); //ta funkcja od razu wyswietla tabele z danymi w HTMLu DEBUG_S(-3,'log_unserialized',array($CRM_PROCES_CALL_process_log->log_unserialized,$CRM_PROCES_CALL_process_log->ID_LOG), __FILE__, __FUNCTION__, __LINE__); //$JEST_POTRZEBA_AKCJI_USERA=false; //$FLAGA_POKAZAC_CRM_PROCES_CALL_show_SIGCONT_menu=false; if(!$CRM_PROCES_CALL_process_log->JEST_POTRZEBA_AKCJI_USERA) { //proces moze przejsc do nastepnego kroku //przygotowujemy zmienne //x1 foreach($CRM_PROCES_CALL_process_log->log_unserialized['DANE_DLA_USERA_DO_WYBORU'] as $TAB_ID => $ROW_VAL ) { //x1 foreach($ROW_VAL as $ROW_NUMBER=>$ROW_VAL_SELECTED) { //x1 foreach($ROW_VAL_SELECTED as $ROW_NAME_WSK=>$ROW_NAME_WSK_SELECTED ) { //x1 echo "jestem w tabl id ".$TAB_ID." rowname wsk ".$ROW_NAME_WSK; //x1 $ID_WSKAZNIKA=$log_unserialized['DANE_DLA_USERA_DO_WYBORU_KOLUMNY'][$TAB_ID]['KOLUMNY_WSK'][$ROW_NAME_WSK]; //x1 $log_unserialized['WSKAZNIKI']['LISTA'][$ID_WSKAZNIKA]->ID=$ID_WSKAZNIKA; //x1 $log_unserialized['WSKAZNIKI']['LISTA'][$ID_WSKAZNIKA]->PARENT_ID="'".$ROW_NAME_WSK_SELECTED."'"; //x1 } //x1 } //x1 } //x1unset($log_unserialized['DANE_DLA_USERA_DO_WYBORU_KOLUMNY']); //x1unset($log_unserialized['DANE_DLA_USERA_DO_WYBORU']); DEBUG_S(-3,'log_unserialized po dopisaniu wartosci wybranych przez uzytkownika, ustawiamy sygnal oczekiwany na SIGTERM',$log_unserialized, __FILE__, __FUNCTION__, __LINE__); $CRM_PROCES_CALL_cls->CRM_PROCES_CALL_set_process_log($log_unserialized); $CRM_PROCES_CALL_cls->CRM_PROCES_CALL_set_process_NEW_WAIT_FOR_SIGNAL('SIGTERM'); $CRM_PROCES_CALL_cls->CRM_PROCES_CALL_set_process_params(); //$sql="update CRM_PROCES_LOG set log='".mysql_real_escape_string(serialize($log_unserialized))."', WAIT_FOR_SIGNAL='SIGTERM' where ID='".$ID_LOG."' and WAIT_FOR_SIGNAL='SIGCONT'";// SIGCONT SIGTERM //$res = DB::query($sql) or die('problem ze sql'); //DEBUG_S(-3,'zapisujemy dane do log po odjeciu niepotrzebnych linii ',$sql, __FILE__, __FUNCTION__, __LINE__); //CRM_PROCES_CALL('','CALL',$ID_LOG); } else { //jest potrzebna akcja usera - zapiszmy indeksy w logu dla SIGIO DEBUG_S(-3,'Sa wartosci dla uzytkownika do wyboru, zapisujemy dostepne elementy ',$CRM_PROCES_CALL_process_log->log_unserialized, __FILE__, __FUNCTION__, __LINE__); $CRM_PROCES_CALL_cls->CRM_PROCES_CALL_set_process_log($CRM_PROCES_CALL_process_log->log_unserialized); $CRM_PROCES_CALL_cls->CRM_PROCES_CALL_set_process_params(); } } else if($SIGNAL=='NEXT') { //procedura do wyzwalania nastepnego procesu wg listy $CRM_PROCES_CALL_cls=new CRM_PROCES_CALL_cls($ID_LOG,'SIGTERM'); $CRM_PROCES_CALL_cls->CRM_PROCES_CALL_get_data_from_log(); $CRM_PROCES_CALL_cls->CRM_PROCES_CALL_get_next_process_step(); $CRM_PROCES_CALL_cls->CRM_PROCES_CALL_set_process_NEXT_PROCES_STEP($CRM_PROCES_CALL_cls->NEXT_PROCES_STEP); DEBUG_S(-3,'Wyzwolono SIGNAL==NEXT',array($CRM_PROCES_CALL_cls), __FILE__, __FUNCTION__, __LINE__); $CRM_PROCES_CALL_cls->CRM_PROCES_CALL_set_process_params(); } else if($SIGNAL=='EXIT_0') { //procedura do wyzwalania nastepnego procesu wg listy DEBUG_S(-3,'Wyzwolono SIGNAL==TERMINATE',array($CRM_PROCES_CALL_cls), __FILE__, __FUNCTION__, __LINE__); $CRM_PROCES_CALL_cls=new CRM_PROCES_CALL_cls($ID_LOG,'SIGTERM'); $CRM_PROCES_CALL_cls->CRM_PROCES_CALL_set_process_NEXT_PROCES_STEP($CRM_PROCES_CALL_cls->NEXT_PROCES_STEP); $CRM_PROCES_CALL_cls->CRM_PROCES_CALL_set_process_NEW_WAIT_FOR_SIGNAL('EXIT_0'); $CRM_PROCES_CALL_cls->CRM_PROCES_CALL_set_process_log(''); //czyszcze loga $CRM_PROCES_CALL_cls->CRM_PROCES_CALL_set_process_params(); } else if($SIGNAL=='SIGIO') { //procedura do wyzwalania w przypadku otrzymania danych od uzytkownika DEBUG_S(-3,'Otrzymalismy sygnal SIGIO',array($PIPE_FORMAT,$PIPE), __FILE__, __FUNCTION__, __LINE__); if(($PIPE_FORMAT!='HTTP')|| (!$PIPE)) { DEBUG_S(-3,'Brak danych do przekazania lub nieznany format',array($PIPE_FORMAT,$PIPE), __FILE__, __FUNCTION__, __LINE__); die(''); } $CRM_PROCES_CALL_cls=new CRM_PROCES_CALL_cls($ID_LOG,'SIGCONT'); $CRM_PROCES_CALL_cls->CRM_PROCES_CALL_get_data_from_log(); if($PIPE_FORMAT=='HTTP') { DEBUG_S(-3,'CRM_PROCES_CALL_show_SIGCONT_menu_call before call ',array($ID_LOG,$PIPE['TABLE'],$PIPE), __FILE__, __FUNCTION__, __LINE__); $log_unserialized=CRM_PROCES_CALL_show_SIGCONT_menu_call($ID_LOG,$PIPE['TABLE'],$PIPE,$CRM_PROCES_CALL_cls->log_unserialized,$CRM_PROCES_CALL_cls->ID_STEP); $CRM_PROCES_CALL_cls->CRM_PROCES_CALL_set_process_log($log_unserialized); $CRM_PROCES_CALL_cls->CRM_PROCES_CALL_set_process_NEW_WAIT_FOR_SIGNAL('SIGTERM'); $CRM_PROCES_CALL_cls->CRM_PROCES_CALL_set_process_params(); } else { DEBUG_S(-3,'Nieznany format przekazania danych: ',array($PIPE_FORMAT), __FILE__, __FUNCTION__, __LINE__); die(''); } } else { DEBUG_S(-3,'Nieznana procedura',array($ID_PROCES,$SIGNAL,$ID_LOG), __FILE__, __FUNCTION__, __LINE__); die(); } } //CRM_PROCES_CALL(2207,'INIT',''); //CRM_PROCES_CALL('','CALL',76); //CRM_PROCES_CALL('','SIGCONT',76); //if($_REQUEST['CRM_PROCES_CALL_show_SIGCONT_menu_call']) CRM_PROCES_CALL_show_SIGCONT_menu_call($_REQUEST['ID_LOG'],$_REQUEST['TABLE'],$_REQUEST['ROW_ID']); if($_REQUEST['CRM_PROCES_NAVIGATOR_INIT']) CRM_PROCES_CALL($_REQUEST['CRM_PROCES_NAVIGATOR_INIT_NEW_PROCES'],'INIT','','',''); if($_REQUEST['CRM_PROCES_NAVIGATOR_MENU']) CRM_PROCES_CALL('',$_REQUEST['WAIT_FOR_SIGNAL'],$_REQUEST['ID_LOG'],'',''); if($_REQUEST['CRM_PROCES_CALL_show_SIGCONT_menu_call']) CRM_PROCES_CALL('','SIGIO',$_REQUEST['ID_LOG'],'HTTP',$_REQUEST); CRM_PROCES_NAVIGATOR(); ?>