Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function menu() {
- // query from table MENU
- $query = $this->db->query("SELECT * from menu")->result();
- $tree = $this->parseTree($query);
- echo json_encode($tree);
- }
- function parseTree($tree, $root = 0) {
- $return = array();
- # Lintasi tree dan cari children/submenu langsung dari array query
- foreach($tree as $child => $parent) {
- # children ditemukan
- if($parent->PARENT_ID == $root) {
- # Hapus item dari tree (kita tidak perlu melewati ini lagi)
- unset($tree[$child]);
- # Tambahkan children/submenu ke dalam array hasil dan parsing sub sub nya
- $return[] = array(
- 'menu_id' => $parent->MENU_ID,
- 'parent_id' => $parent->PARENT_ID,
- 'menu_name' => $parent->MENU_NAME,
- 'controller' => $parent->CONTROLLER,
- 'children' => $this->parseTree($tree, $parent->MENU_ID) // rekursif
- );
- }
- }
- return empty($return) ? 0 : $return;
- }
- # for result tree json
- [
- {
- menu_id: "21",
- parent_id: "0",
- menu_name: "ICT Inventory",
- controller: "",
- children: [
- {
- menu_id: "5",
- parent_id: "21",
- menu_name: "Cash Advance",
- controller: "/cash-advance",
- children: 0,
- },
- {
- menu_id: "7",
- parent_id: "21",
- menu_name: "Mutasi Peripheral",
- controller: "/mutasi-peripheral",
- children: 0,
- },
- {
- menu_id: "8",
- parent_id: "21",
- menu_name: "Master Peripheral",
- controller: "/master-peripheral",
- children: 0,
- },
- {
- menu_id: "22",
- parent_id: "21",
- menu_name: "Pembelian Peripheral",
- controller: "/pembelian-peripheral",
- children: 0,
- },
- ],
- },
- {
- menu_id: "26",
- parent_id: "0",
- menu_name: "ICT Request",
- controller: "",
- children: [
- {
- menu_id: "6",
- parent_id: "26",
- menu_name: "Request",
- controller: "/ict-request",
- children: 0,
- },
- {
- menu_id: "23",
- parent_id: "26",
- menu_name: "Approval Atasan",
- controller: "/ict-request-divisi1",
- children: 0,
- },
- {
- menu_id: "24",
- parent_id: "26",
- menu_name: "Assign Request ke ICT Personnel",
- controller: "/ict-request-divisi2",
- children: 0,
- },
- {
- menu_id: "25",
- parent_id: "26",
- menu_name: "Status Change Request",
- controller: "/ict-request-divisi3",
- children: 0,
- },
- {
- menu_id: "82",
- parent_id: "26",
- menu_name: "Closing Request",
- controller: "/ict-request-divisi4",
- children: 0,
- },
- ],
- },
- {
- menu_id: "62",
- parent_id: "0",
- menu_name: "Dashboard",
- controller: "/dashboard",
- children: 0,
- },
- {
- menu_id: "101",
- parent_id: "0",
- menu_name: "Dashboard atasan user",
- controller: "/dashboard1",
- children: 0,
- },
- {
- menu_id: "102",
- parent_id: "0",
- menu_name: "Dashboard untuk verifikasi orang ict",
- controller: "/dashboard2",
- children: 0,
- },
- {
- menu_id: "103",
- parent_id: "0",
- menu_name: "Dashboard untuk personnel ICT",
- controller: "/dashboard3",
- children: 0,
- },
- {
- menu_id: "104",
- parent_id: "0",
- menu_name: "User Management",
- controller: "",
- children: [
- {
- menu_id: "41",
- parent_id: "104",
- menu_name: "Menu",
- controller: "/mng-menu",
- children: 0,
- },
- {
- menu_id: "42",
- parent_id: "104",
- menu_name: "User",
- controller: "/mng-user",
- children: 0,
- },
- {
- menu_id: "43",
- parent_id: "104",
- menu_name: "Role Menu",
- controller: "/mng-role",
- children: 0,
- },
- {
- menu_id: "61",
- parent_id: "104",
- menu_name: "Divisi",
- controller: "/divisi-refs",
- children: 0,
- },
- ],
- },
- {
- menu_id: "105",
- parent_id: "0",
- menu_name: "Referensi",
- controller: "",
- children: [
- {
- menu_id: "44",
- parent_id: "105",
- menu_name: "Lookups",
- controller: "/referensi-lookups",
- children: 0,
- },
- {
- menu_id: "45",
- parent_id: "105",
- menu_name: "Suplier",
- controller: "/referensi-supplier",
- children: 0,
- },
- ],
- },
- {
- menu_id: "122",
- parent_id: "0",
- menu_name: "Report",
- controller: "",
- children: [
- {
- menu_id: "81",
- parent_id: "122",
- menu_name: "Grafik",
- controller: "",
- children: [
- {
- menu_id: "123",
- parent_id: "81",
- menu_name: "Statistik Permintaan Per Status",
- controller: "/req-per-status",
- children: 0,
- },
- {
- menu_id: "124",
- parent_id: "81",
- menu_name: "Statistik Permintaan Divisi User Per Status",
- controller: "/req-per-divisi-per-status",
- children: 0,
- },
- {
- menu_id: "125",
- parent_id: "81",
- menu_name: "Statistik Permintaan Divisi Requestor Per Status",
- controller: "/req-per-divisi-req-per-status",
- children: 0,
- },
- {
- menu_id: "126",
- parent_id: "81",
- menu_name: "Statistik Permintaan Divisi User Per Tahun",
- controller: "/req-per-divisi-user-per-tahun",
- children: 0,
- },
- {
- menu_id: "127",
- parent_id: "81",
- menu_name: "Statistik Permintaan Divisi Requestor Per Tahun",
- controller: "/req-per-divisi-req-per-tahun",
- children: 0,
- },
- {
- menu_id: "128",
- parent_id: "81",
- menu_name: "Statistik Permintaan Divisi User Per Bulan",
- controller: "/req-per-divisi-user-per-bulan",
- children: 0,
- },
- {
- menu_id: "129",
- parent_id: "81",
- menu_name: "Statistik Permintaan Divisi Requestor Per Bulan",
- controller: "/req-per-divisi-req-per-bulan",
- children: 0,
- },
- {
- menu_id: "130",
- parent_id: "81",
- menu_name: "Statistik Permintaan Per Status Per Personnel",
- controller: "/req-per-status-per-personnel",
- children: 0,
- },
- {
- menu_id: "131",
- parent_id: "81",
- menu_name: "Statistik Permintaan Per Personnel",
- controller: "/req-per-personnel",
- children: 0,
- },
- ],
- },
- {
- menu_id: "132",
- parent_id: "122",
- menu_name: "Laporan",
- controller: "",
- children: [
- {
- menu_id: "133",
- parent_id: "132",
- menu_name: "Laporan RequestPer Status",
- controller: "/report-per-status",
- children: 0,
- },
- {
- menu_id: "134",
- parent_id: "132",
- menu_name: "Laporan Request Divisi Requestor Per Bulan",
- controller: "/report-div-req-per-bulan",
- children: 0,
- },
- {
- menu_id: "135",
- parent_id: "132",
- menu_name: "Laporan Request Divisi User Per Bulan",
- controller: "/report-div-user-per-bulan",
- children: 0,
- },
- {
- menu_id: "136",
- parent_id: "132",
- menu_name: "Laporan Request Divisi Requestor Per Tahun",
- controller: "/report-div-req-per-tahun",
- children: 0,
- },
- {
- menu_id: "137",
- parent_id: "132",
- menu_name: "Laporan Request Divisi User Per Tahun",
- controller: "/report-div-user-per-tahun",
- children: 0,
- },
- {
- menu_id: "138",
- parent_id: "132",
- menu_name: "Laporan Request Divisi Requestor Per Status",
- controller: "/report-div-req-per-status",
- children: 0,
- },
- {
- menu_id: "139",
- parent_id: "132",
- menu_name: "Laporan Request Divisi User Per Status",
- controller: "/report-div-user-per-status",
- children: 0,
- },
- {
- menu_id: "140",
- parent_id: "132",
- menu_name: "Laporan Request Per ICT-Personnel",
- controller: "/report-per-personnel",
- children: 0,
- },
- {
- menu_id: "141",
- parent_id: "132",
- menu_name: "Laporan Request Per Status Per Pesonnel",
- controller: "/report-per-status-per-personnel",
- children: 0,
- },
- ],
- },
- ],
- },
- ];
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement