diff --git a/root/portal/block/birthday_list.php b/root/portal/block/birthday_list.php index fc750366..0fce38f0 100644 --- a/root/portal/block/birthday_list.php +++ b/root/portal/block/birthday_list.php @@ -22,11 +22,25 @@ if ($config['load_birthdays'] && $config['allow_birthdays']) { $now = getdate(time() + $user->timezone + $user->dst - date('Z')); $today = (mktime(0, 0, 0, $now['mon'], $now['mday'], $now['year'])); + + switch ($db->sql_layer) + { + case 'mssql': + case 'mssql_odbc': + $sql = 'SELECT user_id, username, user_colour, user_birthday + FROM ' . USERS_TABLE . " + WHERE user_birthday <> '' + AND user_type IN (" . USER_NORMAL . ', ' . USER_FOUNDER . ') ORDER BY user_birthday ASC'; + break; + + default: + $sql = 'SELECT user_id, username, user_colour, user_birthday + FROM ' . USERS_TABLE . " + WHERE user_birthday <> '' + AND user_type IN (" . USER_NORMAL . ', ' . USER_FOUNDER . ') ORDER BY SUBSTRING(user_birthday FROM 4 FOR 2) ASC, SUBSTRING(user_birthday FROM 1 FOR 2) ASC, username_clean ASC'; + break; + } - $sql = 'SELECT user_id, username, user_colour, user_birthday - FROM ' . USERS_TABLE . " - WHERE user_birthday <> '' - AND user_type IN (" . USER_NORMAL . ', ' . USER_FOUNDER . ') ORDER BY SUBSTRING(user_birthday FROM 4 FOR 2) ASC, SUBSTRING(user_birthday FROM 1 FOR 2) ASC, username_clean ASC'; $result = $db->sql_query($sql); while ($row = $db->sql_fetchrow($result)) diff --git a/root/portal/block/friends.php b/root/portal/block/friends.php index d8df4fb5..8d57ccca 100644 --- a/root/portal/block/friends.php +++ b/root/portal/block/friends.php @@ -25,26 +25,55 @@ $s_display_friends = false; // 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.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' - ), + switch ($db->sql_layer) + { + case 'mssql': + case 'mssql_odbc': + $sql = $db->sql_build_query('SELECT_DISTINCT', array( + 'SELECT' => 'u.user_id, u.username, 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' - ) - ), + '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, u.user_allow_viewonline, u.user_colour', - 'ORDER_BY' => 'u.username_clean ASC', -)); + '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, u.user_allow_viewonline, u.user_colour', + 'ORDER_BY' => 'u.username ASC', + )); + break; + + default: + $sql = $db->sql_build_query('SELECT_DISTINCT', array( + 'SELECT' => 'u.user_id, u.username, 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, u.user_allow_viewonline, u.user_colour', + 'ORDER_BY' => 'u.username_clean ASC', + )); + break; + } $result = $db->sql_query_limit($sql, $portal_config['portal_max_online_friends']); diff --git a/root/portal/block/random_member.php b/root/portal/block/random_member.php index 7e8e49a0..41fa2db0 100644 --- a/root/portal/block/random_member.php +++ b/root/portal/block/random_member.php @@ -20,13 +20,35 @@ if (!defined('IN_PORTAL')) exit; } -$sql = 'SELECT * - FROM ' . USERS_TABLE . ' - WHERE user_type <> ' . USER_IGNORE . ' - AND user_type <> ' . USER_INACTIVE . ' - ORDER BY RAND() - LIMIT 1'; -$result = $db->sql_query($sql); + switch ($db->sql_layer) + { + case 'postgres': + $sql = 'SELECT * + FROM ' . USERS_TABLE . ' + WHERE user_type <> ' . USER_IGNORE . ' + AND user_type <> ' . USER_INACTIVE . ' + ORDER BY RANDOM()'; + break; + + case 'mssql': + case 'mssql_odbc': + $sql = 'SELECT * + FROM ' . USERS_TABLE . ' + WHERE user_type <> ' . USER_IGNORE . ' + AND user_type <> ' . USER_INACTIVE . ' + ORDER BY NEWID()'; + break; + + default: + $sql = 'SELECT * + FROM ' . USERS_TABLE . ' + WHERE user_type <> ' . USER_IGNORE . ' + AND user_type <> ' . USER_INACTIVE . ' + ORDER BY RAND()'; + break; + } + +$result = $db->sql_query_limit($sql, 1); $row = $db->sql_fetchrow($result); $avatar_img = get_user_avatar($row['user_avatar'], $row['user_avatar_type'], $row['user_avatar_width'], $row['user_avatar_height']);