image_id = $id; } /** * Execute the job. * * @return void */ public function handle() { $image = Image::query()->where("id", "=", $this->image_id)->firstOrFail(); $gallery = Gallery::query()->where("id", "=", $image->gallery)->firstOrFail(); $tenant = Tenant::query()->where("id", "=", $gallery->tenant)->firstOrFail(); $cacheName = "cache/".$tenant->url."_".$gallery->url."_".$image->id; $tmpfname = tempnam("/tmp", "FOO").$image->filename; //Check if orginal size is cached on the current system if (Storage::disk('cache')->exists($cacheName."_orginal")) { $file = Storage::disk("cache")->get($cacheName."_orginal"); file_put_contents($tmpfname, $file); } else { $this->addAccessLog($tenant->id, $gallery->id, $image->id, "Access", $image->size); $file = Storage::disk($image->driver)->get($image->path); if(env("CACHE_ORGINAL")) { Storage::disk("cache")->put($cacheName."_orginal", $file); } file_put_contents($tmpfname, $file); } $image->exifRead = true; try{ $exit = exif_read_data($tmpfname); if(array_key_exists("DateTimeOriginal", $exit)) { $image->DateTimeOriginal = $exit["DateTimeOriginal"]; } } catch (\Exception $e) { echo $e->getMessage(); } if(empty($image->name)) { $image->name = $image->filename; } $image->saveOrFail(); unlink($tmpfname); } private function addAccessLog(int $tenant, int $gallery, int $image, string $typ, int $size) { $access = new Access(); $access->year = date("Y"); $access->month = date("m"); $access->day = date("d"); $access->hour = date("H"); $access->image = $image; $access->gallery = $gallery; $access->tenant = $tenant; $access->typ = $typ; $access->size = $size; $access->saveOrFail(); } }