/** * Checks whether a page has a page type that can be indexed. * Currently standard pages and mount pages can be indexed. * * @param array $record A page record * @return boolean TRUE if the page can be indexed according to its page type, FALSE otherwise */ protected function isIndexablePageType(array $record) { return Util::isAllowedPageType($record); }
/** * Adds an item to the index queue. * * Not meant for public use. * * @param string $itemType The item's type, usually a table name. * @param string $itemUid The item's uid, usually an integer uid, could be a * different value for non-database-record types. * @param string $indexingConfiguration The item's indexing configuration to use. * Optional, overwrites existing / determined configuration. * @return void */ private function addItem($itemType, $itemUid, $indexingConfiguration) { $additionalRecordFields = ''; if ($itemType == 'pages') { $additionalRecordFields = ', doktype, uid'; } $record = BackendUtility::getRecord($itemType, $itemUid, 'pid' . $additionalRecordFields); if (empty($record) || $itemType == 'pages' && !Util::isAllowedPageType($record)) { return; } if ($itemType == 'pages') { $rootPageId = Util::getRootPageId($itemUid); } else { $rootPageId = Util::getRootPageId($record['pid']); } if (Util::isRootPage($rootPageId)) { $item = array('root' => $rootPageId, 'item_type' => $itemType, 'item_uid' => $itemUid, 'changed' => $this->getItemChangedTime($itemType, $itemUid)); if (!empty($indexingConfiguration)) { $indexingConfigurationList = array($indexingConfiguration); } else { $indexingConfigurationList = $this->getIndexingConfigurationsByItem($itemType, $itemUid, $rootPageId); } $solrConfiguration = Util::getSolrConfigurationFromPageId($rootPageId); // make a backup of the current item $baseItem = $item; foreach ($indexingConfigurationList as $indexingConfigurationCurrent) { $item = $baseItem; $item['indexing_configuration'] = $indexingConfigurationCurrent; $addItemToQueue = TRUE; // Ensure additionalWhereClause is applied. if (!empty($solrConfiguration['index.']['queue.'][$item['indexing_configuration'] . '.']['additionalWhereClause'])) { $indexingConfigurationCheckRecord = BackendUtility::getRecord($itemType, $itemUid, 'pid' . $additionalRecordFields, ' AND ' . $solrConfiguration['index.']['queue.'][$item['indexing_configuration'] . '.']['additionalWhereClause']); if (empty($indexingConfigurationCheckRecord)) { // item does not match the indexing configuration's additionalWhereClause $addItemToQueue = FALSE; } } if ($addItemToQueue) { $GLOBALS['TYPO3_DB']->exec_INSERTquery('tx_solr_indexqueue_item', $item); } } } }