Index: branches/5.2.x/core/units/helpers/user_helper.php =================================================================== diff -u -N -r16748 -r16774 --- branches/5.2.x/core/units/helpers/user_helper.php (.../user_helper.php) (revision 16748) +++ branches/5.2.x/core/units/helpers/user_helper.php (.../user_helper.php) (revision 16774) @@ -1,6 +1,6 @@ Update() ? '' : 'restore_impossible'; } + + /** + * Returns user's primary group. + * + * @param integer $user_id User ID. + * + * @return integer + */ + public function getPrimaryGroup($user_id) + { + if ( $user_id <= 0 ) { + return $this->Application->ConfigValue('User_LoggedInGroup'); + } + + $cache_key = 'user' . $user_id . '_primary_group[%UIDSerial:' . $user_id . '%]'; + $cache_value = $this->Application->getCache($cache_key); + + if ( $cache_value === false ) { + $sql = 'SELECT PrimaryGroupId + FROM ' . TABLE_PREFIX . 'Users + WHERE PortalUserId = ' . $user_id; + $cache_value = $this->Conn->GetOne($sql); + $this->Application->setCache($cache_key, $cache_value); + } + + return $cache_value; + } + } Index: branches/5.2.x/core/units/users/users_event_handler.php =================================================================== diff -u -N -r16692 -r16774 --- branches/5.2.x/core/units/users/users_event_handler.php (.../users_event_handler.php) (revision 16692) +++ branches/5.2.x/core/units/users/users_event_handler.php (.../users_event_handler.php) (revision 16774) @@ -1,6 +1,6 @@ Conn->Query($sql); + foreach ( $user_ids as $user_id ) { + $this->Application->incrementCacheSerial('u', $user_id); + } + + $this->Application->incrementCacheSerial('u'); + $sql = 'SELECT PortalUserId FROM ' . $table_name . ' WHERE (GroupId = ' . $primary_group_id . ') AND (PortalUserId IN (' . implode(',', $user_ids) . '))';