/** * 添加当前角色到当前菜单及所有上级 * @param number $role_id * @param number $menu_id */ public function addRoleToMenu($role_id, $menu_id) { $menu = new Home_Model_Menu(); // 检查当前菜单是否存在上级菜单 $data = $menu->fetchRow("id = " . $menu_id); // 上级菜单ID > 0表示当前菜单拥有上级菜单 if ($data['parent_id'] > 0) { // 如存在上级菜单,且上级菜单未包含当前角色,添加角色到上级菜单(继承上级菜单权限) if ($this->fetchAll("menu_id = " . $data['parent_id'] . " and role_id = " . $role_id)->count() == 0) { $this->addRoleToMenu($role_id, $data['parent_id']); } } // 如当前菜单未曾添加当前角色,则添加角色到当前菜单 if ($this->fetchAll("role_id = " . $role_id . " and menu_id = " . $menu_id)->count() == 0) { $this->insert(array('role_id' => $role_id, 'menu_id' => $menu_id)); } }