2 // display.php: fetch page or get default content
3 // calls transform.php for actual transformation of wiki markup to HTML
4 rcs_id('$Id: display.php,v 1.16 2002-01-23 05:10:22 dairiki Exp $');
6 require_once('lib/Template.php');
7 require_once('lib/transform.php');
10 * Guess a short description of the page.
14 * This algorithm was suggested on MeatballWiki by
15 * Alex Schroeder <kensanata@yahoo.com>.
17 * Use the first paragraph in the page which contains at least two
20 * @see http://www.usemod.com/cgi-bin/mb.pl?MeatballWikiSuggestions
22 function GleanDescription ($rev) {
24 = pcre_fix_posix_classes("/[.?!]\s+[[:upper:])]"
26 . "[.?!]\s*([[:upper:])]|$)/sx");
28 $content = $rev->getPackedContent();
30 // Iterate through paragraphs.
31 while (preg_match('/(?: ^ \w .* $ \n? )+/mx', $content, $m)) {
34 // Return paragraph if it contains at least two sentences.
35 if (preg_match($two_sentences, $paragraph)) {
36 return preg_replace("/\s*\n\s*/", " ", trim($paragraph));
39 $content = substr(strstr($content, $paragraph), strlen($paragraph));
44 function displayPage(&$request, $tmpl = 'browse') {
45 $pagename = $request->getArg('pagename');
46 $version = $request->getArg('version');
47 $page = $request->getPage();
51 $revision = $page->getRevision($version);
53 NoSuchRevision($request, $pagename, $version);
56 $revision = $page->getCurrentRevision();
59 $splitname = split_pagename($pagename);
60 $pagetitle = HTML::a(array('href' => WikiURL(_("BackLinks"),
61 array('page' => $pagename)),
62 'class' => 'backlinks'),
64 $pagetitle->addTooltip(sprintf(_("BackLinks for %s"), $pagename));
67 $wrapper = new WikiTemplate('top');
68 $wrapper->setPageRevisionTokens($revision);
69 $wrapper->qreplace('TITLE', $splitname);
70 $wrapper->replace('HEADER', $pagetitle);
71 $wrapper->qreplace('ROBOTS_META', 'index,follow');
74 $template = new WikiTemplate($tmpl);
75 $template->replace('CONTENT', do_transform($revision->getContent()));
76 $template->qreplace('PAGE_DESCRIPTION', GleanDescription($revision));
78 $wrapper->printExpansion($template);
80 $page->increaseHitCount();
88 // c-hanging-comment-ender-p: nil
89 // indent-tabs-mode: nil