protected function processRecord($recordTable, $recordPageId, $recordUid, $fields)
    {
        $configurationPageId = $this->getConfigurationPageId($recordTable, $recordPageId, $recordUid);

        if ($configurationPageId === 0) {
            // when the monitored record doesn't belong to a solr configured root-page and no alternative
            // siteroot can be found this is not a relevant record
            return;
        }

        $solrConfiguration = $this->getSolrConfigurationFromPageId($configurationPageId);
        $isMonitoredRecord = $solrConfiguration->getIndexQueueIsMonitoredTable($recordTable);

        if (!$isMonitoredRecord) {
            // when it is a non monitored record, we can skip it.
            return;
        }

        $record = $this->configurationAwareRecordService->getRecord($recordTable, $recordUid, $solrConfiguration);

        if (empty($record)) {
            // TODO move this part to the garbage collector
            // check if the item should be removed from the index because it no longer matches the conditions
            $this->removeFromIndexAndQueueWhenItemInQueue($recordTable, $recordUid);
            return;
        }

        // Clear existing index queue items to prevent mount point duplicates.
        // This needs to be done before the overlay handling, because handling an overlay record should
        // not trigger a deletion.
        $isTranslation = !empty($record['sys_language_uid']) && $record['sys_language_uid'] !== 0;
        if ($recordTable === 'pages' && !$isTranslation) {
            $this->indexQueue->deleteItem('pages', $recordUid);
        }

        // only update/insert the item if we actually found a record
        $isLocalizedRecord = $this->tcaService->isLocalizedRecord($recordTable, $record);
        $recordUid = $this->tcaService->getTranslationOriginalUidIfTranslated($recordTable, $record, $recordUid);

        if ($isLocalizedRecord && !$this->getIsTranslationParentRecordEnabled($recordTable, $recordUid)) {
            // we have a localized record without a visible parent record. Nothing to do.
            return;
        }

        if ($this->tcaService->isEnabledRecord($recordTable, $record)) {
            $this->indexQueue->updateItem($recordTable, $recordUid);
        }

        if ($recordTable === 'pages') {
            $this->doPagesPostUpdateOperations($fields, $recordUid);
        }
    }
protected function processRecord($recordTable, $recordPageId, $recordUid, $fields)
    {
        $configurationPageId = $this->getConfigurationPageId($recordTable, $recordPageId, $recordUid);

        if ($configurationPageId === 0) {
            // when the monitored record doesn't belong to a solr configured root-page and no alternative
            // siteroot can be found this is not a relevant record
            return;
        }

        $solrConfiguration = $this->getSolrConfigurationFromPageId($configurationPageId);
        $isMonitoredRecord = $solrConfiguration->getIndexQueueIsMonitoredTable($recordTable);

        if (!$isMonitoredRecord) {
            // when it is a non monitored record, we can skip it.
            return;
        }

        $record = $this->configurationAwareRecordService->getRecord($recordTable, $recordUid, $solrConfiguration);

        if (empty($record)) {
            // TODO move this part to the garbage collector
            // check if the item should be removed from the index because it no longer matches the conditions
            $this->removeFromIndexAndQueueWhenItemInQueue($recordTable, $recordUid);
            return;
        }

        // Clear existing index queue items to prevent mount point duplicates.
        // This needs to be done before the overlay handling, because handling an overlay record should
        // not trigger a deletion.
        $isTranslation = !empty($record['sys_language_uid']) && $record['sys_language_uid'] !== 0;
        if ($recordTable === 'pages' && !$isTranslation) {
            $this->indexQueue->deleteItem('pages', $recordUid);
        }

        // only update/insert the item if we actually found a record
        $isLocalizedRecord = $this->tcaService->isLocalizedRecord($recordTable, $record);
        $recordUid = $this->tcaService->getTranslationOriginalUidIfTranslated($recordTable, $record, $recordUid);

        if ($isLocalizedRecord && !$this->getIsTranslationParentRecordEnabled($recordTable, $recordUid)) {
            // we have a localized record without a visible parent record. Nothing to do.
            return;
        }

        if ($this->tcaService->isEnabledRecord($recordTable, $record)) {
            $this->indexQueue->updateItem($recordTable, $recordUid);
        }

        if ($recordTable === 'pages') {
            $this->doPagesPostUpdateOperations($fields, $recordUid);
        }
    }
protected function processRecord ( $ recordTable , $ recordPageId , $ recordUid , $ fields ) { $ configurationPageId = $ this -> getConfigurationPageId ( $ recordTable , $ recordPageId , $ recordUid ) ; if ( $ configurationPageId === 0 ) { // when the monitored record doesn't belong to a solr configured root-page and no alternative // siteroot can be found this is not a relevant record return ; } $ solrConfiguration = $ this -> getSolrConfigurationFromPageId ( $ configurationPageId ) ; $ isMonitoredRecord = $ solrConfiguration -> getIndexQueueIsMonitoredTable ( $ recordTable ) ; if ( ! $ isMonitoredRecord ) { // when it is a non monitored record, we can skip it. return ; } $ record = $ this -> configurationAwareRecordService -> getRecord ( $ recordTable , $ recordUid , $ solrConfiguration ) ; if ( empty ( $ record ) ) { // TODO move this part to the garbage collector // check if the item should be removed from the index because it no longer matches the conditions $ this -> removeFromIndexAndQueueWhenItemInQueue ( $ recordTable , $ recordUid ) ; return ; } // Clear existing index queue items to prevent mount point duplicates. // This needs to be done before the overlay handling, because handling an overlay record should // not trigger a deletion. $ isTranslation = ! empty ( $ record [ 'sys_language_uid' ] ) && $ record [ 'sys_language_uid' ] !== 0 ; if ( $ recordTable === 'pages' && ! $ isTranslation ) { $ this -> indexQueue -> deleteItem ( 'pages' , $ recordUid ) ; } // only update/insert the item if we actually found a record $ isLocalizedRecord = $ this -> tcaService -> isLocalizedRecord ( $ recordTable , $ record ) ; $ recordUid = $ this -> tcaService -> getTranslationOriginalUidIfTranslated ( $ recordTable , $ record , $ recordUid ) ; if ( $ isLocalizedRecord && ! $ this -> getIsTranslationParentRecordEnabled ( $ recordTable , $ recordUid ) ) { // we have a localized record without a visible parent record. Nothing to do. return ; } if ( $ this -> tcaService -> isEnabledRecord ( $ recordTable , $ record ) ) { $ this -> indexQueue -> updateItem ( $ recordTable , $ recordUid ) ; } if ( $ recordTable === 'pages' ) { $ this -> doPagesPostUpdateOperations ( $ fields , $ recordUid ) ; } }
Process the record located in processDatamap_afterDatabaseOperations

@param string $recordTable The table the record belongs to
@param int $recordPageId pageid
@param mixed $recordUid The record's uid, [integer] or [string] (like 'NEW...')
@param array $fields The record's data
Process the record located in processDatamap_afterDatabaseOperations