contao/core — pull request #4166 by tristanlins (2012-04-11 19:02:02+00:00)
Title: Verhalten von getImage Verbessern, wenn $target genutzt wird.

(heute mal ein Ticket auf Deutsch, das auf English zu beschreiben liegt mir grade nicht)

Wenn `Controller::getImage()` mit dem Parameter `$target` genutzt wird, treten 2 Fehler auf.
1. Das Caching funktioniert nicht mehr richtig.
Das Problem ist das in Zeile [943](https://github.com/contao/core/blob/2.11.x/system/libraries/Controller.php#L943) der Cache Dateiname ermittelt wird, ohne $target zu Berücksichtigen. Wenn allerdings $target verwendet wird, wird die [Cache Datei verschoben](https://github.com/contao/core/blob/2.11.x/system/libraries/Controller.php#L1200) wodurch die Caching Bedingung nicht zum tragen kommt.
Das kann man ganz einfach überprüfen, wenn man folgenden Code verwendet

```php
getImage($source, 150, 150, 'crop', $target);
echo '

' . $this->generateImage($image, '') . '

';
echo '

' . filemtime($image) . '

';
```

wird das Bild **immer** neu gerendert, weil die Caching Bedingung nicht zum tragen kommt. Das sieht man durch die Ausgabe der Modification Time sehr deutlich.

2. Die Datei $target wird **niemals** erstellt, wenn die Cache Datei existiert.
Das kann man an folgendem Beispiel gut zeigen:

```php
$source = 'tl_files/music_academy/campus/campus_hall.jpg';
$target = 'tl_files/campus_hall.jpg';

$a = $this->getImage($source, 150, 150, 'crop');
echo '

' . $this->generateImage($a, '') . '

';
echo '

' . filemtime($a) . '

';

$b = $this->getImage($source, 150, 150, 'crop', $target);
echo '

' . $this->generateImage($b, '') . '

';
echo '

' . filemtime($b) . '

';
```

Eigentlich würde ich erwarten, dass `$a` den Pfad zur Caching Datei beinhaltet und `$b` sollte `$target` enthalten. In Wirklichkeit enthält `$b` aber ebenfalls den Pfad zur Caching Datei und die Datei `$target` wird niemals erstellt.

---

Ich ändere das Verhalten so, dass `$target` entsprechend Berücksichtigt wird. Außerdem kopiere ich die Caching Datei, um das Caching Problem zu beheben.