Esempio n. 1
0
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();
    }
}
Esempio n. 2
0
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;
}