Project

General

Profile

Bug #82159

Updated by Wouter Wolters over 6 years ago

<pre><code class="php"> 
 \TYPO3\CMS\Backend\Form\FormDataProvider\AbstractItemProvider->buildForeignTableQueryBuilder() 
 </code></pre> 
 calls 
 <pre><code class="php"> 
 \TYPO3\CMS\Backend\Form\FormDataProvider\AbstractItemProvider->processForeignTableClause() 
 </code></pre> 
 which returns an array with the processed query parts from the foreign_table_where. 

 The GROUPBY part is an array, since the function explicitly explodes the GROUP BY fields. 

 This is then passed on to 
 <pre><code class="php"> 
 if (!empty($foreignTableClauseArray['GROUPBY'])) { 
     $queryBuilder->groupBy($foreignTableClauseArray['GROUPBY']); 
 } 
 </code></pre> 
 where it all goes wrong. to shit. This method uses the variadic operator "..." for $groupby, which contains remaining (in this case all) arguments as an array. So now we have a multi-dimensional array, where the ensuing code expects a flat array. When it attempts to quote identifiers, it ends up passing an array to strpos(), consistently causing a PHP error. 

 The end-result is that any attempt to create or edit a TCA record that contains such a foreign_table_where on one of its columns or via an inline record configuration, results in an uncaught TYPO3 Exception.

Back