+ /**
+ * @param Folder $folder
+ * @param int $start
+ * @param int $maxNumberOfItems
+ * @param bool $useFilters
+ * @param bool $recursive
+ * @return File[]
+ */
+ public function getFilesInFolder(Folder $folder, $start = 0, $maxNumberOfItems = 0, $useFilters = TRUE, $recursive = FALSE) {
+ $this->assureFolderReadPermission($folder);
+
+ $rows = $this->getFileIndexRepository()->findByFolder($folder);
+
+ $filters = $useFilters == TRUE ? $this->fileAndFolderNameFilters : array();
+ $fileIdentifiers = $this->driver->getFileIdentifierListInFolder($folder->getIdentifier(), $recursive, $filters);
+ $fileIdentifiersCount = count($fileIdentifiers);
+ $items = array();
+ if ($maxNumberOfItems === 0) {
+ $maxNumberOfItems = $fileIdentifiersCount;
+ }
+ $end = min($fileIdentifiersCount, $start + $maxNumberOfItems);
+ for ($i = $start; $i < $end; $i++) {
+ $identifier = $fileIdentifiers[$i];
+ if (isset($rows[$identifier])) {
+ $fileObject = $this->getFileFactory()->getFileObject($rows[$identifier]['uid'], $rows[$identifier]);
+ } else {
+ $fileObject = $this->getFileFactory()->getFileObjectByStorageAndIdentifier($this->getUid(), $identifier);
+ }
+ $key = $fileObject->getName();
+ while (isset($items[$key])) {
+ $key .= 'z';
+ }
+ $items[$key] = $fileObject;
+ }
+ uksort($items, 'strnatcasecmp');
+
+ return $items;
+ }