superedit-view_L_APPOITMENT_OVERWIEV.php 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. <?php
  2. //funkcja przygotowuje widok view_L_APPOITMENT_OVERWIEV , sladajacy sie z wielu tabel zawierajacy wylacznie zagregowane spotkania
  3. function view_L_APPOITMENT_OVERWIEV() {
  4. $transform['S_ADDRESS_STREET']='ADRES';
  5. $transform['S_PHONE_NUMBER']='ADRES';
  6. $tables_ignore[]='BILLS_FVAT_POS';
  7. $tables_ignore[]='BILLS_FVAT';
  8. $tables_ignore[]='CRM_LISTA_ZASOBOW_test';
  9. $tables_ignore[]='IN7_MK_BAZA_DYSTRYBUCJI_copy_20140329';
  10. $trans['ID']='ID_TABLE';
  11. $trans['A_STATUS']='A_STATUS';
  12. $trans['A_PROBLEM']='A_PROBLEM';
  13. $trans['A_PROBLEM_DESC']='A_PROBLEM_DESC';
  14. $trans['L_APPOITMENT_USER']='L_APPOITMENT_USER';
  15. $trans['L_APPOITMENT_DATE']='L_APPOITMENT_DATE';
  16. $trans['L_APPOITMENT_PERIOD']='L_APPOITMENT_PERIOD';
  17. $trans['L_APPOITMENT_TYPE']='L_APPOITMENT_TYPE';
  18. $trans['A_ADM_COMPANY']='A_ADM_COMPANY';
  19. $trans['A_CLASSIFIED']='A_CLASSIFIED';
  20. $trans['A_RECORD_UPDATE_DATE']='A_RECORD_UPDATE_DATE';
  21. $sql_drop="drop view if exists view_L_APPOITMENT_OVERVIEW ; SET @cnt = 0; ";
  22. $sql_create="create VIEW `view_L_APPOITMENT_OVERVIEW` AS";
  23. $conn = DB::getDB();
  24. Lib::loadClass('DB_Util');
  25. $tbls = DB_Util::get_table_list($conn,null,'BASE TABLE');
  26. DEBUG_S(-3,'tbls',$tbls,__FILE__,__FUNCTION__,__LINE__);
  27. foreach($tbls as $tbl) {
  28. if(!strstr($tbl, '_HIST')
  29. &&(!strstr($tbl, '_tmp'))
  30. &&(!strstr($tbl, 'view'))
  31. &&(!strstr($tbl, '_OLD'))
  32. &&(!strstr($tbl, 'temp_'))
  33. &&(!in_array($tbl, $tables_ignore))
  34. ) {
  35. $keys=DB_Util::get_table_keys($conn,$tbl);
  36. DEBUG_S(-3,'keys'.$tbl,$keys,__FILE__,__FUNCTION__,__LINE__);
  37. $struct=DB_Util::get_table_struct($conn,$tbl);
  38. DEBUG_S(-3,'Struct'.$tbl,$struct,__FILE__,__FUNCTION__,__LINE__);
  39. $ok=true;
  40. foreach($trans as $fld=>$trans_) {
  41. if(!isset($struct[$fld])) $ok=false;
  42. if(!isset($keys['`'.$fld.'`']) && $fld!='ID' ) $conn->add_index($tbl,$fld);
  43. }
  44. if($ok) { //sa wszystkie kolumny do utworzenia widoku
  45. $transform_=", '' as `ADRES` ";
  46. foreach($transform as $src=>$dst) {
  47. if(isset($struct[$src])) {
  48. $transform_=", `".$src."` as `".$dst."`";
  49. echo "<br> Jest transform!";
  50. } else echo "<br> Nie ma ".$src." w tabeli".$tbl;
  51. }
  52. $sql_=array();
  53. if(isset($sql)) $sql[]=" union ";
  54. foreach($trans as $fld=>$as) {
  55. $sql_[]="`".$fld."` as `".$as."`";
  56. }
  57. $sql[]=" ( select `ID`, '".$tbl."' as `TABLE`,".implode(',', $sql_).$transform_." from `".$tbl."` where ( L_APPOITMENT_DATE!='' and unix_timestamp(L_APPOITMENT_DATE>unix_timestamp(now()-62000000)) ) order by A_RECORD_UPDATE_DATE DESC limit 100 ) ";
  58. $msc=microtime(true);
  59. $conn->query("select `ID`, '".$tbl."' as `TABLE`,".implode(',', $sql_).$transform_." from `".$tbl."` where L_APPOITMENT_DATE!='' order by A_RECORD_UPDATE_DATE DESC limit 100 ");
  60. $msc=microtime(true)-$msc;
  61. $czas[]="Czas ".$msc." dla tabeli ".$tbl;
  62. }
  63. }
  64. }
  65. DEBUG_S(-3,'sql',$sql,__FILE__,__FUNCTION__,__LINE__);
  66. $sql_alter=$sql_drop." ".$sql_create." ".implode(" ", $sql);
  67. DEBUG_S(-3,'sql_alter',$sql_alter,__FILE__,__FUNCTION__,__LINE__);
  68. DEBUG_S(-3,'czasy',$czas,__FILE__,__FUNCTION__,__LINE__);
  69. //$struct=$conn->STRUCTURE_GENERATE($tbls);
  70. }