• Thomas Sibley's avatar
    Consistent transactions for all role group membership changes · f2f00cf1
    Thomas Sibley authored
    A new transaction type, SetWatcher, is now created by single member role
    groups when the assigned member changes.  SetWatcher is more useful than
    a pair of Add/DelWatcher transactions since the old and new members are
    on the same transaction object.  Such role groups which are also
    denormalized into a column still record a Set <Column> transaction on
    the record (i.e. tickets record a SetWatcher Owner and Set Owner
    transaction for each Owner change).  While redundant on the surface, the
    SetWatcher and Set transactions are distinct because they mark,
    respectively, the group membership change and the record column change.
    Add/DelWatcher is still used for all other role groups but is more
    consistently set from deeper in the API: RT::Group->_Add/DeleteMember
    creates the transactions instead of Add/DeleteRoleMember in the Roles
    role.  Aside from greater consistency no matter which API method is
    called, the move keeps all transaction creation alongside that of
    SetWatcher and Set which must be in RT::Group.
    Display of SetWatcher transactions is supported by core RT but not
    currently used.  Without backdating new transactions to fill in existing
    ticket history, it's impossible to solely use SetWatcher for ticket
    owner history display.  Instead, displaying SetWatcher is skipped when
    it applies to the Owner role on a ticket.  All other objects and roles,
    such as those provided by extensions, will display SetWatcher