WoltLab/WCF — pull request #1080 by Gravatronics (2013-01-04 18:54:42+00:00)
Title: Fixes permission calculation

This fix is relevant for user group option types that can have a list of values (e.g. list of usable attachments). In the database, only the difference between the default value and the user group's value is stored. This difference is calculated by `IUserGroupOptionType::diff()`. When the permissions for a certain type of user groups are calculated, the difference for all relevant user groups have to be merged, which is done by `IUserGroupOptionType::merge()`.

The code of the previous merge function is the same as the code of the new diff function. This worked fine when calculating the difference to store the values. But if the merge of two option values was calculated during the permission calculation for a certain type of user groups, again, the difference was calculated, not the merge. This had the effect, that if, for instance, the default value for the usable attachment types was "gif, jpg" and the value for the administrator group was "foo, jpg", administrators were only allowed to use "foo" attachments (which is the diff of the two) instead of "foo", "gif" and "jpg".