]> CyberLeo.Net >> Repos - SourceForge/phpwiki.git/blob - lib/removepage.php
Translate message
[SourceForge/phpwiki.git] / lib / removepage.php
1 <?php
2
3 require_once 'lib/Template.php';
4
5 /**
6  * @param WikiRequest $request
7  */
8 function RemovePage(&$request)
9 {
10     global $WikiTheme;
11
12     $page = $request->getPage();
13     $pagelink = WikiLink($page);
14
15     if ($request->getArg('cancel')) {
16         $request->redirect(WikiURL($page,
17             array('warningmsg' => _('Remove cancelled'))));
18         // noreturn
19     }
20
21     $current = $page->getCurrentRevision();
22
23     if (!$current or !($version = $current->getVersion())) {
24         $html = HTML::p(array('class' => 'error'), _("Sorry, this page does not exist."));
25     } elseif (!$request->isPost() || !$request->getArg('verify')) {
26
27         $removeB = Button('submit:verify', _("Remove Page"), 'wikiadmin');
28         $cancelB = Button('submit:cancel', _("Cancel"), 'button'); // use generic wiki button look
29
30         $fieldset = HTML::fieldset(HTML::legend(_('Confirm removal')),
31             HTML::p(fmt("You are about to remove ā€œ%sā€!", $pagelink)),
32             HTML::form(array('method' => 'post',
33                     'action' => $request->getPostURL()),
34                 HiddenInputs(array('currentversion' => $version,
35                     'pagename' => $page->getName(),
36                     'action' => 'remove')),
37                 HTML::div(array('class' => 'toolbar'),
38                     $removeB,
39                     $WikiTheme->getButtonSeparator(),
40                     $cancelB))
41         );
42         $sample = HTML::div(array('class' => 'transclusion'));
43         // simple and fast preview expanding only newlines
44         foreach (explode("\n", firstNWordsOfContent(100, $current->getPackedContent())) as $s) {
45             $sample->pushContent($s, HTML::br());
46         }
47         $html = HTML($fieldset, HTML::div(array('class' => 'wikitext'), $sample));
48     } elseif ($request->getArg('currentversion') != $version) {
49         $html = HTML(HTML::p(array('class' => 'error'), (_("Someone has edited the page!"))),
50             HTML::p(fmt("Since you started the deletion process, someone has saved a new version of %s.  Please check to make sure you still want to permanently remove the page from the database.", $pagelink)));
51     } else {
52         // Real delete.
53         $pagename = $page->getName();
54         $dbi = $request->getDbh();
55         $dbi->deletePage($pagename);
56         $dbi->touch();
57         $html = HTML::p(array('class' => 'feedback'), fmt("Removed page ā€œ%sā€ successfully.", $pagename));
58     }
59
60     GeneratePage($html, _("Remove Page"));
61 }
62
63 // Local Variables:
64 // mode: php
65 // tab-width: 8
66 // c-basic-offset: 4
67 // c-hanging-comment-ender-p: nil
68 // indent-tabs-mode: nil
69 // End: