public function listMenus($parent, $level, $type) { $connection = \Yii::$app->db; $sql = "SELECT a.id, a.names, a.icons, a.urls, a.type, a.target, Deriv1.Count FROM `tbl_menus` a " . "LEFT OUTER JOIN (SELECT parent_id, COUNT(*) AS Count FROM `tbl_menus` GROUP BY parent_id) " . "Deriv1 ON a.id = Deriv1.parent_id WHERE a.parent_id=" . $parent . " AND a.published=1 AND " . "a.type=" . $type . " ORDER BY a.ordering"; $command = $connection->createCommand($sql); $reader = $command->query(); $data = array(); foreach ($reader as $r) { if ($r['Count'] > 0) { $data['label'] = '<i class="' . $r['icons'] . '"></i> ' . $r['names']; $data['url'] = $r['article_id'] ? ['default/view', 'id' => $r['article_id']] : $r['urls']; $data['items'] = Menus::listMenus($r['id'], $level + 1, $type); } else { $data['label'] = '<i class="' . $r['icons'] . '"></i> ' . $r['names']; $htt = substr($r['urls'], 0, 4); $data['url'] = $htt == 'http' ? $r['urls'] : $r['urls']; if ($r['target'] == 1) { $data['linkOptions'] = ['target' => '_blank']; } unset($data['items']); } $items[] = $data; } return $items; }