44
55use TYPO3 \CMS \Core \Database \Connection ;
66use TYPO3 \CMS \Core \Database \ConnectionPool ;
7+ use TYPO3 \CMS \Core \Information \Typo3Version ;
78use TYPO3 \CMS \Core \Resource \Exception \ResourceDoesNotExistException ;
89use TYPO3 \CMS \Core \Resource \File ;
910use TYPO3 \CMS \Core \Resource \FileCollectionRepository ;
@@ -66,6 +67,28 @@ private function getFileCollectionUidsByStorageAndFolder(
6667 int $ storage ,
6768 string $ folder
6869 ): array {
70+
71+ $ typo3Version = (new Typo3Version )->getMajorVersion ();
72+
73+ if ($ typo3Version <= 12 ) {
74+ $ queryResult = $ this ->getFilesLTS12 ($ storage , $ folder );
75+ } else {
76+ $ queryResult = $ this ->getFilesLTS11 ($ storage , $ folder );
77+ }
78+
79+ $ result = [];
80+ foreach ($ queryResult as $ record ) {
81+ $ result [] = $ record ['uid ' ];
82+ }
83+
84+ return $ result ;
85+ }
86+
87+ /**
88+ * @return array<int, int>
89+ */
90+ private function getFileCollectionUidsForCategoryCollections (): array
91+ {
6992 $ connection = GeneralUtility::makeInstance (ConnectionPool::class);
7093 $ queryBuilder = $ connection ->getQueryBuilderForTable ('sys_file_collection ' );
7194 $ queryResult = $ queryBuilder
@@ -74,22 +97,7 @@ private function getFileCollectionUidsByStorageAndFolder(
7497 ->where (
7598 $ queryBuilder ->expr ()->eq (
7699 'type ' ,
77- $ queryBuilder ->createNamedParameter ('folder ' , Connection::PARAM_STR )
78- ),
79- $ queryBuilder ->expr ()->eq (
80- 'storage ' ,
81- $ queryBuilder ->createNamedParameter ($ storage , Connection::PARAM_INT )
82- ),
83- $ queryBuilder ->expr ()->neq (
84- 'folder ' ,
85- $ queryBuilder ->createNamedParameter ('' , Connection::PARAM_STR )
86- ),
87- $ queryBuilder ->expr ()->like (
88- 'folder ' ,
89- $ queryBuilder ->createNamedParameter (
90- $ queryBuilder ->escapeLikeWildcards ($ folder ) . '% ' ,
91- Connection::PARAM_STR
92- )
100+ $ queryBuilder ->createNamedParameter ('category ' , Connection::PARAM_STR )
93101 )
94102 )
95103 ->execute ()
@@ -104,9 +112,9 @@ private function getFileCollectionUidsByStorageAndFolder(
104112 }
105113
106114 /**
107- * @return array<int, int >
115+ * @return array<mixed, mixed >
108116 */
109- private function getFileCollectionUidsForCategoryCollections ( ): array
117+ private function getFilesLTS12 ( $ storage , $ folder ): array
110118 {
111119 $ connection = GeneralUtility::makeInstance (ConnectionPool::class);
112120 $ queryBuilder = $ connection ->getQueryBuilderForTable ('sys_file_collection ' );
@@ -116,17 +124,61 @@ private function getFileCollectionUidsForCategoryCollections(): array
116124 ->where (
117125 $ queryBuilder ->expr ()->eq (
118126 'type ' ,
119- $ queryBuilder ->createNamedParameter ('category ' , Connection::PARAM_STR )
127+ $ queryBuilder ->createNamedParameter ('folder ' , \Doctrine \DBAL \ParameterType::STRING )
128+ ),
129+ $ queryBuilder ->expr ()->neq (
130+ 'folder_identifier ' ,
131+ $ queryBuilder ->createNamedParameter ($ storage . ': ' . $ folder , \Doctrine \DBAL \ParameterType::STRING )
132+ ),
133+ $ queryBuilder ->expr ()->like (
134+ 'folder_identifier ' ,
135+ $ queryBuilder ->createNamedParameter (
136+ $ queryBuilder ->escapeLikeWildcards ($ folder ) . '% ' ,
137+ \Doctrine \DBAL \ParameterType::STRING
138+ )
120139 )
121140 )
122141 ->execute ()
123142 ->fetchAll ();
143+ return $ queryResult ;
124144
125- $ result = [];
126- foreach ($ queryResult as $ record ) {
127- $ result [] = $ record ['uid ' ];
128- }
129-
130- return $ result ;
145+ }
146+ /**
147+ * @return array<mixed, mixed>
148+ */
149+ private function getFilesLTS11 ($ storage , $ folder ): array
150+ {
151+ $ connection = GeneralUtility::makeInstance (ConnectionPool::class);
152+ $ queryBuilder = $ connection ->getQueryBuilderForTable ('sys_file_collection ' );
153+ $ connection = GeneralUtility::makeInstance (ConnectionPool::class);
154+ $ queryBuilder = $ connection ->getQueryBuilderForTable ('sys_file_collection ' );
155+ $ queryResult = $ queryBuilder
156+ ->select ('uid ' )
157+ ->from ('sys_file_collection ' )
158+ ->where (
159+ $ queryBuilder ->expr ()->eq (
160+ 'type ' ,
161+ $ queryBuilder ->createNamedParameter ('folder ' , Connection::PARAM_STR )
162+ ),
163+ $ queryBuilder ->expr ()->eq (
164+ 'storage ' ,
165+ $ queryBuilder ->createNamedParameter ($ storage , Connection::PARAM_INT )
166+ ),
167+ $ queryBuilder ->expr ()->neq (
168+ 'folder ' ,
169+ $ queryBuilder ->createNamedParameter ('' , Connection::PARAM_STR )
170+ ),
171+ $ queryBuilder ->expr ()->like (
172+ 'folder ' ,
173+ $ queryBuilder ->createNamedParameter (
174+ $ queryBuilder ->escapeLikeWildcards ($ folder ) . '% ' ,
175+ Connection::PARAM_STR
176+ )
177+ )
178+ )
179+ ->execute ()
180+ ->fetchAll ();
181+ return $ queryResult ;
131182 }
132183}
184+
0 commit comments