superedit-CRM_PROCESS_CALL_class.php 40 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750
  1. <?php
  2. /*
  3. class CRM_PROCES_SIGCONT {
  4. var $ID_LOG;
  5. var $log_unserialized;
  6. function CRM_PROCESS_SIGCONT($ID_LOG,$log_unserialized) {
  7. $this->ID_LOG=$ID_LOG;
  8. $this->log_unserialized2=$log_unserialized;
  9. }
  10. }
  11. */
  12. function CRM_PROCES_NAVIGATOR() {
  13. //Process navigator temp
  14. echo "<table border=1>";
  15. echo "<tr><td>ID LOG</td><td>ID_PROCES_INIT</td><td>ID_STEP</td><td>ADM_ACCOUNT</td><td>WAIT_FOR_SIGNAL</td></tr>";
  16. $sql="select ID,ID_PROCES_INIT,ID_STEP,ADM_ACCOUNT,TYPE from CRM_PROCES_LOG where ADM_ACCOUNT='TODO_ADMIN_TEST' and TYPE!='EXIT_0'";
  17. $res = DB::query($sql) or die('problem ze sql');
  18. ////CRM_PROCES_CALL(2207,'INIT','');
  19. echo "<form><input type=hidden name=CRM_PROCES_NAVIGATOR_INIT value=1>";
  20. echo "\n<tr><td colspan=5><select name=CRM_PROCES_NAVIGATOR_INIT_NEW_PROCES>";
  21. $sel=DB::query("select `ID`,`DESC` from CRM_PROCES where TYPE='PROCES_INIT' and A_STATUS!='DELETED' ");
  22. while ($hh = DB::fetch( $sel )) {
  23. echo "\n<option name=".$hh->ID.">".$hh->ID." ".$hh->DESC."</option>";
  24. }
  25. // <input type=text name=CRM_PROCES_NAVIGATOR_INIT_NEW_PROCES>
  26. echo "</select></td><td><input type=submit value=Uruchom proces></td></tr>";
  27. echo "</form>";
  28. while ($h = DB::fetch( $res )) {
  29. echo "\n<tr><td>".$h->ID."</td><td>".$h->ID_PROCES_INIT."</td><td>".$h->ID_STEP."</td><td>".$h->ADM_ACCOUNT."</td><td>";
  30. if($h->TYPE=='SIGTERM') $mysig='CALL';
  31. if($h->TYPE=='SIGCONT') $mysig='SIGCONT';
  32. echo $h->TYPE;
  33. echo "<a href=?CRM_PROCES_NAVIGATOR_MENU=1&WAIT_FOR_SIGNAL=".$mysig."&ID_LOG=".$h->ID.">";
  34. echo " Send ".$mysig." to IT! ";
  35. echo "</a></td></tr>";
  36. }
  37. echo "</table>";
  38. //testuje proces
  39. }
  40. class CRM_PROCES_CALL_cls {
  41. var $ID_LOG ;
  42. var $WAIT_FOR_SIGNAL;
  43. function CRM_PROCES_CALL_cls($ID_LOG,$WAIT_FOR_SIGNAL) {
  44. $this->ID_LOG=$ID_LOG;
  45. $this->WAIT_FOR_SIGNAL=$WAIT_FOR_SIGNAL;
  46. }
  47. function CRM_PROCES_CALL_init_new_proces($ID_PROCES) {
  48. $zap_sql="insert into CRM_PROCES_LOG ( `TYPE`, `ID_PROCES_INIT`, `ID_STEP`, `ADM_ACCOUNT`)
  49. values ('SIGTERM' , '".$ID_PROCES."', '".self::CRM_PROCESS_CALL_get_proc_w_from_INIT($ID_PROCES)."' ,'TODO_ADMIN_TEST') ";
  50. $res = DB::query($zap_sql);
  51. $ID_LOG_new=DB::insert_id();
  52. $this->ID_LOG_new=$ID_LOG_new;
  53. DEBUG_S(-3,'CRM_PROCES_CALL_init_new_proces wyzwolilo nowy numer procesu z numerem log ',$ID_LOG_new, __FILE__, __FUNCTION__, __LINE__);
  54. }
  55. function CRM_PROCESS_CALL_get_proc_w_from_INIT($ID_PROCES) { //funkcja wylistowuje jeden pierwszy wskaznik dla procesu
  56. $sql="select cw.ID
  57. from CRM_WSKAZNIK as cw
  58. where cw.ID_PROCES='".$ID_PROCES."' and cw.A_STATUS!='DELETED'
  59. order by cw.SORT_PRIO limit 1";
  60. DEBUG_S(-3,'sql',$sql, __FILE__, __FUNCTION__, __LINE__);
  61. $res = DB::query($sql);
  62. while ($h = DB::fetch( $res )) {
  63. return $h->ID;
  64. }
  65. }
  66. function CRM_PROCES_CALL_set_process_NEXT_PROCES_STEP($NEXT_PROCES_STEP) {
  67. $this->NEXT_PROCES_STEP=$NEXT_PROCES_STEP;
  68. }
  69. function CRM_PROCES_CALL_set_process_log($log) {
  70. $this->log=$log;
  71. }
  72. function CRM_PROCES_CALL_set_process_NEW_WAIT_FOR_SIGNAL($NEW_WAIT_FOR_SIGNAL) {
  73. $this->NEW_WAIT_FOR_SIGNAL=$NEW_WAIT_FOR_SIGNAL;
  74. }
  75. function CRM_PROCES_CALL_set_process_params() {
  76. $sql="update CRM_PROCES_LOG set ID='".$this->ID_LOG."' ";
  77. if(isset($this->NEXT_PROCES_STEP)) $sql.=" , ID_STEP='".$this->NEXT_PROCES_STEP."' ";
  78. if(isset($this->NEW_WAIT_FOR_SIGNAL)) $sql.=" , TYPE='".$this->NEW_WAIT_FOR_SIGNAL."' ";
  79. if(isset($this->log)) $sql.=" , log='".mysql_real_escape_string(serialize($this->log))."'";
  80. // $sql.=" where ID='".$this->ID_LOG."' and TYPE='".$this->WAIT_FOR_SIGNAL."'";// SIGCONT SIGTERM
  81. $res = DB::query($sql) or die('problem ze sql');
  82. DEBUG_S(-3,'CRM_PROCES_CALL_set_process_params ',array($this->NEXT_PROCES_STEP,$this->NEW_WAIT_FOR_SIGNAL,$this->log,$sql), __FILE__, __FUNCTION__, __LINE__);
  83. }
  84. function CRM_PROCES_CALL_get_next_process_step() {
  85. //funkcja wyswietla kolejny numer ID procesu, jaki powinien byc uruchomiony
  86. echo "teeest";
  87. if(!isset($this->ID_STEP)) die('Should firstly init ID_STEP');
  88. $sql="select ID from CRM_PROCES where PARENT_ID='".$this->ID_STEP."' order by SORT_PRIO limit 1";
  89. $res = DB::query($sql) or die('problem ze sql');
  90. while ($h = DB::fetch( $res )) {
  91. $this->NEXT_PROCES_STEP=$h->ID;
  92. }
  93. if(!isset($this->NEXT_PROCES_STEP)) {
  94. DEBUG_S(-3,'CRM_PROCES_CALL_get_next_process brak kolejnego procesu podrzednego , sprawdzam proces nizej',$sql, __FILE__, __FUNCTION__, __LINE__);
  95. $sql="select t2.ID, t2.PARENT_ID ,t2.SORT_PRIO from CRM_PROCES as t1
  96. left join CRM_PROCES as t2 on t2.PARENT_ID=t1.PARENT_ID
  97. where t1.ID='".$this->ID_STEP."'
  98. and t2.A_STATUS!='DELETED' order by t2.SORT_PRIO ";
  99. $res = DB::query($sql) or die('problem ze sql');
  100. $FLAG_nastepny_to_NEXT_ID=false;
  101. while ($h = DB::fetch( $res )) {
  102. if($FLAG_nastepny_to_NEXT_ID)$this->NEXT_PROCES_STEP=$h->ID;
  103. if($h->ID==$this->ID_STEP) $FLAG_nastepny_to_NEXT_ID=true;
  104. }
  105. if(DB::num_rows()==0) {
  106. DEBUG_S(-3,'Brak kolejnego procesu bedziemy robic terminate prawidlowe','', __FILE__, __FUNCTION__, __LINE__);
  107. CRM_PROCES_CALL('','EXIT_0',$this->ID_LOG);
  108. }
  109. } else if(!isset($this->NEXT_PROCES_STEP)) {
  110. DEBUG_S(-3,' brak nastepnego procesu - bedziemy robic TERMINATE ',$sql, __FILE__, __FUNCTION__, __LINE__);
  111. }
  112. DEBUG_S(-3,'sql ',$sql, __FILE__, __FUNCTION__, __LINE__);
  113. }
  114. function CRM_PROCES_CALL_get_data_from_log(){
  115. //funkcja wyzwalana w wielu miejscach dotyczaca odczytu danych proces_log - rozjasnia kod
  116. $sql="select ID_STEP , log from CRM_PROCES_LOG where ID='".$this->ID_LOG."' and TYPE='".$this->WAIT_FOR_SIGNAL."' limit 1 ";
  117. echo $sql;
  118. $res = DB::query($sql);
  119. while ($h = DB::fetch( $res )) {
  120. $this->ID_STEP=$h->ID_STEP;
  121. $this->log_unserialized=unserialize($h->log);
  122. }
  123. if(!isset($this->ID_STEP)) { DEBUG_S(-3,'BRAK ID_STEP',$sql, __FILE__, __FUNCTION__, __LINE__); die(''); }
  124. DEBUG_S(-3,'CRM_PROCES_CALL_get_data_from_log',array($this->ID_LOG,$this->WAIT_FOR_SIGNAL), __FILE__, __FUNCTION__, __LINE__);
  125. }
  126. }
  127. // ################### NEW CLASS
  128. class CRM_PROCES_CALL_process_log {
  129. var $log_unserialized ;
  130. function CRM_PROCES_CALL_process_log($log_unserialized,$ID_STEP,$ID_LOG) {
  131. $this->log_unserialized=$log_unserialized;
  132. $this->ID_STEP=$ID_STEP;
  133. $this->ID_LOG=$ID_LOG;
  134. }
  135. function CRM_PROCESS_CALL_list_proc_w() { //funkcja wylistowuje wskazniki z podanego ID_PROCESu (ID_STEP)
  136. $sql="select replace(cp.FORM_TREAT,',','') as FORM_TREAT, cz.`DESC` as cz_DESC, cz.`OPIS` as cz_OPIS, cw.ID, cw.PARENT_ID , cw.ID_PROCES , cw.ID_ZASOB, cw.OPIS_ZASOB, cw.TYP, cw.ID_PRZYPADEK, cw.EXPORT_WSKAZNIK
  137. from CRM_WSKAZNIK as cw
  138. left join CRM_LISTA_ZASOBOW as cz on cz.ID=cw.ID_ZASOB
  139. left join CRM_PRZYPADEK as cp on cp.ID=cw.ID_PRZYPADEK
  140. left join CRM_WSKAZNIK as cw_search on cw_search.ID_PROCES=cw.ID_PROCES
  141. left join CRM_LISTA_ZASOBOW as cz_search on cz_search.ID=cw_search.ID_ZASOB
  142. where cw_search.ID='".$this->ID_STEP."' and cw.A_STATUS!='DELETED' and cz_search.PARENT_ID=cz.PARENT_ID ";
  143. DEBUG_S(-3,'sql',$sql, __FILE__, __FUNCTION__, __LINE__);
  144. $res = DB::query($sql);
  145. while ($h = DB::fetch( $res )) {
  146. // $RETURN['LISTA'][$h->ID]=$h;
  147. // $RETURN['LISTA_'.$h->FORM_TREAT][$h->ID]=$h->PARENT_ID;
  148. $this->CRM_PROCESS_CALL_list_proc_w['LISTA'][$h->ID]=$h;
  149. $this->CRM_PROCESS_CALL_list_proc_w['LISTA_'.$h->FORM_TREAT][$h->ID]=1;//$h->PARENT_ID;
  150. // $RETURN['LISTA_VAR_STATUS'][$h->ID]['VAR_STATUS']=self::CRM_PROCESS_CALL_translate_VAR_STATUS_from_PARENT_ID($h->ID,$h->PARENT_ID,$h->FORM_TREAT);
  151. $this->CRM_PROCESS_CALL_list_proc_w['LISTA_VAR_STATUS'][$h->ID]['VAR_STATUS']=self::CRM_PROCESS_CALL_translate_VAR_STATUS_from_PARENT_ID($h->ID,$h->PARENT_ID,$h->FORM_TREAT);
  152. }
  153. return $RETURN;
  154. }
  155. function CRM_PROCES_CALL_group_kroki_p() {
  156. //funkcja grupuje wskazniki dotyczace jednego i tego samego parent id - jednej tabeli.
  157. //W procesie moze byc kilka zapytan do bazy dotyczacych roznych tabel - trzeba je rozpatrywac indywidualnie
  158. //funkcja tworzy zmienna array(n1(array_wskazniki_z_jednej_tabeli),n2(array_wskazniki_z_drugiej_tabeli),,,)
  159. //n1,n2 to liczby kolejne
  160. $KROK=0;
  161. foreach ($this->CRM_PROCESS_CALL_list_proc_w['LISTA'] as $wsk=>$wsk_dane) {
  162. //print_r($wsk);
  163. //die();
  164. $CURR=self::CRM_PROCES_CALL_sh_p($wsk);
  165. if(!isset($LAST)) {
  166. $LAST=$CURR['PARENT_ZASOB'];
  167. $LISTA_DO_TEJ_SAMEJ_TABELI['TABELA'][$LAST][$wsk]=$CURR['ZASOB_KOMORKA'];
  168. $LISTA_DO_TEJ_SAMEJ_TABELI['TABELA'][$LAST]['DANE_DO_WYBORU_DLA_USERA_KEY']=self::CRM_PROCES_CALL_provide_KEY_for_type_KOMORKA($wsk);
  169. $LISTA_DO_TEJ_SAMEJ_TABELI['KROKI'][$LAST]=$CURR;
  170. $LISTA_DO_TEJ_SAMEJ_TABELI['DANE_DO_WYBORU_DLA_USERA_KEY'][$wsk]=self::CRM_PROCES_CALL_provide_KEY_for_type_KOMORKA($wsk);
  171. } else if($LAST!=$CURR['PARENT_ZASOB']) {
  172. $KROK++; $LAST=$CURR['PARENT_ZASOB'];
  173. $LISTA_DO_TEJ_SAMEJ_TABELI['TABELA'][$LAST][$wsk]=$CURR['ZASOB_KOMORKA'];
  174. $LISTA_DO_TEJ_SAMEJ_TABELI['TABELA'][$LAST]['DANE_DO_WYBORU_DLA_USERA_KEY']=self::CRM_PROCES_CALL_provide_KEY_for_type_KOMORKA($wsk);
  175. $LISTA_DO_TEJ_SAMEJ_TABELI['KROKI'][$LAST]=$CURR;
  176. $LISTA_DO_TEJ_SAMEJ_TABELI['DANE_DO_WYBORU_DLA_USERA_KEY'][$wsk]=self::CRM_PROCES_CALL_provide_KEY_for_type_KOMORKA($wsk);
  177. } else if($LAST==$CURR['PARENT_ZASOB']) {
  178. $LISTA_DO_TEJ_SAMEJ_TABELI['TABELA'][$LAST][$wsk]=$CURR['ZASOB_KOMORKA'];
  179. $LISTA_DO_TEJ_SAMEJ_TABELI['TABELA'][$LAST]['DANE_DO_WYBORU_DLA_USERA_KEY']=self::CRM_PROCES_CALL_provide_KEY_for_type_KOMORKA($wsk);
  180. $LISTA_DO_TEJ_SAMEJ_TABELI['KROKI'][$LAST]=$CURR;
  181. $LISTA_DO_TEJ_SAMEJ_TABELI['DANE_DO_WYBORU_DLA_USERA_KEY'][$wsk]=self::CRM_PROCES_CALL_provide_KEY_for_type_KOMORKA($wsk);
  182. }
  183. }
  184. $this->CRM_PROCES_CALL_group_kroki_p=$LISTA_DO_TEJ_SAMEJ_TABELI;
  185. // return $LISTA_DO_TEJ_SAMEJ_TABELI;
  186. }
  187. function CRM_PROCES_CALL_sh_p($ID_WSKAZNIKA) { //fukcja pokazuje parent ID zasobu dowiazanego do danego wskaznika
  188. $res = DB::query("select cz.PARENT_ID , cz.`DESC` from CRM_WSKAZNIK as cw right join CRM_LISTA_ZASOBOW as cz on cz.ID=cw.ID_ZASOB where cw.ID='".$ID_WSKAZNIKA."' and cz.`TYPE`='KOMORKA' ");
  189. while ($h = DB::fetch( $res )) {
  190. // $this->CRM_PROCES_CALL_sh_p['PARENT_ZASOB']=$h->PARENT_ID;
  191. // $this->CRM_PROCES_CALL_sh_p['ZASOB_KOMORKA']=$h->DESC;
  192. $RETURN['PARENT_ZASOB']=$h->PARENT_ID;
  193. $RETURN['ZASOB_KOMORKA']=$h->DESC;
  194. }
  195. $res = DB::query("select cz.`PARENT_ID`, cz.`DESC` from CRM_LISTA_ZASOBOW as cz where cz.ID='".$RETURN['PARENT_ZASOB']."' ");
  196. while ($h = DB::fetch( $res )) {
  197. // $this->CRM_PROCES_CALL_sh_p['PARENT_DATABASE_CONF_ID']=$h->PARENT_ID;
  198. // $this->CRM_PROCES_CALL_sh_p['PARENT_TABLE_NAME']=$h->DESC;
  199. // $this->CRM_PROCES_CALL_sh_p['DOTYCZY_WSKAZNIKA']=$ID_WSKAZNIKA;
  200. $RETURN['PARENT_DATABASE_CONF_ID']=$h->PARENT_ID;
  201. $RETURN['PARENT_TABLE_NAME']=$h->DESC;
  202. $RETURN['DOTYCZY_WSKAZNIKA']=$ID_WSKAZNIKA;
  203. }
  204. return $RETURN;
  205. }
  206. function CRM_PROCES_CALL_evaluate_possible_variables() {
  207. DEBUG_S(-3,'bede ewaluowac wszysktie zmienne w LISTA_VAR_STATUS TO_EVALUATE_FROM_ID',$this, __FILE__, __FUNCTION__, __LINE__);
  208. //najpierw nadpisuje zmienne z loga
  209. foreach($this->CRM_PROCESS_CALL_list_proc_w['LISTA'] as $WSK=>$WSK_VAL){
  210. if(isset($this->log_unserialized['LISTA'][$WSK])) {
  211. DEBUG_S(-3,'Nadpisuje zmienna CRM_PROCESS_CALL_list_proc_w[LISTA] z log_unserialized',$WSK, __FILE__, __FUNCTION__, __LINE__);
  212. $this->CRM_PROCESS_CALL_list_proc_w['LISTA'][$WSK]=$this->log_unserialized['LISTA'][$WSK];
  213. $this->CRM_PROCESS_CALL_list_proc_w['LISTA_VAR_STATUS'][$WSK]=$this->log_unserialized['LISTA_VAR_STATUS'][$WSK];
  214. }
  215. }
  216. //najpierw jade po starych danych pokazanych do usera i je evaluuje - potem robie to po biezacych zmiennych i podstawiam do starych danych
  217. foreach ($this->log_unserialized['DANE_DLA_USERA_DO_WYBORU_KOLUMNY'] as $ID_TABELI=>$DANE_DLA_TABELI) {
  218. foreach($DANE_DLA_TABELI['LISTA_VAR_STATUS'] as $WSK=>$WSK_DANE) { //przegladam zmienne o oznaczonych wlasciwosciach wczesniej zadanych ( z poprzedniego wyzwolenia )
  219. if($WSK_DANE['VAR_STATUS']=='TO_SEARCH') { //znalazlem oczekiwana zmienna do szukania
  220. $WSK_DESC=$DANE_DLA_TABELI['KOLUMNY'][$WSK]; //ustalam nazwe wskaznika uzywanego wewnetrznie ( zmienna nie moze miec samych cyfr)
  221. //if($this->log_unserialized['DANE_DLA_USERA_DO_WYBORU'][$ID_TABELI])
  222. //die();
  223. // if(isset($this->log_unserialized['DANE_DLA_USERA_DO_WYBORU'][$ID_TABELI])) //jezeli byly dane przekazane wczesniej IO
  224. //x1
  225. // foreach($this->log_unserialized['DANE_DLA_USERA_DO_WYBORU'][$ID_TABELI] as $ROW=>$DANE_WYBRANE) {
  226. if(count($this->log_unserialized['DANE_DLA_USERA_DO_WYBORU'][$ID_TABELI])==1){
  227. echo "<br> Sprawdzam dla ".$WSK_DESC." ROWS".$ROW." ";
  228. // if(isset($DANE_WYBRANE->$WSK_DESC)) { echo " WYbrano dane ".$DANE_WYBRANE->$WSK_DESC;
  229. DEBUG_S(-3,' odnalazlem wartosc dla poszukiwanej zmiennej z poprzedniego wyzwolenia procesu',array($WSK_DANE,$WSK_DESC,$DANE_WYBRANE->$WSK_DESC), __FILE__, __FUNCTION__, __LINE__);
  230. //nadpisuje lokalne wartosci, ktore beda potem zapisane do $log
  231. $this->CRM_PROCESS_CALL_list_proc_w['LISTA'][$WSK]->PARENT_ID=key($this->log_unserialized['DANE_DLA_USERA_DO_WYBORU'][$ID_TABELI]);
  232. //$this->CRM_PROCESS_CALL_list_proc_w['LISTA'][$WSK]->PARENT_ID=$DANE_WYBRANE->$WSK_DESC; //todo trzeba bedzie wywalic kopiowanie tych danych w dwoch miejscach
  233. $this->CRM_PROCESS_CALL_list_proc_w['LISTA_VAR_STATUS'][$WSK]['VAR_STATUS']='TO_EVALUATE_FROM_ID_KEY';
  234. // }
  235. }
  236. //x1 }
  237. }
  238. }
  239. }
  240. //teraz jade po zmiennych jakie pojawily sie w tym kroku i staram sie je zaevaluowac zmiennymi z loga
  241. foreach($this->CRM_PROCESS_CALL_list_proc_w['LISTA'] as $WSK=>$WSK_VAL) {
  242. if($this->CRM_PROCESS_CALL_list_proc_w['LISTA_VAR_STATUS'][$WSK]['VAR_STATUS']=='TO_EVALUATE_FROM_ID') {
  243. if($this->log_unserialized['LISTA_VAR_STATUS'][$WSK_VAL->PARENT_ID]['VAR_STATUS']=='VALUE') {
  244. $this->CRM_PROCESS_CALL_list_proc_w['LISTA'][$WSK]->PARENT_ID=$this->log_unserialized['LISTA'][$this->CRM_PROCESS_CALL_list_proc_w['LISTA'][$WSK]->PARENT_ID]->PARENT_ID;
  245. $this->CRM_PROCESS_CALL_list_proc_w['LISTA_VAR_STATUS'][$WSK]['VAR_STATUS']='VALUE';
  246. DEBUG_S(-3,' odnalazlem wartosc dla poszukiwanej zmiennej z poprzedniego kroku',array($WSK,$this->CRM_PROCESS_CALL_list_proc_w['LISTA_VAR_STATUS'][$WSK]['VAR_STATUS'],$this->CRM_PROCESS_CALL_list_proc_w['LISTA'][$WSK]->PARENT_ID), __FILE__, __FUNCTION__, __LINE__);
  247. } else if($this->log_unserialized['LISTA_VAR_STATUS'][$WSK_VAL->PARENT_ID]['VAR_STATUS']=='TO_EVALUATE_FROM_ID_KEY') {
  248. DEBUG_S(-3,' odnalazlem wartosc dla poszukiwanej zmiennej z poprzedniego kroku w stylu TO_EVALUATE_FROM_ID_KEY ',array($WSK,$this->CRM_PROCESS_CALL_list_proc_w['LISTA_VAR_STATUS'][$WSK]['VAR_STATUS'],$this->CRM_PROCESS_CALL_list_proc_w['LISTA'][$WSK]->PARENT_ID), __FILE__, __FUNCTION__, __LINE__);
  249. //najpierw sprawdzam czy przypadkiem kolumna referencyjna nie jest kluczem z tej samej tabeli , w takim wypadku moge po prostu ja przyrownac do rekordu
  250. if($this->CRM_PROCES_CALL_group_kroki_p['DANE_DO_WYBORU_DLA_USERA_KEY'][$WSK_VAL->PARENT_ID] == $this->CRM_PROCESS_CALL_list_proc_w['LISTA'][$WSK_VAL->PARENT_ID]->cz_DESC ) {
  251. DEBUG_S(-3,' Powiazana wartosc wskaznika jest kluczem, zatem mozemy ja zamienic jako wartosc ','', __FILE__, __FUNCTION__, __LINE__);
  252. $this->CRM_PROCESS_CALL_list_proc_w['LISTA'][$WSK]->PARENT_ID=$this->log_unserialized['LISTA'][$this->CRM_PROCESS_CALL_list_proc_w['LISTA'][$WSK]->PARENT_ID]->PARENT_ID;
  253. $this->CRM_PROCESS_CALL_list_proc_w['LISTA_VAR_STATUS'][$WSK]['VAR_STATUS']='VALUE';
  254. }
  255. else DEBUG_S(-3,' Nalezy pewnie ta zmienna zamienic na wartosc - TODO ','', __FILE__, __FUNCTION__, __LINE__);
  256. }
  257. }
  258. }
  259. }
  260. function CRM_PROCES_CALL_check_if_all_variables_exists_to_call_next_process() {
  261. $return=true;
  262. foreach($this->CRM_PROCESS_CALL_list_proc_w['LISTA'] as $WSK=>$DANE_WSK) {
  263. DEBUG_S(-3,'4. CRM_PROCES_CALL_check_if_all_variables_exists_to_call_next_process'.$WSK,array($WSK,$DANE_WSK), __FILE__, __FUNCTION__, __LINE__);
  264. if(($this->CRM_PROCESS_CALL_list_proc_w['LISTA_VAR_STATUS'][$WSK]['VAR_STATUS']!='VALUE')&&($this->CRM_PROCESS_CALL_list_proc_w['LISTA_VAR_STATUS'][$WSK]['VAR_STATUS']!='TO_EVALUATE_FROM_ID_KEY')) $return=false;
  265. // if($DANE_WSK->PARENT_ID=='0') {
  266. // if(!isset($WSKAZNIKI['LISTA'][$WSK]->PARENT_ID)) {
  267. // $LISTA_WSK_R_MA_WSZYSTKIE_ZMIENNE=false; //todo czy to wystarczy przy drugim wyzwoleniu ?
  268. // echo "\n Ta zmienna bedzie do wybrania/edycji";
  269. // } else if($log_unserialized['WSKAZNIKI']['LISTA'][$WSK]->PARENT_ID=='\'\'') {
  270. // $LISTA_WSK_R_MA_WSZYSTKIE_ZMIENNE=false; //todo czy to wystarczy przy drugim wyzwoleniu ?
  271. // echo "\n Ta zmienna bedzie do wybrania/edycji";
  272. // } else echo "dupa xxx";
  273. // } else if(is_int($DANE_WSK->PARENT_ID)) { //podstawiamy zmienne ze wskaznika - szukamy w unserialized
  274. // if(is_array($log_unserialized['WSKAZNIKI']['LISTA'][$DANE_WSK->PARENT_ID]->PARENT_ID)) { //nie mozemy kontynuowac - user musi wybrac jedna zmienna z dostepnych
  275. // die('Warunek TODO nieprzewidziany 143');
  276. // } else {
  277. // echo "\n Porownuje ".$WSKAZNIKI['LISTA'][$WSK]->PARENT_ID." do ".$log_unserialized['WSKAZNIKI']['LISTA'][$DANE_WSK->PARENT_ID]->PARENT_ID;
  278. // $WSKAZNIKI['LISTA'][$WSK]->PARENT_ID=$log_unserialized['WSKAZNIKI']['LISTA'][$DANE_WSK->PARENT_ID]->PARENT_ID ;
  279. // }
  280. // } else if(strstr($log_unserialized['WSKAZNIKI']['LISTA'][$DANE_WSK->ID]->PARENT_ID,"'")) {
  281. // $WSKAZNIKI['LISTA'][$WSK]->PARENT_ID=$log_unserialized['WSKAZNIKI']['LISTA'][$DANE_WSK->PARENT_ID]->PARENT_ID ;
  282. // DEBUG_S(-3,'Jest wartosc ze wskaznika wybrana przez usera - nie trzeba robic zapytania','', __FILE__, __FUNCTION__, __LINE__);
  283. // } else { echo "Nie ma danych dla - trzeba bedzie robic SIGINT ".$DANE_WSK->ID;
  284. // $LISTA_WSK_R_MA_WSZYSTKIE_ZMIENNE=false;
  285. // }
  286. //}
  287. }
  288. $this->LISTA_WSK_R_MA_WSZYSTKIE_ZMIENNE=$return;
  289. return $return;
  290. }
  291. function CRM_PROCES_CALL_if_parent_id_X_types_are_true_else_to_call_COND_process() {
  292. $this->CRM_PROCES_CALL_if_parent_id_X_types_are_true_else_to_call_COND_process=true;
  293. foreach($this->CRM_PROCESS_CALL_list_proc_w['LISTA_X'] as $ID_WSK=>$ID_WSK_WAR ) {
  294. DEBUG_S(-3,'sprawdzam warunki na X',array($ID_WSK,$ID_WSK_WAR), __FILE__, __FUNCTION__, __LINE__);
  295. if($this->CRM_PROCESS_CALL_list_proc_w['LISTA'][$ID_WSK]->PARENT_ID>0 ) {
  296. } else $this->CRM_PROCES_CALL_if_parent_id_X_types_are_true_else_to_call_COND_process=false; //7.jest blad w tescie, zatem wyzwalamy proces warunkowy
  297. }
  298. }
  299. function CRM_PROCES_CALL_check_if_have_variables_to_update_to_db(){
  300. if(!$this->LISTA_WSK_R_MA_WSZYSTKIE_ZMIENNE) die('D230: Brak mozliwosci wyzwolenia funkcji bez uprzedniego upewnienia sie, ze sa wszystkie zmienne kwalifikujace');
  301. $this->CRM_PROCES_CALL_check_if_have_variables_to_update_to_db=false;
  302. DEBUG_S(-3,'6c sprawdzam czy nie ma wartosci gotowych z typu RWX ','', __FILE__, __FUNCTION__, __LINE__);
  303. foreach($this->CRM_PROCESS_CALL_list_proc_w['LISTA'] as $WSK=>$DANE_WSK) {
  304. if(isset($this->CRM_PROCESS_CALL_list_proc_w['LISTA_RWX'][$WSK] )&&($this->CRM_PROCESS_CALL_list_proc_w['LISTA_VAR_STATUS'][$WSK]['VAR_STATUS']=='VALUE')) {
  305. DEBUG_S(-3,'- jest zmienna gotowa do zapisania do bazy danych',$this->CRM_PROCESS_CALL_list_proc_w['LISTA'][$WSK], __FILE__, __FUNCTION__, __LINE__);
  306. $this->CRM_PROCES_CALL_check_if_have_variables_to_update_to_db=true;
  307. }
  308. }
  309. }
  310. function CRM_PROCES_CALL_prepare_sql_update_query(){
  311. DEBUG_S(-3,'6c-xx przygotowuje zapytanie do bazy danych do wykonania update','', __FILE__, __FUNCTION__, __LINE__);
  312. foreach($this->CRM_PROCES_CALL_group_kroki_p['TABELA'] as $TAB_ID=>$WSKAZNIK_ID ) {
  313. $ZAP_SQL_DO_DB[$TAB_ID]['SEL']="update "."`".$this->CRM_PROCES_CALL_group_kroki_p['KROKI'][$TAB_ID]['PARENT_TABLE_NAME']."` set ";
  314. foreach($WSKAZNIK_ID as $ID_WSK=>$KOM_NAZWA ) {
  315. if(isset($this->CRM_PROCESS_CALL_list_proc_w['LISTA_RWX'][$ID_WSK])) {
  316. if(!isset($ZAP_SQL_DO_DB[$TAB_ID]['SET']))$ZAP_SQL_DO_DB[$TAB_ID]['SET']="`".$this->CRM_PROCESS_CALL_list_proc_w['LISTA'][$ID_WSK]->cz_DESC."`='".DB::_($this->CRM_PROCESS_CALL_list_proc_w['LISTA'][$ID_WSK]->PARENT_ID)."'";
  317. else $ZAP_SQL_DO_DB[$TAB_ID]['SET']=", `".$this->CRM_PROCESS_CALL_list_proc_w['LISTA'][$ID_WSK]->cz_DESC."`='".DB::_($this->CRM_PROCESS_CALL_list_proc_w['LISTA'][$ID_WSK]->PARENT_ID)."'";
  318. } else if(isset($this->CRM_PROCESS_CALL_list_proc_w['LISTA_R'][$ID_WSK])) {
  319. if(!isset($ZAP_SQL_DO_DB[$TAB_ID]['WHERE'])) $ZAP_SQL_DO_DB[$TAB_ID]['WHERE']="`".$this->CRM_PROCESS_CALL_list_proc_w['LISTA'][$ID_WSK]->cz_DESC."`='".DB::_($this->CRM_PROCESS_CALL_list_proc_w['LISTA'][$ID_WSK]->PARENT_ID)."'";
  320. else $ZAP_SQL_DO_DB[$TAB_ID]['WHERE']=" and `".$this->CRM_PROCESS_CALL_list_proc_w['LISTA'][$ID_WSK]->cz_DESC."`='".DB::_($this->CRM_PROCESS_CALL_list_proc_w['LISTA'][$ID_WSK]->PARENT_ID)."'";
  321. }
  322. }
  323. $this->CRM_PROCES_CALL_prepare_sql_update_query['ZAP_SQL_DO_DB'][$TAB_ID]['SQL']=$ZAP_SQL_DO_DB[$TAB_ID]['SEL']." ".$ZAP_SQL_DO_DB[$TAB_ID]['SET']." where ".$ZAP_SQL_DO_DB[$TAB_ID]['WHERE'];
  324. if(!isset($ZAP_SQL_DO_DB[$TAB_ID]['WHERE'])) die('259 FORCE to be safe to set WHERE in UPDATE query');
  325. }
  326. }
  327. function CRM_PROCES_CALL_commit_sql_update_query(){
  328. foreach($this->CRM_PROCES_CALL_prepare_sql_update_query['ZAP_SQL_DO_DB'] as $TAB_ID=>$SQL_VAL ) {
  329. DEBUG_S(-3,'6c-xxx Wysylam zapytania do bazy danych z aktualizacja',array($TAB_ID,$SQL_VAL), __FILE__, __FUNCTION__, __LINE__);
  330. $res = DB::query($SQL_VAL['SQL']) or die('problem ze sql '.$SQL_VAL['SQL']);
  331. }
  332. $this->CRM_PROCES_CALL_check_if_have_variables_to_update_to_db=false; //po zrobieniu update mozemy wylaczyc flage wyzwolenia procesu NEXT
  333. }
  334. function CRM_PROCES_CALL_check_if_have_variables_to_insert_to_db(){
  335. if(!$this->LISTA_WSK_R_MA_WSZYSTKIE_ZMIENNE) die('D231: Brak mozliwosci wyzwolenia funkcji bez uprzedniego upewnienia sie, ze sa wszystkie zmienne kwalifikujace');
  336. $this->CRM_PROCES_CALL_check_if_have_variables_to_insert_to_db=false;
  337. DEBUG_S(-3,'sprawdzam czy nie ma wartosci gotowych z typu RWXC ','', __FILE__, __FUNCTION__, __LINE__);
  338. foreach($this->CRM_PROCESS_CALL_list_proc_w['LISTA'] as $WSK=>$DANE_WSK) {
  339. if(isset($this->CRM_PROCESS_CALL_list_proc_w['LISTA_RWXC'][$WSK] )&&($this->CRM_PROCESS_CALL_list_proc_w['LISTA_VAR_STATUS'][$WSK]['VAR_STATUS']=='VALUE')) {
  340. DEBUG_S(-3,'- jest zmienna gotowa do zapisania do bazy danych',$this->CRM_PROCESS_CALL_list_proc_w['LISTA'][$WSK], __FILE__, __FUNCTION__, __LINE__);
  341. $this->CRM_PROCES_CALL_check_if_have_variables_to_insert_to_db=true;
  342. }
  343. }
  344. }
  345. function CRM_PROCES_CALL_user_window_control() {
  346. //funkcja leci po wszystkich aktualnych tabelach i ustawia USER_WINDOW[CURRENT] jezeli nie ma
  347. //jezeli jest [USER_REQUEST] to to przetwarza , a tam LIMIT,PAGE
  348. foreach($this->CRM_PROCES_CALL_group_kroki_p['TABELA'] as $TABLE_ID=>$TAB_ARR) {
  349. DEBUG_S(-3,'Ustalam WINDOW dla '.$TABLE_ID,'', __FILE__, __FUNCTION__, __LINE__);
  350. if(!isset($this->CRM_PROCESS_CALL_list_proc_w['USER_WINDOW'][$TABLE_ID])) {
  351. $this->CRM_PROCESS_CALL_list_proc_w['USER_WINDOW'][$TABLE_ID]['CURRENT']['LIMIT']=10;
  352. $this->CRM_PROCESS_CALL_list_proc_w['USER_WINDOW'][$TABLE_ID]['CURRENT']['PAGE']=0;
  353. }
  354. if(isset($this->CRM_PROCESS_CALL_list_proc_w['USER_WINDOW'][$TABLE_ID]['USER_REQUEST'])) {
  355. if(isset($this->CRM_PROCESS_CALL_list_proc_w['USER_WINDOW'][$TABLE_ID]['USER_REQUEST']['LIMIT'])) {
  356. $this->CRM_PROCESS_CALL_list_proc_w['USER_WINDOW'][$TABLE_ID]['CURRENT']['LIMIT']=$this->CRM_PROCESS_CALL_list_proc_w['USER_WINDOW'][$TABLE_ID]['USER_REQUEST']['LIMIT'];
  357. }
  358. if(isset($this->CRM_PROCESS_CALL_list_proc_w['USER_WINDOW'][$TABLE_ID]['USER_REQUEST']['PAGE'])) {
  359. $this->CRM_PROCESS_CALL_list_proc_w['USER_WINDOW'][$TABLE_ID]['CURRENT']['PAGE']=$this->CRM_PROCESS_CALL_list_proc_w['USER_WINDOW'][$TABLE_ID]['USER_REQUEST']['PAGE'];
  360. }
  361. }
  362. }
  363. }
  364. function CRM_PROCES_CALL_prepare_data_for_user_for_terminate_it_and_recieve_with_SIGCONT() {
  365. foreach($this->CRM_PROCES_CALL_group_kroki_p['TABELA'] as $TAB_ID=>$WSKAZNIK_ID ) {
  366. $this->CRM_PROCES_CALL_prepare_data_for_user_for_terminate_it_and_recieve_with_SIGCONT['ZAP_SQL_DO_DB'][$TAB_ID]['SEL']="select ";
  367. if(isset($this->CRM_PROCES_CALL_from_prepared_data_load_sql_to_log_unserialized['DANE_DLA_USERA_DO_WYBORU_KOLUMNY'][$TAB_ID])) unset($this->CRM_PROCES_CALL_from_prepared_data_load_sql_to_log_unserialized['DANE_DLA_USERA_DO_WYBORU_KOLUMNY'][$TAB_ID]);
  368. foreach($WSKAZNIK_ID as $ID_WSK=>$KOM_NAZWA ) {
  369. if(isset($this->CRM_PROCES_CALL_prepare_data_for_user_for_terminate_it_and_recieve_with_SIGCONT['ZAP_SQL_DO_DB'][$TAB_ID]['FLD'])) $this->CRM_PROCES_CALL_prepare_data_for_user_for_terminate_it_and_recieve_with_SIGCONT['ZAP_SQL_DO_DB'][$TAB_ID]['FLD'].=", `".$KOM_NAZWA."` as `WSK_".$ID_WSK."`";
  370. else $this->CRM_PROCES_CALL_prepare_data_for_user_for_terminate_it_and_recieve_with_SIGCONT['ZAP_SQL_DO_DB'][$TAB_ID]['FLD']=" `".$KOM_NAZWA."` as `WSK_".$ID_WSK."`";
  371. $this->CRM_PROCES_CALL_prepare_data_for_user_for_terminate_it_and_recieve_with_SIGCONT['ZAP_SQL_DO_DB'][$TAB_ID]['FROM']="`".$this->CRM_PROCES_CALL_group_kroki_p['KROKI'][$TAB_ID]['PARENT_TABLE_NAME']."`";
  372. $this->CRM_PROCES_CALL_prepare_data_for_user_for_terminate_it_and_recieve_with_SIGCONT['ZAP_SQL_DO_DB'][$TAB_ID]['PARENT_DATABASE_CONF_ID']=$this->CRM_PROCES_CALL_group_kroki_p['KROKI'][$TAB_ID]['PARENT_DATABASE_CONF_ID'];
  373. $this->CRM_PROCES_CALL_from_prepared_data_load_sql_to_log_unserialized['DANE_DLA_USERA_DO_WYBORU_KOLUMNY'][$TAB_ID]['KOLUMNY'][$ID_WSK]='WSK_'.$ID_WSK;
  374. $this->CRM_PROCES_CALL_from_prepared_data_load_sql_to_log_unserialized['DANE_DLA_USERA_DO_WYBORU_KOLUMNY'][$TAB_ID]['KOLUMNY_WSK']['WSK_'.$ID_WSK]=$ID_WSK;
  375. $this->CRM_PROCES_CALL_from_prepared_data_load_sql_to_log_unserialized['DANE_DLA_USERA_DO_WYBORU_KOLUMNY'][$TAB_ID]['LISTA_R']=$this->CRM_PROCESS_CALL_list_proc_w['LISTA_R'];
  376. $this->CRM_PROCES_CALL_from_prepared_data_load_sql_to_log_unserialized['DANE_DLA_USERA_DO_WYBORU_KOLUMNY'][$TAB_ID]['LISTA_RWX']=$this->CRM_PROCESS_CALL_list_proc_w['LISTA_RWX'];
  377. $this->CRM_PROCES_CALL_from_prepared_data_load_sql_to_log_unserialized['DANE_DLA_USERA_DO_WYBORU_KOLUMNY'][$TAB_ID]['LISTA_RWXC']=$this->CRM_PROCESS_CALL_list_proc_w['LISTA_RWXC'];
  378. $this->CRM_PROCES_CALL_from_prepared_data_load_sql_to_log_unserialized['DANE_DLA_USERA_DO_WYBORU_KOLUMNY'][$TAB_ID]['INSTRUKCJE_CRM'][$ID_WSK]=$this->CRM_PROCESS_CALL_list_proc_w['LISTA'][$ID_WSK]->OPIS_ZASOB;
  379. $this->CRM_PROCES_CALL_from_prepared_data_load_sql_to_log_unserialized['DANE_DLA_USERA_DO_WYBORU_KOLUMNY'][$TAB_ID]['KOLUMNY_NAZWY_Z_BAZY'][$ID_WSK]=$this->CRM_PROCESS_CALL_list_proc_w['LISTA'][$ID_WSK]->cz_DESC;
  380. $this->CRM_PROCES_CALL_from_prepared_data_load_sql_to_log_unserialized['DANE_DLA_USERA_DO_WYBORU_KOLUMNY'][$TAB_ID]['OPIS_ZASOBU_WSKAZNIKA'][$ID_WSK]=$this->CRM_PROCESS_CALL_list_proc_w['LISTA'][$ID_WSK]->cz_OPIS;
  381. $this->CRM_PROCES_CALL_from_prepared_data_load_sql_to_log_unserialized['DANE_DLA_USERA_DO_WYBORU_KOLUMNY'][$TAB_ID]['LISTA_VAR_STATUS'][$ID_WSK]=$this->CRM_PROCESS_CALL_list_proc_w['LISTA_VAR_STATUS'][$ID_WSK];
  382. //$this->log_unserialized=$this->CRM_PROCES_CALL_from_prepared_data_load_sql_to_log_unserialized;
  383. }
  384. //dodajemy aby byla jeszcze dodatkowa lista ze zmiennymi
  385. foreach($this->CRM_PROCESS_CALL_list_proc_w['LISTA'] as $ID_WSK=>$WSK_OBJ) {
  386. $this->CRM_PROCES_CALL_from_prepared_data_load_sql_to_log_unserialized['LISTA'][$ID_WSK]=$WSK_OBJ;
  387. $this->CRM_PROCES_CALL_from_prepared_data_load_sql_to_log_unserialized['LISTA_VAR_STATUS'][$ID_WSK]=$this->CRM_PROCESS_CALL_list_proc_w['LISTA_VAR_STATUS'][$ID_WSK];
  388. }
  389. foreach($WSKAZNIK_ID as $ID_WSK=>$KOM_NAZWA ) {
  390. if( !empty($this->CRM_PROCESS_CALL_list_proc_w['LISTA'][$ID_WSK]->PARENT_ID) ) { //jest klucz do wyszukiwania zadany w PARENT_ID
  391. $this->CRM_PROCESS_CALL_list_proc_w['LISTA'][$ID_WSK]->PARENT_ID=str_replace("'","",$this->CRM_PROCESS_CALL_list_proc_w['LISTA'][$ID_WSK]->PARENT_ID);
  392. if(isset($this->CRM_PROCES_CALL_prepare_data_for_user_for_terminate_it_and_recieve_with_SIGCONT['ZAP_SQL_DO_DB'][$TAB_ID]['WHERE'])) $this->CRM_PROCES_CALL_prepare_data_for_user_for_terminate_it_and_recieve_with_SIGCONT['ZAP_SQL_DO_DB'][$TAB_ID]['WHERE'].=" and `".$KOM_NAZWA."`='".$this->CRM_PROCESS_CALL_list_proc_w['LISTA'][$ID_WSK]->PARENT_ID."'";
  393. else $this->CRM_PROCES_CALL_prepare_data_for_user_for_terminate_it_and_recieve_with_SIGCONT['ZAP_SQL_DO_DB'][$TAB_ID]['WHERE']=" where `".$KOM_NAZWA."`='".$this->CRM_PROCESS_CALL_list_proc_w['LISTA'][$ID_WSK]->PARENT_ID."'";
  394. }
  395. }
  396. $this->CRM_PROCES_CALL_prepare_data_for_user_for_terminate_it_and_recieve_with_SIGCONT['ZAP_SQL_DO_DB'][$TAB_ID]['SQL']=$this->CRM_PROCES_CALL_prepare_data_for_user_for_terminate_it_and_recieve_with_SIGCONT['ZAP_SQL_DO_DB'][$TAB_ID]['SEL']."
  397. ".$this->CRM_PROCES_CALL_prepare_data_for_user_for_terminate_it_and_recieve_with_SIGCONT['ZAP_SQL_DO_DB'][$TAB_ID]['FLD']." from
  398. ".$this->CRM_PROCES_CALL_prepare_data_for_user_for_terminate_it_and_recieve_with_SIGCONT['ZAP_SQL_DO_DB'][$TAB_ID]['FROM']."
  399. ".$this->CRM_PROCES_CALL_prepare_data_for_user_for_terminate_it_and_recieve_with_SIGCONT['ZAP_SQL_DO_DB'][$TAB_ID]['WHERE'] ." limit ".($this->CRM_PROCESS_CALL_list_proc_w['USER_WINDOW'][$TAB_ID]['CURRENT']['PAGE']*$this->CRM_PROCESS_CALL_list_proc_w['USER_WINDOW'][$TAB_ID]['CURRENT']['LIMIT']).",".$this->CRM_PROCESS_CALL_list_proc_w['USER_WINDOW'][$TAB_ID]['CURRENT']['LIMIT'];
  400. }
  401. }
  402. //function CRM_PROCES_CALL_provide_
  403. function CRM_PROCES_CALL_provide_KEY_for_type_KOMORKA($ID_WSKAZNIK){
  404. // return CRM_PROCES_CALL_provide_KEY_for_type_KOMORKA
  405. $CRM_PROCES_CALL_sh_p=self::CRM_PROCES_CALL_sh_p($ID_WSKAZNIK);
  406. $sql="SHOW INDEXES FROM ".$CRM_PROCES_CALL_sh_p['PARENT_TABLE_NAME']." WHERE KEY_NAME = 'PRIMARY' ";
  407. $res = DB::query($sql);
  408. while ($h = DB::fetch( $res )) {
  409. return $h->Column_name;
  410. }
  411. }
  412. function CRM_PROCES_CALL_from_prepared_data_load_sql_to_log_unserialized() {
  413. foreach($this->CRM_PROCES_CALL_prepare_data_for_user_for_terminate_it_and_recieve_with_SIGCONT['ZAP_SQL_DO_DB'] as $ID_TABELI=>$ID_TABLE_SQL ) {
  414. if(isset($this->log_unserialized['DANE_DLA_USERA_DO_WYBORU'][$ID_TABELI])) unset($this->log_unserialized['DANE_DLA_USERA_DO_WYBORU'][$ID_TABELI]); //kasujemy zawartosci poprzednich danych do ekranu
  415. DEBUG_S(-3,'ZAP_SQL_DO_DB 2',$ID_TABLE_SQL['SQL'], __FILE__, __FUNCTION__, __LINE__);
  416. $res = DB::query($ID_TABLE_SQL['SQL']);
  417. while ($h = DB::fetch( $res )) {
  418. $DANE_DLA_USERA_DO_WYBORU[$ID_TABELI][$h->WSK_DANE_DO_WYBORU_DLA_USERA_KEY]=$h;
  419. $this->log_unserialized['DANE_DLA_USERA_DO_WYBORU'][$ID_TABELI][$h->WSK_DANE_DO_WYBORU_DLA_USERA_KEY]=$h->WSK_DANE_DO_WYBORU_DLA_USERA_KEY;
  420. }
  421. $this->CRM_PROCES_CALL_from_prepared_data_load_sql_to_log_unserialized['DANE_DLA_USERA_DO_WYBORU'][$ID_TABELI]=$DANE_DLA_USERA_DO_WYBORU[$ID_TABELI];
  422. // $log_unserialized['WSKAZNIKI'][$ID_TABELI]=$DANE_DLA_USERA_DO_WYBORU[$ID_TABELI];
  423. }
  424. DEBUG_S(-3,'Testpoint2',$this, __FILE__, __FUNCTION__, __LINE__);
  425. }
  426. function CRM_PROCES_CALL_provide_VALUE_for_type_KOMORKA_and_TO_EVALUATE_FROM_ID_KEY($WSK) {
  427. }
  428. function CRM_PROCES_SIGCONT_check_if_column_isnot_rwx(){
  429. DEBUG_S(-3,' sprawdzam oraz odpalam MENU do wybru w razie czego. CRM_PROCES_CALL_from_prepared_data_load_sql_to_log_unserialized:',array($this->CRM_PROCES_CALL_from_prepared_data_load_sql_to_log_unserialized,$this->log_unserialized['DANE_DLA_USERA_DO_WYBORU_KOLUMNY']), __FILE__, __FUNCTION__, __LINE__);
  430. $this->JEST_POTRZEBA_AKCJI_USERA=false;
  431. $this->CRM_PROCES_SIGCONT_check_if_column_isnot_rwx=false;
  432. foreach ($this->CRM_PROCES_CALL_from_prepared_data_load_sql_to_log_unserialized['DANE_DLA_USERA_DO_WYBORU'] as $TABLE_DO_WYBORU=>$ROWS_IN_TABLE ) {
  433. //echo $TABLE_DO_WYBORU." ";
  434. //trzeba sprawdzic czy kolumna nie jest do ZAPISU _ RWX - wtedy jest potrzebna akcja
  435. foreach($ROWS_IN_TABLE as $ID_ROW=>$ROW_ARR) {
  436. foreach ($ROW_ARR as $ROW_WSK=>$ROW_WSK_VAL) {
  437. $tst_KOLUMNY=$this->log_unserialized['DANE_DLA_USERA_DO_WYBORU_KOLUMNY'][$TABLE_DO_WYBORU]['KOLUMNY_WSK'][$ROW_WSK];
  438. if(isset($this->log_unserialized['DANE_DLA_USERA_DO_WYBORU_KOLUMNY'][$TABLE_DO_WYBORU]['LISTA_RWX'][$tst_KOLUMNY])) {
  439. $this->CRM_PROCES_SIGCONT_check_if_column_isnot_rwx=true;
  440. }
  441. }
  442. }
  443. //if($log_unserialized[$TABLE_DO_WYBORU]['LISTA_RWX'][])
  444. if((count($ROWS_IN_TABLE)>1)||($this->CRM_PROCES_SIGCONT_check_if_column_isnot_rwx)) {
  445. CRM_PROCES_CALL_show_SIGCONT_menu($this->CRM_PROCES_CALL_from_prepared_data_load_sql_to_log_unserialized,$TABLE_DO_WYBORU,$this->ID_LOG);
  446. $this->JEST_POTRZEBA_AKCJI_USERA=true;
  447. }
  448. }
  449. }
  450. function CRM_PROCES_CALL_cleanup_last_step_data_from_log() {
  451. foreach($this->CRM_PROCES_CALL_group_kroki_p['KROKI'] as $TAB_ID=>$VAL_TAB) {
  452. unset($this->log_unserialized['DANE_DLA_USERA_DO_WYBORU'][$TAB_ID]);
  453. unset($this->log_unserialized['DANE_DLA_USERA_DO_WYBORU_KOLUMNY'][$TAB_ID]);
  454. }
  455. // foreach($this->log_unserialized['DANE_DLA_USERA_DO_WYBORU'][$this->])
  456. }
  457. function CRM_PROCESS_CALL_translate_VAR_STATUS_from_PARENT_ID($ID_WSKAZNIK,$PARENT_ID,$FORM_TREAT){
  458. //funkcja do tlumaczenia zawartosci podanej do pola PARENT_ID, moga tam byc takie wartosci jak :
  459. // 'WARTOSC' - oznacza to gotowa wartosc do przetworzenia => VALUE
  460. // 1762 - oznacza to wartosc wskaznika do przetworzenia => TO_EVALUATE_FROM_ID
  461. // =${1762}+12 - oznacza dzialanie do wykonania => TO_EVALUATE
  462. //pierw sprawdzamy czy juz zmienna nie zostala zrobiona na VALUE
  463. if(isset($this->log_unserialized['LISTA'][$ID_WSKAZNIK]->VAR_STATUS)) {
  464. return $this->log_unserialized['LISTA'][$ID_WSKAZNIK]->VAR_STATUS ;
  465. } else if($PARNET_ID[0]=="'") { //pierwszy znak apostrof
  466. return 'VALUE';
  467. } else if(empty($PARENT_ID)) { //pusto
  468. if($FORM_TREAT=='R') { //jezeli jest to do odczytu - to ta wartosc jest dowolna do wyszukania
  469. return 'TO_SEARCH';
  470. } else if($FORM_TREAT=='RWX') { //jezei RWX to ta wartosc jest do dowolnego uzupelnienia
  471. return 'TO_SET_BY_USER';
  472. }
  473. } else if(is_int($PARENT_ID)) { return 'TO_EVALUATE_FROM_ID';
  474. } else if(isset($this->log_unserialized['LISTA'][$PARENT_ID])) { return 'TO_EVALUATE_FROM_ID';
  475. } else if(!empty($PARENT_ID)) { return 'VALUE'; //todo wierzymy, ze jest to wartosc gotowa nie do evaluate
  476. } else {
  477. DEBUG_S(-3,'CRM_PROCESS_CALL_translate_VAR_STATUS_from_PARENT_ID nieznany typ zmiennej w PARENT_ID wskaznika - brakuje sposobu przetwarzania! ',array($ID_WSKAZNIK,$PARENT_ID,$FORM_TREAT), __FILE__, __FUNCTION__, __LINE__);
  478. die('Dupa2');
  479. }
  480. }
  481. }
  482. function CRM_PROCES_CALL_show_SIGCONT_menu($log_unserialized,$log_unserialized_TABLE,$ID_LOG) {
  483. //funkcja pokaze wszysktie dostepne zmienne z danego loga - aby user mogl wybrac jedna dostepna
  484. echo "";
  485. DEBUG_S(-3,'CRM_PROCES_CALL_show_SIGCONT_menu',array($ID_LOG,$log_unserialized_TABLE,$log_unserialized), __FILE__, __FUNCTION__, __LINE__);
  486. echo "\n<form method=post><input type=hidden name=CRM_PROCES_CALL_show_SIGCONT_menu_call value=1><input type=hidden name=ID_LOG value=".$ID_LOG.">
  487. <input type=hidden name=TABLE value=".$log_unserialized_TABLE.">
  488. <table border=1 cellspacing=0 celpadding=0><tr><td></td>";
  489. foreach($log_unserialized['DANE_DLA_USERA_DO_WYBORU_KOLUMNY'][$log_unserialized_TABLE]['KOLUMNY_NAZWY_Z_BAZY'] as $KEY_COLUMN=>$VAL_COLUMN) {
  490. echo "<td>".$VAL_COLUMN."</td>";
  491. }
  492. echo "</tr>\n<tr><td></td>";
  493. foreach($log_unserialized['DANE_DLA_USERA_DO_WYBORU_KOLUMNY'][$log_unserialized_TABLE]['OPIS_ZASOBU_WSKAZNIKA'] as $KEY_COLUMN=>$VAL_COLUMN) {
  494. echo "<td>".$VAL_COLUMN."</td>";
  495. }
  496. echo "</tr>\n<tr><td></td>";
  497. foreach($log_unserialized['DANE_DLA_USERA_DO_WYBORU_KOLUMNY'][$log_unserialized_TABLE]['INSTRUKCJE_CRM'] as $KEY_COLUMN=>$VAL_COLUMN) {
  498. echo "<td>".$VAL_COLUMN."</td>";
  499. }
  500. echo "</tr>\n<tr><td></td>";
  501. foreach($log_unserialized['DANE_DLA_USERA_DO_WYBORU_KOLUMNY'][$log_unserialized_TABLE]['LISTA_VAR_STATUS'] as $KEY_COLUMN=>$VAL_COLUMN) {
  502. echo "<td>";
  503. if($VAL_COLUMN['VAR_STATUS']=='TO_SET_BY_USER') {
  504. echo "<input type=text name=".$log_unserialized['DANE_DLA_USERA_DO_WYBORU_KOLUMNY'][$log_unserialized_TABLE]['KOLUMNY'][$KEY_COLUMN]." value=";
  505. echo $log_unserialized['LISTA'][$KEY_COLUMN]->PARENT_ID;
  506. echo "><input type=submit>"; //<input type=text name="
  507. }
  508. else echo $log_unserialized['LISTA'][$KEY_COLUMN]->PARENT_ID;
  509. echo "</td>";
  510. }
  511. echo "</tr>\n";
  512. foreach($log_unserialized['DANE_DLA_USERA_DO_WYBORU'][$log_unserialized_TABLE] as $ROW_ID=>$ROW_VAL){
  513. echo "\n<tr>";
  514. echo "<td><a href=?CRM_PROCES_CALL_show_SIGCONT_menu_call=1&ID_LOG=".$ID_LOG."&TABLE=".$log_unserialized_TABLE."&ROW_ID=".$ROW_ID.">Wybierz</a></td>";
  515. foreach($ROW_VAL as $ROW_VAL_IND=>$ROW_VAL_VAL) {
  516. echo "<td>".$ROW_VAL_VAL."</td>";
  517. }
  518. echo "\n</tr>";
  519. }
  520. echo "</table></form>";
  521. }
  522. function CRM_PROCES_CALL_show_SIGCONT_menu_call($ID_LOG,$TABLE,$PIPE,$log_unserialized,$ID_STEP) {
  523. //funkcja przyjmujaca zmienne od CRM_PROCES_CALL_show_SIGCONT_menu
  524. DEBUG_S(-3,'CRM_PROCES_CALL_show_SIGCONT_menu_call',array($log_unserialized,$ID_LOG,$TABLE,$PIPE), __FILE__, __FUNCTION__, __LINE__);
  525. // $CRM_PROCES_CALL_cls=new CRM_PROCES_CALL_cls($ID_LOG,'SIGCONT');
  526. // $CRM_PROCES_CALL_cls->CRM_PROCES_CALL_get_data_from_log();
  527. // $log_unserialized=$CRM_PROCES_CALL_cls->log_unserialized;
  528. // $ID_STEP=$CRM_PROCES_CALL_cls->ID_STEP;
  529. DEBUG_S(-3,'log_unserialized',$log_unserialized, __FILE__, __FUNCTION__, __LINE__);
  530. if(count($log_unserialized['DANE_DLA_USERA_DO_WYBORU'][$TABLE])>1) {
  531. foreach($log_unserialized['DANE_DLA_USERA_DO_WYBORU'][$TABLE] as $ROWID=>$VAL) { //przyjmowanie wiersza przy select
  532. if($ROWID!=$PIPE['ROW_ID']) unset($log_unserialized['DANE_DLA_USERA_DO_WYBORU'][$TABLE][$ROWID]);
  533. }
  534. }
  535. //przyjmowanie wartosci przy insert/set
  536. foreach($log_unserialized['LISTA_VAR_STATUS'] as $WSK=>$WSK_ARR) {
  537. echo "..test.".$WSK;
  538. if($WSK_ARR['VAR_STATUS']=='TO_SET_BY_USER') {
  539. echo $log_unserialized['DANE_DLA_USERA_DO_WYBORU_KOLUMNY'][$TABLE]['KOLUMNY'][$WSK]." --";
  540. if(isset($PIPE[$log_unserialized['DANE_DLA_USERA_DO_WYBORU_KOLUMNY'][$TABLE]['KOLUMNY'][$WSK]])) {
  541. DEBUG_S(-3,'Przejmuje zmienna do wprowadzenia INSERT/UPDATE ',$PIPE[$log_unserialized['DANE_DLA_USERA_DO_WYBORU_KOLUMNY'][$TABLE]['KOLUMNY'][$WSK]], __FILE__, __FUNCTION__, __LINE__);
  542. $log_unserialized['LISTA_VAR_STATUS'][$WSK]['VAR_STATUS']='VALUE';
  543. $log_unserialized['LISTA'][$WSK]->PARENT_ID=$PIPE[$log_unserialized['DANE_DLA_USERA_DO_WYBORU_KOLUMNY'][$TABLE]['KOLUMNY'][$WSK]];
  544. foreach($log_unserialized['DANE_DLA_USERA_DO_WYBORU'][$TABLE] as $ID_ROWU_CNT=>$VAL_ROWU_CNT) {
  545. $log_unserialized['DANE_DLA_USERA_DO_WYBORU'][$TABLE][$ID_ROWU_CNT]->$log_unserialized['DANE_DLA_USERA_DO_WYBORU_KOLUMNY'][$TABLE]['KOLUMNY'][$WSK]=$PIPE[$log_unserialized['DANE_DLA_USERA_DO_WYBORU_KOLUMNY'][$TABLE]['KOLUMNY'][$WSK]];
  546. }
  547. }
  548. }
  549. }
  550. DEBUG_S(-3,'log_unserialized ( po odjeciu niepotrzebnych linii)',$log_unserialized, __FILE__, __FUNCTION__, __LINE__);
  551. return $log_unserialized;
  552. //$sql="update CRM_PROCES_LOG set log='".mysql_real_escape_string(serialize($log_unserialized))."', WAIT_FOR_SIGNAL='SIGCONT' where ID='".$ID_LOG."' and WAIT_FOR_SIGNAL='SIGCONT'";// SIGCONT SIGTERM
  553. //$res = DB::query($sql) or die('problem ze sql');
  554. //DEBUG_S(-3,'zapisujemy dane do log po odjeciu niepotrzebnych linii ',$sql, __FILE__, __FUNCTION__, __LINE__);
  555. //CRM_PROCES_CALL('','SIGCONT',$ID_LOG);
  556. }
  557. ?>