/** * * @param array $new_mapping_list * @param Project $project */ public function saveMapping(array $new_mapping_list, Project $project) { $current_mapping_list = $this->getCurrentUserGroupMapping($project); $mappings_to_remove = $this->getUserGroupMappingsDiff($current_mapping_list, $new_mapping_list); $mappings_to_add = $this->getUserGroupMappingsDiff($new_mapping_list, $current_mapping_list); foreach (self::$MEDIAWIKI_MODIFIABLE_GROUP_NAMES as $mw_group_name) { $this->removeMediawikiUserGroupMapping($project, $mappings_to_remove, $mw_group_name); $this->addMediawikiUserGroupMapping($project, $mappings_to_add, $mw_group_name); } $this->dao->resetUserGroups($project); }