private function createTargetFilename($source, $transform): string
    {
        /** @var ConfigModel $settings */
        $config = ImagerService::getConfig();

        $useFilenamePattern = $config->getSetting('useFilenamePattern', $transform);
        $hashFilename = $config->getSetting('hashFilename', $transform);
        $shortHashLength = $config->getSetting('shortHashLength', $transform);

        $basename = $source->basename;
        $extension = $source->extension;

        if (isset($transform['format'])) {
            $extension = $transform['format'];
            unset($transform['format']);
        }

        if ($extension === '') {
            // todo : detect from mime type?
        }

        $this->extension = $extension;

        $transformFileString = ImagerHelpers::createTransformFilestring($transform).$config->getConfigOverrideString();

        // If $useFilenamePattern is false, use old behavior with hashFilename config setting.
        if (!$useFilenamePattern) { 
            if ($hashFilename) {
                if (\is_string($hashFilename) && $hashFilename === 'postfix') {
                    return $basename.'_'.md5($transformFileString).'.'.$extension;
                }

                return md5($basename.$transformFileString).'.'.$extension;
            }

            return $basename.$transformFileString.'.'.$extension;
        }

        // New behavior, uses filenamePattern config setting. Much joy.
        $transformFileString = ltrim($transformFileString, '_');
        $fullname = $basename.'_'.$transformFileString;

        $patternFilename = $config->getSetting('filenamePattern', $transform);
        $patternFilename = mb_ereg_replace('{extension}', $extension, $patternFilename);
        $patternFilename = mb_ereg_replace('{basename}', $basename, $patternFilename);
        $patternFilename = mb_ereg_replace('{fullname}', $fullname, $patternFilename);
        $patternFilename = mb_ereg_replace('{transformString}', $transformFileString, $patternFilename);

        $patternFilename = mb_ereg_replace('{basename\|hash}', md5($basename), $patternFilename);
        $patternFilename = mb_ereg_replace('{fullname\|hash}', md5($fullname), $patternFilename);
        $patternFilename = mb_ereg_replace('{transformString\|hash}', md5($transformFileString), $patternFilename);

        $patternFilename = mb_ereg_replace('{basename\|shorthash}', substr(md5($basename), 0, $shortHashLength), $patternFilename);
        $patternFilename = mb_ereg_replace('{fullname\|shorthash}', substr(md5($fullname), 0, $shortHashLength), $patternFilename);
        $patternFilename = mb_ereg_replace('{transformString\|shorthash}', substr(md5($transformFileString), 0, $shortHashLength), $patternFilename);

        return $patternFilename;
    }
private function createTargetFilename($source, $transform): string
    {
        /** @var ConfigModel $settings */
        $config = ImagerService::getConfig();

        $useFilenamePattern = $config->getSetting('useFilenamePattern', $transform);
        $hashFilename = $config->getSetting('hashFilename', $transform);
        $shortHashLength = $config->getSetting('shortHashLength', $transform);

        $basename = $source->basename;
        $extension = $source->extension;

        if (isset($transform['format'])) {
            $extension = $transform['format'];
            unset($transform['format']);
        }

        if ($extension === '') {
            // todo : detect from mime type?
        }

        $this->extension = $extension;

        $transformFileString = ImagerHelpers::createTransformFilestring($transform).$config->getConfigOverrideString();

        // If $useFilenamePattern is false, use old behavior with hashFilename config setting.
        if (!$useFilenamePattern) { 
            if ($hashFilename) {
                if (\is_string($hashFilename) && $hashFilename === 'postfix') {
                    return $basename.'_'.md5($transformFileString).'.'.$extension;
                }

                return md5($basename.$transformFileString).'.'.$extension;
            }

            return $basename.$transformFileString.'.'.$extension;
        }

        // New behavior, uses filenamePattern config setting. Much joy.
        $transformFileString = ltrim($transformFileString, '_');
        $fullname = $basename.'_'.$transformFileString;

        $patternFilename = $config->getSetting('filenamePattern', $transform);
        $patternFilename = mb_ereg_replace('{extension}', $extension, $patternFilename);
        $patternFilename = mb_ereg_replace('{basename}', $basename, $patternFilename);
        $patternFilename = mb_ereg_replace('{fullname}', $fullname, $patternFilename);
        $patternFilename = mb_ereg_replace('{transformString}', $transformFileString, $patternFilename);

        $patternFilename = mb_ereg_replace('{basename\|hash}', md5($basename), $patternFilename);
        $patternFilename = mb_ereg_replace('{fullname\|hash}', md5($fullname), $patternFilename);
        $patternFilename = mb_ereg_replace('{transformString\|hash}', md5($transformFileString), $patternFilename);

        $patternFilename = mb_ereg_replace('{basename\|shorthash}', substr(md5($basename), 0, $shortHashLength), $patternFilename);
        $patternFilename = mb_ereg_replace('{fullname\|shorthash}', substr(md5($fullname), 0, $shortHashLength), $patternFilename);
        $patternFilename = mb_ereg_replace('{transformString\|shorthash}', substr(md5($transformFileString), 0, $shortHashLength), $patternFilename);

        return $patternFilename;
    }
private function createTargetFilename ( $ source , $ transform ) : string { /** @var ConfigModel $settings */ $ config = ImagerService :: getConfig ( ) ; $ useFilenamePattern = $ config -> getSetting ( 'useFilenamePattern' , $ transform ) ; $ hashFilename = $ config -> getSetting ( 'hashFilename' , $ transform ) ; $ shortHashLength = $ config -> getSetting ( 'shortHashLength' , $ transform ) ; $ basename = $ source -> basename ; $ extension = $ source -> extension ; if ( isset ( $ transform [ 'format' ] ) ) { $ extension = $ transform [ 'format' ] ; unset ( $ transform [ 'format' ] ) ; } if ( $ extension === '' ) { // todo : detect from mime type? } $ this -> extension = $ extension ; $ transformFileString = ImagerHelpers :: createTransformFilestring ( $ transform ) . $ config -> getConfigOverrideString ( ) ; // If $useFilenamePattern is false, use old behavior with hashFilename config setting. if ( ! $ useFilenamePattern ) { if ( $ hashFilename ) { if ( \ is_string ( $ hashFilename ) && $ hashFilename === 'postfix' ) { return $ basename . '_' . md5 ( $ transformFileString ) . '.' . $ extension ; } return md5 ( $ basename . $ transformFileString ) . '.' . $ extension ; } return $ basename . $ transformFileString . '.' . $ extension ; } // New behavior, uses filenamePattern config setting. Much joy. $ transformFileString = ltrim ( $ transformFileString , '_' ) ; $ fullname = $ basename . '_' . $ transformFileString ; $ patternFilename = $ config -> getSetting ( 'filenamePattern' , $ transform ) ; $ patternFilename = mb_ereg_replace ( '{extension}' , $ extension , $ patternFilename ) ; $ patternFilename = mb_ereg_replace ( '{basename}' , $ basename , $ patternFilename ) ; $ patternFilename = mb_ereg_replace ( '{fullname}' , $ fullname , $ patternFilename ) ; $ patternFilename = mb_ereg_replace ( '{transformString}' , $ transformFileString , $ patternFilename ) ; $ patternFilename = mb_ereg_replace ( '{basename\|hash}' , md5 ( $ basename ) , $ patternFilename ) ; $ patternFilename = mb_ereg_replace ( '{fullname\|hash}' , md5 ( $ fullname ) , $ patternFilename ) ; $ patternFilename = mb_ereg_replace ( '{transformString\|hash}' , md5 ( $ transformFileString ) , $ patternFilename ) ; $ patternFilename = mb_ereg_replace ( '{basename\|shorthash}' , substr ( md5 ( $ basename ) , 0 , $ shortHashLength ) , $ patternFilename ) ; $ patternFilename = mb_ereg_replace ( '{fullname\|shorthash}' , substr ( md5 ( $ fullname ) , 0 , $ shortHashLength ) , $ patternFilename ) ; $ patternFilename = mb_ereg_replace ( '{transformString\|shorthash}' , substr ( md5 ( $ transformFileString ) , 0 , $ shortHashLength ) , $ patternFilename ) ; return $ patternFilename ; }
Creates target filename base on source and transform

@param LocalSourceImageModel $source
@param array                 $transform

@return string
Creates target filename base on source and transform