mirror of
https://github.com/Codappix/search_core.git
synced 2024-11-22 11:36:12 +01:00
FEATURE: Respect pages information
* If content is on a deleted or inactive page, ignore it. * Also respect disable search setting of page.
This commit is contained in:
parent
e30463ddc7
commit
fef760ee0d
2 changed files with 28 additions and 9 deletions
|
@ -70,6 +70,10 @@ class TcaIndexer implements IndexerInterface
|
||||||
$this->logger->info('Start indexing');
|
$this->logger->info('Start indexing');
|
||||||
foreach ($this->getRecordGenerator() as $records) {
|
foreach ($this->getRecordGenerator() as $records) {
|
||||||
$this->logger->debug('Index records.', [$records]);
|
$this->logger->debug('Index records.', [$records]);
|
||||||
|
if ($records === null) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
$this->connection->addDocuments($this->tcaTableService->getTableName(), $records);
|
$this->connection->addDocuments($this->tcaTableService->getTableName(), $records);
|
||||||
}
|
}
|
||||||
$this->logger->info('Finish indexing');
|
$this->logger->info('Finish indexing');
|
||||||
|
@ -100,13 +104,13 @@ class TcaIndexer implements IndexerInterface
|
||||||
/**
|
/**
|
||||||
* @param int $offset
|
* @param int $offset
|
||||||
* @param int $limit
|
* @param int $limit
|
||||||
* @return array
|
* @return array|null
|
||||||
*/
|
*/
|
||||||
protected function getRecords($offset, $limit)
|
protected function getRecords($offset, $limit)
|
||||||
{
|
{
|
||||||
$records = $GLOBALS['TYPO3_DB']->exec_SELECTgetRows(
|
$records = $GLOBALS['TYPO3_DB']->exec_SELECTgetRows(
|
||||||
$this->tcaTableService->getFields(),
|
$this->tcaTableService->getFields(),
|
||||||
$this->tcaTableService->getTableName(),
|
$this->tcaTableService->getTableClause(),
|
||||||
$this->tcaTableService->getWhereClause(),
|
$this->tcaTableService->getWhereClause(),
|
||||||
'',
|
'',
|
||||||
'',
|
'',
|
||||||
|
@ -117,8 +121,6 @@ class TcaIndexer implements IndexerInterface
|
||||||
$this->tcaTableService->prepareRecord($record);
|
$this->tcaTableService->prepareRecord($record);
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Ignore records from sys folder?
|
|
||||||
|
|
||||||
return $records;
|
return $records;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -130,8 +132,9 @@ class TcaIndexer implements IndexerInterface
|
||||||
{
|
{
|
||||||
$record = $GLOBALS['TYPO3_DB']->exec_SELECTgetSingleRow(
|
$record = $GLOBALS['TYPO3_DB']->exec_SELECTgetSingleRow(
|
||||||
$this->tcaTableService->getFields(),
|
$this->tcaTableService->getFields(),
|
||||||
$this->tcaTableService->getTableName(),
|
$this->tcaTableService->getTableClause(),
|
||||||
$this->tcaTableService->getWhereClause() . ' AND uid = ' . (int) $identifier
|
$this->tcaTableService->getWhereClause()
|
||||||
|
. ' AND ' . $this->tcaTableService->getTableName() . '.uid = ' . (int) $identifier
|
||||||
);
|
);
|
||||||
$this->tcaTableService->prepareRecord($record);
|
$this->tcaTableService->prepareRecord($record);
|
||||||
|
|
||||||
|
|
|
@ -76,6 +76,14 @@ class TcaTableService
|
||||||
return $this->tableName;
|
return $this->tableName;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getTableClause()
|
||||||
|
{
|
||||||
|
return $this->tableName . ' LEFT JOIN pages on ' . $this->tableName . '.pid = pages.uid';
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Adjust record accordingly to configuration.
|
* Adjust record accordingly to configuration.
|
||||||
* @param array &$record
|
* @param array &$record
|
||||||
|
@ -100,6 +108,10 @@ class TcaTableService
|
||||||
$whereClause = '1=1 '
|
$whereClause = '1=1 '
|
||||||
. BackendUtility::BEenableFields($this->tableName)
|
. BackendUtility::BEenableFields($this->tableName)
|
||||||
. BackendUtility::deleteClause($this->tableName)
|
. BackendUtility::deleteClause($this->tableName)
|
||||||
|
|
||||||
|
. BackendUtility::BEenableFields('pages')
|
||||||
|
. BackendUtility::deleteClause('pages')
|
||||||
|
. ' AND pages.no_search = 0'
|
||||||
;
|
;
|
||||||
|
|
||||||
$this->logger->debug('Generated where clause.', [$this->tableName, $whereClause]);
|
$this->logger->debug('Generated where clause.', [$this->tableName, $whereClause]);
|
||||||
|
@ -111,8 +123,8 @@ class TcaTableService
|
||||||
*/
|
*/
|
||||||
public function getFields()
|
public function getFields()
|
||||||
{
|
{
|
||||||
$fields = 'uid,pid,' . implode(
|
$fields = array_merge(
|
||||||
',',
|
['uid','pid'],
|
||||||
array_filter(
|
array_filter(
|
||||||
array_keys($this->tca['columns']),
|
array_keys($this->tca['columns']),
|
||||||
function ($columnName) {
|
function ($columnName) {
|
||||||
|
@ -122,8 +134,12 @@ class TcaTableService
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
foreach ($fields as $key => $field) {
|
||||||
|
$fields[$key] = $this->tableName . '.' . $field;
|
||||||
|
}
|
||||||
|
|
||||||
$this->logger->debug('Generated fields.', [$this->tableName, $fields]);
|
$this->logger->debug('Generated fields.', [$this->tableName, $fields]);
|
||||||
return $fields;
|
return implode(',', $fields);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in a new issue