1*76ad0db2SAndreas Gohr<?php 2*76ad0db2SAndreas Gohr/** 3*76ad0db2SAndreas Gohr * DokuWiki Plugin struct (Action Component) 4*76ad0db2SAndreas Gohr * 5*76ad0db2SAndreas Gohr * @license GPL 2 http://www.gnu.org/licenses/gpl-2.0.html 6*76ad0db2SAndreas Gohr * @author Andreas Gohr, Michael Große <dokuwiki@cosmocode.de> 7*76ad0db2SAndreas Gohr */ 8*76ad0db2SAndreas Gohr 9*76ad0db2SAndreas Gohr// must be run within Dokuwiki 10*76ad0db2SAndreas Gohruse plugin\struct\meta\Assignments; 11*76ad0db2SAndreas Gohruse plugin\struct\meta\SchemaData; 12*76ad0db2SAndreas Gohr 13*76ad0db2SAndreas Gohrif(!defined('DOKU_INC')) die(); 14*76ad0db2SAndreas Gohr 15*76ad0db2SAndreas Gohrclass action_plugin_struct_search extends DokuWiki_Action_Plugin { 16*76ad0db2SAndreas Gohr 17*76ad0db2SAndreas Gohr /** 18*76ad0db2SAndreas Gohr * Registers a callback function for a given event 19*76ad0db2SAndreas Gohr * 20*76ad0db2SAndreas Gohr * @param Doku_Event_Handler $controller DokuWiki's event controller object 21*76ad0db2SAndreas Gohr * @return void 22*76ad0db2SAndreas Gohr */ 23*76ad0db2SAndreas Gohr public function register(Doku_Event_Handler $controller) { 24*76ad0db2SAndreas Gohr $controller->register_hook('INDEXER_PAGE_ADD', 'BEFORE', $this, 'handle_indexing'); 25*76ad0db2SAndreas Gohr $controller->register_hook('FULLTEXT_SNIPPET_CREATE', 'BEFORE', $this, 'handle_snippets'); 26*76ad0db2SAndreas Gohr } 27*76ad0db2SAndreas Gohr 28*76ad0db2SAndreas Gohr /** 29*76ad0db2SAndreas Gohr * Adds the structured data to the page body to be indexed 30*76ad0db2SAndreas Gohr * 31*76ad0db2SAndreas Gohr * @param Doku_Event $event event object by reference 32*76ad0db2SAndreas Gohr * @param mixed $param [the parameters passed as fifth argument to register_hook() when this 33*76ad0db2SAndreas Gohr * handler was registered] 34*76ad0db2SAndreas Gohr * @return bool 35*76ad0db2SAndreas Gohr */ 36*76ad0db2SAndreas Gohr public function handle_indexing(Doku_Event $event, $param) { 37*76ad0db2SAndreas Gohr $id = $event->data['page']; 38*76ad0db2SAndreas Gohr $assignments = new Assignments(); 39*76ad0db2SAndreas Gohr $tables = $assignments->getPageAssignments($id); 40*76ad0db2SAndreas Gohr if(!$tables) return; 41*76ad0db2SAndreas Gohr 42*76ad0db2SAndreas Gohr foreach($tables as $table) { 43*76ad0db2SAndreas Gohr $schemadata = new SchemaData($table, $id, 0); 44*76ad0db2SAndreas Gohr $event->data['body'] .= $schemadata->getDataPseudoSyntax(); 45*76ad0db2SAndreas Gohr } 46*76ad0db2SAndreas Gohr } 47*76ad0db2SAndreas Gohr 48*76ad0db2SAndreas Gohr /** 49*76ad0db2SAndreas Gohr * Adds the structured data to the page body to be snippeted 50*76ad0db2SAndreas Gohr * 51*76ad0db2SAndreas Gohr * @param Doku_Event $event event object by reference 52*76ad0db2SAndreas Gohr * @param mixed $param [the parameters passed as fifth argument to register_hook() when this 53*76ad0db2SAndreas Gohr * handler was registered] 54*76ad0db2SAndreas Gohr * @return bool 55*76ad0db2SAndreas Gohr */ 56*76ad0db2SAndreas Gohr public function handle_snippets(Doku_Event $event, $param) { 57*76ad0db2SAndreas Gohr $id = $event->data['id']; 58*76ad0db2SAndreas Gohr $assignments = new Assignments(); 59*76ad0db2SAndreas Gohr $tables = $assignments->getPageAssignments($id); 60*76ad0db2SAndreas Gohr if(!$tables) return; 61*76ad0db2SAndreas Gohr 62*76ad0db2SAndreas Gohr foreach($tables as $table) { 63*76ad0db2SAndreas Gohr $schemadata = new SchemaData($table, $id, 0); 64*76ad0db2SAndreas Gohr $event->data['text'] .= $schemadata->getDataPseudoSyntax(); 65*76ad0db2SAndreas Gohr } 66*76ad0db2SAndreas Gohr } 67*76ad0db2SAndreas Gohr} 68*76ad0db2SAndreas Gohr 69*76ad0db2SAndreas Gohr// vim:ts=4:sw=4:et: 70