xref: /dokuwiki/bin/indexer.php (revision 3cf3c7d60c81d562c8331a377a76e86d41f8f528)
124c3e0d2SAndreas Gohr#!/usr/bin/php
224c3e0d2SAndreas Gohr<?php
378ba70a7Schrisif ('cli' != php_sapi_name()) die();
424c3e0d2SAndreas Gohr
550b78159SElan Ruusamäeini_set('memory_limit','128M');
624c3e0d2SAndreas Gohrif(!defined('DOKU_INC')) define('DOKU_INC',realpath(dirname(__FILE__).'/../').'/');
724c3e0d2SAndreas Gohrrequire_once(DOKU_INC.'inc/init.php');
824c3e0d2SAndreas Gohrrequire_once(DOKU_INC.'inc/common.php');
924c3e0d2SAndreas Gohrrequire_once(DOKU_INC.'inc/pageutils.php');
1024c3e0d2SAndreas Gohrrequire_once(DOKU_INC.'inc/search.php');
1124c3e0d2SAndreas Gohrrequire_once(DOKU_INC.'inc/indexer.php');
123a50618cSgweissbachrequire_once(DOKU_INC.'inc/auth.php');
1324c3e0d2SAndreas Gohrrequire_once(DOKU_INC.'inc/cliopts.php');
1424c3e0d2SAndreas Gohrsession_write_close();
1524c3e0d2SAndreas Gohr
1624c3e0d2SAndreas Gohr// handle options
17981f048aSGabriel Birke$short_opts = 'hcuq';
18981f048aSGabriel Birke$long_opts  = array('help', 'clear', 'update', 'quiet');
1924c3e0d2SAndreas Gohr$OPTS = Doku_Cli_Opts::getOptions(__FILE__,$short_opts,$long_opts);
2024c3e0d2SAndreas Gohrif ( $OPTS->isError() ) {
2124c3e0d2SAndreas Gohr    fwrite( STDERR, $OPTS->getMessage() . "\n");
2224c3e0d2SAndreas Gohr    _usage();
2324c3e0d2SAndreas Gohr    exit(1);
2424c3e0d2SAndreas Gohr}
2524c3e0d2SAndreas Gohr$CLEAR = false;
26981f048aSGabriel Birke$QUIET = false;
279b41be24STom N Harris$INDEXER = null;
2824c3e0d2SAndreas Gohrforeach ($OPTS->options as $key => $val) {
2924c3e0d2SAndreas Gohr    switch ($key) {
3024c3e0d2SAndreas Gohr        case 'h':
3124c3e0d2SAndreas Gohr        case 'help':
3224c3e0d2SAndreas Gohr            _usage();
3324c3e0d2SAndreas Gohr            exit;
3424c3e0d2SAndreas Gohr        case 'c':
3524c3e0d2SAndreas Gohr        case 'clear':
3624c3e0d2SAndreas Gohr            $CLEAR = true;
3724c3e0d2SAndreas Gohr            break;
38981f048aSGabriel Birke        case 'q':
39981f048aSGabriel Birke        case 'quiet':
40981f048aSGabriel Birke            $QUIET = true;
41981f048aSGabriel Birke            break;
4224c3e0d2SAndreas Gohr    }
4324c3e0d2SAndreas Gohr}
4424c3e0d2SAndreas Gohr
4524c3e0d2SAndreas Gohr#------------------------------------------------------------------------------
4624c3e0d2SAndreas Gohr# Action
4724c3e0d2SAndreas Gohr
4824c3e0d2SAndreas Gohrif($CLEAR) _clearindex();
4924c3e0d2SAndreas Gohr_update();
5024c3e0d2SAndreas Gohr
5124c3e0d2SAndreas Gohr
5224c3e0d2SAndreas Gohr
5324c3e0d2SAndreas Gohr#------------------------------------------------------------------------------
5424c3e0d2SAndreas Gohr
5524c3e0d2SAndreas Gohrfunction _usage() {
5624c3e0d2SAndreas Gohr    print "Usage: indexer.php <options>
5724c3e0d2SAndreas Gohr
5824c3e0d2SAndreas Gohr    Updates the searchindex by indexing all new or changed pages
5924c3e0d2SAndreas Gohr    when the -c option is given the index is cleared first.
6024c3e0d2SAndreas Gohr
6124c3e0d2SAndreas Gohr    OPTIONS
6224c3e0d2SAndreas Gohr        -h, --help     show this help and exit
6324c3e0d2SAndreas Gohr        -c, --clear    clear the index before updating
64981f048aSGabriel Birke        -q, --quiet    don't produce any output
6524c3e0d2SAndreas Gohr";
6624c3e0d2SAndreas Gohr}
6724c3e0d2SAndreas Gohr
6824c3e0d2SAndreas Gohrfunction _update(){
6924c3e0d2SAndreas Gohr    global $conf;
709b41be24STom N Harris    global $INDEXER;
719b41be24STom N Harris
729b41be24STom N Harris    $INDEXER = idx_get_indexer();
73a0c5c349STom N Harris
7424c3e0d2SAndreas Gohr    $data = array();
75981f048aSGabriel Birke    _quietecho("Searching pages... ");
769df39f14SRoland Alder    search($data,$conf['datadir'],'search_allpages',array('skipacl' => true));
77981f048aSGabriel Birke    _quietecho(count($data)." pages found.\n");
7824c3e0d2SAndreas Gohr
7924c3e0d2SAndreas Gohr    foreach($data as $val){
8024c3e0d2SAndreas Gohr        _index($val['id']);
8124c3e0d2SAndreas Gohr    }
8224c3e0d2SAndreas Gohr}
8324c3e0d2SAndreas Gohr
8424c3e0d2SAndreas Gohrfunction _index($id){
859b41be24STom N Harris    global $INDEXER;
8624c3e0d2SAndreas Gohr    global $CLEAR;
879b41be24STom N Harris    global $QUIET;
8824c3e0d2SAndreas Gohr
89981f048aSGabriel Birke    _quietecho("$id... ");
90d041f8dbSMichael Hamann    idx_addPage($id, !$QUIET, $CLEAR);
91981f048aSGabriel Birke    _quietecho("done.\n");
9224c3e0d2SAndreas Gohr}
9324c3e0d2SAndreas Gohr
9424c3e0d2SAndreas Gohr/**
9524c3e0d2SAndreas Gohr * Clear all index files
9624c3e0d2SAndreas Gohr */
9724c3e0d2SAndreas Gohrfunction _clearindex(){
98981f048aSGabriel Birke    _quietecho("Clearing index... ");
99*3cf3c7d6SMichael Hamann    idx_get_indexer()->clear();
100981f048aSGabriel Birke    _quietecho("done.\n");
10124c3e0d2SAndreas Gohr}
10224c3e0d2SAndreas Gohr
103981f048aSGabriel Birkefunction _quietecho($msg) {
104981f048aSGabriel Birke    global $QUIET;
105981f048aSGabriel Birke    if(!$QUIET) echo $msg;
106981f048aSGabriel Birke}
107981f048aSGabriel Birke
108e3776c06SMichael Hamann//Setup VIM: ex: et ts=2 :
109