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 set_guestbook_entries_count()
{
    global $guestbook_approved_entries_count;
    global $guestbook_total_entries_count;
    $guestbook_approved_entries_count = 0;
    $guestbook_total_entries_count = 0;
    // Get raw data from file
    if (guestbook_open_for_read() === FALSE) {
        // Acquires shared lock on guestbook file
        return 0;
    }
    $raw_entries = @file(guestbook_file_path());
    guestbook_close();
    // Releases shared lock
    if ($raw_entries === FALSE) {
        return 0;
    }
    // Split entries into components
    $entries = array_map('entry_explode', $raw_entries);
    // Count entries
    $approvedCount = 0;
    $totalCount = 0;
    foreach ($entries as $entry) {
        if (!isset($entry[7]) || $entry[7] === 'true') {
            $approvedCount++;
        }
        // Approved entries count
        $totalCount++;
        // Total entries count
    }
    // Open/create summary file
    $summary_fp = @fopen(guestbook_summary_file_path(), "w");
    if ($summary_fp === FALSE) {
        die("Unable to open summary file for writing");
    }
    @flock($summary_fp, LOCK_EX);
    fputs($summary_fp, $approvedCount . "\n");
    fputs($summary_fp, $totalCount . "\n");
    @flock($summary_fp, LOCK_UN);
    fclose($summary_fp);
    // Update cached count
    $guestbook_approved_entries_count = $approvedCount;
    $guestbook_total_entries_count = $totalCount;
}