*/ // must be run within Dokuwiki if(!defined('DOKU_INC')) die(); define('DEBUG',false); /** * Class action_plugin_addressbook */ class action_plugin_addressbook extends DokuWiki_Action_Plugin { /** * Registers a callback function for a given event * * @param Doku_Event_Handler $controller DokuWiki's event controller object * @return void */ public function register(Doku_Event_Handler $controller) { $controller->register_hook('FORM_SEARCH_OUTPUT', 'AFTER', $this,'addSearchResults');} public function addSearchResults(Doku_Event $event, $param) { global $INPUT; $searchForm = $event->data; $list = $this->searchResult($_REQUEST['q']); if (!$list) return; $res .= '
'; $res .= '

'.$this->getLang('results msg').':

'; $syntax = plugin_load('syntax', 'addressbook'); if (count($list)<5) { foreach ($list as $l) $res .= $syntax->showcontact($l['id'],($this->getConf('search link target') != ''? $this->getConf('search link target'):false)); } else $res .= $syntax->buildIndex($list,false,($this->getConf('search link target') != ''? $this->getConf('search link target'):false)); foreach ($found as $f) $res .= $syntax->showcontact($f['id']); $res .= '
'; $searchForm->addHTML($res); } /* Maximum 20 results ! */ function searchResult ($text=false,$order='surname,firstname,cfunction'){ if ($text == false || strlen($text) < 2) return false; try { $db_helper = plugin_load('helper', 'addressbook_db'); $sqlite = $db_helper->getDB(); } catch (Exception $e) { msg($e->getMessage(), -1); return false; } $text = explode(" ",$text); $sql = "select * from addresslist WHERE instr(lower(surname || firstname || tel1 || tel2 || fax || description || cfunction || department) ,'".$text[0]."') > 0"; for ($c=1;$c 0"; $sql .= " ORDER BY $order LIMIT 20"; $query = $sqlite->query($sql); $res = $sqlite->res2arr($query); if ($sqlite->res2count($sqlite->query($sql)) == 0) { return false; } return $res; } } // vim:ts=4:sw=4:et: