diff options
Diffstat (limited to 'lib/plugins')
-rw-r--r-- | lib/plugins/importoldindex/action.php | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/lib/plugins/importoldindex/action.php b/lib/plugins/importoldindex/action.php new file mode 100644 index 000000000..26b37664c --- /dev/null +++ b/lib/plugins/importoldindex/action.php @@ -0,0 +1,58 @@ +<?php +// must be run within Dokuwiki +if(!defined('DOKU_INC')) die(); + +if(!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'lib/plugins/'); +require_once(DOKU_PLUGIN.'action.php'); + +class action_plugin_importoldindex extends DokuWiki_Action_Plugin { + + function getInfo(){ + return array( + 'author' => 'Tom N Harris', + 'email' => 'tnharris@whoopdedo.org', + 'date' => '2006-11-09', + 'name' => 'Import Old Index', + 'desc' => 'Moves old index files to a new location, sorted by string length.', + 'url' => 'http://whoopdedo.org/doku/wiki' + ); + } + + function register(&$controller) { + $controller->register_hook('TEMPORARY_INDEX_UPGRADE_EVENT', 'BEFORE', $this, 'run_import'); + } + + function run_import(&$event, $args) { + global $conf; + + touch($conf['indexdir'].'/index_importing'); // changelog importing lock + // load old index + $word_idx = file($conf['cachedir'].'/word.idx'); + $idx = file($conf['cachedir'].'/index.idx'); + $words = array(); + for ($lno=0;$lno<count($word_idx);$lno++){ + $wlen = strlen($word_idx[$lno])-1; + //if($wlen<3) continue; + if(!isset($words[$wlen])) $words[$wlen] = array(); + $words[$wlen][] = $lno; + } + + foreach (array_keys($words) as $wlen) { + $new_words = array(); + $new_idx = array(); + foreach ($words[$wlen] as $lno) { + $new_words[] = $word_idx[$lno]; + $new_idx[] = $idx[$lno]; + } + io_saveFile($conf['indexdir']."/w$wlen.idx", implode('', $new_words)); + io_saveFile($conf['indexdir']."/i$wlen.idx", implode('', $new_idx)); + } + + @copy($conf['cachedir'].'/page.idx', $conf['indexdir'].'/page.idx'); + if($conf['fperm']) chmod($conf['indexdir'].'/page.idx', $conf['fperm']); + unlink($conf['indexdir'].'/index_importing'); // changelog importing unlock + plugin_disable('importoldindex'); // only needs to run once + } + +} + |