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


{{table columns="4" cells="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