superedit-ZASOB_EXTERNAL_IDS.php 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. <?php
  2. /**
  3. * @param int id_zasob
  4. *
  5. * procesy5.php?_ajax_request=ajax_zasob_search_external_ids&zasob_id=12613
  6. */
  7. function ZASOB_EXTERNAL_IDS() {
  8. $zasobId = V::get('id_zasob', 0, $_GET, 'int');
  9. if (!$zasobId) {
  10. echo '<div class="alert alert-danger">' . "Błąd: brak lub niepoprawny parametr id_zasob" . '</div>';
  11. return;
  12. }
  13. $db = DB::getDB();
  14. $zasob = $db->get_by_id('CRM_LISTA_ZASOBOW', $zasobId);
  15. if (!$zasob) {
  16. echo '<div class="alert alert-danger">' . "Brak danych - zasób {$zasobId} nie istnieje." . '</div>';
  17. return;
  18. }
  19. $cnf = Config::getConfFile('external_ids');
  20. if (!$cnf) {
  21. echo '<div class="alert alert-danger">' . "Brak pliku konfiguracyjnego dla 'external_ids'." . '</div>';
  22. return;
  23. }
  24. $extRows = array();
  25. $tblLabels = array();
  26. Lib::loadClass('ProcesHelper');
  27. $DBG = 0;
  28. if($DBG > 1){ echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;text-align:left;">cnf (F.' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($cnf);echo'</pre>'; }
  29. if (!empty($cnf)) {
  30. $external_ids = array();
  31. foreach ($cnf as $k_table_name => $v_cnf) {
  32. $vTblId = ProcesHelper::getZasobTableID($k_table_name);
  33. $cur_cnf = new stdClass();
  34. $cur_cnf->id_col = V::get('id_col', 'ID', $v_cnf);
  35. $cur_cnf->search_col = V::get('search_col', 'CRM_LISTA_ZASOBOW_ID', $v_cnf);
  36. $cur_cnf->search_col_regex = V::get('search_col_regex', '', $v_cnf);
  37. $sql_id_col = $cur_cnf->id_col;
  38. $sql_where = "";
  39. if ($cur_cnf->search_col_regex) {
  40. $sql_where = "`{$cur_cnf->search_col}` like '".str_replace('$ID', $zasob->ID, $cur_cnf->search_col_regex)."'";
  41. } else {
  42. $sql_where = "`{$cur_cnf->search_col}`='{$zasob->ID}'";
  43. }
  44. $sql = "select t.`ID`, {$sql_id_col} as id_col
  45. from `{$k_table_name}` as t
  46. where {$sql_where}
  47. ";
  48. if($DBG > 2){ echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;text-align:left;">sql (F.' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($sql);echo'</pre>'; }
  49. $res = $db->query($sql);
  50. while ($r = $db->fetch($res)) {
  51. $r->tblId = $vTblId;
  52. $extRows[] = $r;
  53. if ('ID' != $sql_id_col) {
  54. $external_ids []= $r->ID . "(" . $r->id_col . ")";
  55. } else {
  56. $external_ids []= "" . $r->id_col;
  57. }
  58. }
  59. }
  60. }
  61. if($DBG){echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;text-align:left;">extRows (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($extRows);echo'</pre>';}
  62. if (!empty($extRows)) {
  63. foreach ($extRows as $vExtRow) {
  64. $tblLabels[$vExtRow->tblId] = false;
  65. }
  66. $sqlTblsIds = array_keys($tblLabels);
  67. if (!empty($sqlTblsIds)) {
  68. $sqlTblsIds = implode(", ", $sqlTblsIds);
  69. $sql = "select z.`ID`, z.`DESC`, z.`DESC_PL`, z.`OPIS`
  70. from `CRM_LISTA_ZASOBOW` as z
  71. where
  72. z.`ID` in({$sqlTblsIds})
  73. ";
  74. $res = $db->query($sql);
  75. while ($r = $db->fetch($res)) {
  76. $vLabel = $r->DESC_PL;
  77. $vTitle = htmlspecialchars($r->OPIS);
  78. if (empty($vLabel) && !empty($r->OPIS)) {
  79. $posLimit = 20;
  80. $vLabel = $r->OPIS;
  81. if (mb_strlen($r->OPIS) > $posLimit) {
  82. $pos = strpos($r->OPIS, ' - ');
  83. if ($pos > $posLimit || $pos < 5) {
  84. $pos = $posLimit;
  85. $vLabel = mb_substr($r->OPIS, 0, $posLimit, 'utf-8') . '...';
  86. } else {
  87. $vLabel = mb_substr($r->OPIS, 0, $pos, 'utf-8');
  88. }
  89. }
  90. }
  91. if (empty($vLabel)) {
  92. $vLabel = $r->DESC;
  93. }
  94. $vLabel = '<span title="' . "[{$r->ID}] {$vTitle}" . '">' . $vLabel. '</span>';
  95. $tblLabels[$r->ID] = $vLabel;
  96. }
  97. }
  98. }
  99. SE_Layout::menu();
  100. ?>
  101. <div class="container">
  102. <h3>Rekordy powiązane z zasobem [<?php echo $zasob->ID; ?>]</h3>
  103. <blockquote><?php echo $zasob->TYPE; ?> <strong><?php echo $zasob->DESC; ?></strong><br>
  104. <span><?php echo $zasob->OPIS; ?></span>
  105. </blockquote>
  106. <table class="table table-bordered table-hover" style="width:auto">
  107. <thead>
  108. <tr>
  109. <th>Tabela</th>
  110. <th>Nr rekordu</th>
  111. <th>Nazwa / opis</th>
  112. </tr>
  113. </thead>
  114. <tbody>
  115. <?php $t = 0; foreach ($extRows as $vExtRow) : ?>
  116. <tr>
  117. <td>
  118. <?php if (!empty($tblLabels[$vExtRow->tblId])) : ?>
  119. <?php echo $tblLabels[$vExtRow->tblId]; ?>
  120. <?php else : ?>
  121. [<?php echo $vExtRow->tblId; ?>]
  122. <?php endif; ?>
  123. </td>
  124. <td>
  125. <?php echo $vExtRow->ID; ?>
  126. <a href="index.php?MENU_INIT=VIEWTABLE_AJAX&ZASOB_ID=<?php echo $vExtRow->tblId; ?>#EDIT/<?php echo $vExtRow->ID; ?>" class="glyphicon glyphicon-pencil" title="Edytuj rekord"> </a>
  127. </td>
  128. <td>
  129. <?php echo $vExtRow->id_col; ?>
  130. </td>
  131. </tr>
  132. <?php endforeach; ?>
  133. </tbody>
  134. </table>
  135. </div>
  136. <?php
  137. }