From d5b91d4c0194275651e6ecd05585e6fee1cd06c0 Mon Sep 17 00:00:00 2001 From: Marc Alexander Date: Fri, 7 Dec 2012 00:59:57 +0100 Subject: [PATCH] [ticket/216] Add function for obtaining user's groups B3P-216 --- root/portal/includes/functions.php | 32 ++++++++++++++++++++++++ root/portal/modules/portal_calendar.php | 12 +-------- root/portal/modules/portal_links.php | 14 ++--------- root/portal/modules/portal_main_menu.php | 16 +++--------- 4 files changed, 38 insertions(+), 36 deletions(-) diff --git a/root/portal/includes/functions.php b/root/portal/includes/functions.php index 716f17fb..796c0c26 100644 --- a/root/portal/includes/functions.php +++ b/root/portal/includes/functions.php @@ -872,3 +872,35 @@ function check_file_src($value, $key, $module_id, $force_error = true) return false; } } + +/** +* Get the groups a user is in +* +* @return array Array containing the user's groups +*/ +function get_user_groups() +{ + global $cache, $db, $user; + + $groups_ary = $cache->get('_user_groups_' . $user->data['user_id']); + + if ($groups_ary === false) + { + // get user's groups + $sql = 'SELECT group_id + FROM ' . USER_GROUP_TABLE . ' + WHERE user_id = ' . (int) $user->data['user_id'] . ' + ORDER BY group_id ASC'; + $result = $db->sql_query($sql); + while($row = $db->sql_fetchrow($result)) + { + $groups_ary[] = $row['group_id']; + } + $db->sql_freeresult($result); + + // save data in cache for 60 seconds + $cache->put('_user_groups_' . $user->data['user_id'], $groups_ary, 60); + } + + return $groups_ary; +} diff --git a/root/portal/modules/portal_calendar.php b/root/portal/modules/portal_calendar.php index f58fe6e1..e2a965d1 100644 --- a/root/portal/modules/portal_calendar.php +++ b/root/portal/modules/portal_calendar.php @@ -181,17 +181,7 @@ class portal_calendar_module } array_multisort($time_ary, SORT_NUMERIC, $events); - // get user's groups - $sql = 'SELECT group_id - FROM ' . USER_GROUP_TABLE . ' - WHERE user_id = ' . (int) $user->data['user_id'] . ' - ORDER BY group_id ASC'; - $result = $db->sql_query($sql); - while($row = $db->sql_fetchrow($result)) - { - $groups_ary[] = $row['group_id']; - } - $db->sql_freeresult($result); + $groups_ary = get_user_groups(); foreach($events as $key => $cur_event) { diff --git a/root/portal/modules/portal_links.php b/root/portal/modules/portal_links.php index fb7a95a9..280995d8 100644 --- a/root/portal/modules/portal_links.php +++ b/root/portal/modules/portal_links.php @@ -69,18 +69,8 @@ class portal_links_module $links = $this->utf_unserialize($portal_config['board3_links_array_' . $module_id]); // get user's groups - $sql = 'SELECT group_id - FROM ' . USER_GROUP_TABLE . ' - WHERE user_id = ' . (int) $user->data['user_id'] . ' - ORDER BY group_id ASC'; - $result = $db->sql_query($sql); - while($row = $db->sql_fetchrow($result)) - { - $groups_ary[] = $row['group_id']; - } - $db->sql_freeresult($result); - - + $groups_ary = get_user_groups(); + for ($i = 0; $i < sizeof($links); $i++) { if($links[$i]['type'] == self::LINK_INT) diff --git a/root/portal/modules/portal_main_menu.php b/root/portal/modules/portal_main_menu.php index f19ba43e..103057eb 100644 --- a/root/portal/modules/portal_main_menu.php +++ b/root/portal/modules/portal_main_menu.php @@ -68,20 +68,10 @@ class portal_main_menu_module $portal_config = obtain_portal_config(); $links = $this->utf_unserialize($portal_config['board3_menu_array_' . $module_id]); - + // get user's groups - $sql = 'SELECT group_id - FROM ' . USER_GROUP_TABLE . ' - WHERE user_id = ' . (int) $user->data['user_id'] . ' - ORDER BY group_id ASC'; - $result = $db->sql_query($sql); - while($row = $db->sql_fetchrow($result)) - { - $groups_ary[] = $row['group_id']; - } - $db->sql_freeresult($result); - - + $groups_ary = get_user_groups(); + for ($i = 0; $i < sizeof($links); $i++) { if($links[$i]['type'] == self::LINK_CAT)