Index: classes/class.tx_solr_typo3environment.php =================================================================== --- classes/class.tx_solr_typo3environment.php (revision 88560) +++ classes/class.tx_solr_typo3environment.php (working copy) @@ -32,14 +32,32 @@ */ class tx_solr_Typo3Environment implements t3lib_Singleton { + protected $configuration = array(); + /** + * Constructor loads configuration + */ + public function __construct() { + $this->configuration = $GLOBALS['TSFE']->tmpl->setup['plugin.']['tx_solr.']; + } + + /** * Checks whether file indexing is enabled. * * @return boolean TRUE if file indexing is enabled, FALSE otherwise. */ public function isFileIndexingEnabled() { - return (boolean) $GLOBALS['TSFE']->tmpl->setup['plugin.']['tx_solr.']['index.']['enableFileIndexing']; + return (boolean) $this->configuration['index.']['enableFileIndexing']; } + + /** + * Retrieves list of allowed file extensions for indexing + * + * @return string Comma separated list of allowed file extensions + */ + public function getFileIndexingAllowedTypes() { + return $this->configuration['index.']['files.']['allowedTypes']; + } } Index: classes/fileindexer/class.tx_solr_fileindexer_fileindexer.php =================================================================== --- classes/fileindexer/class.tx_solr_fileindexer_fileindexer.php (revision 88560) +++ classes/fileindexer/class.tx_solr_fileindexer_fileindexer.php (working copy) @@ -45,16 +45,25 @@ * @return array returns an array of additional Apache_Solr_Document objects */ public function getAdditionalDocuments(Apache_Solr_Document $pageDocument, array $allDocuments) { - if (t3lib_div::makeInstance('tx_solr_Typo3Environment')->isFileIndexingEnabled()) { + /** @var $typo3Environment tx_solr_Typo3Environment */ + $typo3Environment = t3lib_div::makeInstance('tx_solr_Typo3Environment'); + if ($typo3Environment->isFileIndexingEnabled()) { + $allowedFileExtensions = t3lib_div::trimExplode(',', $typo3Environment->getFileIndexingAllowedTypes(), TRUE); + /** @var $fileExtractor tx_solr_Typo3PageFileExtractor */ $fileExtractor = t3lib_div::makeInstance('tx_solr_Typo3PageFileExtractor'); + /** @var $files tx_solr_fileindexer_File[] */ $files = $fileExtractor->getFiles(); $pageDocument = tx_solr_Typo3PageIndexer::getPageSolrDocument(); // adding additional information - foreach ($files as $file) { - $file->setReferencePageDocument($pageDocument); - $file->setReferencePageDocumentId($pageDocument->id); - $file->setAccess($pageDocument->access); + foreach ($files as $fileIndex => $file) { + if (!in_array($file->getExtension(), $allowedFileExtensions)) { + unset($files[$fileIndex]); + } else { + $file->setReferencePageDocument($pageDocument); + $file->setReferencePageDocumentId($pageDocument->id); + $file->setAccess($pageDocument->access); + } } $this->addFilesToIndexQueue($files);