legacy.php 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455
  1. <?php
  2. if (!class_exists('Lib')) die('404');
  3. function tree_znajdz( $PARENT, $POZIOM, $LAST ) {
  4. global $TREE;
  5. $SQL2 = "select * from `CRM_PROCES`
  6. where
  7. `PARENT_ID` like '".$PARENT." %' or `PARENT_ID` like '% ".$PARENT." %' or `PARENT_ID` like '% ".$PARENT."' or `PARENT_ID` like '".$PARENT."'
  8. order by `SORT_PRIO` asc, `ID` asc
  9. ";
  10. $result2 = DB::query($SQL2); $result2_numrows = DB::num_rows($result2);
  11. $lp = 0;
  12. while ($res2 = DB::fetch_array( $result2 )) {
  13. $lp++;
  14. if ($lp == $result2_numrows) $LLAST = 1; else $LLAST = 0;
  15. if ($LLAST) $TREE[$POZIOM]=" "; else $TREE[$POZIOM] = " | ";
  16. if (!$LLAST) {
  17. $cnt = 0;
  18. while ($cnt <= $POZIOM) {
  19. if ($cnt != $POZIOM) echo V::get("$cnt", '', $TREE); else {
  20. if ($TREE[$cnt]==" | ") echo " | ";
  21. else echo " | ";
  22. }
  23. $cnt++;
  24. }
  25. echo "\n";
  26. }
  27. $cnt = 0;
  28. while ($cnt <= $POZIOM) {
  29. //if($cnt<>$POZIOM) echo $TREE["$cnt"]; else {
  30. // if($TREE[$cnt]==" | ") echo " +==";
  31. // else echo " \\==";
  32. //}
  33. //$cnt++;
  34. if ($cnt != $POZIOM) echo V::get("$cnt", '', $TREE); else {
  35. if ($TREE[$cnt] == " | ") {
  36. if (!$_SESSION['ZWIN_DRZEWO']) echo " +-";
  37. else {
  38. echo' ';
  39. if (isset($_SESSION['TREE_OPEN_ARRAY'][$res2['ID']]) && $_SESSION['TREE_OPEN_ARRAY'][$res2['ID']]) {
  40. echo App::link("--", "?TREE_CLOSE=".$res2['ID']."#tree");
  41. } else {
  42. echo App::link("-+", "?TREE_OPEN=".$res2['ID']."#tree");
  43. }
  44. echo' ';
  45. }
  46. }
  47. else {
  48. if (!$_SESSION['ZWIN_DRZEWO']) echo " \\-";
  49. else {
  50. echo' ';
  51. if (isset($_SESSION['TREE_OPEN_ARRAY'][$res2['ID']]) && $_SESSION['TREE_OPEN_ARRAY'][$res2['ID']]) {
  52. echo App::link("\\-", "?TREE_CLOSE=".$res2['ID']."#tree");
  53. } else {
  54. echo App::link("\\+", "?TREE_OPEN=".$res2['ID']."#tree");
  55. }
  56. echo' ';
  57. }
  58. }
  59. }
  60. $cnt++;
  61. }
  62. echo '<span style="color:red">'."[ ";
  63. echo App::link("^", array('function_init'=>'SORT_PRIO_PROCES', 'arg1'=>$res2['ID'], 'arg1_val'=>'up'), array('class'=>"btn-clean", 'title'=>"w gore"));
  64. echo App::link("v", array('function_init'=>'SORT_PRIO_PROCES', 'arg1'=>$res2['ID'], 'arg1_val'=>'dw'), array('class'=>"btn-clean", 'title'=>"w dol"));
  65. echo "<b>";
  66. echo '<span id="TREE'.$res2['ID'].'"> '.$res2['ID'].'</span> ';
  67. echo App::link("E", "?EDIT=".$res2['ID']."&ID=".$res2['ID']."#".$res2['ID'], array('title'=>"Edytuj ".$res2['ID']));
  68. echo ' '.$res2['DESC'];
  69. echo '</b> ]</span> ';
  70. echo App::link("Z+", "?task=ADD_PROCES_ID&id=".$res2['ID'], array('target'=>'_blank'));
  71. if ($_SESSION['ROZWIN_OPIS']) echo ' <span style="color:#222;font-weight:normal;">'.$res2['OPIS'].'</span>';
  72. echo ' '."\n";
  73. if ($POZIOM > 200) die("problem petli L" . __LINE__);
  74. if ((!$_SESSION['ZWIN_DRZEWO'])||(isset($_SESSION['TREE_OPEN_ARRAY'][$res2['ID']]) && $_SESSION['TREE_OPEN_ARRAY'][$res2['ID']])) {
  75. tree_znajdz_zasoby2($res2['ID'], $POZIOM + 1, $LAST);
  76. tree_znajdz($res2['ID'], $POZIOM + 1, $LLAST);
  77. }
  78. }
  79. }
  80. function tree_znajdz_zasoby2( $PARENT, $POZIOM, $LAST ) {
  81. global $TREE;
  82. $SQL2 = "select
  83. clz.*
  84. , cw.`ID` as CW_ID, cw.`TYP` as CW_TYP, cw.`OPIS_ZASOB` as OPIS_ZASOB
  85. , cp.`PYTANIE` as CP_PYTANIE
  86. from `CRM_WSKAZNIK` as cw
  87. left join `CRM_LISTA_ZASOBOW` as clz on (clz.`ID`=cw.`ID_ZASOB`)
  88. left join `CRM_PRZYPADEK` as cp on (cp.`ID`=cw.`ID_PRZYPADEK`)
  89. where
  90. cw.`ID_PROCES`='".$PARENT."'
  91. and cw.`A_STATUS` in('WAITING','NORMAL','MONITOR')
  92. order by cw.`SORT_PRIO`, cw.`ID`
  93. ";
  94. $result2 = DB::query( $SQL2 );
  95. if (!$result2) die("error query $SQL2");
  96. $result2_numrows = DB::num_rows( $result2 );
  97. $lp = 0;
  98. $slowa = array();
  99. while ($res2 = DB::fetch_array( $result2 )) {
  100. $lp++;
  101. if ($lp == $result2_numrows) $LLAST = 1; else $LLAST = 0;
  102. if ($LLAST) $TREE[$POZIOM] = " "; else $TREE[$POZIOM] = " | ";
  103. $pyt = '';
  104. switch ($res2['CW_TYP']) {
  105. case "C": $pyt = "CO ROBI"; break;
  106. case "R": if ($res2['CP_PYTANIE']) $pyt = $res2['CP_PYTANIE']; break;
  107. }
  108. if ($_SESSION['ROZWIN_OPIS']) {
  109. $slowa[$pyt] []= "(".$res2['OPIS_ZASOB'].")"."[".$res2['ID']."]".$res2['DESC'];
  110. } else {
  111. $slowa[$pyt] []= $res2['DESC'];
  112. }
  113. if ($_SESSION['ROZWIN']) {
  114. $cnt = 0;
  115. while ($cnt <= $POZIOM) {
  116. if ($cnt != $POZIOM) {
  117. if (isset($TREE["$cnt"])) echo $TREE["$cnt"];
  118. } else {
  119. echo ' | ';
  120. echo App::link("^", "?function_init=SORT_PRIO_WSKAZNIK&arg1=".$res2['CW_ID']."&arg1_val=up", array('class'=>"btn-clean", 'title'=>"w gore"));
  121. echo App::link("v", "?function_init=SORT_PRIO_WSKAZNIK&arg1=".$res2['CW_ID']."&arg1_val=dw", array('class'=>"btn-clean", 'title'=>"w dol"));
  122. echo'-';
  123. }
  124. $cnt++;
  125. }
  126. echo '<font color="green">'."[ ";
  127. echo $res2['ID'];
  128. echo' ';
  129. echo App::link("E", "?task=CRM_EDIT_CRM_WSKAZNIK&EDIT=".$res2['CW_ID']."&ID=".$res2['CW_ID'], array('title'=>"Edytuj wskaznik ".$res2['CW_ID']));
  130. echo " [".$pyt."] ";
  131. echo '<b>'.$res2['TYPE'].'</b>';
  132. echo ' '.$res2['DESC'];
  133. echo " ]".'</font> ';
  134. echo App::link("Z-", "?task=CRM_DEL_CRM_WSKAZNIK&ID=".$res2['CW_ID']);
  135. if ($_SESSION['ROZWIN_OPIS']) {
  136. if ($res2['OPIS_ZASOB']) echo' <span style="color:#111;">'.$res2['OPIS_ZASOB'].'</span>';
  137. if ($res2['OPIS']) echo' <span style="color:#666;">'.$res2['OPIS'].'</span>';
  138. }
  139. echo' ';
  140. if ($_SESSION['ROZWIN_ZASOBY']) tree_trasuj_zasoby2($res2['PARENT_ID'], $POZIOM + 1, $LLAST);// zasoby rekurencyjnie w gore
  141. echo "\n";
  142. }
  143. }
  144. $typy = Array("KTO CO","CO ROBI","KOGO CO","KOGO CZEGO","KOMU CZEMU","KIM CZYM","O KIM O CZYM");
  145. $zdanie = '';
  146. if (!empty($slowa)) {
  147. foreach ($typy as $typ) {
  148. if (!empty($slowa["$typ"])) foreach ($slowa["$typ"] as $slowo) {
  149. $zdanie .= "[".$typ."] ".$slowo." ";
  150. }
  151. }
  152. }
  153. if ($zdanie) {
  154. $cnt = 0;
  155. while ($cnt <= $POZIOM) {
  156. if ($cnt != $POZIOM) echo V::get("$cnt", '', $TREE); else {
  157. if ($TREE[$cnt] == " | ") echo " |<b> ^--</b>";
  158. else echo " \<b>====</b>";
  159. }
  160. $cnt++;
  161. }
  162. echo $zdanie." \n";
  163. }
  164. }
  165. function tree_znajdz_zasoby($PARENT, $POZIOM, $LAST) {
  166. global $TREE;
  167. $SQL2 = "select
  168. CLZ.*
  169. , CW.ID as CW_ID
  170. from CRM_WSKAZNIK as CW
  171. left join CRM_LISTA_ZASOBOW as CLZ on (CLZ.ID=CW.ID_ZASOB)
  172. where
  173. CW.ID_PROCES='".$PARENT."'
  174. and CW.`A_STATUS` in('WAITING','NORMAL','MONITOR')
  175. ";
  176. $result2 = DB::query( $SQL2 ); $result2_numrows = DB::num_rows( $result2 );
  177. $lp = 0;
  178. while ($res2 = DB::fetch_array( $result2 )) {
  179. $lp++;
  180. if ($lp == $result2_numrows) $LLAST = 1; else $LLAST = 0;
  181. if ($LLAST) $TREE[$POZIOM] = " "; else $TREE[$POZIOM] = " | ";
  182. $cnt = 0;
  183. while ($cnt <= $POZIOM) {
  184. if ($cnt != $POZIOM) echo $TREE["$cnt"]; else {
  185. if ($TREE[$cnt] == " | ") echo " +==";
  186. else echo " \\==";
  187. }
  188. $cnt++;
  189. }
  190. echo '<font color="green">'."[ ".$res2['ID']." ".$res2['DESC']." ]".'</font> ';
  191. echo App::link("Z-", "?task=CRM_DEL_CRM_WSKAZNIK&ID=".$res2['CW_ID'], array('target'=>'_blank'));
  192. echo "\n";
  193. tree_trasuj_zasoby($res2['PARENT_ID'], $POZIOM + 1, $LLAST);
  194. }
  195. }
  196. function tree_trasuj_zasoby($PARENT, $POZIOM, $LAST) {
  197. global $TREE ;
  198. $SQL2 = "select CLZ.* from CRM_LISTA_ZASOBOW as CLZ where CLZ.ID='".$PARENT."'";
  199. $result2 = DB::query( $SQL2 );
  200. $result2_numrows = DB::num_rows( $result2 );
  201. $lp = 0;
  202. while ($res2 = DB::fetch_array( $result2 )) {
  203. $lp++;
  204. if ($lp == $result2_numrows) $LLAST = 1; else $LLAST = 0;
  205. if ($LLAST) $TREE[$POZIOM] = " "; else $TREE[$POZIOM] = " | ";
  206. if (!$LLAST) {
  207. $cnt = 0;
  208. while ($cnt <= $POZIOM) {
  209. if ($cnt != $POZIOM) echo $TREE["$cnt"]; else {
  210. if ($TREE[$cnt] == " | ") echo " | ";
  211. else echo " | ";
  212. }
  213. $cnt++;
  214. }
  215. echo "\n";
  216. }
  217. $cnt = 0;
  218. while ($cnt <= $POZIOM) {
  219. if ($cnt != $POZIOM) echo $TREE["$cnt"]; else {
  220. if ($TREE[$cnt] == " | ") echo " +-";
  221. else echo " \\-";
  222. }
  223. $cnt++;
  224. }
  225. echo ""."<font color=magneta>[ $res2[0] $res2[3] $res2[4] ]</font> \n";
  226. tree_trasuj_zasoby($res2['PARENT_ID'], $POZIOM + 1, $LAST);
  227. }
  228. }
  229. function tree_trasuj_zasoby2($PARENT, $POZIOM, $LAST) {
  230. global $TREE ;
  231. $SQL2 = "select CLZ.* from CRM_LISTA_ZASOBOW as CLZ where CLZ.ID='".$PARENT."'";
  232. $result2 = DB::query( $SQL2 );
  233. $result2_numrows = DB::num_rows( $result2 );
  234. $lp = 0;
  235. while ($res2 = DB::fetch_array( $result2 )) {
  236. $lp++;
  237. $LLAST = ($lp == $result2_numrows);
  238. if ($LLAST) $TREE[$POZIOM] = " "; else $TREE[$POZIOM] = " | ";
  239. echo ""."<font color=\"#aaa\">[ ".$res2['ID']." <b>".$res2['TYPE']."</b> ".$res2['DESC']." ]</font><b>/</b>";
  240. tree_trasuj_zasoby2($res2['PARENT_ID'], $POZIOM + 1, $LAST);
  241. }
  242. }
  243. function tree_listuj_zasoby($PARENT, $POZIOM, $LAST) {
  244. global $TREE;
  245. $sql = new stdClass();
  246. $sql->filter = array();
  247. $sql->filter []= "(z.`PARENT_ID`='".$PARENT."')";
  248. if ($_SESSION['TREE_SHOW_P_ID2'] || $_SESSION['TREE_SHOW_P_ID3']) {
  249. if ($_SESSION['TREE_SHOW_P_ID2']) {
  250. $sql->filter []= "(FIND_IN_SET('".$PARENT."', z.`PARENT_ID_ACCESS`) > 0)";
  251. }
  252. if ($_SESSION['TREE_SHOW_P_ID3']) {
  253. $sql->filter []= "(FIND_IN_SET('".$PARENT."', z.`PARENT_ID_MAP`) > 0)";
  254. }
  255. }
  256. $sql->where = implode(" or ", $sql->filter);
  257. $sql->select_parent = "
  258. IF( z.`PARENT_ID`='".$PARENT."'
  259. , 'P_ID'
  260. , IF( (FIND_IN_SET('".$PARENT."', z.`PARENT_ID_ACCESS`) > 0)
  261. , 'P_ID_ACCESS'
  262. , IF( (FIND_IN_SET('".$PARENT."', z.`PARENT_ID_MAP`) > 0)
  263. , 'P_ID_MAP'
  264. , 'P_ID_UNKNOWN'
  265. )
  266. )
  267. ) as PARENT_TYPE
  268. ";
  269. $show_external_ids = V::get('EXTERNAL_IDS', 0, $_SESSION['TREE-ZASOBY']);
  270. $result_ext_ids_names = array();
  271. if (V::get('task', '', $_GET) == 'ADD_PROCES_ID' || !$show_external_ids) {
  272. $SQL2 = "select z.*
  273. , ".$sql->select_parent."
  274. from `CRM_LISTA_ZASOBOW` as z
  275. where ".$sql->where."
  276. order by z.`SORT_PRIO`, z.`ID`
  277. ";
  278. } else {
  279. $sql->cols = array();
  280. $sql->add_left_join = array();
  281. $sql->cols []= "z.*";
  282. $sql->cols []= $sql->select_parent;
  283. $cnf = Config::getConfFile('external_ids');
  284. if ($cnf) {
  285. if (!empty($cnf)) {
  286. //$sql->cols []= "group_concat(D.T_DEVICE_SERIAL) as DEVICES_IDS";
  287. //$sql->cols []= "group_concat(T.T_TELBOX_NAME) as TELBOXES_IDS";
  288. //$sql->add_left_join []= "left join DEVICES as D on D.CRM_LISTA_ZASOBOW_ID=z.ID";
  289. //$sql->add_left_join []= "left join TELBOXES as T on T.CRM_LISTA_ZASOBOW_ID=z.ID";
  290. $external_tbls = array();
  291. foreach ($cnf as $k_table_name => $v_cnf) {
  292. $cur_cnf = new stdClass();
  293. $cur_cnf->table_name = $k_table_name;
  294. $cur_cnf->id_col = V::get('id_col', 'ID', $v_cnf);
  295. $cur_cnf->allowed_cols = V::get('allowed_cols', '', $v_cnf);
  296. $cur_cnf->search_col = V::get('search_col', 'CRM_LISTA_ZASOBOW_ID', $v_cnf);
  297. $cur_cnf->search_col_regex = V::get('search_col_regex', '', $v_cnf);
  298. $sql_id_col = $cur_cnf->id_col;
  299. $cur_cnf->sql = "";
  300. $result_ext_ids_name = $cur_cnf->table_name."_EXT_IDS";
  301. $result_ext_ids_names []= $result_ext_ids_name;
  302. $sql->cols []= "group_concat(`".$cur_cnf->table_name."`.`".$cur_cnf->id_col."`) as ".$result_ext_ids_name;
  303. $sql_left_join = "left join `".$cur_cnf->table_name."` on `".$cur_cnf->table_name."`.`".$cur_cnf->search_col."`";
  304. if ($cur_cnf->search_col_regex) {
  305. $sql_left_join .= " like '".str_replace('$ID', 'z.ID', $cur_cnf->search_col_regex)."'";
  306. } else {
  307. $sql_left_join .= "=z.ID";
  308. }
  309. $sql->add_left_join []= $sql_left_join;
  310. }
  311. }
  312. }
  313. $SQL2 = "select
  314. ".implode(",", $sql->cols)."
  315. from `CRM_LISTA_ZASOBOW` as z
  316. ".implode("\n", $sql->add_left_join)."
  317. where ".$sql->where."
  318. group by z.ID
  319. order by z.`SORT_PRIO`, z.`ID`
  320. ";
  321. }
  322. $res = DB::query( $SQL2 );
  323. if (!$res) die("sql: \n$SQL2");
  324. $numrows = DB::num_rows( $res );
  325. if (isset($_GET['DBG']) && $_GET['DBG']) {
  326. echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;display:none;">sql P_ID('.$PARENT.')';print_r($SQL2);echo'</pre>';
  327. }
  328. $lp = 0;
  329. while ($r = DB::fetch( $res )) {
  330. if (!empty($result_ext_ids_names)) {
  331. $r->external_IDS = array();
  332. foreach ($result_ext_ids_names as $v_ext_ids_name) {
  333. if (!empty($r->$v_ext_ids_name)) {
  334. $external_IDS = explode(',', $r->$v_ext_ids_name);
  335. foreach ($external_IDS as $v_ext_id) {
  336. if ($v_ext_id) $r->external_IDS []= $v_ext_id;
  337. }//end foreach
  338. }
  339. }//end foreach
  340. $r->external_IDS = implode(',', $r->external_IDS);
  341. }
  342. $lp++;
  343. $LLAST = ($lp == $numrows)? 1 : 0;
  344. $TREE[$POZIOM] = ($LLAST)? " " : " | ";
  345. $cnt = 0;
  346. while ($cnt <= $POZIOM) {
  347. if ($cnt != $POZIOM) {
  348. echo $TREE["$cnt"];
  349. } else {
  350. if ($TREE[$cnt] == " | ") {
  351. if (!$_SESSION['ZWIN_DRZEWO']) echo " +-";
  352. else {
  353. echo' ';
  354. if (!empty($_SESSION['TREE_OPEN_ARRAY'][$r->ID]) && $_SESSION['TREE_OPEN_ARRAY'][$r->ID]) {
  355. echo App::link("--", "?TREE_CLOSE=".$r->ID."#tree");
  356. } else {
  357. echo App::link("-+", "?TREE_OPEN=".$r->ID."#tree");
  358. }
  359. echo' ';
  360. }
  361. }
  362. else {
  363. if (!$_SESSION['ZWIN_DRZEWO']) echo " \\-";
  364. else {
  365. echo' ';
  366. if (!empty($_SESSION['TREE_OPEN_ARRAY'][$r->ID]) && $_SESSION['TREE_OPEN_ARRAY'][$r->ID]) {
  367. echo App::link("\\-", "?TREE_CLOSE=".$r->ID."#tree");
  368. } else {
  369. echo App::link("\\+", "?TREE_OPEN=".$r->ID."#tree");
  370. }
  371. echo' ';
  372. }
  373. }
  374. }
  375. $cnt++;
  376. }
  377. if (V::get('task', '', $_GET) == 'CRM_LISTA_ZASOBOW') {
  378. //echo'('.$r->SORT_PRIO.')';// TODO: DBG
  379. if ($r->PARENT_TYPE == 'P_ID') {
  380. echo App::link("^", array('function_init'=>'SORT_PRIO_ZASOB', 'arg1'=>$r->ID, 'arg1_val'=>'up'), array('class'=>"btn-clean", 'title'=>"w gore"));
  381. echo App::link("v", array('function_init'=>'SORT_PRIO_ZASOB', 'arg1'=>$r->ID, 'arg1_val'=>'dw'), array('class'=>"btn-clean", 'title'=>"w dol"));
  382. } else {
  383. echo'--';
  384. }
  385. if (V::get('SORT_PRIO', '', $_SESSION['TREE-ZASOBY'])) {
  386. echo'('.$r->SORT_PRIO.')';
  387. }
  388. } else if (V::get('task', '', $_GET) == 'ADD_PROCES_ID') {
  389. echo'<b>';
  390. echo App::link("(DODAJ do proc.# ".$_GET['id'].")", "?task=CRM_ADD_CRM_WSKAZNIK&ADD_ID_ZASOB=".$r->ID."&ADD_ID_PROCES=".$_GET['id']);
  391. echo'</b>';
  392. }
  393. echo '<span class="'.(($r->ALIAS_ID > 0)? 'ALIAS_ID' : $r->PARENT_TYPE).'">[ ';
  394. echo '<span'.(($r->PARENT_TYPE == 'P_ID')? ' id="TREE'.$r->ID.'"' : '').'>'.$r->ID.'</span>';
  395. echo ' <b>';
  396. echo App::link("E", "?task=CRM_LISTA_ZASOBOW&EDIT=".$r->ID."#".$r->ID);
  397. if ($r->ALIAS_ID > 0) echo ' <span class="P_ID">'."(ALIAS DO ".'<a href="#TREE'.$r->ALIAS_ID.'">'.$r->ALIAS_ID.'</a>'.")".'</span>';
  398. echo ' '.$r->TYPE;
  399. echo '</b>';
  400. echo ' '.$r->DESC;
  401. echo ' <span style="color:#333;">'.$r->OPIS.'</span>';
  402. echo ' ]';
  403. if (isset($r->external_IDS)) echo ' {<span style="color:green">'.$r->external_IDS.'</span>}';
  404. echo '</span>'."\n";
  405. if (!$_SESSION['ZWIN_DRZEWO'] || (!empty($_SESSION['TREE_OPEN_ARRAY'][$r->ID]) && $_SESSION['TREE_OPEN_ARRAY'][$r->ID])) {
  406. // drzewo tylko z glownego P_ID
  407. if ($r->PARENT_TYPE == 'P_ID') {
  408. tree_listuj_zasoby($r->ID, $POZIOM + 1, $LAST);
  409. }
  410. }
  411. }
  412. }