]> CyberLeo.Net >> Repos - SourceForge/phpwiki.git/blob - lib/plugin/InterWikiSearch.php
Connect the rest of PhpWiki to the IniConfig system. Also the keyword regular expres...
[SourceForge/phpwiki.git] / lib / plugin / InterWikiSearch.php
1 <?php // -*-php-*-
2 rcs_id('$Id: InterWikiSearch.php,v 1.6 2004-04-19 23:13:03 zorloc Exp $');
3 /**
4  Copyright 1999, 2000, 2001, 2002 $ThePhpWikiProgrammingTeam
5
6  This file is part of PhpWiki.
7
8  PhpWiki is free software; you can redistribute it and/or modify
9  it under the terms of the GNU General Public License as published by
10  the Free Software Foundation; either version 2 of the License, or
11  (at your option) any later version.
12
13  PhpWiki is distributed in the hope that it will be useful,
14  but WITHOUT ANY WARRANTY; without even the implied warranty of
15  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16  GNU General Public License for more details.
17
18  You should have received a copy of the GNU General Public License
19  along with PhpWiki; if not, write to the Free Software
20  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
21  */
22 /**
23  * @description
24  */
25 require_once('lib/PageType.php');
26
27 class WikiPlugin_InterWikiSearch
28 extends WikiPlugin
29 {
30     function getName() {
31         return _("InterWikiSearch");
32     }
33
34     function getDescription() {
35         return _("Perform searches on InterWiki sites listed in InterWikiMap.");
36     }
37
38     function getVersion() {
39         return preg_replace("/[Revision: $]/", '',
40                             "\$Revision: 1.6 $");
41     }
42
43     function getDefaultArguments() {
44         return array();
45     }
46
47     function run($dbi, $argstr, &$request, $basepage) {
48         $args = $this->getArgs($argstr, $request);
49         extract($args);
50
51         if (defined('DEBUG') && !DEBUG)
52             return $this->disabled("Sorry, this plugin is currently out of order.");
53
54         $page = $dbi->getPage($request->getArg('pagename'));
55         return new TransformedText($page,_('InterWikiMap'),array($markup => 2),
56                                    'searchableInterWikiMap');
57         /*
58         return new PageType($pagerevisionhandle,
59                             $pagename = _('InterWikiMap'),
60                             $markup = 2,
61                             $overridePageType = 'PageType_searchableInterWikiMap');
62         */
63     }
64 };
65
66
67 /**
68  * @desc
69  */
70 if (defined('DEBUG') && DEBUG) {
71 class PageFormatter_searchableInterWikiMap 
72 extends PageFormatter_interwikimap {}
73
74 class PageType_searchableInterWikiMap
75 extends PageType_interwikimap
76 {
77     function format($text) {
78         return HTML::div(array('class' => 'wikitext'),
79                          $this->_transform($this->_getHeader($text)),
80                          $this->_formatMap(),
81                          $this->_transform($this->_getFooter($text)));
82     }
83
84     function _formatMap() {
85         global $request;
86         return $this->_arrayToTable ($this->_getMap(), &$request);
87     }
88
89     function _arrayToTable ($array, &$request) {
90         $thead = HTML::thead();
91         $label[0] = _("Wiki Name");
92         $label[1] = _("Search");
93         $thead->pushContent(HTML::tr(HTML::th($label[0]),
94                                      HTML::th($label[1])));
95
96         $tbody = HTML::tbody();
97         $dbi = $request->getDbh();
98         if ($array) {
99             foreach ($array as $moniker => $interurl) {
100                 $monikertd = HTML::td(array('class' => 'interwiki-moniker'),
101                                       $dbi->isWikiPage($moniker)
102                                       ? WikiLink($moniker)
103                                       : $moniker);
104
105                 $w = new WikiPluginLoader;
106                 $p = $w->getPlugin('ExternalSearch');
107                 $argstr = sprintf('url="%s"', addslashes($interurl));
108                 $searchtd = HTML::td($p->run($dbi, $argstr, $request, $basepage));
109
110                 $tbody->pushContent(HTML::tr($monikertd, $searchtd));
111             }
112         }
113         $table = HTML::table();
114         $table->setAttr('class', 'interwiki-map');
115         $table->pushContent($thead);
116         $table->pushContent($tbody);
117
118         return $table;
119     }
120 };
121 }
122
123
124 // $Log: not supported by cvs2svn $
125 // Revision 1.5  2004/02/19 22:06:53  rurban
126 // use new class, to be able to get rid of lib/interwiki.php
127 //
128 // Revision 1.4  2004/02/17 12:11:36  rurban
129 // added missing 4th basepage arg at plugin->run() to almost all plugins. This caused no harm so far, because it was silently dropped on normal usage. However on plugin internal ->run invocations it failed. (InterWikiSearch, IncludeSiteMap, ...)
130 //
131 // Revision 1.3  2003/02/23 20:10:48  dairiki
132 // Disable currently broken plugin to prevent fatal PHP errors.
133 // (Sorry.)
134 //
135 // Revision 1.2  2003/02/22 20:49:56  dairiki
136 // Fixes for "Call-time pass by reference has been deprecated" errors.
137 //
138 // Revision 1.1  2003/01/31 22:56:21  carstenklapp
139 // New plugin which provides entry forms to search any site listed in the InterWikiMap.
140 //
141
142 // (c-file-style: "gnu")
143 // Local Variables:
144 // mode: php
145 // tab-width: 8
146 // c-basic-offset: 4
147 // c-hanging-comment-ender-p: nil
148 // indent-tabs-mode: nil
149 // End:
150 ?>