mirror of
				https://git.code.sf.net/p/seeddms/code
				synced 2025-10-31 05:11:27 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			109 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			109 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| /**
 | |
|  * Implementation of Indexer view
 | |
|  *
 | |
|  * @category   DMS
 | |
|  * @package    SeedDMS
 | |
|  * @license    GPL 2
 | |
|  * @version    @version@
 | |
|  * @author     Uwe Steinmann <uwe@steinmann.cx>
 | |
|  * @copyright  Copyright (C) 2002-2005 Markus Westphal,
 | |
|  *             2006-2008 Malcolm Cowe, 2010 Matteo Lucarelli,
 | |
|  *             2010-2012 Uwe Steinmann
 | |
|  * @version    Release: @package_version@
 | |
|  */
 | |
| 
 | |
| /**
 | |
|  * Include parent class
 | |
|  */
 | |
| require_once("class.Bootstrap.php");
 | |
| 
 | |
| /**
 | |
|  * Class which outputs the html page for Indexer view
 | |
|  *
 | |
|  * @category   DMS
 | |
|  * @package    SeedDMS
 | |
|  * @author     Markus Westphal, Malcolm Cowe, Uwe Steinmann <uwe@steinmann.cx>
 | |
|  * @copyright  Copyright (C) 2002-2005 Markus Westphal,
 | |
|  *             2006-2008 Malcolm Cowe, 2010 Matteo Lucarelli,
 | |
|  *             2010-2012 Uwe Steinmann
 | |
|  * @version    Release: @package_version@
 | |
|  */
 | |
| class SeedDMS_View_Indexer extends SeedDMS_Bootstrap_Style {
 | |
| 
 | |
| 	function tree($dms, $index, $indexconf, $folder, $indent='') { /* {{{ */
 | |
| 		set_time_limit(30);
 | |
| 		echo $indent."D ".htmlspecialchars($folder->getName())."\n";
 | |
| 		$subfolders = $folder->getSubFolders();
 | |
| 		foreach($subfolders as $subfolder) {
 | |
| 			$this->tree($dms, $index, $indexconf, $subfolder, $indent.'  ');
 | |
| 		}
 | |
| 		$documents = $folder->getDocuments();
 | |
| 		foreach($documents as $document) {
 | |
| 			echo $indent."  ".$document->getId().":".htmlspecialchars($document->getName())." ";
 | |
| 			/* If the document wasn't indexed before then just add it */
 | |
| 			$lucenesearch = new $indexconf['Search']($index);
 | |
| 			if(!($hit = $lucenesearch->getDocument($document->getId()))) {
 | |
| 				try {
 | |
| 					$index->addDocument(new $indexconf['IndexedDocument']($dms, $document, $this->converters ? $this->converters : null, false, $this->timeout));
 | |
| 					echo "(document added)";
 | |
| 				} catch(Exception $e) {
 | |
| 					echo $indent."(adding document failed '".$e->getMessage()."')";
 | |
| 				}
 | |
| 			} else {
 | |
| 				/* Check if the attribute created is set or has a value older
 | |
| 				 * than the lasted content. Documents without such an attribute
 | |
| 				 * where added when a new document was added to the dms. In such
 | |
| 				 * a case the document content  wasn't indexed.
 | |
| 				 */
 | |
| 				try {
 | |
| 					$created = (int) $hit->getDocument()->getFieldValue('created');
 | |
| 				} catch (/* Zend_Search_Lucene_ */Exception $e) {
 | |
| 					$created = 0;
 | |
| 				}
 | |
| 				$content = $document->getLatestContent();
 | |
| 				if($created >= $content->getDate()) {
 | |
| 					echo $indent."(document unchanged)";
 | |
| 				} else {
 | |
| 					$index->delete($hit->id);
 | |
| 					try {
 | |
| 						$index->addDocument(new $indexconf['IndexedDocument']($dms, $document, $this->converters ? $this->converters : null, false, $this->timeout));
 | |
| 						echo $indent."(document updated)";
 | |
| 					} catch(Exception $e) {
 | |
| 						echo $indent."(updating document failed)";
 | |
| 					}
 | |
| 				}
 | |
| 			}
 | |
| 			echo "\n";
 | |
| 		}
 | |
| 	} /* }}} */
 | |
| 
 | |
| 	function show() { /* {{{ */
 | |
| 		$dms = $this->params['dms'];
 | |
| 		$user = $this->params['user'];
 | |
| 		$index = $this->params['index'];
 | |
| 		$indexconf = $this->params['indexconf'];
 | |
| 		$recreate = $this->params['recreate'];
 | |
| 		$folder = $this->params['folder'];
 | |
| 		$this->converters = $this->params['converters'];
 | |
| 		$this->timeout = $this->params['timeout'];
 | |
| 
 | |
| 		$this->htmlStartPage(getMLText("admin_tools"));
 | |
| 		$this->globalNavigation();
 | |
| 		$this->contentStart();
 | |
| 		$this->pageNavigation(getMLText("admin_tools"), "admin_tools");
 | |
| 		$this->contentHeading(getMLText("update_fulltext_index"));
 | |
| 
 | |
| 		echo "<pre>";
 | |
| 		$this->tree($dms, $index, $indexconf, $folder);
 | |
| 		echo "</pre>";
 | |
| 
 | |
| 		$index->commit();
 | |
| 		$index->optimize();
 | |
| 
 | |
| 		$this->contentEnd();
 | |
| 		$this->htmlEndPage();
 | |
| 	} /* }}} */
 | |
| }
 | |
| ?>
 | 
