1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

Username styling and removeSecondaryGroupFromUsers

Discussion in 'XenForo Development Discussions' started by Moturdrn, Oct 16, 2015.

  1. Moturdrn

    Moturdrn Member

    Hi all,

    I've got a system I'm using whereby Guilds can get registered within a listing. When a guild is initially listed and approved, any members which request to join get added to an approved group.

    PHP:
    private function addSecondaryGroup($userId$groupId)
        {
            
    $userModel $this->_getUserModel();
            
    $userGroupModel $this->_getUserGroupModel();

            
    $user $userModel->getUserById($userId);
            
    $userGroup $userGroupModel->getUserGroupById($groupId);

            if(
    $user && $userGroup)
            {
                if(!
    $userModel->isMemberOfUserGroup($user$groupId))
                {
                    
    $secondaryGroups explode(","$user['secondary_group_ids']);
                    
    $secondaryGroups[] = $groupId;
                    
    $writer XenForo_DataWriter::create('XenForo_DataWriter_User');
                    
    $writer->setExistingData($user['user_id']);
                    
    $writer->setSecondaryGroups($secondaryGroups);
                    
    $writer->save();
                }
            }
        }
    When a user is removed from a Guild listing, the system first checks to see if they are a member of any other approved Guilds. If they are, it does nothing. If they aren't, the system should remove them from this group.

    PHP:
    $this->_getUserGroupModel()->removeSecondaryGroupFromUsers(array($userId), $groupId);
    Removing the user from the group is working. However, this group also contains username css styling. This styling persists and I have to run the user caches update within the AdminCP to remove it.

    Any hints? :) (Ignore, please see below)


    Edit:

    Just had a thought that hadn't yet occurred to me, do the same as the addSecondaryGroups but to remove.

    PHP:
    private function removeSecondaryGroup($userId$groupId)
        {
            
    $userModel $this->_getUserModel();
            
    $userGroupModel $this->_getUserGroupModel();

            
    $user $userModel->getUserById($userId);
            
    $userGroup $userGroupModel->getUserGroupById($groupId);

            if(
    $user && $userGroup)
            {
                if(
    $userModel->isMemberOfUserGroup($user$groupId))
                {
                    
    $secondaryGroups explode(","$user['secondary_group_ids']);
                    if((
    $key array_search($groupId$secondaryGroups)) !== false)
                    {
                        unset(
    $secondaryGroups[$key]);
                    }
                    
    $writer XenForo_DataWriter::create('XenForo_DataWriter_User');
                    
    $writer->setExistingData($user['user_id']);
                    
    $writer->setSecondaryGroups($secondaryGroups);
                    
    $writer->save();
                }
            }
        }
    Please ignore my early morning ramblings before coffee :D
     
    Last edited: Oct 16, 2015

Share This Page