API16

JUserHelper/setUserGroups

From Joomla! Documentation

< API16:JUserHelper

The "API16" namespace is an archived namespace. This page contains information for a Joomla! version which is no longer supported. It exists only as a historical reference, it will not be improved and its content may be incomplete and/or contain broken links.

Description[edit]

Method to set the groups for a user.



Syntax[edit]

static setUserGroups($userId, $groups)
Parameter Name Default Value Description
$userId $userId The id of the user.
$groups $groups An array of group ids to put the user in.

Returns[edit]

mixed Boolean true on success, on error.

Defined in[edit]

libraries/joomla/user/helper.php

Importing[edit]

jimport( 'joomla.user.helper' );

Source Body[edit]

public static function setUserGroups($userId, $groups)
{
        // Get the user object.
        $user = & JUser::getInstance((int) $userId);

        // Set the group ids.
        JArrayHelper::toInteger($groups);
        $user->groups = array_fill_keys(array_values($groups), null);

        // Get the titles for the user groups.
        $db = &JFactory::getDbo();
        $db->setQuery(
                'SELECT `id`, `title`' .
                ' FROM `#__usergroups`' .
                ' WHERE `id` = '.implode(' OR `id` = ', array_keys($user->groups))
        );
        $results = $db->loadObjectList();

        // Check for a database error.
        if ($db->getErrorNum()) {
                return new JException($db->getErrorMsg());
        }

        // Set the titles for the user groups.
        for ($i = 0, $n = count($results); $i < $n; $i++) {
                $user->groups[$results[$i]->id] = $results[$i]->title;
        }

        // Store the user object.
        if (!$user->save()) {
                return new JException($user->getError());
        }

        // Set the group data for any preloaded user objects.
        $temp = & JFactory::getUser((int) $userId);
        $temp->groups = $user->groups;

        // Set the group data for the user object in the session.
        $temp = & JFactory::getUser();
        if ($temp->id == $userId) {
                $temp->groups = $user->groups;
        }

        return true;
}



Examples[edit]

Code Examples[edit]