audit_krs_con_digger.php 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373
  1. <?php
  2. $_SERVER['SERVER_NAME'] = 'biuro.biall-net.pl';
  3. //when used in /Library/Server/Web/Data/Sites/bzyk-biale-plamy-php-temp/SE/dev on biuro.biall-net.pl
  4. if( file_exists ( "../../se-lib/bootstrap.php"))
  5. require("../../se-lib/bootstrap.php");
  6. //when used in in native SE
  7. else require("../../../../SE-production-git/SE/se-lib/bootstrap.php");
  8. Lib::loadClass("Vendor_Geophp");
  9. $db = DB::getDB();
  10. // DB::getPDO()->query("truncate table Rozdzielcza_test_bzyk_Cables_to_PE");
  11. //unset($ID_Way);
  12. /*foreach($cables_from_joins_to_PE_arr as $id_j=>$Path_Point_val) {
  13. $sql_Path_Point_val="insert into Rozdzielcza_test_bzyk_Cables_to_PE (the_geom,ID_Way,ID_Point,len,PE_ID_Join)
  14. values (ST_GeomFromText('".$Path_Point_val['LINESTRING']."'),'".$Path_Point_val['ID_Way']."',
  15. '".$Path_Point_val['ID_Point']."' ,'".$Path_Point_val['len']."','".$Path_Point_val['PE_ID_Join']."' ) ";
  16. echo "#216Query path ins:: ".$sql_Path_Point_val." ";
  17. //if(strlen($edge_joins_filled_paths[$ID_Way]['asText'])>2)
  18. if(strlen($Path_Point_val['LINESTRING'])>1)
  19. DB::getPDO()->query($sql_Path_Point_val);
  20. else echo " ERROR blad danych!!! dla ID_Point:".$Path_Point_val['ID_Point'];
  21. //else echo "#296 path nie wygenerowalo sie !! dla ".$ID_Way." i pkt ".$pkt_A." , ".$pkt_B." \n";
  22. }
  23. */
  24. $tables['Y']['BI_audit_ENERGA_PRACOWNICY']['rel']['pesel']='pesel';
  25. $tables['Y']['BI_audit_ENERGA_PRACOWNICY']['rel']['nip']='nip';
  26. $tables['Y']['BI_audit_ENERGA_PRACOWNICY']['rel']['regon']='regon';
  27. //$tables['X']['BI_audit_KW_requested']['rel_search']['pesel']='Seller_Person';
  28. //$tables['X']['BI_audit_KW_requested']['rel']['pesel']['search']='like';
  29. $tables['X']['BI_audit_ENERGA_RUM_KONTRAHENCI']['rel']['nip']='NIP';
  30. $tables['X']['BI_audit_ENERGA_RUM_KONTRAHENCI']['rel']['regon']='REGON';
  31. $tables['X']['BI_audit_ENERGA_RUM_KONTRAHENCI']['rel']['pesel']='PESEL';
  32. //$tables['X']['BI_audit_ENERGA_RUM_KONTRAHENCI']['rel']['teryt']=1;
  33. $tables['Z']['BI_audit_CEIDG']['rel']['nip']='nip';
  34. $tables['Z']['BI_audit_CEIDG']['rel']['regon']='regon';
  35. $tables['Z']['BI_audit_CEIDG']['rel_and']['adres']['miejscowosc']='miejscowosc';
  36. $tables['Z']['BI_audit_CEIDG']['rel_and']['adres']['ulica']='ulica';
  37. $tables['Z']['BI_audit_CEIDG']['rel_and']['adres']['kodPocztowy']='kodPocztowy';
  38. $tables['Z']['BI_audit_CEIDG']['rel_and']['adres']['budynek']='budynek';
  39. $tables['Z']['BI_audit_CEIDG']['ref'][19]='BI_audit_CEIDG_pelnomocnicy';
  40. $tables['Z']['BI_audit_CEIDG']['ref'][18]='BI_audit_CEIDG_powiazania';
  41. $tables['Z']['BI_audit_CEIDG_pelnomocnicy']['rel']['nip']='nip';
  42. $tables['Z']['BI_audit_CEIDG_pelnomocnicy']['rel_and']['adres']['miejscowosc']='miejscowosc';
  43. $tables['Z']['BI_audit_CEIDG_pelnomocnicy']['rel_and']['adres']['ulica']='ulica';
  44. $tables['Z']['BI_audit_CEIDG_pelnomocnicy']['rel_and']['adres']['kodPocztowy']='kodPocztowy';
  45. $tables['Z']['BI_audit_CEIDG_pelnomocnicy']['backref'][19]='BI_audit_CEIDG';
  46. $tables['Z']['BI_audit_CEIDG_powiazania']['rel']['nip']='nip';
  47. $tables['Z']['BI_audit_CEIDG_powiazania']['rel']['regon']='nip';
  48. $tables['Z']['BI_audit_CEIDG_powiazania']['backref'][18]='BI_audit_CEIDG';
  49. $tables['Z']['BI_audit_KRS']['rel']['nip']='nip';
  50. $tables['Z']['BI_audit_KRS']['rel']['regon']='regon';
  51. $tables['Z']['BI_audit_KRS']['rel']['krs']='krs';
  52. $tables['Z']['BI_audit_KRS']['rel_and']['adres']['miejscowosc']='A_miejscowosc';
  53. $tables['Z']['BI_audit_KRS']['rel_and']['adres']['ulica']='A_ulica';
  54. $tables['Z']['BI_audit_KRS']['rel_and']['adres']['kodPocztowy']='A_kod';
  55. $tables['Z']['BI_audit_KRS']['rel_and']['adres']['budynek']='A_nrDomu';
  56. $tables['Z']['BI_audit_KRS']['ref'][12]='BI_audit_KRS_person';
  57. $tables['Z']['BI_audit_KRS']['ref'][11]='BI_audit_KRS_company';
  58. $tables['Z']['BI_audit_KRS_company']['rel']['regon']='regon';
  59. $tables['Z']['BI_audit_KRS_company']['rel']['krs']='krs';
  60. $tables['Z']['BI_audit_KRS_company']['backref'][11]='BI_audit_KRS';
  61. function start_dig($tables) {
  62. global $db;
  63. foreach($tables['Y'] as $Y=>$t) {
  64. $sql='select * from '.$Y.' where ID=12 or ID=19 or 1=12 limit 100' ;
  65. $res=$db->query($sql);
  66. while($h=$db->fetch($res)) {
  67. $hist_loop[$Y][]=$h;
  68. $hist_time[][$Y]=$h;
  69. dig_next($hist_loop,$t,$h,1,$hist_time);
  70. unset($hist_time);
  71. }
  72. }
  73. }
  74. function dig_next($hist_loop,$prev_tbl,$prev_dig,$loop,$hist_time) {
  75. global $db,$tables;
  76. $loop++;
  77. echo "\n<hr>###LOOP ".$loop;
  78. if($loop<8) {
  79. //detect next ref tbls
  80. $sql = array();
  81. $sql_RELAND = array();
  82. foreach($tables['Z'] as $Z=>$z) {
  83. //rels in tbls
  84. foreach($z['rel'] as $z_rel_from=>$z_rel_to) {
  85. // echo "110 test z_rel_fr ".$z_rel_from." to z_rel_to ".$z_rel_to ;
  86. if( isset($prev_tbl['rel'][$z_rel_from])) {
  87. if( strlen($prev_dig->$prev_tbl['rel'][$z_rel_from]) > 1 ) {
  88. $sql[$Z]['rel'][$z_rel_to]= $prev_dig->$prev_tbl['rel'][$z_rel_from];
  89. }
  90. }
  91. }
  92. //search addr
  93. if(isset($z['rel_and'])) {
  94. foreach($z['rel_and'] as $z_rel_and=>$z_rel_and_name) {
  95. $rel_and_ok=1;
  96. foreach($z_rel_and_name as $z_rel_and_name_cur=>$z_rel_and_name_col_to) {
  97. if(isset($prev_dig->$z_rel_and_name_cur) ) {//and ( strlen($prev_dig->$z_rel_and_name_cur) > 2)
  98. $rel_and_ok=2;
  99. // echo "<br>121 rel_and OK for tbl ".$Z." z_rel_and_name_col_to: ".$z_rel_and_name_col_to." value:".$prev_dig->$z_rel_and_name_cur." rel_and_ok=".$rel_and_ok;
  100. }
  101. else {
  102. // echo "<br> #127 UNSET ".$prev_dig->$z_rel_and_name_cur." / ".$z_rel_and_name_col_to." ";
  103. $rel_and_ok=1;
  104. }
  105. }
  106. if($rel_and_ok==2) {
  107. //echo "<br>#133 Z=".$Z."/z=".$z." ok rel_and_ok=".$rel_and_ok;
  108. foreach($z_rel_and_name as $z_rel_and_name_cur=>$z_rel_and_name_col_to) {
  109. // echo "<br> 135... ok. Z=".$Z."/ z_rel_and_name=".$z_rel_and_name_cur."/ z_rel_and_name_col_to=".$z_rel_and_name_col_to."/ prev_dig-z_rel_and_name_cur=".$prev_dig->$z_rel_and_name_cur;
  110. $sql_rel_and[$Z][$z_rel_and][$z_rel_and_name_col_to]=$prev_dig->$z_rel_and_name_cur;
  111. }
  112. } else {
  113. // echo "<br>#137 error rel_and_ok=".$rel_and_ok;
  114. }
  115. }
  116. }
  117. }
  118. // echo "<br>135:sql_rel_and <pre>";
  119. // print_r($sql_rel_and);
  120. // echo " .EOF</pre>";
  121. if( isset($sql_rel_and)) {
  122. foreach($sql_rel_and as $T=>$z_rel_and_arr) {
  123. foreach($z_rel_and_arr as $z_rel_and_name=>$z_rel_and_name_col) {
  124. //echo "<br>156 z_rel_and_name=".$z_rel_and_name." ";
  125. $sql_rel_and_sql[$T][$z_rel_and_name]="select * from ".$T." where ( ";
  126. $and=0;
  127. foreach($z_rel_and_name_col as $z_rel_and_name_cur=>$z_rel_and_name_col_to) {
  128. if( $and==1) $sql_rel_and_sql[$T][$z_rel_and_name].=" and `".$z_rel_and_name_cur."` = SOUNDEX('".$z_rel_and_name_col_to."') and `".$z_rel_and_name_cur."` not like '%--%' " ;
  129. else $sql_rel_and_sql[$T][$z_rel_and_name].=" SOUNDEX(`".$z_rel_and_name_cur."`) = SOUNDEX('".$z_rel_and_name_col_to."') and `".$z_rel_and_name_cur."` not like '%--%' " ;
  130. if($z_rel_and_name_cur=='miejscowosc') $sql_rel_and_sql[$T][$z_rel_and_name].=" and `miejscowosc` not like '' " ;
  131. if($z_rel_and_name_cur=='A_ulica') $sql_rel_and_sql[$T][$z_rel_and_name].=" and `A_ulica` not like '' " ;
  132. if($z_rel_and_name_cur=='ulica') $sql_rel_and_sql[$T][$z_rel_and_name].=" and `ulica` not like '' " ;
  133. if($z_rel_and_name_cur=='kodPocztowy') $sql_rel_and_sql[$T][$z_rel_and_name].=" and `kodPocztowy` not like '' " ;
  134. if($z_rel_and_name_cur=='budynek') $sql_rel_and_sql[$T][$z_rel_and_name].=" and `budynek` like '".$z_rel_and_name_col_to."' " ;
  135. $and=1;
  136. }
  137. $sql_rel_and_sql[$T][$z_rel_and_name].=" ) " ;
  138. if( isset($hist_loop[$T])) {
  139. foreach($hist_loop[$T] as $hist_rec) {
  140. $sql_rel_and_sql[$T][$z_rel_and_name].=" and ID!='".$hist_rec->ID."' ";
  141. }
  142. }
  143. $sql_rel_and_sql[$T][$z_rel_and_name].=" ; " ;
  144. dig_arr_cur($hist_loop,$T,$sql_rel_and_sql[$T][$z_rel_and_name],$hist_time,$loop);
  145. }
  146. }
  147. }
  148. //echo "<br>164:sql_rel_and_sql <pre>";
  149. // print_r($sql_rel_and_sql);
  150. // echo " .EOF</pre>";
  151. //X test
  152. //echo " <br> 129 prev <pre>";
  153. // print_r($prev_dig);
  154. // echo "<br> prevtbl";
  155. // print_r($prev_tbl);
  156. // echo "</pre>";
  157. foreach($tables['X'] as $X=>$x) {
  158. //rels in tbls
  159. foreach($x['rel'] as $x_rel_from=>$x_rel_to) {
  160. //echo "\n<br> #133test tbl ".$X." z_rel_fr ".$x_rel_from." to z_rel_to ".$x_rel_to." prev tbl " ;
  161. if( isset($prev_tbl['rel'][$x_rel_from]) ) { //isset($prev_dig->$prev_tbl['rel'][$x_rel_to])
  162. // echo "<br>141 rel from ".$x_rel_from." exists .. testing field ".$prev_tbl['rel'][$x_rel_from]." <br>";//strlen(".$prev_dig->$prev_tbl['rel'][$x_rel_to].")
  163. if( isset($prev_dig->$prev_tbl['rel'][$x_rel_from]) and strlen($prev_dig->$prev_tbl['rel'][$x_rel_from]) > 1 ) { //
  164. $sql_X[$X]['rel'][$x_rel_to]= $prev_dig->$prev_tbl['rel'][$x_rel_from];
  165. }
  166. }
  167. }
  168. }
  169. flush();
  170. // echo "\n<br>sql_X<pre>";
  171. // print_r($sql_X);
  172. // echo "</pre>";
  173. if( isset($sql_X)) {
  174. foreach($sql_X as $T => $rel) {
  175. $sql_x[$T]=" select * from ".$T." where ( ";
  176. foreach($rel['rel'] as $col=>$val) {
  177. if( isset($sql_x_str[$T])) $sql_x_str[$T].=" or `".$col."` = '".$val."' " ;
  178. else $sql_x_str[$T]=" `".$col."` = '".$val."' " ;
  179. }
  180. $sql_x[$T].=$sql_x_str[$T]." ) ";
  181. //not loop
  182. if( isset($hist_loop[$T])) {
  183. foreach($hist_loop[$T] as $hist_rec) {
  184. $sql_t[$T].=" and ID!='".$hist_rec->ID."' ";
  185. }
  186. }
  187. }
  188. }
  189. // echo "<br> sql_x" ;
  190. //print_r($sql_x);
  191. if( isset($sql_x)) {
  192. foreach($sql_x as $X => $sql_ext) {
  193. echo "\n<br>174 Querying :".$sql_ext ;
  194. $res=$db->query($sql_ext) or die('175 blad');
  195. while($h=$db->fetch($res)) {
  196. echo "\n<hr> #177 POWIAZANIE ZNALEZIONE DLA X <pre>";
  197. print_r($h);
  198. echo "<br> Historia sledzen:";
  199. print_r($hist_time);
  200. echo "#177 eof </pre>";
  201. }
  202. }
  203. }
  204. //X test eof
  205. foreach($sql as $T => $rel) {
  206. $sql_t[$T]=" select * from ".$T." where ( ";
  207. foreach($rel['rel'] as $col=>$val) {
  208. if( isset($sql_t_str[$T])) $sql_t_str[$T].=" or `".$col."` = '".$val."' " ;
  209. else $sql_t_str[$T]=" `".$col."` = '".$val."' " ;
  210. }
  211. $sql_t[$T].=$sql_t_str[$T]." ) ";
  212. //not loop
  213. if( isset($hist_loop[$T])) {
  214. echo "<br> hist loop cnt: ". count($hist_loop[$T]);
  215. foreach($hist_loop[$T] as $hist_rec) {
  216. $sql_t[$T].=" and ID!='".$hist_rec->ID."' ";
  217. }
  218. }
  219. }
  220. // echo "<br> 202 hist loop cnt: <pre> ". count($hist_loop);
  221. // print_r($hist_loop);
  222. // echo "</pre>";
  223. /* echo "<pre>sql_t";
  224. print_r($sql);
  225. echo "<br>sql_t ";
  226. print_r($sql_t);
  227. echo "</pre>";
  228. */
  229. if( isset($sql_t)) {
  230. foreach($sql_t as $T => $sql_ext) {
  231. dig_arr_cur($hist_loop,$T,$sql_ext,$hist_time,$loop);
  232. }
  233. }
  234. //todo look in Y and die()
  235. }
  236. echo "<br>#243 glebokosc:".$loop;
  237. }
  238. function dig_arr_cur($hist_loop,$T,$sql_ext,$hist_time,$loop) {
  239. global $db,$tables;
  240. echo "\n<br>216: Querying :T ".$T." ext: ".$sql_ext ;//$sql_ext
  241. // echo "\n<br> las fou"
  242. flush();
  243. $res=$db->query($sql_ext) or die('211 blad '.$sql_ext);
  244. while($h=$db->fetch($res)) {
  245. echo "\n<br> #149 found ".$h->ID;
  246. echo "<pre>"; print_r($h); echo "</pre>";
  247. $hist_loop[$T][]=$h;
  248. $hist_time[][$T]=$sql_ext;
  249. $hist_time[][$T]=$h;
  250. // print_r($hist_loop);
  251. dig_next($hist_loop, $tables['Z'][$T],$h,$loop,$hist_time);
  252. //rel dzieci $tables['Z']['BI_audit_CEIDG']['ref'][19]='BI_audit_CEIDG_pelnomocnicy';
  253. if(isset($tables['Z'][$T]['ref'])) {
  254. echo "<br>#296 try to ref tables for T ".$T."<pre>";
  255. print_r($tables['Z'][$T]['ref']);
  256. echo "</pre>";
  257. foreach($tables['Z'][$T]['ref'] as $ref_id => $ref_table) {
  258. $sql_ref=" select REMOTE_PRIMARY_KEY from `CRM__#REF_TABLE__".$ref_id."` where `PRIMARY_KEY`=".$h->ID." ";
  259. $res_rel=$db->query($sql_ref) or die('211 blad '.$sql_ref);
  260. echo "<br>#297 ".$sql_ref;
  261. while($h_rel=$db->fetch($res_rel)){
  262. $sql_rel_rec="select * from `".$ref_table."` where ID=".$h_rel->REMOTE_PRIMARY_KEY." ";
  263. $res_rel_rec=$db->query($sql_rel_rec) or die('211 blad '.$sql_rel_rec);
  264. echo "<br>#159 ref tbl ".$sql_rel_rec;
  265. while($h_rel_rec=$db->fetch($res_rel_rec)){
  266. echo "#315 fnd:".$h_rel_rec->ID;
  267. $hist_loop[$ref_table][]=$h_rel_rec;
  268. $hist_time[][$ref_table]=$sql_rel_rec;
  269. $hist_time[][$ref_table]=$h_rel_rec;
  270. dig_next($hist_loop,$tables['Z'][$ref_table],$h_rel_rec,$loop,$hist_time);
  271. }
  272. }
  273. }
  274. } else echo "#322 not ref to ".$T;
  275. if(isset($tables['Z'][$T]['backref'])) {
  276. echo "<br>#296 try to backref tables T ".$T."<pre>";
  277. print_r($tables['Z'][$T]['backref']);
  278. echo "</pre>";
  279. foreach($tables['Z'][$T]['backref'] as $ref_id => $ref_table) {
  280. $sql_ref=" select PRIMARY_KEY from `CRM__#REF_TABLE__".$ref_id."` where `REMOTE_PRIMARY_KEY`=".$h->ID." ";
  281. $res_rel=$db->query($sql_ref) or die('318 blad '.$sql_ref);
  282. echo "<br>#319 backref ".$sql_ref;
  283. while($h_rel=$db->fetch($res_rel)){
  284. $sql_rel_rec="select * from `".$ref_table."` where ID=".$h_rel->PRIMARY_KEY." ";
  285. $res_rel_rec=$db->query($sql_rel_rec) or die('211 blad '.$sql_rel_rec);
  286. echo "<br>#324 ref tbl ".$sql_rel_rec;
  287. while($h_rel_rec=$db->fetch($res_rel_rec)){
  288. echo "#315 fnd:".$h_rel_rec->ID;
  289. $hist_loop[$ref_table][]=$h_rel_rec;
  290. $hist_time[][$ref_table]=$sql_rel_rec;
  291. $hist_time[][$ref_table]=$h_rel_rec;
  292. dig_next($hist_loop,$tables['Z'][$ref_table],$h_rel_rec,$loop,$hist_time);
  293. }
  294. }
  295. }
  296. } else echo "#322 not backref to ".$T;
  297. }
  298. }
  299. start_dig($tables);
  300. echo "<hr>end of raport ";