function show_entries($offset = NULL, $maxcount = NULL, $showNavigaion = TRUE, $showCheckboxes = FALSE, $showadminfields = FALSE, $approvedOnly = TRUE) { global $MAX_ENTRIES_PER_PAGE; global $DISPLAY_TIME_ZONE; if ($showadminfields === TRUE) { $approvedOnly = FALSE; } // Set the display time zone, if applicable if (!empty($DISPLAY_TIME_ZONE)) { if (function_exists("date_default_timezone_set")) { @date_default_timezone_set($DISPLAY_TIME_ZONE); } else { putenv("TZ=" . $DISPLAY_TIME_ZONE); } } // Validate and initialize record offset if (!isset($offset) && isset($_REQUEST['offset'])) { $offset = $_REQUEST['offset']; if (!is_numeric($offset) || $offset < 0) { die("Invalid offset."); } } else { $offset = 0; } if (!isset($maxcount)) { $maxcount = $MAX_ENTRIES_PER_PAGE; } // If navigation page numbers are being used, we need // the count of total entries global $SHOW_PAGE_NUMBER_NAVIGATION; if ($SHOW_PAGE_NUMBER_NAVIGATION === TRUE) { $totalEntries = get_guestbook_entries_count($approvedOnly); } else { $totalEntries = -1; } $guestbookExists = guestbook_open_for_read() !== FALSE; $count = 0; if ($guestbookExists) { if ($offset > 0) { guestbook_forward($offset); } while ($count < $maxcount && ($entry = guestbook_next()) !== FALSE) { // Skip entries that are pending approval if (!$entry['approved'] && $approvedOnly) { continue; } // Determine element ID $elementId = NULL; if ($count === 0) { if ($maxcount === 1) { $elementId = "onlyEntry"; } else { $elementId = "firstEntry"; } } else { if ($count === $maxcount - 1) { $elementId = "lastEntry"; } } show_entry($entry, $count + $offset, $showCheckboxes, $showadminfields, $elementId); $count += 1; } } if ($showNavigaion) { $showMaxCountInPrevNext = !$SHOW_PAGE_NUMBER_NAVIGATION; $showPrevious = $offset > 0; $showNext = $guestbookExists && guestbook_next() !== FALSE; echo "<div class=\"navigation\">\n"; global $GUESTBOOK_URL_PATH; if ($showPrevious) { global $PREVIOUS_TEXT; $previous_offset = $offset - $MAX_ENTRIES_PER_PAGE; if ($previous_offset < 0) { $previous_offset = 0; } echo "<a href=\"" . urlencode($GUESTBOOK_URL_PATH) . "?offset={$previous_offset}\" id=\"previous\">" . htmlspecialchars_default($PREVIOUS_TEXT) . ($showMaxCountInPrevNext ? " " . htmlspecialchars_default($maxcount) : "") . "</a>\n"; } if ($SHOW_PAGE_NUMBER_NAVIGATION === TRUE && $totalEntries > $MAX_ENTRIES_PER_PAGE) { global $NAVIGATION_MAX_PAGE_NUMBERS; echo "<div class=\"pageNumberContainer\">"; // Show page numbers $pageNumberOffset = $offset - ($NAVIGATION_MAX_PAGE_NUMBERS - 1) * $MAX_ENTRIES_PER_PAGE; if ($pageNumberOffset < 0) { $pageNumberOffset = 0; } for ($pageNumberCount = 0; $pageNumberOffset < $totalEntries && $pageNumberCount < $NAVIGATION_MAX_PAGE_NUMBERS; $pageNumberCount++) { $pageNumberDisplay = $pageNumberOffset / $MAX_ENTRIES_PER_PAGE + 1; if ($pageNumberOffset != $offset) { echo "<a href=\"" . urlencode($GUESTBOOK_URL_PATH) . "?offset=" . htmlspecialchars_default($pageNumberOffset) . "\" class=\"pageNumber\">" . htmlspecialchars_default($pageNumberDisplay) . "</a>\n"; } else { echo "<span class=\"pageNumber\" id=\"currentPageNumber\">" . htmlspecialchars_default($pageNumberDisplay) . "</span>\n"; } $pageNumberOffset += $MAX_ENTRIES_PER_PAGE; } echo "</div>"; } else { if ($showPrevious && $showNext) { echo " - "; } } if ($showNext) { global $NEXT_TEXT; $next_offset = $offset + $MAX_ENTRIES_PER_PAGE; echo "<a href=\"" . urlencode($GUESTBOOK_URL_PATH) . "?offset={$next_offset}\" id=\"next\">" . htmlspecialchars_default($NEXT_TEXT) . ($showMaxCountInPrevNext ? " " . htmlspecialchars_default($maxcount) : "") . "</a>\n"; } echo "</div>\n"; } if ($guestbookExists) { guestbook_close(); } }
function is_flood_detected($ipaddress) { global $MIN_SECONDS_BETWEEN_POSTS; if ($MIN_SECONDS_BETWEEN_POSTS <= 0) { return FALSE; } $timestamp_threshold = time() - $MIN_SECONDS_BETWEEN_POSTS; $guestbookExists = guestbook_open_for_read() !== FALSE; if ($guestbookExists) { // Iterate through entries that occured after flood threshold while (($entry = guestbook_next()) !== FALSE && intval($entry["timestamp"]) >= $timestamp_threshold) { if ($entry["ipaddress"] === $ipaddress) { guestbook_close(); return TRUE; } } guestbook_close(); } return FALSE; }