Advertisement
ngbayu

Untitled

Jan 4th, 2022 (edited)
20
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.04 KB | None | 0 0
  1.  
  2. function menu() {
  3. // query from table MENU
  4. $query = $this->db->query("SELECT * from menu")->result();
  5. $tree = $this->parseTree($query);
  6. echo json_encode($tree);
  7. }
  8.  
  9. function parseTree($tree, $root = 0) {
  10. $return = array();
  11. # Lintasi tree dan cari children/submenu langsung dari array query
  12. foreach($tree as $child => $parent) {
  13. # children ditemukan
  14. if($parent->PARENT_ID == $root) {
  15. # Hapus item dari tree (kita tidak perlu melewati ini lagi)
  16. unset($tree[$child]);
  17. # Tambahkan children/submenu ke dalam array hasil dan parsing sub sub nya
  18. $return[] = array(
  19. 'menu_id' => $parent->MENU_ID,
  20. 'parent_id' => $parent->PARENT_ID,
  21. 'menu_name' => $parent->MENU_NAME,
  22. 'controller' => $parent->CONTROLLER,
  23. 'children' => $this->parseTree($tree, $parent->MENU_ID) // rekursif
  24. );
  25. }
  26. }
  27. return empty($return) ? 0 : $return;
  28. }
  29.  
  30. # for result tree json
  31. [
  32. {
  33. menu_id: "21",
  34. parent_id: "0",
  35. menu_name: "ICT Inventory",
  36. controller: "",
  37. children: [
  38. {
  39. menu_id: "5",
  40. parent_id: "21",
  41. menu_name: "Cash Advance",
  42. controller: "/cash-advance",
  43. children: 0,
  44. },
  45. {
  46. menu_id: "7",
  47. parent_id: "21",
  48. menu_name: "Mutasi Peripheral",
  49. controller: "/mutasi-peripheral",
  50. children: 0,
  51. },
  52. {
  53. menu_id: "8",
  54. parent_id: "21",
  55. menu_name: "Master Peripheral",
  56. controller: "/master-peripheral",
  57. children: 0,
  58. },
  59. {
  60. menu_id: "22",
  61. parent_id: "21",
  62. menu_name: "Pembelian Peripheral",
  63. controller: "/pembelian-peripheral",
  64. children: 0,
  65. },
  66. ],
  67. },
  68. {
  69. menu_id: "26",
  70. parent_id: "0",
  71. menu_name: "ICT Request",
  72. controller: "",
  73. children: [
  74. {
  75. menu_id: "6",
  76. parent_id: "26",
  77. menu_name: "Request",
  78. controller: "/ict-request",
  79. children: 0,
  80. },
  81. {
  82. menu_id: "23",
  83. parent_id: "26",
  84. menu_name: "Approval Atasan",
  85. controller: "/ict-request-divisi1",
  86. children: 0,
  87. },
  88. {
  89. menu_id: "24",
  90. parent_id: "26",
  91. menu_name: "Assign Request ke ICT Personnel",
  92. controller: "/ict-request-divisi2",
  93. children: 0,
  94. },
  95. {
  96. menu_id: "25",
  97. parent_id: "26",
  98. menu_name: "Status Change Request",
  99. controller: "/ict-request-divisi3",
  100. children: 0,
  101. },
  102. {
  103. menu_id: "82",
  104. parent_id: "26",
  105. menu_name: "Closing Request",
  106. controller: "/ict-request-divisi4",
  107. children: 0,
  108. },
  109. ],
  110. },
  111. {
  112. menu_id: "62",
  113. parent_id: "0",
  114. menu_name: "Dashboard",
  115. controller: "/dashboard",
  116. children: 0,
  117. },
  118. {
  119. menu_id: "101",
  120. parent_id: "0",
  121. menu_name: "Dashboard atasan user",
  122. controller: "/dashboard1",
  123. children: 0,
  124. },
  125. {
  126. menu_id: "102",
  127. parent_id: "0",
  128. menu_name: "Dashboard untuk verifikasi orang ict",
  129. controller: "/dashboard2",
  130. children: 0,
  131. },
  132. {
  133. menu_id: "103",
  134. parent_id: "0",
  135. menu_name: "Dashboard untuk personnel ICT",
  136. controller: "/dashboard3",
  137. children: 0,
  138. },
  139. {
  140. menu_id: "104",
  141. parent_id: "0",
  142. menu_name: "User Management",
  143. controller: "",
  144. children: [
  145. {
  146. menu_id: "41",
  147. parent_id: "104",
  148. menu_name: "Menu",
  149. controller: "/mng-menu",
  150. children: 0,
  151. },
  152. {
  153. menu_id: "42",
  154. parent_id: "104",
  155. menu_name: "User",
  156. controller: "/mng-user",
  157. children: 0,
  158. },
  159. {
  160. menu_id: "43",
  161. parent_id: "104",
  162. menu_name: "Role Menu",
  163. controller: "/mng-role",
  164. children: 0,
  165. },
  166. {
  167. menu_id: "61",
  168. parent_id: "104",
  169. menu_name: "Divisi",
  170. controller: "/divisi-refs",
  171. children: 0,
  172. },
  173. ],
  174. },
  175. {
  176. menu_id: "105",
  177. parent_id: "0",
  178. menu_name: "Referensi",
  179. controller: "",
  180. children: [
  181. {
  182. menu_id: "44",
  183. parent_id: "105",
  184. menu_name: "Lookups",
  185. controller: "/referensi-lookups",
  186. children: 0,
  187. },
  188. {
  189. menu_id: "45",
  190. parent_id: "105",
  191. menu_name: "Suplier",
  192. controller: "/referensi-supplier",
  193. children: 0,
  194. },
  195. ],
  196. },
  197. {
  198. menu_id: "122",
  199. parent_id: "0",
  200. menu_name: "Report",
  201. controller: "",
  202. children: [
  203. {
  204. menu_id: "81",
  205. parent_id: "122",
  206. menu_name: "Grafik",
  207. controller: "",
  208. children: [
  209. {
  210. menu_id: "123",
  211. parent_id: "81",
  212. menu_name: "Statistik Permintaan Per Status",
  213. controller: "/req-per-status",
  214. children: 0,
  215. },
  216. {
  217. menu_id: "124",
  218. parent_id: "81",
  219. menu_name: "Statistik Permintaan Divisi User Per Status",
  220. controller: "/req-per-divisi-per-status",
  221. children: 0,
  222. },
  223. {
  224. menu_id: "125",
  225. parent_id: "81",
  226. menu_name: "Statistik Permintaan Divisi Requestor Per Status",
  227. controller: "/req-per-divisi-req-per-status",
  228. children: 0,
  229. },
  230. {
  231. menu_id: "126",
  232. parent_id: "81",
  233. menu_name: "Statistik Permintaan Divisi User Per Tahun",
  234. controller: "/req-per-divisi-user-per-tahun",
  235. children: 0,
  236. },
  237. {
  238. menu_id: "127",
  239. parent_id: "81",
  240. menu_name: "Statistik Permintaan Divisi Requestor Per Tahun",
  241. controller: "/req-per-divisi-req-per-tahun",
  242. children: 0,
  243. },
  244. {
  245. menu_id: "128",
  246. parent_id: "81",
  247. menu_name: "Statistik Permintaan Divisi User Per Bulan",
  248. controller: "/req-per-divisi-user-per-bulan",
  249. children: 0,
  250. },
  251. {
  252. menu_id: "129",
  253. parent_id: "81",
  254. menu_name: "Statistik Permintaan Divisi Requestor Per Bulan",
  255. controller: "/req-per-divisi-req-per-bulan",
  256. children: 0,
  257. },
  258. {
  259. menu_id: "130",
  260. parent_id: "81",
  261. menu_name: "Statistik Permintaan Per Status Per Personnel",
  262. controller: "/req-per-status-per-personnel",
  263. children: 0,
  264. },
  265. {
  266. menu_id: "131",
  267. parent_id: "81",
  268. menu_name: "Statistik Permintaan Per Personnel",
  269. controller: "/req-per-personnel",
  270. children: 0,
  271. },
  272. ],
  273. },
  274. {
  275. menu_id: "132",
  276. parent_id: "122",
  277. menu_name: "Laporan",
  278. controller: "",
  279. children: [
  280. {
  281. menu_id: "133",
  282. parent_id: "132",
  283. menu_name: "Laporan RequestPer Status",
  284. controller: "/report-per-status",
  285. children: 0,
  286. },
  287. {
  288. menu_id: "134",
  289. parent_id: "132",
  290. menu_name: "Laporan Request Divisi Requestor Per Bulan",
  291. controller: "/report-div-req-per-bulan",
  292. children: 0,
  293. },
  294. {
  295. menu_id: "135",
  296. parent_id: "132",
  297. menu_name: "Laporan Request Divisi User Per Bulan",
  298. controller: "/report-div-user-per-bulan",
  299. children: 0,
  300. },
  301. {
  302. menu_id: "136",
  303. parent_id: "132",
  304. menu_name: "Laporan Request Divisi Requestor Per Tahun",
  305. controller: "/report-div-req-per-tahun",
  306. children: 0,
  307. },
  308. {
  309. menu_id: "137",
  310. parent_id: "132",
  311. menu_name: "Laporan Request Divisi User Per Tahun",
  312. controller: "/report-div-user-per-tahun",
  313. children: 0,
  314. },
  315. {
  316. menu_id: "138",
  317. parent_id: "132",
  318. menu_name: "Laporan Request Divisi Requestor Per Status",
  319. controller: "/report-div-req-per-status",
  320. children: 0,
  321. },
  322. {
  323. menu_id: "139",
  324. parent_id: "132",
  325. menu_name: "Laporan Request Divisi User Per Status",
  326. controller: "/report-div-user-per-status",
  327. children: 0,
  328. },
  329. {
  330. menu_id: "140",
  331. parent_id: "132",
  332. menu_name: "Laporan Request Per ICT-Personnel",
  333. controller: "/report-per-personnel",
  334. children: 0,
  335. },
  336. {
  337. menu_id: "141",
  338. parent_id: "132",
  339. menu_name: "Laporan Request Per Status Per Pesonnel",
  340. controller: "/report-per-status-per-personnel",
  341. children: 0,
  342. },
  343. ],
  344. },
  345. ],
  346. },
  347. ];
  348.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement