]> CyberLeo.Net >> Repos - SourceForge/phpwiki.git/blob - lib/plugin/PluginManager.php
New plugin: Lists available plugins with page links & descriptions.
[SourceForge/phpwiki.git] / lib / plugin / PluginManager.php
1 <?php // -*-php-*-
2 rcs_id('$Id: PluginManager.php,v 1.1 2002-12-30 11:52:20 carstenklapp Exp $');
3 /**
4  */
5
6 class WikiPlugin_PluginManager
7 extends WikiPlugin
8 {
9     function getName () {
10         return _("PluginManager");
11     }
12
13     function getDescription () {
14         return _("Overview of the available PhpWikiPlugins");
15     }
16
17     function getDefaultArguments() {
18         return array();
19     }
20
21     function run($dbi, $argstr, $request) {
22         //extract($this->getArgs($argstr, $request));
23
24         $msg = HTML::p("PluginManager provides the WikiAdmin the list of PhpWikiPlugin~s on this wiki.");
25
26         if (! $request->_user->isadmin()) {
27             return $msg; // early return
28         }
29
30
31         $pd = new fileSet(PHPWIKI_DIR . '/lib/plugin', '*.php');
32         $plugins = $pd->getFiles();
33
34         $h = HTML();
35         $h->pushContent($msg);
36         $h->pushContent(HTML::h2(_("Plugins")));
37         $row_no = 0;
38
39         $table = HTML::table(array('class' => "pagelist"));
40         global $WikiNameRegexp;
41         foreach($plugins as $pname) {
42             $pname = str_replace(".php", "", $pname);
43             $ppname = $pname . "Plugin";
44             $temppluginclass = "<? plugin " . /*"WikiPlugin_" .*/ $pname . " ?>";
45             $w = new WikiPluginLoader;
46             $p = $w->getPlugin($pname);
47             $desc = $p->getDescription();
48
49             $pnamelink = $pname;
50             $plink = false;
51             if (preg_match("/^$WikiNameRegexp\$/", $pname) && $dbi->isWikiPage($pname))
52                 $pnamelink = WikiLink($pname);
53
54             if (preg_match("/^$WikiNameRegexp\$/", $ppname) && $dbi->isWikiPage($ppname))
55                 $plink = WikiLink($ppname);
56             else {
57                 // exclude actionpages and plugins starting with _ from page list
58                 if ( !preg_match("/^_/", $pname) && !(@$request->isActionPage($pname))) //FIXME
59                     $plink = WikiLink($ppname, 'unknown');
60                 else
61                     $plink = false;
62             }
63             $row_no++;
64             $group = (int)($row_no / 2); //_group_rows
65             $class = ($group % 2) ? 'oddrow' : 'evenrow';
66
67             if ($plink) {
68                 $tr = HTML::tr(array('class' => $class));
69                 $tr->pushContent(HTML::td($plink), HTML::td($desc));
70                 $tr2 = HTML::tr(array('class' => $class));
71                 $tr2->pushContent(HTML::td($pnamelink), HTML::td(" "));
72                 $plink = false;
73                 $table->pushContent($tr, $tr2);
74                 $row_no++;
75
76             }
77             else {
78                 $tr = HTML::tr(array('class' => $class));
79                 $tr->pushContent(HTML::td($pnamelink), HTML::td($desc));
80                 $table->pushContent($tr);
81             }
82         }
83         $h->pushContent($table);
84
85         //$h->pushContent(HTML::h2(_("Disabled Plugins")));
86
87         return $h;
88
89     }
90 };
91
92 // Local Variables:
93 // mode: php
94 // tab-width: 8
95 // c-basic-offset: 4
96 // c-hanging-comment-ender-p: nil
97 // indent-tabs-mode: nil
98 // End:
99 ?>