function testGetAllPages()
 {
     if (!DocumentationSearch::enabled()) {
         return;
     }
     DocumentationService::set_automatic_registration(false);
     DocumentationService::register('docs-search', BASE_PATH . '/sapphiredocs/tests/docs-search/');
     $search = DocumentationSearch::get_all_documentation_pages();
     $this->assertEquals(7, $search->Count(), '5 pages. 5 pages in entire folder');
 }
 function rebuildIndexes($quiet = false)
 {
     require_once BASE_PATH . '/sapphiredocs/thirdparty/markdown/markdown.php';
     require_once 'Zend/Search/Lucene.php';
     ini_set("memory_limit", -1);
     ini_set('max_execution_time', 0);
     // only rebuild the index if we have to. Check for either flush or the time write.lock.file
     // was last altered
     $lock = DocumentationSearch::get_index_location() . '/write.lock.file';
     $lockFileFresh = file_exists($lock) && filemtime($lock) > time() - 60 * 60 * 24;
     if ($lockFileFresh && !isset($_REQUEST['flush'])) {
         if (!$quiet) {
             echo "Index recently rebuilt. If you want to force reindex use ?flush=1";
         }
         return true;
     }
     try {
         $index = Zend_Search_Lucene::open(DocumentationSearch::get_index_location());
         $index->removeReference();
     } catch (Zend_Search_Lucene_Exception $e) {
         // user_error($e);
     }
     try {
         $index = Zend_Search_Lucene::create(DocumentationSearch::get_index_location());
     } catch (Zend_Search_Lucene_Exception $c) {
         user_error($c);
     }
     // includes registration
     $pages = DocumentationSearch::get_all_documentation_pages();
     if ($pages) {
         $count = 0;
         // iconv complains about all the markdown formatting
         // turn off notices while we parse
         $error = error_reporting();
         error_reporting('E_ALL ^ E_NOTICE');
         foreach ($pages as $page) {
             $count++;
             if (!is_dir($page->getPath())) {
                 $doc = new Zend_Search_Lucene_Document();
                 $content = $page->getMarkdown();
                 if ($content) {
                     $content = Markdown($content);
                 }
                 $doc->addField(Zend_Search_Lucene_Field::Text('content', $content));
                 $doc->addField($titleField = Zend_Search_Lucene_Field::Text('Title', $page->getTitle()));
                 $doc->addField($breadcrumbField = Zend_Search_Lucene_Field::Text('BreadcrumbTitle', $page->getBreadcrumbTitle()));
                 $doc->addField(Zend_Search_Lucene_Field::Keyword('Version', $page->getVersion()));
                 $doc->addField(Zend_Search_Lucene_Field::Keyword('Language', $page->getLang()));
                 $doc->addField(Zend_Search_Lucene_Field::Keyword('Link', $page->Link()));
                 // custom boosts
                 $titleField->boost = 1.5;
                 $breadcrumbField->boost = 1.5;
                 foreach (DocumentationSearch::$boost_by_path as $pathExpr => $boost) {
                     if (preg_match($pathExpr, $page->getRelativePath())) {
                         $doc->boost = $boost;
                     }
                 }
                 $index->addDocument($doc);
             }
             if (!$quiet) {
                 echo "adding " . $page->getPath() . "\n";
             }
         }
         error_reporting($error);
     }
     $index->commit();
     if (!$quiet) {
         echo "complete.";
     }
 }