diff --git a/phpBB/includes/functions_module.php b/phpBB/includes/functions_module.php index d45358327f..651e35032c 100644 --- a/phpBB/includes/functions_module.php +++ b/phpBB/includes/functions_module.php @@ -464,6 +464,44 @@ class p_master } } + /** + * Check if a module is active + */ + function is_active($id = false) + { + $icat = false; + + $category = false; + foreach ($this->module_ary as $row_id => $item_ary) + { + // If this is a module and it's selected, active + // If this is a category and the module is the first within it, active + // If this is a module and no mode selected, select first mode + // If no category or module selected, go active for first module in first category + if ( + (($item_ary['name'] === $id || $item_ary['id'] === (int) $id) && (($item_ary['mode'] == false && !$item_ary['cat']) || ($icat && $item_ary['cat']))) || + ($item_ary['parent'] === $category && !$item_ary['cat'] && !$icat && $item_ary['display']) || + (($item_ary['name'] === $id || $item_ary['id'] === (int) $id) && !$item_ary['cat']) || + (!$id && !$item_ary['cat'] && $item_ary['display']) + ) + { + if ($item_ary['cat']) + { + $id = $icat; + $icat = false; + + continue; + } + + return $item_ary['id']; + } + else if (($item_ary['cat'] && $item_ary['id'] === (int) $id) || ($item_ary['parent'] === $category && $item_ary['cat'])) + { + $category = $item_ary['id']; + } + } + } + /** * Get parents */ diff --git a/phpBB/ucp.php b/phpBB/ucp.php index 2713f794eb..f4ddd55f6d 100755 --- a/phpBB/ucp.php +++ b/phpBB/ucp.php @@ -241,54 +241,59 @@ if (!$user->data['is_registered']) login_box('', $user->lang['LOGIN_EXPLAIN_UCP']); } - -// Output listing of friends online -$update_time = $config['load_online_time'] * 60; - -$sql = $db->sql_build_query('SELECT_DISTINCT', array( - 'SELECT' => 'u.user_id, u.username, u.username_clean, u.user_colour, u.user_allow_viewonline, MAX(s.session_time) as online_time, MIN(s.session_viewonline) AS viewonline', - - 'FROM' => array( - USERS_TABLE => 'u', - ZEBRA_TABLE => 'z' - ), - - 'LEFT_JOIN' => array( - array( - 'FROM' => array(SESSIONS_TABLE => 's'), - 'ON' => 's.session_user_id = z.zebra_id' - ) - ), - - 'WHERE' => 'z.user_id = ' . $user->data['user_id'] . ' - AND z.friend = 1 - AND u.user_id = z.zebra_id', - - 'GROUP_BY' => 'z.zebra_id, u.user_id, u.username_clean, u.user_allow_viewonline, u.user_colour, u.username', - - 'ORDER_BY' => 'u.username_clean ASC', -)); - -$result = $db->sql_query($sql); - -while ($row = $db->sql_fetchrow($result)) -{ - $which = (time() - $update_time < $row['online_time'] && $row['viewonline'] && $row['user_allow_viewonline']) ? 'online' : 'offline'; - - $template->assign_block_vars("friends_{$which}", array( - 'USER_ID' => $row['user_id'], - - 'U_PROFILE' => get_username_string('profile', $row['user_id'], $row['username'], $row['user_colour']), - 'USER_COLOUR' => get_username_string('colour', $row['user_id'], $row['username'], $row['user_colour']), - 'USERNAME' => get_username_string('username', $row['user_id'], $row['username'], $row['user_colour']), - 'USERNAME_FULL' => get_username_string('full', $row['user_id'], $row['username'], $row['user_colour'])) - ); -} -$db->sql_freeresult($result); - // Instantiate module system and generate list of available modules $module->list_modules('ucp'); +// Check if the zebra module is set +$zebra_enabled = $module->is_active('zebra') ? true : false; + +if ($zebra_enabled) +{ + // Output listing of friends online + $update_time = $config['load_online_time'] * 60; + + $sql = $db->sql_build_query('SELECT_DISTINCT', array( + 'SELECT' => 'u.user_id, u.username, u.username_clean, u.user_colour, u.user_allow_viewonline, MAX(s.session_time) as online_time, MIN(s.session_viewonline) AS viewonline', + + 'FROM' => array( + USERS_TABLE => 'u', + ZEBRA_TABLE => 'z' + ), + + 'LEFT_JOIN' => array( + array( + 'FROM' => array(SESSIONS_TABLE => 's'), + 'ON' => 's.session_user_id = z.zebra_id' + ) + ), + + 'WHERE' => 'z.user_id = ' . $user->data['user_id'] . ' + AND z.friend = 1 + AND u.user_id = z.zebra_id', + + 'GROUP_BY' => 'z.zebra_id, u.user_id, u.username_clean, u.user_allow_viewonline, u.user_colour, u.username', + + 'ORDER_BY' => 'u.username_clean ASC', + )); + + $result = $db->sql_query($sql); + + while ($row = $db->sql_fetchrow($result)) + { + $which = (time() - $update_time < $row['online_time'] && $row['viewonline'] && $row['user_allow_viewonline']) ? 'online' : 'offline'; + + $template->assign_block_vars("friends_{$which}", array( + 'USER_ID' => $row['user_id'], + + 'U_PROFILE' => get_username_string('profile', $row['user_id'], $row['username'], $row['user_colour']), + 'USER_COLOUR' => get_username_string('colour', $row['user_id'], $row['username'], $row['user_colour']), + 'USERNAME' => get_username_string('username', $row['user_id'], $row['username'], $row['user_colour']), + 'USERNAME_FULL' => get_username_string('full', $row['user_id'], $row['username'], $row['user_colour'])) + ); + } + $db->sql_freeresult($result); +} + // Select the active module $module->set_active($id, $mode);