123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
- #!/usr/bin/env php
- <?php
- use splitbrain\phpcli\CLI;
- use splitbrain\phpcli\Options;
- if(!defined('DOKU_INC')) define('DOKU_INC', realpath(dirname(__FILE__) . '/../') . '/');
- define('NOSESSION', 1);
- require_once(DOKU_INC . 'inc/init.php');
- /**
- * Update the Search Index from command line
- */
- class IndexerCLI extends CLI {
- private $quiet = false;
- private $clear = false;
- /**
- * Register options and arguments on the given $options object
- *
- * @param Options $options
- * @return void
- */
- protected function setup(Options $options) {
- $options->setHelp(
- 'Updates the searchindex by indexing all new or changed pages. When the -c option is ' .
- 'given the index is cleared first.'
- );
- $options->registerOption(
- 'clear',
- 'clear the index before updating',
- 'c'
- );
- $options->registerOption(
- 'quiet',
- 'don\'t produce any output',
- 'q'
- );
- }
- /**
- * Your main program
- *
- * Arguments and options have been parsed when this is run
- *
- * @param Options $options
- * @return void
- */
- protected function main(Options $options) {
- $this->clear = $options->getOpt('clear');
- $this->quiet = $options->getOpt('quiet');
- if($this->clear) $this->clearindex();
- $this->update();
- }
- /**
- * Update the index
- */
- protected function update() {
- global $conf;
- $data = array();
- $this->quietecho("Searching pages... ");
- search($data, $conf['datadir'], 'search_allpages', array('skipacl' => true));
- $this->quietecho(count($data) . " pages found.\n");
- foreach($data as $val) {
- $this->index($val['id']);
- }
- }
- /**
- * Index the given page
- *
- * @param string $id
- */
- protected function index($id) {
- $this->quietecho("$id... ");
- idx_addPage($id, !$this->quiet, $this->clear);
- $this->quietecho("done.\n");
- }
- /**
- * Clear all index files
- */
- protected function clearindex() {
- $this->quietecho("Clearing index... ");
- idx_get_indexer()->clear();
- $this->quietecho("done.\n");
- }
- /**
- * Print message if not supressed
- *
- * @param string $msg
- */
- protected function quietecho($msg) {
- if(!$this->quiet) echo $msg;
- }
- }
- // Main
- $cli = new IndexerCLI();
- $cli->run();
|