public function cacheFile($type = 'jpg', $quality = 80, $actual = false, $extras = [])
    {
        if ($type === 'guess') {
            $type = $this->guessType();
        }

        if (!$this->forceCache && !count($this->operations) && $type === $this->guessType()) {
            return $this->getFilename($this->getFilePath());
        }

        // Computes the hash
        $this->hash = $this->getHash($type, $quality, $extras);

        // Seo friendly image names
        $seofriendly = Grav::instance()['config']->get('system.images.seofriendly', false);

        if ($seofriendly) {
            $mini_hash = substr($this->hash, 0, 4) . substr($this->hash, -4);
            $cacheFile = "{$this->prettyName}-{$mini_hash}";
        } else {
            $cacheFile = "{$this->hash}-{$this->prettyName}";
        }

        $cacheFile .= '.' . $type;

        // If the files does not exists, save it
        $image = $this;

        // Target file should be younger than all the current image
        // dependencies
        $conditions = array(
            'younger-than' => $this->getDependencies()
        );

        // The generating function
        $generate = function ($target) use ($image, $type, $quality) {
            $result = $image->save($target, $type, $quality);

            if ($result !== $target) {
                throw new GenerationError($result);
            }

            Grav::instance()->fireEvent('onImageMediumSaved', new Event(['image' => $target]));
        };

        // Asking the cache for the cacheFile
        try {
            $perms = Grav::instance()['config']->get('system.images.cache_perms', '0755');
            $perms = octdec($perms);
            $file = $this->getCacheSystem()->setDirectoryMode($perms)->getOrCreateFile($cacheFile, $conditions, $generate, $actual);
        } catch (GenerationError $e) {
            $file = $e->getNewFile();
        }

        // Nulling the resource
        $this->getAdapter()->setSource(new Source\File($file));
        $this->getAdapter()->deinit();

        if ($actual) {
            return $file;
        }

        return $this->getFilename($file);
    }
public function cacheFile($type = 'jpg', $quality = 80, $actual = false, $extras = [])
    {
        if ($type === 'guess') {
            $type = $this->guessType();
        }

        if (!$this->forceCache && !count($this->operations) && $type === $this->guessType()) {
            return $this->getFilename($this->getFilePath());
        }

        // Computes the hash
        $this->hash = $this->getHash($type, $quality, $extras);

        // Seo friendly image names
        $seofriendly = Grav::instance()['config']->get('system.images.seofriendly', false);

        if ($seofriendly) {
            $mini_hash = substr($this->hash, 0, 4) . substr($this->hash, -4);
            $cacheFile = "{$this->prettyName}-{$mini_hash}";
        } else {
            $cacheFile = "{$this->hash}-{$this->prettyName}";
        }

        $cacheFile .= '.' . $type;

        // If the files does not exists, save it
        $image = $this;

        // Target file should be younger than all the current image
        // dependencies
        $conditions = array(
            'younger-than' => $this->getDependencies()
        );

        // The generating function
        $generate = function ($target) use ($image, $type, $quality) {
            $result = $image->save($target, $type, $quality);

            if ($result !== $target) {
                throw new GenerationError($result);
            }

            Grav::instance()->fireEvent('onImageMediumSaved', new Event(['image' => $target]));
        };

        // Asking the cache for the cacheFile
        try {
            $perms = Grav::instance()['config']->get('system.images.cache_perms', '0755');
            $perms = octdec($perms);
            $file = $this->getCacheSystem()->setDirectoryMode($perms)->getOrCreateFile($cacheFile, $conditions, $generate, $actual);
        } catch (GenerationError $e) {
            $file = $e->getNewFile();
        }

        // Nulling the resource
        $this->getAdapter()->setSource(new Source\File($file));
        $this->getAdapter()->deinit();

        if ($actual) {
            return $file;
        }

        return $this->getFilename($file);
    }
public function cacheFile ( $ type = 'jpg' , $ quality = 80 , $ actual = false , $ extras = [ ] ) { if ( $ type === 'guess' ) { $ type = $ this -> guessType ( ) ; } if ( ! $ this -> forceCache && ! count ( $ this -> operations ) && $ type === $ this -> guessType ( ) ) { return $ this -> getFilename ( $ this -> getFilePath ( ) ) ; } // Computes the hash $ this -> hash = $ this -> getHash ( $ type , $ quality , $ extras ) ; // Seo friendly image names $ seofriendly = Grav :: instance ( ) [ 'config' ] -> get ( 'system.images.seofriendly' , false ) ; if ( $ seofriendly ) { $ mini_hash = substr ( $ this -> hash , 0 , 4 ) . substr ( $ this -> hash , - 4 ) ; $ cacheFile = "{$this->prettyName}-{$mini_hash}" ; } else { $ cacheFile = "{$this->hash}-{$this->prettyName}" ; } $ cacheFile .= '.' . $ type ; // If the files does not exists, save it $ image = $ this ; // Target file should be younger than all the current image // dependencies $ conditions = array ( 'younger-than' => $ this -> getDependencies ( ) ) ; // The generating function $ generate = function ( $ target ) use ( $ image , $ type , $ quality ) { $ result = $ image -> save ( $ target , $ type , $ quality ) ; if ( $ result !== $ target ) { throw new GenerationError ( $ result ) ; } Grav :: instance ( ) -> fireEvent ( 'onImageMediumSaved' , new Event ( [ 'image' => $ target ] ) ) ; } ; // Asking the cache for the cacheFile try { $ perms = Grav :: instance ( ) [ 'config' ] -> get ( 'system.images.cache_perms' , '0755' ) ; $ perms = octdec ( $ perms ) ; $ file = $ this -> getCacheSystem ( ) -> setDirectoryMode ( $ perms ) -> getOrCreateFile ( $ cacheFile , $ conditions , $ generate , $ actual ) ; } catch ( GenerationError $ e ) { $ file = $ e -> getNewFile ( ) ; } // Nulling the resource $ this -> getAdapter ( ) -> setSource ( new Source \ File ( $ file ) ) ; $ this -> getAdapter ( ) -> deinit ( ) ; if ( $ actual ) { return $ file ; } return $ this -> getFilename ( $ file ) ; }
This is the same as the Gregwar Image class except this one fires a Grav Event on creation of new cached file

@param string $type the image type
@param int $quality the quality (for JPEG)
@param bool $actual
@param array $extras

@return string
This is the same as the Gregwar Image class except this one fires a Grav Event on creation of new cached file