function sitemap_forum_get_threads($forum_fid) { if (!($db = db::get())) { return false; } // If there are any problems with the function arguments we bail out. if (!is_numeric($forum_fid)) { return false; } // Constant for Guest access. $user_perm_guest_access = USER_PERM_GUEST_ACCESS; // Get the table prefix from the forum fid if (!($table_prefix = forum_get_table_prefix($forum_fid))) { return false; } $sql = "SELECT THREAD.TID, UNIX_TIMESTAMP(THREAD.MODIFIED) AS MODIFIED "; $sql .= "FROM `{$table_prefix}THREAD` THREAD "; $sql .= "INNER JOIN `{$table_prefix}FOLDER` FOLDER "; $sql .= "ON (FOLDER.FID = THREAD.FID) "; $sql .= "WHERE FOLDER.PERM & {$user_perm_guest_access} > 0 "; $sql .= "ORDER BY THREAD.TID"; if (!($result = $db->query($sql))) { return false; } if ($result->num_rows == 0) { return false; } return $result; }
public static function get_perm_array($uid, $forum_fid) { $user_perm_array = array(); if (!is_numeric($uid)) { return $user_perm_array; } if (!is_numeric($forum_fid)) { return $user_perm_array; } if ($table_prefix = forum_get_table_prefix($forum_fid)) { $sql = "SELECT FID, PERM, IF (PERM IS NULL, 0, 1) AS FOLDER_PERM_COUNT "; $sql .= "FROM `{$table_prefix}FOLDER`"; if (!($result = session::$db->query($sql))) { return $user_perm_array; } if ($result->num_rows == 0) { return $user_perm_array; } while (($permission_data = $result->fetch_assoc()) !== null) { if ($permission_data['FOLDER_PERM_COUNT'] > 0) { $user_perm_array[$forum_fid][$permission_data['FID']] = (double) $permission_data['PERM']; } } } $sql = "SELECT FORUM, FID, BIT_OR(PERM) AS PERM FROM ((SELECT GROUPS.FORUM, "; $sql .= "GROUP_PERMS.FID, BIT_OR(GROUP_PERMS.PERM) AS PERM, COUNT(GROUP_PERMS.GID) AS PERM_COUNT "; $sql .= "FROM GROUPS INNER JOIN GROUP_PERMS ON (GROUP_PERMS.GID = GROUPS.GID) "; $sql .= "INNER JOIN GROUP_USERS ON (GROUP_USERS.GID = GROUPS.GID) WHERE GROUP_USERS.UID = '{$uid}' "; $sql .= "AND GROUPS.FORUM = {$forum_fid} GROUP BY GROUPS.FORUM, GROUP_PERMS.FID HAVING PERM_COUNT > 0) "; $sql .= "UNION ALL (SELECT USER_PERM.FORUM, USER_PERM.FID, BIT_OR(USER_PERM.PERM) AS PERM, "; $sql .= "COUNT(USER_PERM.UID) AS PERM_COUNT FROM USER_PERM WHERE USER_PERM.UID = '{$uid}' "; $sql .= "AND USER_PERM.FORUM IN (0, {$forum_fid}) GROUP BY USER_PERM.FORUM, USER_PERM.FID "; $sql .= "HAVING PERM_COUNT > 0)) AS USER_GROUP_PERMS GROUP BY FORUM, FID"; if (!($result = session::$db->query($sql))) { return $user_perm_array; } if ($result->num_rows == 0) { return $user_perm_array; } while (($permission_data = $result->fetch_assoc()) !== null) { if (isset($user_perm_array[$permission_data['FORUM']][$permission_data['FID']])) { if (($user_perm_array[$permission_data['FORUM']][$permission_data['FID']] & USER_PERM_THREAD_MOVE) > 0) { $permission_data['PERM'] = (double) $permission_data['PERM'] | USER_PERM_THREAD_MOVE; } } $user_perm_array[$permission_data['FORUM']][$permission_data['FID']] = (double) $permission_data['PERM']; } return $user_perm_array; }
public static function get_perm_array($uid, $forum_fid) { $user_perm_array = array(); if (!is_numeric($uid)) { return $user_perm_array; } if (!is_numeric($forum_fid)) { return $user_perm_array; } if (!($table_prefix = forum_get_table_prefix($forum_fid))) { return $user_perm_array; } $sql = "SELECT FID, PERM, IF (PERM IS NULL, 0, 1) AS FOLDER_PERM_COUNT "; $sql .= "FROM `{$table_prefix}FOLDER`"; if (!($result = session::$db->query($sql))) { return $user_perm_array; } if ($result->num_rows == 0) { return $user_perm_array; } while ($permission_data = $result->fetch_assoc()) { if ($permission_data['FOLDER_PERM_COUNT'] > 0) { $user_perm_array[$forum_fid][$permission_data['FID']] = (double) $permission_data['PERM']; } } $sql = "SELECT GROUP_PERMS.GID, GROUP_PERMS.FORUM, GROUP_PERMS.FID, "; $sql .= "BIT_OR(GROUP_PERMS.PERM) AS PERM, COUNT(GROUP_PERMS.GID) AS USER_PERM_COUNT "; $sql .= "FROM GROUP_USERS INNER JOIN GROUP_PERMS USING (GID) "; $sql .= "WHERE GROUP_USERS.UID = '{$uid}' AND GROUP_PERMS.FORUM IN (0, {$forum_fid}) "; $sql .= "GROUP BY GROUP_PERMS.FORUM, GROUP_PERMS.FID"; if (!($result = session::$db->query($sql))) { return $user_perm_array; } if ($result->num_rows == 0) { return $user_perm_array; } while ($permission_data = $result->fetch_assoc()) { if ($permission_data['USER_PERM_COUNT'] > 0) { if (isset($user_perm_array[$permission_data['FORUM']][$permission_data['FID']])) { if (($user_perm_array[$permission_data['FORUM']][$permission_data['FID']] & USER_PERM_THREAD_MOVE) > 0) { $permission_data['PERM'] = (double) $permission_data['PERM'] | USER_PERM_THREAD_MOVE; } } $user_perm_array[$permission_data['FORUM']][$permission_data['FID']] = (double) $permission_data['PERM']; } } return $user_perm_array; }
function admin_forum_get_post_count($fid) { if (!($db = db::get())) { return false; } if (!is_numeric($fid)) { return false; } if (!($table_prefix = forum_get_table_prefix($fid))) { return false; } $sql = "SELECT COUNT(PID) FROM `{$table_prefix}POST`"; if (!($result = $db->query($sql))) { return false; } list($post_count) = $result->fetch_row(); return $post_count; }