public static function getUserGroups() { static $groups = array(); if (!count($groups)) { if (JCOMMENTS_JVERSION == '1.0') { $db = JCommentsFactory::getDbo(); $db->setQuery('SELECT a.name, a.name AS text, a.group_id as id, COUNT(DISTINCT b.group_id) AS level' . ' FROM #__core_acl_aro_groups AS a' . ' LEFT JOIN `#__core_acl_aro_groups` AS b ON a.lft > b.lft AND a.rgt < b.rgt' . ' WHERE a.name NOT IN ("ROOT", "USERS", "Public Backend")' . ' GROUP BY a.group_id' . ' ORDER BY a.lft ASC'); $groups = $db->loadObjectList(); // for backward compatibility self::updateUserGroups($groups); } else { if (JCOMMENTS_JVERSION == '1.5') { $db = JFactory::getDbo(); $db->setQuery('SELECT a.name, a.name AS text, a.id, COUNT(DISTINCT b.id) AS level' . ' FROM #__core_acl_aro_groups AS a' . ' LEFT JOIN `#__core_acl_aro_groups` AS b ON a.lft > b.lft AND a.rgt < b.rgt' . ' WHERE a.name NOT IN ("ROOT", "USERS", "Public Backend")' . ' GROUP BY a.id' . ' ORDER BY a.lft ASC'); $groups = $db->loadObjectList(); // for backward compatibility self::updateUserGroups($groups); } else { if (JCOMMENTS_JVERSION == '1.7') { $db = JFactory::getDbo(); $db->setQuery('SELECT CASE WHEN a.id = 1 THEN \'Public\' ELSE a.title END AS name, a.title AS text, a.id, COUNT(DISTINCT b.id) AS level' . ' FROM #__usergroups AS a' . ' LEFT JOIN `#__usergroups` AS b ON a.lft > b.lft AND a.rgt < b.rgt' . ' GROUP BY a.id' . ' ORDER BY a.lft ASC'); $groups = $db->loadObjectList(); } } } } return $groups; }