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.24 2002-01-30 00:36:19 dairiki Exp $');
6 require_once('lib/Template.php');
7 //require_once('lib/transform.php');
8 require_once('lib/BlockParser.php');
11 * Guess a short description of the page.
15 * This algorithm was suggested on MeatballWiki by
16 * Alex Schroeder <kensanata@yahoo.com>.
18 * Use the first paragraph in the page which contains at least two
21 * @see http://www.usemod.com/cgi-bin/mb.pl?MeatballWikiSuggestions
23 function GleanDescription ($rev) {
25 = pcre_fix_posix_classes("/[.?!]\s+[[:upper:])]"
27 . "[.?!]\s*([[:upper:])]|$)/sx");
29 $content = $rev->getPackedContent();
31 // Iterate through paragraphs.
32 while (preg_match('/(?: ^ \w .* $ \n? )+/mx', $content, $m)) {
35 // Return paragraph if it contains at least two sentences.
36 if (preg_match($two_sentences, $paragraph)) {
37 return preg_replace("/\s*\n\s*/", " ", trim($paragraph));
40 $content = substr(strstr($content, $paragraph), strlen($paragraph));
46 function actionPage(&$request, $action) {
49 $pagename = $request->getArg('pagename');
50 $version = $request->getArg('version');
52 $page = $request->getPage();
53 $revision = $page->getCurrentRevision();
55 $dbi = $request->getDbh();
56 $actionpage = $dbi->getPage($action);
57 $actionrev = $actionpage->getCurrentRevision();
59 $splitname = split_pagename($pagename);
60 $pagetitle = HTML($actionpage->getName(), ": ",
61 $Theme->linkExistingWikiWord($pagename, false, $version));
63 $template = Template('browse', array('CONTENT' => TransformRevision($actionrev)));
65 GeneratePage($template, $pagetitle, $revision);
69 function displayPage(&$request, $tmpl = 'browse') {
70 $pagename = $request->getArg('pagename');
71 $version = $request->getArg('version');
72 $page = $request->getPage();
74 $page = $request->getPage();
75 $revision = $page->getRevision($version);
77 NoSuchRevision($request, $page, $version);
80 $revision = $page->getCurrentRevision();
83 $splitname = split_pagename($pagename);
84 $pagetitle = HTML::a(array('href' => WikiURL($pagename,
85 array('action' => _("BackLinks"))),
86 'class' => 'backlinks'),
88 $pagetitle->addTooltip(sprintf(_("BackLinks for %s"), $pagename));
90 include_once('lib/BlockParser.php');
91 $template = Template($tmpl, array('CONTENT' => TransformRevision($revision)));
93 GeneratePage($template, $pagetitle, $revision,
94 array('ROBOTS_META' => 'index,follow',
95 'PAGE_DESCRIPTION' => GleanDescription($revision)));
98 $page->increaseHitCount();
106 // c-hanging-comment-ender-p: nil
107 // indent-tabs-mode: nil