MediaWiki Search Plugin
Moderator: General Support Moderators
Forum rules
Forumregeln
Forumregeln
- MichaZ
- Joomla! Fledgling
- Posts: 4
- Joined: Thu May 26, 2011 8:33 am
MediaWiki Search Plugin
Hallo zusammen,
bin bin gerade dabei Joomla als Intranet einzurichten. Wir haben bereits Mediawiki im Einsatz und ich möchte gerne, dass bei der Suche immer beide durchsucht werden. Hierzu gibt es das obige Plugin (http://www.dosideas.com/mediawiki-searc ... oomla.html). Dies ist jedoch leider nur für Joomla 1.5. Kann mir jemand helfen und sagen wie und ob ich es in Jommla 1.6 nutzen kann?
Besten Dank schon mal im Voraus
Micha
bin bin gerade dabei Joomla als Intranet einzurichten. Wir haben bereits Mediawiki im Einsatz und ich möchte gerne, dass bei der Suche immer beide durchsucht werden. Hierzu gibt es das obige Plugin (http://www.dosideas.com/mediawiki-searc ... oomla.html). Dies ist jedoch leider nur für Joomla 1.5. Kann mir jemand helfen und sagen wie und ob ich es in Jommla 1.6 nutzen kann?
Besten Dank schon mal im Voraus
Micha
-
- Joomla! Ace
- Posts: 1460
- Joined: Sat Jan 21, 2006 8:42 pm
Re: MediaWiki Search Plugin
Musste etwas Hand anlegen, .xml für 1.6 umschreiben und eventuell noch paar kleine Codeänderungen, danach kannste es auch in 1.6 verwenden.MichaZ wrote:Kann mir jemand helfen und sagen wie und ob ich es in Jommla 1.6 nutzen kann?
- MichaZ
- Joomla! Fledgling
- Posts: 4
- Joined: Thu May 26, 2011 8:33 am
Re: MediaWiki Search Plugin
Hallo Redeye,
danke schön, hab auch schon versucht das hinzubekommen, aber leider bisher ohne erfolg. Hast Du vielleicht einen Tipp wo genau der ode angepasst werden müsste? :-))
Danke schon mal.
danke schön, hab auch schon versucht das hinzubekommen, aber leider bisher ohne erfolg. Hast Du vielleicht einen Tipp wo genau der ode angepasst werden müsste? :-))
Danke schon mal.
-
- Joomla! Ace
- Posts: 1460
- Joined: Sat Jan 21, 2006 8:42 pm
Re: MediaWiki Search Plugin
Ohne das Plugin betrachtet zu haben, ne sry^^
Frage vorweg: .xml Datei vom plugin hast du angepasst und install unter 1.6 geht? oder hängt es auch hier noch
Frage vorweg: .xml Datei vom plugin hast du angepasst und install unter 1.6 geht? oder hängt es auch hier noch
-
- Joomla! Ace
- Posts: 1460
- Joined: Sat Jan 21, 2006 8:42 pm
Re: MediaWiki Search Plugin
Ich bins jetzt mal überflogen, hab den Code etwas geändert, alles was vor class WikiTextToHTML kommt müsstest du ändern.
Wie gesagt ich bins überflogen gerade, also keine Gewährleistung .xml musste selber noch anpassen, sollte kein Prob sein, dafür gibbet genug Beispiele, wenns net klappt meld dich wieder, ich bin aber jetzt erst mal unterwegs
edit: typo in code
Wie gesagt ich bins überflogen gerade, also keine Gewährleistung .xml musste selber noch anpassen, sollte kein Prob sein, dafür gibbet genug Beispiele, wenns net klappt meld dich wieder, ich bin aber jetzt erst mal unterwegs
Code: Select all
// no direct access
defined('_JEXEC') or die;
jimport('joomla.plugin.plugin');
class plgSearchMediaWiki extends JPlugin
{
public function onContentSearchAreas() {
static $areas = array(
'mediawiki' => 'Wiki'
);
return $areas;
}
function onContentSearch( $text, $phrase='', $ordering='', $areas=null )
{
$db = JFactory::getDBO();
$user = JFactory::getUser();
if (is_array( $areas )) {
if (!array_intersect($areas, array_keys($this->onContentSearchAreas()))) {
return array();
}
}
// load plugin params info
$limit = $this->params->def('search_limit', 50);
$searchResultsTitle = $this->params->get('search_results_title', 'Wiki');
$mediawikiDatabase = $this->params->get('mediawiki_database', 'dosideas_mwiki');
$mediawikiTablePrefix = $this->params->get('mediawiki_table_prefix', '');
$mediawikiUrl = $this->params->get('mediawiki_url', '/wiki/index.php?title=');
$text = trim( $text );
if ($text == '') {
return array();
}
switch ($ordering) {
case 'newest':
$order = 'page.page_touched DESC';
break;
case 'oldest':
$order = 'page.page_touched ASC';
break;
default:
$order = 'page.page_touched DESC';
break;
}
$text = $db->getEscaped($text);
$searchterm = '';
switch ($phrase) {
case 'any':
$searchterm = $text;
break;
case 'all':
default:
$words = explode(' ', $text);
foreach ($words as $word) {
$searchterm .= '+'.$word.' ';
}
}
//This variables contains the names of the MediaWiki tables used in the SQL query
$tablePage = '`'. $mediawikiDatabase . '`.' . $mediawikiTablePrefix . 'page';
$tableSearchindex = '`'. $mediawikiDatabase . '`.' . $mediawikiTablePrefix . 'searchindex';
$tableRevision = '`'. $mediawikiDatabase . '`.' . $mediawikiTablePrefix . 'revision';
$tableText = '`'. $mediawikiDatabase . '`.' . $mediawikiTablePrefix . 'text';
//About searching on MediaWiki tables: http://www.mediawiki.org/wiki/Manual:Searchindex_table
$query = 'SELECT "2" AS browsernav, page.page_title as titleurl, REPLACE(page.page_title, "_", " ") as title, SUBSTRING(text.old_text, 1, 240) as description'
.' FROM '.$tablePage.' AS page, '.$tableSearchindex.' AS searchindex, '.$tableRevision.' AS revision, '.$tableText.' AS text'
.' WHERE page.page_id = searchindex.si_page'
.' AND page.page_latest = revision.rev_id'
.' AND revision.rev_text_id = text.old_id'
.' AND page.page_namespace IN (0)'
.' AND page.page_is_redirect = 0'
.' AND (MATCH(searchindex.si_title) AGAINST("'.$searchterm.'" IN BOOLEAN MODE)'
.' OR MATCH(searchindex.si_text) AGAINST("'.$searchterm.'" IN BOOLEAN MODE)'
.' ) ORDER BY '.$order
;
$db->setQuery( $query, 0, $limit );
$rows = $db->loadObjectList();
$count = count( $rows );
for ( $i = 0; $i < $count; $i++ )
{
$wikitext = $rows[$i]->description;
$wikitext .= "...";
$input = explode("\n", $wikitext);
$output = WikiTextToHTML::convertWikiTextToHTML($input);
$htmltext = '';
foreach($output as $line) {
$htmltext .= $line;
}
$rows[$i]->href = $mediawikiUrl . $rows[$i]->titleurl;
$rows[$i]->section = $searchResultsTitle;
$rows[$i]->text = $htmltext;
}
return $rows;
}
}
- MichaZ
- Joomla! Fledgling
- Posts: 4
- Joined: Thu May 26, 2011 8:33 am
Re: MediaWiki Search Plugin
Hallo,
habe den Code noch etwas modifiziert. Beim suchen erhalten ich jetzt keine Fehler und das Pulgin schein auch geladen zu werden. Ich erhalte jedoch keine Suchergebnisse auch dem Wiki. Anbei mein Code...
Jemand ne Idee?
habe den Code noch etwas modifiziert. Beim suchen erhalten ich jetzt keine Fehler und das Pulgin schein auch geladen zu werden. Ich erhalte jedoch keine Suchergebnisse auch dem Wiki. Anbei mein Code...
Jemand ne Idee?
Code: Select all
// no direct access
defined( '_JEXEC' ) or die( 'Restricted access' );
$mainframe =& JFactory::getApplication();
$mainframe->registerEvent( 'onContentSearch', 'plgSearchMediaWiki' );
$mainframe->registerEvent( 'onContentSearchAreas', 'plgSearchMediaWikiAreas' );
function &plgSearchMediaWikiAreas() {
static $areas = array(
'mediawiki' => 'HoeraufWiki'
);
return $areas;
}
function plgSearchMediaWiki( $text, $phrase='', $ordering='', $areas=null ){
//-------------------------------------------------------
// Pre-processing
//-------------------------------------------------------
$mainframe =& JFactory::getApplication();
$db =& JFactory::getDBO();
$user =& JFactory::getUser();
$conf =& JFactory::getConfig();
if (is_array( $areas )) {
if (!array_intersect( $areas, array_keys( plgSearchMediaWikiAreas() ) )) {
return array();
}
}
$searchText = $text;
$text = trim( $text );
if ($text == '') {
return array();
}
// load plugin params info
$plugin =& JPluginHelper::getPlugin('search', 'modules');
$plg_params = new JRegistry;
$plg_params->loadJSON($plugin->params);
$limit = $plg_params->def('search_limit', 50);
$searchResultsTitle = $plg_params->def('search_results_title', 'Wiki');
$mediawikiDatabase = $plg_params->def('mediawiki_database', 'dosideas_mwiki');
$mediawikiTablePrefix = $plg_params->def('mediawiki_table_prefix', '');
$mediawikiUrl = $plg_params->def('mediawiki_url', '/wiki/index.php?title=');
switch ($ordering) {
case 'newest':
$order = 'page.page_touched DESC';
break;
case 'oldest':
$order = 'page.page_touched ASC';
break;
default:
$order = 'page.page_touched DESC';
break;
}
$text = $db->getEscaped($text);
$searchterm = '';
switch ($phrase) {
case 'any':
$searchterm = $text;
break;
case 'all':
default:
$words = explode(' ', $text);
foreach ($words as $word) {
$searchterm .= '+'.$word.' ';
}
}
//This variables contains the names of the MediaWiki tables used in the SQL query
$tablePage = '`'. $mediawikiDatabase . '`.' . $mediawikiTablePrefix . 'page';
$tableSearchindex = '`'. $mediawikiDatabase . '`.' . $mediawikiTablePrefix . 'searchindex';
$tableRevision = '`'. $mediawikiDatabase . '`.' . $mediawikiTablePrefix . 'revision';
$tableText = '`'. $mediawikiDatabase . '`.' . $mediawikiTablePrefix . 'text';
//About searching on MediaWiki tables: http://www.mediawiki.org/wiki/Manual:Searchindex_table
$query = 'SELECT "2" AS browsernav, page.page_title as titleurl, REPLACE(page.page_title, "_", " ") as title, SUBSTRING(text.old_text, 1, 240) as description'
.' FROM '.$tablePage.' AS page, '.$tableSearchindex.' AS searchindex, '.$tableRevision.' AS revision, '.$tableText.' AS text'
.' WHERE page.page_id = searchindex.si_page'
.' AND page.page_latest = revision.rev_id'
.' AND revision.rev_text_id = text.old_id'
.' AND page.page_namespace IN (0)'
.' AND page.page_is_redirect = 0'
.' AND (MATCH(searchindex.si_title) AGAINST("'.$searchterm.'" IN BOOLEAN MODE)'
.' OR MATCH(searchindex.si_text) AGAINST("'.$searchterm.'" IN BOOLEAN MODE)'
.' ) ORDER BY '.$order
;
$db->setQuery( $query, 0, $limit );
$rows = $db->loadObjectList();
$count = count( $rows );
for ( $i = 0; $i < $count; $i++ ) {
$wikitext = $rows[$i]->description;
$wikitext .= "...";
$input = explode("\n", $wikitext);
$output = WikiTextToHTML::convertWikiTextToHTML($input);
$htmltext = '';
foreach($output as $line) {
$htmltext .= $line;
}
$rows[$i]->href = $mediawikiUrl . $rows[$i]->titleurl;
$rows[$i]->section = $searchResultsTitle;
$rows[$i]->text = $htmltext;
}
return $rows;
}
-
- Joomla! Ace
- Posts: 1460
- Joined: Sat Jan 21, 2006 8:42 pm
Re: MediaWiki Search Plugin
Mein Ansatz hat dir ja nicht gefallen
- MichaZ
- Joomla! Fledgling
- Posts: 4
- Joined: Thu May 26, 2011 8:33 am
Re: MediaWiki Search Plugin
Hallo Redeye,
von nicht fallen kann keine Rede sein. Leider hat dieser ebenfalls nicht funktioniert. Ich habe in Deiner Zeile
$limit = $this->params->def('search_limit', 50);
ne Fehlermeldung erhalten. Deshalb mein Versuch die Sache noch mal anders anzugehen.
eine Fehlermeldung erhalten.
von nicht fallen kann keine Rede sein. Leider hat dieser ebenfalls nicht funktioniert. Ich habe in Deiner Zeile
$limit = $this->params->def('search_limit', 50);
ne Fehlermeldung erhalten. Deshalb mein Versuch die Sache noch mal anders anzugehen.
eine Fehlermeldung erhalten.
-
- Joomla! Ace
- Posts: 1460
- Joined: Sat Jan 21, 2006 8:42 pm
Re: MediaWiki Search Plugin
Wie sah der Fehler aus?
Wie geschrieben, ich bin nur drüber geflogen, find and replace, getestet hab ich nix.
$this->params->get('') sollte da keinen Fehler geben, im Grunde bräuchtest du die Params aber net, ist ja eh nur für dich, also kannste deine MediaWiki Eigenschaften auch direkt reinschreiben anstatt Params zu nehmen.
Auch wollte ich dir keinen komplett fertigen Code geben, dafür müsste ich Ihn ja testen, was bedeuten würde ich müsste mir auch MediaWiki installen...
Sollte nur nen Anhaltspunkt für dich sein wie es aussehen sollte.
Wie geschrieben, ich bin nur drüber geflogen, find and replace, getestet hab ich nix.
$this->params->get('') sollte da keinen Fehler geben, im Grunde bräuchtest du die Params aber net, ist ja eh nur für dich, also kannste deine MediaWiki Eigenschaften auch direkt reinschreiben anstatt Params zu nehmen.
Auch wollte ich dir keinen komplett fertigen Code geben, dafür müsste ich Ihn ja testen, was bedeuten würde ich müsste mir auch MediaWiki installen...
Sollte nur nen Anhaltspunkt für dich sein wie es aussehen sollte.