getQueryBuilderForTable('sys_refindex'); return (bool)$queryBuilder->count('hash') ->from('sys_refindex') ->where( $queryBuilder->expr()->eq('ref_table', $queryBuilder->createNamedParameter('_FILE', \PDO::PARAM_STR)), $queryBuilder->expr()->eq('softref_key', $queryBuilder->createNamedParameter('typolink_tag', \PDO::PARAM_STR)), $queryBuilder->expr()->eq('deleted', $queryBuilder->createNamedParameter(0, \PDO::PARAM_INT)) ) ->execute() ->fetchColumn(0); } /** * @return string[] All new fields and tables must exist */ public function getPrerequisites(): array { return [ DatabaseUpdatedPrerequisite::class ]; } /** * Performs the update * * @return bool */ public function executeUpdate(): bool { $connection = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable('sys_refindex'); $queryBuilder = $connection->createQueryBuilder(); $statement = $queryBuilder->select('*') ->from('sys_refindex') ->where( $queryBuilder->expr()->eq('ref_table', $queryBuilder->createNamedParameter('_FILE', \PDO::PARAM_STR)), $queryBuilder->expr()->eq('softref_key', $queryBuilder->createNamedParameter('typolink_tag', \PDO::PARAM_STR)), $queryBuilder->expr()->eq('deleted', $queryBuilder->createNamedParameter(0, \PDO::PARAM_INT)) ) ->execute(); while ($record = $statement->fetch()) { $fileReference = 0; if (MathUtility::canBeInterpretedAsInteger($record['ref_string'])) { $fileReference = $record['ref_string']; } else { try { $fileObject = ResourceFactory::getInstance()->retrieveFileOrFolderObject($record['ref_string']); if ($fileObject instanceof File) { $fileReference = $fileObject->getUid(); } } catch (Exception $e) { // Silently catch if there is no file object } } $updateQueryBuilder = $connection->createQueryBuilder(); $updateQueryBuilder->update('sys_refindex') ->where( $updateQueryBuilder->expr()->eq( 'hash', $updateQueryBuilder->createNamedParameter($record['hash'], \PDO::PARAM_STR) ) ); if ($fileReference) { $updateQueryBuilder->set('ref_table', 'sys_file') ->set('ref_uid', $fileReference) ->set('ref_string', ''); } else { $updateQueryBuilder->set('deleted', 1); } $updateQueryBuilder->execute(); } return true; } }