Mufy.php 3.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. <?php
  2. Lib::loadClass('RouteBase');
  3. class Route_Mufy extends RouteBase {
  4. public function defaultAction() {
  5. UI::gora();
  6. UI::menu();
  7. UI::startTag('div', ['class'=>"container"]);
  8. try {
  9. echo UI::h('h3', [], "Mufy - raport dla uke (TODO)");
  10. DB::getPDO()->execSql("
  11. update opt_przelacznice_mufy m
  12. join TELBOXES t on (t.ID = m.ID_TELBOXES)
  13. set m.TELBOXES_X =
  14. IF( t.the_geom is NULL, NULL,
  15. SUBSTRING(
  16. AsWKT( ST_Centroid(t.the_geom) ),
  17. 7, -- 'POINT('
  18. INSTR(AsWKT( ST_Centroid(t.the_geom) ), ' ') - 7
  19. )
  20. )
  21. , m.TELBOXES_Y =
  22. IF( t.the_geom is NULL, NULL,
  23. REPLACE( SUBSTRING(
  24. AsWKT( ST_Centroid(t.the_geom) ),
  25. INSTR( AsWKT( ST_Centroid(t.the_geom) ), ' ')
  26. ), ')', '')
  27. )
  28. where m.ID_TELBOXES > 0
  29. ");
  30. DB::getPDO()->execSql("
  31. update opt_przelacznice_mufy m
  32. set m.TELBOXES_X = NULL
  33. , m.TELBOXES_Y = NULL
  34. where m.ID_TELBOXES = 0
  35. ");
  36. UI::alert('info', "Poprawiono dane w polach TELBOXES_X, TELBOXES_Y w tabeli `opt_przelacznice_mufy` na podstawie powiązanej studni (tabela TELBOXES, pole ID_TELBOXES)");
  37. $todo = DB::getPDO()->fetchAll("
  38. select m.ID, m.Nazwa, m.ID_TELBOXES, m.TELBOXES_X, m.TELBOXES_Y
  39. , AsWKT( m.the_geom ) as mufa_the_geom
  40. , AsWKT( t.the_geom ) as studnia_the_geom
  41. , AsWKT( ST_Centroid(t.the_geom) ) as centerXY
  42. , NULL as centerX
  43. , NULL as centerY
  44. , IF(t.the_geom is NULL, NULL,
  45. SUBSTRING(
  46. AsWKT( ST_Centroid(t.the_geom) ),
  47. 7, -- 'POINT('
  48. INSTR(AsWKT( ST_Centroid(t.the_geom) ), ' ') - 7
  49. )
  50. ) as testX
  51. , IF(t.the_geom is NULL, NULL,
  52. REPLACE(SUBSTRING(
  53. AsWKT( ST_Centroid(t.the_geom) ),
  54. INSTR(AsWKT( ST_Centroid(t.the_geom) ), ' ')
  55. ), ')', '')
  56. ) as testY
  57. from `opt_przelacznice_mufy` m
  58. left join `TELBOXES` t on(t.ID = m.ID_TELBOXES)
  59. where m.ID_TELBOXES > 0
  60. or m.ID < 10
  61. ");
  62. UI::table([
  63. 'rows' => array_map(function ($row) {
  64. list($row['centerX'], $row['centerY']) = ('POINT(' == substr($row['centerXY'], 0, strlen('POINT(')))
  65. ? explode(' ', substr($row['centerXY'], strlen('POINT('), -1))
  66. : ['NULL', 'NULL'];
  67. $row['notes'] = '';
  68. if ($row['ID_TELBOXES'] > 0) {
  69. if ($row['centerX'] != $row['TELBOXES_X'] || $row['centerY'] != $row['TELBOXES_Y']) {
  70. $row['notes'] = "TODO udpate...";
  71. // $affected = DB::getPDO()->update('opt_przelacznice_mufy', 'ID', $row['ID'], [
  72. // 'TELBOXES_X' => ($row['centerX'] > 0) ? $row['centerX'] : 'NULL',
  73. // 'TELBOXES_Y' => ($row['centerY'] > 0) ? $row['centerY'] : 'NULL',
  74. // ]);
  75. // $row['notes'] = ($affected) ? "Zaktualizowano TELBOXES X, Y" : "Bez zmian";
  76. }
  77. } else {
  78. }
  79. $row['testX'] = (null === $row['testX']) ? 'NULL' : $row['testX'];
  80. $row['testY'] = (null === $row['testY']) ? 'NULL' : $row['testY'];
  81. return $row;
  82. }, $todo)
  83. ]);
  84. } catch (Exception $e) {
  85. UI::alert('danger', "Error #" . $e->getCode() . "|" . $e->getLine() . ": " . $e->getMessage());
  86. DBG::log($e);
  87. }
  88. UI::endTag('div');
  89. UI::dol();
  90. }
  91. }