/** * Flattens the given permission tree. * @param array $permissions the permissions tree. * @return array the permissions. */ public function flattenPermissions($permissions) { $flattened = array(); foreach ($permissions as $itemId => $itemPermissions) { $children = $itemPermissions['children']; unset($itemPermissions['children']); // not needed in a flat tree $flattened[$itemId] = $itemPermissions; $flattened = TUtil::mergeArrayByOverRide($flattened, $this->flattenPermissions($children)); } return $flattened; }