public function init()
 {
     parent::init();
     if (file_exists(PIMCORE_WEBSITE_PATH . "/var/search/search.xml")) {
         $searchConf = new Zend_Config_Xml(PIMCORE_WEBSITE_PATH . "/var/search/search.xml");
         if ($searchConf->search->frontend->enabled) {
             try {
                 Zend_Search_Lucene_Analysis_Analyzer::setDefault(new Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8Num_CaseInsensitive());
                 $this->frontendIndex = Zend_Search_Lucene::open(SearchPhp_Plugin::getFrontendSearchIndex());
                 $this->categories = explode(",", $searchConf->search->frontend->categories);
                 if ($searchConf->search->frontend->ignoreLanguage != '1') {
                     $this->searchLanguage = $this->_getParam("language");
                     if (empty($this->searchLanguage)) {
                         try {
                             $this->searchLanguage = Zend_Registry::get("Zend_Locale");
                         } catch (Exception $e) {
                             $this->searchLanguage = "en";
                         }
                     }
                 } else {
                     $this->searchLanguage = null;
                 }
                 $this->fuzzySearch = false;
                 if ($searchConf->search->frontend->fuzzySearch == '1') {
                     $this->fuzzySearch = true;
                 }
                 if ($searchConf->search->frontend->ownHostOnly) {
                     $this->ownHostOnly = true;
                 }
             } catch (Exception $e) {
                 //p_r($e);
                 throw new Exception("could not open index");
             }
         } else {
             throw new Exception("search frontend is not installed and enabled.");
         }
     }
 }
 protected function checkAndPrepareIndex()
 {
     if (!$this->index) {
         $indexDir = SearchPhp_Plugin::getFrontendSearchIndex();
         //switch to tmpIndex
         $indexDir = str_replace("/index", "/tmpindex", $indexDir);
         try {
             Zend_Search_Lucene_Analysis_Analyzer::setDefault(new Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8Num_CaseInsensitive());
             $this->index = Zend_Search_Lucene::open($indexDir);
         } catch (Exception $e) {
             logger::log(get_class($this) . ": could not open frontend index, creating new one.", Zend_Log::WARN);
             Zend_Search_Lucene::create($indexDir);
             $this->index = Zend_Search_Lucene::open($indexDir);
         }
     }
 }
ini_set("max_execution_time", "-1");
logger::log("SearchPhp_Plugin: Starting crawl", Zend_Log::DEBUG);
//TODO nix specific
exec("rm -Rf " . str_replace("/index", "/tmpindex", $indexDir) . " " . $indexDir);
$confArray = SearchPhp_Plugin::getSearchConfigArray();
$urls = explode(",", $confArray['search']['frontend']['urls']);
$validLinkRegexes = explode(",", $confArray['search']['frontend']['validLinkRegexes']);
$invalidLinkRegexes = explode(",", $confArray['search']['frontend']['invalidLinkRegexes']);
$rawConfig = new Zend_Config_Xml(PIMCORE_PLUGINS_PATH . SearchPhp_Plugin::$configFile);
$rawConfigArray = $rawConfig->toArray();
$rawConfigArray['search']['frontend']['crawler']['running'] = 1;
$rawConfigArray['search']['frontend']['crawler']['started'] = time();
$config = new Zend_Config($rawConfigArray, true);
$writer = new Zend_Config_Writer_Xml(array("config" => $config, "filename" => PIMCORE_PLUGINS_PATH . SearchPhp_Plugin::$configFile));
$writer->write();
$crawler = new SearchPhp_Frontend_Crawler($validLinkRegexes, $invalidLinkRegexes, 10, 30, $confArray['search']['frontend']['crawler']['contentStartIndicator'], $confArray['search']['frontend']['crawler']['contentEndIndicator']);
$crawler->findLinks($urls);
$rawConfig = new Zend_Config_Xml(PIMCORE_PLUGINS_PATH . SearchPhp_Plugin::$configFile);
$rawConfigArray = $rawConfig->toArray();
$rawConfigArray['search']['frontend']['crawler']['running'] = 0;
$rawConfigArray['search']['frontend']['crawler']['finished'] = time();
$config = new Zend_Config($rawConfigArray, true);
$writer = new Zend_Config_Writer_Xml(array("config" => $config, "filename" => PIMCORE_PLUGINS_PATH . SearchPhp_Plugin::$configFile));
$writer->write();
logger::log("SearchPhp_Plugin: replacing old index ...", Zend_Log::DEBUG);
$indexDir = SearchPhp_Plugin::getFrontendSearchIndex();
//TODO nix specific
exec("rm -Rf " . $indexDir);
exec("mv " . str_replace("/index", "/tmpindex", $indexDir) . " " . $indexDir);
logger::log("Search_PluginPhp: replaced old index", Zend_Log::DEBUG);
logger::log("Search_PluginPhp: Finished crawl", Zend_Log::DEBUG);