Additional Options for RecentChanges action


This code adds a little extra functionality to the RecentChanges action. It allows to override the "max" (maximum) amount of changes shown, as well as turning on or off the RSS icon.

I think it would be useful for inclusion on a HomePage, for instance, when you just want to show the last 10 pages changed.

Parameters


Parameter Values Default Description
max integer User's profile or 50 for anonymous user Maximum amount of recent changes to show
showrss true|false true Show the rss icon


Useage examples


{{RecentChanges}}
Will produce the exact same results as the original action
{{RecentChanges max="10" showrss="false"}}
Show last 10 pages changed, and do not show the RSS icon

Replace recentchanges.php with:
<?php
if ($pages = $this->LoadRecentlyChanged())
{
        $max = is_numeric($vars['max']) ? $vars['max'] : false;
        $showrss = $vars['showrss'] ? strtolower($vars['showrss']) : "true";

    $curday = "";
        if ($showrss == "true") {
    print("<p><a href=\"".$this->href("recentchanges.xml", $this->page["tag"])."\"><img src=\"images/xml.png\" width=\"36\" height=\"14\" alt=\"XML\" /></a></p>\n");
        }
        if (! $max) {
                if ($user = $this->GetUser()) {
                $max = $user["changescount"];
            } else {
                $max = 50;
            }
        }

    foreach ($pages as $i => $page)
    {
        if (($i < $max) || !$max)
        {
            // day header
            list($day, $time) = explode(" ", $page["time"]);
            if ($day != $curday)
            {
                $dateformatted = date("D, d M Y", strtotime($day));

                if ($curday) print("</span><br />\n");
                print("<strong>$dateformatted:</strong><br />\n<span class=\"recentchanges\">");
                $curday = $day;
            }

            $timeformatted = date("H:i T", strtotime($page["time"]));
            $page_edited_by = $page["user"];   
            if (!$this->LoadUser($page_edited_by)) $page_edited_by .= " (unregistered user)";

            // print entry
            if ($page["note"]) $note=" <span class=\"pagenote\">[".$page["note"]."]</span>"; else $note ="";
            $pagetag = $page["tag"];
            if ($this->HasAccess("read", $pagetag)) {
                    print("&nbsp;&nbsp;&nbsp;&nbsp;(".$this->Link($pagetag, "revisions", $timeformatted, 0, 1, "View recent revisions list for ".$pagetag).") [".$this->Link($pagetag, "history", "history", 0, 1, "View edit history of ".$pagetag)."] - &nbsp;".$this->Link($pagetag, "", "", 0)." &rArr; $page_edited_by ".$note."<br />");
            } else {
                    print("&nbsp;&nbsp;&nbsp;&nbsp;($timeformatted) [history] - &nbsp;".$page["tag"]." &rArr; $page_edited_by ".$note."<br />");
            }
        }
    }
    print "</span>\n";

    $wikipingserver = $this->config["wikiping_server"];
    if ($wikipingserver) {
        $wikipingserver_url_parsed = parse_url($wikipingserver);
        $wikipingserver_host = $wikipingserver_url_parsed["host"];
        echo "<br /><br />[WikiPing enabled: Changes on this wiki are broadcast to <a href=\"http://$wikipingserver_host\">http://$wikipingserver_host</a>]";
    }
}
?>



CategoryDevelopmentActions
There are no comments on this page.
Valid XHTML :: Valid CSS: :: Powered by WikkaWiki