/** * remove account menu */ public function actionRemoveMenus($accountId, $menusStr) { $account = Account::findByPK(new \MongoId($accountId)); $menus = split(',', $menusStr); $menusMap = []; foreach ($menus as $menu) { list($mod, $menuName) = split('-', $menu); if (empty($menusMap[$mod])) { $menusMap[$mod] = []; } $menusMap[$mod][] = $menuName; } $accountMenus = []; $oldMenus = $account->menus; foreach ($oldMenus as $mod => $oldMenuItems) { $accountMenus[$mod] = []; foreach ($oldMenuItems as $menuItem) { if (empty($menusMap[$mod]) || !in_array($menuItem['name'], $menusMap[$mod])) { $accountMenus[$mod][] = $menuItem; } } } $account->menus = $accountMenus; if ($account->save()) { echo 'Remove account menus successfully with account id ' . $account->_id . "\n"; } else { echo 'Fail to remove account menus with account id ' . $account->_id . "\n"; } }