/** * @param Query $query * @param ConstraintInterface|NULL $constraints * @return array */ protected function respectFileMounts(Query $query, $constraints) { $tableName = 'sys_filemounts'; // Get the file mount identifiers for the current Backend User. $fileMounts = GeneralUtility::trimExplode(',', $this->getCurrentBackendUser()->dataLists['filemount_list']); $fileMountUids = implode(',', array_filter($fileMounts)); // Compute the clause. $clause = sprintf('uid IN (%s) %s %s', $fileMountUids, BackendUtility::BEenableFields($tableName), BackendUtility::deleteClause($tableName)); // Fetch the records. $fileMountRecords = $this->getDatabaseConnection()->exec_SELECTgetRows('path', $tableName, $clause); $constraintsRespectingFileMounts = array(); foreach ($fileMountRecords as $fileMountRecord) { if ($fileMountRecord['path']) { $constraintsRespectingFileMounts[] = $query->like('identifier', $fileMountRecord['path'] . '%'); } } $constraintsRespectingFileMounts = $query->logicalOr($constraintsRespectingFileMounts); $constraints = $query->logicalAnd($constraints, $constraintsRespectingFileMounts); return array($query, $constraints); }