function links_get_in_folder($fid, $invisible = false, $sort_by = "TITLE", $sort_dir = "ASC", $page = 1) { if (!($db = db::get())) { return false; } $sort_by_array = array('TITLE', 'DESCRIPTION', 'CREATED', 'RATING'); $sort_dir_array = array('ASC', 'DESC'); if (!is_numeric($fid)) { return false; } if (!is_bool($invisible)) { $invisible = false; } if (!is_numeric($page) || $page < 1) { $page = 1; } if (!in_array($sort_by, $sort_by_array)) { $sort_by = 'TITLE'; } if (!in_array($sort_dir, $sort_dir_array)) { $sort_dir = 'ASC'; } if (!($table_prefix = get_table_prefix())) { return false; } $offset = calculate_page_offset($page, 20); $links_array = array(); if ($invisible === false) { $sql = "SELECT SQL_CALC_FOUND_ROWS LINKS.LID, LINKS.UID, USER.LOGON, USER.NICKNAME, LINKS.URI, LINKS.TITLE, "; $sql .= "LINKS.DESCRIPTION, LINKS.VISIBLE, UNIX_TIMESTAMP(LINKS.CREATED) AS CREATED, LINKS.CLICKS, "; $sql .= "AVG(LINKS_VOTE.RATING) AS RATING FROM `{$table_prefix}LINKS` LINKS "; $sql .= "LEFT JOIN `{$table_prefix}LINKS_VOTE` LINKS_VOTE ON (LINKS.LID = LINKS_VOTE.LID) "; $sql .= "LEFT JOIN USER USER ON (LINKS.UID = USER.UID) WHERE LINKS.FID = '{$fid}' "; $sql .= "AND LINKS.VISIBLE = 'Y' AND LINKS.APPROVED IS NOT NULL "; $sql .= "GROUP BY LINKS.LID ORDER BY {$sort_by} {$sort_dir} "; $sql .= "LIMIT {$offset}, 20"; } else { $sql = "SELECT SQL_CALC_FOUND_ROWS LINKS.LID, LINKS.UID, USER.LOGON, USER.NICKNAME, LINKS.URI, LINKS.TITLE, "; $sql .= "LINKS.DESCRIPTION, LINKS.VISIBLE, UNIX_TIMESTAMP(LINKS.CREATED) AS CREATED, LINKS.CLICKS, "; $sql .= "AVG(LINKS_VOTE.RATING) AS RATING FROM `{$table_prefix}LINKS` LINKS "; $sql .= "LEFT JOIN `{$table_prefix}LINKS_VOTE` LINKS_VOTE ON (LINKS.LID = LINKS_VOTE.LID) "; $sql .= "LEFT JOIN USER USER ON (LINKS.UID = USER.UID) WHERE LINKS.FID = '{$fid}' "; $sql .= "AND LINKS.APPROVED IS NOT NULL GROUP BY LINKS.LID "; $sql .= "ORDER BY {$sort_by} {$sort_dir} LIMIT {$offset}, 20"; } if (!($result = $db->query($sql))) { return false; } $sql = "SELECT FOUND_ROWS() AS ROW_COUNT"; if (!($result_count = $db->query($sql))) { return false; } list($links_count) = $result_count->fetch_row(); if ($result->num_rows == 0 && $links_count > 0 && $page > 1) { return links_get_in_folder($fid, $invisible, $sort_by, $sort_dir, $page - 1); } while (($links_data = $result->fetch_assoc()) !== null) { if (isset($links_data['LOGON']) && isset($links_data['PEER_NICKNAME'])) { if (!is_null($links_data['PEER_NICKNAME']) && strlen($links_data['PEER_NICKNAME']) > 0) { $links_data['NICKNAME'] = $links_data['PEER_NICKNAME']; } } if (!isset($links_data['LOGON'])) { $links_data['LOGON'] = gettext("Unknown user"); } if (!isset($links_data['NICKNAME'])) { $links_data['NICKNAME'] = ""; } $links_array[$links_data['LID']] = $links_data; } return array('links_count' => $links_count, 'links_array' => $links_array); }
} if (isset($_GET['sort_dir'])) { if ($_GET['sort_dir'] == "DESC") { $sort_dir = "DESC"; } else { $sort_dir = "ASC"; } } else { if ($viewmode == LINKS_VIEW_HIERARCHICAL) { $sort_dir = "ASC"; } else { $sort_dir = "DESC"; } } if ($viewmode == LINKS_VIEW_HIERARCHICAL) { $links = links_get_in_folder($fid, session::check_perm(USER_PERM_LINKS_MODERATE, 0), $sort_by, $sort_dir, $page); } else { $links = links_get_all(session::check_perm(USER_PERM_LINKS_MODERATE, 0), $sort_by, $sort_dir, $page); } if (sizeof($links['links_array']) < 1) { html_display_warning_msg(gettext("No links in this folder."), '85%', 'center'); } echo "<div align=\"center\">\n"; echo " <table cellpadding=\"0\" cellspacing=\"0\" width=\"85%\">\n"; echo " <tr>\n"; echo " <td align=\"left\">\n"; echo " <table class=\"box\" width=\"100%\">\n"; echo " <tr>\n"; echo " <td align=\"left\" class=\"posthead\">\n"; echo " <table width=\"100%\">\n"; echo " <tr>\n";