public function folder($folder, $filename = null) { if (!preg_match('/^[0-9]+x[0-9]+$/', $folder)) { // Zijn er geen afmetingen meegegeven? return $this->onFolderNotFound(); } if (!$filename) { // Komt de afbeelding uit een subfolder($recursive)? $url = Url::getCurrentURL(); $path = array('folders' => $url->getFolders(), 'filename' => $url->getFilename()); $subfolders = array_slice($path['folders'], $this->depth + 1); $filename = implode('/', $subfolders) . '/' . $path['filename']; } $source = $this->imagesFolder . $filename; if (!file_exists($source)) { return new HttpError(404, array('warning' => 'Image "' . $filename . '" not found in "' . $this->imagesFolder . '"')); } $target = $this->targetFolder . $folder . '/' . $filename; if (!file_exists($target) || filemtime($source) > filemtime($target)) { $dimensions = explode('x', $folder); \Sledgehammer\mkdirs(dirname($target)); $image = new Image($source); $image->saveThumbnail($target, $dimensions[0], $dimensions[1]); } return new File($target); }