function JLMS_checkCourseGID($user_id, $course_gid) { global $JLMS_DB, $JLMS_CONFIG; $acl =& JLMSFactory::getJoomlaACL(); //Cache functions (save data about user gid, course gid and access results in JLMS_CONFIG) $cache_user_gids = $JLMS_CONFIG->get('cache_user_gids', array()); $user_item = 'user_' . $user_id; if (isset($cache_user_gids[$user_item]) && $cache_user_gids[$user_item]) { $userGids = $cache_user_gids[$user_item]; } else { if ($user_id) { if (JLMS_J16version()) { $userGids = $acl->getGroupsByUser($user_id); } else { $query = "SELECT gid FROM #__users WHERE id = " . $user_id; $JLMS_DB->SetQuery($query); $userGids[] = $JLMS_DB->LoadResult(); } } else { $userGids = array(); } $cache_user_gids[$user_item] = $userGids; $JLMS_CONFIG->set('cache_user_gids', $cache_user_gids); } $result = false; $ac_groups = array(0); if ($course_gid) { $ac_groups = explode(",", $course_gid); } if (in_array(0, $ac_groups)) { $result = true; } elseif ($user_id && is_array($ac_groups)) { $adminGroups = JLMS_getAdminGroups(); $ac_groups = array_unique(array_merge($ac_groups, $adminGroups)); foreach ($ac_groups as $ag) { $cache_gid_checked = $JLMS_CONFIG->get('cache_gid_checked', array()); foreach ($userGids as $userGid) { $cg_item = 'check_gid_' . $userGid . '_' . $ag; if (isset($cache_gid_checked[$cg_item])) { if ($cache_gid_checked[$cg_item]) { $result = true; break; } } else { if ($userGid == $ag) { $result = true; break; } if ($acl->is_group_child_of(intval($userGid), intval($ag), 'ARO')) { $result = true; break; } } $cache_gid_checked[$cg_item] = $result; $JLMS_CONFIG->set('cache_gid_checked', $cache_gid_checked); } } } return $result; }