contao/import — Issue #3615: Sessionstored filter and missing column
Author: importer
Created: 2011-11-29 21:53:39+00:00
State: open
Labels: Defect, framework

Wenn ein DCA Feld eine Sorting Option fuer das BE hat, und diese gesetzt wird, koennen die Ansichten bekannterweise im BE gefiltert werden.
Waehlt man nun einige Filter aus, werden diese Filterauswahlen in der Session gespeichert.

Wenn nun im DCA eines dieser Felder entfernt wird (und zugehoerige Spalte in der Tabelle nicht mehr existiert), wird beim Aufruf der DCA View die Sortiereinstellung aus der Session genommen.
Mit den veralteten Sortiereinstellungen fuer eine Column, die real in der DB nicht mehr eistiert.
Somit kommt es zu einem Fehler.

Dieses Verhalten ist auch noch in der 2.10.3 ersichtlich : http://dev.contao.org/projects/typolight/repository/entry/tags/contao-2.10.3/system/drivers/DC_Table.php#L4190
Es sollte nach dem Auslesen der $session['sorting'][$this->strTable]) auch gegen die DCA Fields kontrolliert werden, ob diese existent sind.

Einfachste Moeglichkeit ist bei fehlender Existenz, die Sortierung einfach zu resetten :

```
$overwrite = preg_quote(preg_replace('/\s+.*$/i', '', $session['sorting'][$this->strTable]), '/');
$orderBy = array_diff($orderBy, preg_grep('/^'.$overwrite.'/i', $orderBy));

array_unshift($orderBy, $session['sorting'][$this->strTable]);

if (!in_array($overwrite,array_keys($GLOBALS['TL_DCA'][$this->strTable]['fields'])))
{
$overwrite='';
unset($orderBy);
}

$this->firstOrderBy = $overwrite;
$this->orderBy = $orderBy;
```

--- _Originally created by lindesbs on November 10th, 2011, at 05:26pm (ID 3615)_