isStaff() === true ? self::Staff : self::External; } /** * Where this audience's cached files live inside a rendition's own * directory. * * Staff keeps the bare path this app has always used for thumbnails, * rather than both audiences moving into a subdirectory of their own: * every thumbnail cached before the split was generated with no * listener altering it, which is exactly what a staff thumbnail still * is. A symmetric layout would have been tidier and would have * orphaned every one of those files on the disk, with nothing left * deriving their paths to clean them up. */ public function pathPrefix(): string { return match ($this) { self::Staff => '', self::External => 'external/', }; } }