Example #1
0
 /**
  * @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);
 }