Plugin Directory

Changeset 3087340


Ignore:
Timestamp:
05/15/2024 07:59:59 PM (23 months ago)
Author:
codealfa
Message:

committing version 4.2.1

Location:
jch-optimize/trunk
Files:
26 edited

Legend:

Unmodified
Added
Removed
  • jch-optimize/trunk/jch-optimize.php

    r3040365 r3087340  
    55 * Plugin URI: http://www.jch-optimize.net/
    66 * Description: Boost your WordPress site's performance with JCH Optimize as measured on PageSpeed
    7  * Version: 4.2.0
     7 * Version: 4.2.1
    88 * Author: Samuel Marshall
    99 * License: GNU/GPLv3
  • jch-optimize/trunk/lib/src/Css/Callbacks/CorrectUrls.php

    r3040365 r3087340  
    4848    private array $lcpImages = [];
    4949    private array $responsiveImages = [];
     50    private string $postCss = '';
    5051
    5152    public function __construct(Container $container, Registry $params, Cdn $cdn, Http2Preload $http2Preload)
     
    6768        // Lazy-load background images
    6869        if (JCH_PRO && $this->params->get('lazyload_enable', '0') && $this->params->get('pro_lazyload_bgimages', '0') && !\in_array($context, ['font-face', 'import'])) {
    69             // @see LazyLoadExtended::handleCssBgImages()
    70             return $this->getContainer()->get(LazyLoadExtended::class)->handleCssBgImages($this, $css);
     70            /** @see LazyLoadExtended::handleCssBgImages() */
     71            $css = $this->getContainer()->get(LazyLoadExtended::class)->handleCssBgImages($this, $css);
    7172        }
    72         $rsCss = '';
    7373        if (JCH_PRO && !empty($this->responsiveImages)) {
    7474            $rsImages = \array_reverse($this->responsiveImages, \true);
    75             foreach ($rsImages as $breakpoint => $rsImage) {
    76                 $tmpCss = \preg_replace_callback('#'.Parser::cssUrlWithCaptureValueToken(\true).'#', fn ($match) => \str_replace($match[1], $rsImage, $match[0]), $css);
    77                 $rsCss .= "@media (max-width: {$breakpoint}px){{$tmpCss}}";
    78             }
     75            $this->addPostCss($this->getResponsiveCss($rsImages, $css));
    7976        }
    8077
    81         return $css.$rsCss;
     78        return $css;
    8279    }
    8380
     
    105102    {
    106103        return $this->cssBgImagesSelectors;
     104    }
     105
     106    public function addPostCss(string $css): void
     107    {
     108        $this->postCss .= $css;
     109    }
     110
     111    public function getPostCss(): string
     112    {
     113        return $this->postCss;
    107114    }
    108115
     
    179186        return $matches[0];
    180187    }
     188
     189    private function getResponsiveCss(array $rsImages, $css): string
     190    {
     191        $rsCss = '';
     192        foreach ($rsImages as $breakpoint => $rsImage) {
     193            $tmpCss = \preg_replace_callback('#'.Parser::cssUrlWithCaptureValueToken(\true).'#', fn ($match) => \str_replace($match[1], $rsImage, $match[0]), $css);
     194            $rsCss .= "@media(max-width: {$breakpoint}px) {{$tmpCss}}";
     195        }
     196
     197        return $rsCss;
     198    }
    181199}
  • jch-optimize/trunk/lib/src/Css/Callbacks/HandleAtRules.php

    r3040365 r3087340  
    3535                $matches[0] = \preg_replace('#;?\\s*}$#', ';font-display:swap;}', $matches[0]);
    3636            } elseif (\preg_match('#font-display#i', $matches[0]) && $this->params->get('pro_force_swap_policy', '1')) {
    37                 $matches[0] = \preg_replace('#font-display[^;}/\'"]++([;}])#i', '_JchOptimizeVendor\\font-display:swap\\1', $matches[0]);
     37                $matches[0] = \preg_replace('#font-display[^;}/\'"]++([;}])#i', 'font-display:swap\\1', $matches[0]);
    3838            }
    39             /*if ($this->params->get('pro_optimizeFonts_enable', '0') && empty($this->cssInfos['combining-fontface'])) {
    40                             $this->fontFace[] = [
    41                                 'content' => $matches[0],
    42                                 'media' => $this->cssInfos['media']
    43                             ];
     39            if ($this->params->get('pro_optimizeFonts_enable', '0') && empty($this->cssInfos['combining-fontface'])) {
     40                $this->fontFace[] = ['content' => $matches[0], 'media' => $this->cssInfos['media']];
    4441
    45                             return '';
    46                         }*/
     42                return '';
     43            }
     44
    4745            return $matches[0];
    4846        }
  • jch-optimize/trunk/lib/src/Css/Processor.php

    r3040365 r3087340  
    152152        try {
    153153            $this->css = $oParser->processMatchesWithCallback($this->css, $this->correctUrls);
     154            $this->css .= $this->correctUrls->getPostCss();
    154155        } catch (Exception\PregErrorException $oException) {
    155156            $sPreMessage = $isHttp2 ? 'Http/2 preload failed' : 'ProcessUrls failed';
  • jch-optimize/trunk/lib/src/Helper.php

    r3040365 r3087340  
    8787    }
    8888
    89     public static function getArray(string|array|null $string): array
    90     {
    91         if (\is_array($string)) {
    92             $array = $string;
    93         } elseif (\is_string($string)) {
    94             $array = \explode(',', \trim($string));
     89    public static function getArray(mixed $value): array
     90    {
     91        if (\is_array($value)) {
     92            $array = $value;
     93        } elseif (\is_string($value)) {
     94            $array = \explode(',', \trim($value));
     95        } elseif (\is_object($value)) {
     96            $array = (array) $value;
    9597        } else {
    9698            $array = [];
    9799        }
    98100        if (!empty($array)) {
    99             $array = \array_map(function ($value) {
    100                 if (\is_string($value)) {
    101                     return \trim($value);
     101            $array = \array_map(function ($v) {
     102                if (\is_string($v)) {
     103                    return \trim($v);
    102104                }
    103                 if (\is_object($value)) {
    104                     return (array) $value;
     105                if (\is_object($v)) {
     106                    return (array) $v;
    105107                }
    106108
    107                 return $value;
     109                return $v;
    108110            }, $array);
    109111        }
  • jch-optimize/trunk/lib/src/Html/CacheManager.php

    r3040365 r3087340  
    183183            }
    184184        }
    185         if ($this->params->get('lazyload_enable', '0')) {
     185        if ($this->params->get('lazyload_enable', '0') && JCH_PRO && ($this->params->get('pro_lazyload_bgimages', '0') || $this->params->get('pro_lazyload_audiovideo', '0'))) {
    186186            $jsLazyLoadAssets = $this->getJsLazyLoadAssets();
    187187            $this->getCombinedFiles($jsLazyLoadAssets, $lazyLoadCacheId, 'js');
     
    406406        $assets = [];
    407407        $assets[]['url'] = Utils::uriFor(Paths::mediaUrl().'/core/js/ls.loader.js?'.JCH_VERSION);
    408         if (JCH_PRO && $this->params->get('pro_lazyload_effects', '0')) {
    409             $assets[]['url'] = Utils::uriFor(Paths::mediaUrl().'/core/js/ls.loader.effects.js?'.JCH_VERSION);
    410         }
    411         if (JCH_PRO && ($this->params->get('pro_lazyload_bgimages', '0') || $this->params->get('pro_lazyload_audiovideo', '0'))) {
    412             $assets[]['url'] = Utils::uriFor(Paths::mediaUrl().'/lazysizes/ls.unveilhooks.min.js?'.JCH_VERSION);
    413         }
     408        /*if (JCH_PRO && $this->params->get('pro_lazyload_effects', '0')) {
     409              $assets[]['url'] = Utils::uriFor(Paths::mediaUrl() . '/core/js/ls.loader.effects.js?' . JCH_VERSION);
     410          } */
     411        $assets[]['url'] = Utils::uriFor(Paths::mediaUrl().'/lazysizes/ls.unveilhooks.min.js?'.JCH_VERSION);
    414412        $assets[]['url'] = Utils::uriFor(Paths::mediaUrl().'/lazysizes/lazysizes.min.js?'.JCH_VERSION);
    415413
  • jch-optimize/trunk/lib/src/Html/Callbacks/LazyLoad.php

    r3040365 r3087340  
    1818use JchOptimize\Core\Exception\PregErrorException;
    1919use JchOptimize\Core\FeatureHelpers\LazyLoadExtended;
     20use JchOptimize\Core\FeatureHelpers\LCPImages;
    2021use JchOptimize\Core\FeatureHelpers\ResponsiveImages;
    2122use JchOptimize\Core\FeatureHelpers\Webp;
     
    2526use JchOptimize\Core\Html\Elements\Img;
    2627use JchOptimize\Core\Html\Elements\Picture;
    27 use JchOptimize\Core\Html\Elements\Source;
    2828use JchOptimize\Core\Html\Elements\Style;
    2929use JchOptimize\Core\Html\Elements\Video;
     
    4545
    4646    /**
    47      * @var int Height of <img> element inside picture
     47     * @var int Height of <img> element inside <picture>
    4848     */
    4949    public int $height = 1;
    50 
    5150    protected array $excludes = [];
    52 
     51    protected array $includes = [];
    5352    protected array $args = [];
    5453
     
    121120        $aExcludeClass = Helper::getArray($this->params->get('pro_excludeLazyLoadClass', []));
    122121        $this->excludes = ['url' => $aExcludesUrl, 'class' => $aExcludeClass];
     122        $includesFiles = Helper::getArray($this->params->get('includeLazyLoad', []));
     123        $includesFolders = Helper::getArray($this->params->get('includeLazyLoadFolders', []));
     124        $includesUrl = \array_merge($includesFiles, $includesFolders);
     125        $includesClass = Helper::getArray($this->params->get('includesLazyLoadClass', []));
     126        $this->includes = ['url' => $includesUrl, 'class' => $includesClass];
    123127    }
    124128
     
    126130    {
    127131        $options = $this->args;
    128         foreach ($element->getChildren() as $child) {
    129             if ($child instanceof Img) {
    130                 if ($child->hasAttribute('data-width')) {
    131                     $options['width'] = $child->attributeValue('data-width');
    132                 }
    133                 if ($child->hasAttribute('width')) {
    134                     $options['width'] = $child->getWidth();
    135                 }
    136                 if ($child->hasAttribute('data-height')) {
    137                     $options['height'] = $child->attributeValue('data-height');
    138                 }
    139                 if ($child->hasAttribute('height')) {
    140                     $options['height'] = $child->getHeight();
    141                 }
    142             }
    143         }
    144132        if (empty($options['parent'])) {
    145133            $options['parent'] = $element;
     
    147135        // Process and add content of element if not self-closing
    148136        foreach ($element->getChildren() as $index => $child) {
    149             if ($child instanceof HtmlElementInterface) {
     137            if ($child instanceof Img) {
    150138                $element->replaceChild($index, $this->lazyLoadElement($child, $options));
    151139            }
     
    155143    private function lazyLoadElement(HtmlElementInterface $element, array $options): HtmlElementInterface
    156144    {
    157         if ($options['lazyload']) {
     145        if ($options['lazyload'] && 'below_fold' == $options['section'] || $this->elementIncluded($element)) {
    158146            // If no srcset attribute was found, modify the src attribute and add a data-src attribute
    159             if ($element instanceof Img && !$element->hasAttribute('srcset') || $element instanceof Iframe) {
    160                 if (!empty($element->getSrc())) {
    161                     $width = $element->getWidth() ?: ($element->attributeValue('data-width') ?: '1');
    162                     $height = $element->getHeight() ?: ($element->attributeValue('data-height') ?: '1');
    163                     $svg = '<svg xmlns="http://www.w3.org/2000/svg" width="'.$width.'" height="'.$height.'"></svg>';
    164                     $sNewSrcValue = $element instanceof Iframe ? 'about:blank' : 'data:image/svg+xml;base64,'.\base64_encode($svg);
    165                     if ($element instanceof Img && $element->hasAttribute('loading')) {
    166                         $element->loading('lazy');
    167                     }
    168                     $element->data('src', (string) $element->getSrc());
    169                     $element->src($sNewSrcValue);
    170                     $element->class('jch-lazyload');
    171                 }
    172             }
    173             // Modern browsers will lazy-load without loading the src attribute
    174             if (($element instanceof Img || $element instanceof Source && $options['parent'] instanceof Picture) && $element->hasAttribute('srcset')) {
    175                 if (!empty($element->getSrcset())) {
    176                     $width = $element->getWidth() ?: ($element->attributeValue('data-width') ?: $options['width'] ?? '1');
    177                     $height = $element->getHeight() ?: ($element->attributeValue('data-height') ?: $options['height'] ?? '1');
    178                     $sSvgSrcset = '<svg xmlns="http://www.w3.org/2000/svg" width="'.$width.'" height="'.$height.'"></svg>';
    179                     $element->data('srcset', $element->getSrcset());
    180                     $element->srcset('data:image/svg+xml;base64,'.\base64_encode($sSvgSrcset));
    181                     if ($element instanceof Img) {
    182                         if ($element->hasAttribute('loading')) {
    183                             $element->loading('lazy');
    184                         }
    185                         $element->class('jch-lazyload');
    186                     }
    187                 }
     147            if ($element instanceof Img || $element instanceof Iframe) {
     148                $element->loading('lazy');
    188149            }
    189150            if (\JCH_PRO && ($element instanceof Audio || $element instanceof Video)) {
     
    201162                $this->getContainer()->get(LazyLoadExtended::class)->lazyLoadBgImages($element);
    202163            }
    203         } else {
     164        } elseif ('above_fold' == $options['section']) {
    204165            if ($element->hasAttribute('style')) {
    205166                \preg_match('#'.CssParser::cssUrlWithCaptureValueToken(\true).'#i', $element->getStyle(), $match);
     
    209170            }
    210171            // If lazy-load enabled, remove loading="lazy" attributes from above the fold
    211             if ($this->params->get('lazyload_enable', '0') && !$options['deferred'] && $element instanceof Img) {
     172            if ($options['lazyload'] && $element instanceof Img) {
    212173                // Remove any lazy loading
    213174                if ($element->hasAttribute('loading')) {
     
    220181    }
    221182
    222     private function elementExcluded(HtmlElementInterface $element): bool
    223     {
     183    private function filter(HtmlElementInterface $element, string $filterMethod): bool
     184    {
     185        if ('exclude' == $filterMethod) {
     186            $filter = $this->excludes;
     187        } else {
     188            $filter = $this->includes;
     189        }
    224190        // Exclude based on class
    225191        if ($element->hasAttribute('class')) {
    226             if (Helper::findExcludes($this->excludes['class'], \implode(' ', $element->getClass()))) {
     192            if (Helper::findExcludes($filter['class'], \implode(' ', $element->getClass()))) {
    227193                // Remove any lazy loading from excluded images
    228194                if ($element->hasAttribute('loading')) {
     
    236202        if ($element->hasAttribute('src')) {
    237203            // Abort if this file is excluded
    238             if (Helper::findExcludes($this->excludes['url'], (string) $element->attributeValue('src'))) {
     204            if (Helper::findExcludes($filter['url'], (string) $element->attributeValue('src'))) {
    239205                // Remove any lazy loading from excluded images
    240206                if ($element->hasAttribute('loading')) {
     
    247213        // If poster attribute was found we can also exclude using poster value
    248214        if (\JCH_PRO && $element instanceof Video && $element->hasAttribute('poster')) {
    249             if (Helper::findExcludes($this->excludes['url'], $element->getPoster())) {
     215            if (Helper::findExcludes($filter['url'], $element->getPoster())) {
    250216                return \true;
    251217            }
     
    264230                    }
    265231                }
    266                 if (Helper::findExcludes($this->excludes['url'], $image)) {
     232                if (Helper::findExcludes($filter['url'], $image)) {
    267233                    return \true;
    268234                }
     
    278244
    279245        return \false;
     246    }
     247
     248    private function elementExcluded(HtmlElementInterface $element): bool
     249    {
     250        return $this->filter($element, 'exclude');
     251    }
     252
     253    private function elementIncluded(HtmlElementInterface $element): bool
     254    {
     255        return $this->filter($element, 'include');
    280256    }
    281257
     
    319295            }
    320296        }
    321         if ($element instanceof Img) {
    322             if ($element->hasAttribute('srcset')) {
    323                 $srcset = $element->getSrcset();
    324                 $uris = Helper::extractUrlsFromSrcset($srcset);
    325                 if (($src = $element->getSrc()) !== \false) {
    326                     $uris = \array_merge($uris, [$src]);
    327                 }
    328                 foreach ($uris as $uri) {
    329                     if (Helper::findMatches($lcpImages, $uri)) {
    330                         $element->fetchpriority('high');
    331                         if ($element->hasAttribute('loading')) {
    332                             $element->loading('eager');
    333                         }
    334 
    335                         return \true;
    336                     }
    337                 }
    338             } else {
    339                 if (($src = $element->getSrc()) !== \false && Helper::findMatches($lcpImages, $src)) {
    340                     if ('picture' == $element->getParent()) {
    341                         $element->fetchpriority('high');
    342                     } else {
    343                         $this->http2Preload->preload($src, 'image', '', 'high');
    344                     }
    345                     if ($element->hasAttribute('loading')) {
    346                         $element->loading('eager');
    347                     }
    348 
    349                     return \true;
    350                 }
    351             }
     297        if ($element instanceof Img || $element instanceof Video) {
     298            return $this->getContainer()->get(LCPImages::class)->process($element);
    352299        }
    353300
  • jch-optimize/trunk/lib/src/Html/FilesManager.php

    r3040365 r3087340  
    304304        $media = $this->getMediaAttribute();
    305305        // process google font files or other CSS files added to be optimized
    306         if ('fonts.googleapis.com' == $uri->getHost()) {
     306        if ('fonts.googleapis.com' == $uri->getHost() || Helper::findExcludes(Helper::getArray($this->params->get('pro_optimize_font_files', [])), (string) $uri)) {
    307307            if (JCH_PRO) {
    308308                // @see Fonts::pushFileToFontsArray()
  • jch-optimize/trunk/lib/src/Html/HtmlManager.php

    r3040365 r3087340  
    328328        if (!$this->params->get('pro_reduce_unused_css', '0')) {
    329329            foreach ($cssUrls as $url) {
    330                 $this->appendChildToHead($this->getPreloadStyleSheet($url, 'all', 'low'));
     330                $this->appendChildToHTML($this->getPreloadStyleSheet($url, 'all', 'low'), 'body');
    331331            }
    332332        } elseif (JCH_PRO) {
  • jch-optimize/trunk/lib/src/Html/Processor.php

    r3040365 r3087340  
    8686    {
    8787        $this->html = $html;
    88         // If amp page then combine CSS and JavaScript is disabled and any feature dependent of processing generated combined files,
    89         // and also lazy load images.
     88        // If amp page then combine CSS and JavaScript is disabled and any feature dependent of
     89        // processing generated combined files, and also lazy load images.
    9090        $this->isAmpPage = (bool) \preg_match('#<html [^>]*?(?:&\\#26A1;|\\bamp\\b)#i', $html);
    9191    }
     
    227227
    228228            try {
    229                 $http2Args = ['lazyload' => \false, 'deferred' => \false, 'parent' => ''];
     229                $http2Args = ['section' => 'above_fold', 'lazyload' => $bLazyLoad, 'parent' => ''];
    230230                $oAboveFoldParser = new \JchOptimize\Core\Html\Parser();
    231231                // language=RegExp
    232                 $this->setupLazyLoadCriteria($oAboveFoldParser, \false);
     232                $this->setupLazyLoadCriteria($oAboveFoldParser, 'above_fold');
    233233
    234234                /** @var LazyLoad $http2Callback */
     
    237237                $processedAboveFoldHtml = $oAboveFoldParser->processMatchesWithCallback($aboveFoldHtml, $http2Callback);
    238238                $oBelowFoldParser = new \JchOptimize\Core\Html\Parser();
    239                 $lazyLoadArgs = ['lazyload' => $bLazyLoad, 'deferred' => \true, 'parent' => ''];
    240                 $this->setupLazyLoadCriteria($oBelowFoldParser, \true);
     239                $lazyLoadArgs = ['section' => 'below_fold', 'lazyload' => $bLazyLoad, 'parent' => ''];
     240                $this->setupLazyLoadCriteria($oBelowFoldParser, 'below_fold');
    241241
    242242                /** @var LazyLoad $lazyLoadCallback */
     
    258258    public function processImageAttributes(): void
    259259    {
    260         if ($this->params->get('img_attributes_enable', '0') || $this->params->get('lazyload_enable', '0') && $this->params->get('lazyload_autosize', '0') || JCH_PRO && $this->params->get('pro_load_responsive_images', '0')) {
     260        if ($this->params->get('img_attributes_enable', '0') || JCH_PRO && $this->params->get('pro_load_responsive_images', '0')) {
    261261            !\JCH_DEBUG ?: Profiler::start('ProcessImageAttributes');
    262262            $oParser = new \JchOptimize\Core\Html\Parser();
  • jch-optimize/trunk/lib/src/Uri/UriConverter.php

    r3040365 r3087340  
    2525    {
    2626        $resolvedUri = UriResolver::resolve(SystemUri::currentUri(), $uri);
    27         $path = \str_replace(\JchOptimize\Core\Uri\Utils::originDomains(), Paths::basePath().'/', (string) $resolvedUri->withQuery('')->withFragment(''));
     27        $path = \str_replace(\JchOptimize\Core\Uri\Utils::originDomains(), Paths::rootPath().'/', (string) $resolvedUri->withQuery('')->withFragment(''));
    2828        // convert all directory to unix style
    2929        return \strtr(\rawurldecode($path), '\\', '/');
  • jch-optimize/trunk/lib/vendor/codealfa/minify/src/Js.php

    r2947895 r3087340  
    192192        //characters: ! \ $ _ [ ( { + - and if it follows a non-ASCII character or an ASCII letter or digit or one of these
    193193        //characters: \ $ _ ] ) } + - " ' ` ...ie., all ASCII characters except those listed respectively
    194         //(or one of these characters: ) " ' ` followed by a string)
     194        //(or one of these characters: ) } ] " ' ` followed by a string)
    195195        $ln = '(?<=[!\#%&*./,:;<=>?@\^|~{\[(])\n|\n(?=[\#%&*./,:;<=>?@\^|~}\])])|(?<![\)"\'`])\\n(?=[\'"`])';
    196196
    197197        //line feeds to keep
    198         $k2 = "(?<=[\$_a-z0-9\\\\\])}+\-\"'`]|$na)\\n(?=[!\$_a-z0-9\\\\\[({+\-]|$na)|(?<=[\)\"'`])\\n(?=[\"'`])";
     198        $k2 = "(?<=[\$_a-z0-9\\\\\])}+\-\"'`]|$na)\\n(?=[!\$_a-z0-9\\\\\[({+\-]|$na)|(?<=[\)}\]\"'`])\\n(?=[\"'`])";
    199199
    200200        //remove unnecessary linefeeds and spaces
  • jch-optimize/trunk/lib/vendor/codealfa/regextokenizer/src/Html.php

    r2947895 r3087340  
    2828     * Regex token for an array of HTML elements
    2929     *
    30      * @param   string[]  $elements Array of names of HTML elements
     30     * @param string[] $elements Array of names of HTML elements
    3131     *
    3232     * @return string
     
    4444     * Regex token for an HTML element
    4545     *
    46      * @param   string  $element        Name of HTML element
    47      * @param   bool    $isSelfClosing Whether element is self-closing
     46     * @param string $element Name of HTML element
     47     * @param bool $isSelfClosing Whether element is self-closing
    4848     *
    4949     * @return string
     
    5858        }
    5959        return $tag;
     60    }
     61    //language=RegExp
     62    public static function htmlNestedElementToken(string $element) : string
     63    {
     64        $attributes = self::parseAttributesStatic();
     65        return "(?<{$element}><{$element}\\b(?:\\s++{$attributes})?\\s*+>" . "(?>(?>(?:<(?!/?{$element}[^<>]*>))?[^<]++)++|(?&{$element}))*+</{$element}\\s*+>)";
    6066    }
    6167    /**
     
    8288     * Regex token for an HTML attribute, optionally capturing the value in a capture group
    8389     *
    84      * @param   string $attrName
    85      * @param   bool    $captureValue
    86      * @param   bool    $captureDelimiter
    87      * @param   string $matchedValue
     90     * @param string $attrName
     91     * @param bool $captureValue
     92     * @param bool $captureDelimiter
     93     * @param string $matchedValue
    8894     *
    8995     * @return string
     
    125131     * Regex token for a self closing HTML element
    126132     *
    127      * @param   string  $element Name of element
     133     * @param string $element Name of element
    128134     *
    129135     * @return string
  • jch-optimize/trunk/lib/vendor/composer/autoload_classmap.php

    r3040365 r3087340  
    7373    'JchOptimize\\Core\\FeatureHelpers\\Fonts' => $baseDir . '/src/FeatureHelpers/Fonts.php',
    7474    'JchOptimize\\Core\\FeatureHelpers\\Http2Excludes' => $baseDir . '/src/FeatureHelpers/Http2Excludes.php',
     75    'JchOptimize\\Core\\FeatureHelpers\\LCPImages' => $baseDir . '/src/FeatureHelpers/LCPImages.php',
    7576    'JchOptimize\\Core\\FeatureHelpers\\LazyLoadExtended' => $baseDir . '/src/FeatureHelpers/LazyLoadExtended.php',
    7677    'JchOptimize\\Core\\FeatureHelpers\\ReduceDom' => $baseDir . '/src/FeatureHelpers/ReduceDom.php',
  • jch-optimize/trunk/lib/vendor/composer/autoload_static.php

    r3040365 r3087340  
    336336        'JchOptimize\\Core\\FeatureHelpers\\Fonts' => __DIR__ . '/../..' . '/src/FeatureHelpers/Fonts.php',
    337337        'JchOptimize\\Core\\FeatureHelpers\\Http2Excludes' => __DIR__ . '/../..' . '/src/FeatureHelpers/Http2Excludes.php',
     338        'JchOptimize\\Core\\FeatureHelpers\\LCPImages' => __DIR__ . '/../..' . '/src/FeatureHelpers/LCPImages.php',
    338339        'JchOptimize\\Core\\FeatureHelpers\\LazyLoadExtended' => __DIR__ . '/../..' . '/src/FeatureHelpers/LazyLoadExtended.php',
    339340        'JchOptimize\\Core\\FeatureHelpers\\ReduceDom' => __DIR__ . '/../..' . '/src/FeatureHelpers/ReduceDom.php',
  • jch-optimize/trunk/lib/vendor/composer/installed.php

    r3040365 r3087340  
    33namespace _JchOptimizeVendor;
    44
    5 return array('root' => array('pretty_version' => 'dev-master', 'version' => 'dev-master', 'type' => 'library', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), 'reference' => '857797bdb745daf47b8f4e5410bcdc902b7b7341', 'name' => 'jchoptimize/lib', 'dev' => \false), 'versions' => array('codealfa/minify' => array('pretty_version' => 'dev-master', 'version' => 'dev-master', 'type' => 'library', 'install_path' => __DIR__ . '/../codealfa/minify', 'aliases' => array(0 => '9999999-dev'), 'reference' => 'a11d3fc4da27e170ca8cb9f966915ff9cfdc519d', 'dev_requirement' => \false), 'codealfa/regextokenizer' => array('pretty_version' => 'dev-master', 'version' => 'dev-master', 'type' => 'library', 'install_path' => __DIR__ . '/../codealfa/regextokenizer', 'aliases' => array(0 => '9999999-dev'), 'reference' => 'b660bf5d561078f40bcbf1a68eeb63428a14b17d', 'dev_requirement' => \false), 'composer/ca-bundle' => array('pretty_version' => 'dev-main', 'version' => 'dev-main', 'type' => 'library', 'install_path' => __DIR__ . '/./ca-bundle', 'aliases' => array(0 => '1.x-dev'), 'reference' => '4d0ae9807cf38e759b6f10b09195b3addd7d8685', 'dev_requirement' => \false), 'container-interop/container-interop' => array('dev_requirement' => \false, 'replaced' => array(0 => '^1.2.0')), 'guzzlehttp/guzzle' => array('pretty_version' => '7.5.x-dev', 'version' => '7.5.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../guzzlehttp/guzzle', 'aliases' => array(), 'reference' => '584d1f06b5caa07b0587f5054d551ed65460ce5d', 'dev_requirement' => \false), 'guzzlehttp/promises' => array('pretty_version' => '1.5.x-dev', 'version' => '1.5.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../guzzlehttp/promises', 'aliases' => array(), 'reference' => '67ab6e18aaa14d753cc148911d273f6e6cb6721e', 'dev_requirement' => \false), 'guzzlehttp/psr7' => array('pretty_version' => '1.9.x-dev', 'version' => '1.9.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../guzzlehttp/psr7', 'aliases' => array(), 'reference' => 'e4490cabc77465aaee90b20cfc9a770f8c04be6b', 'dev_requirement' => \false), 'illuminate/collections' => array('pretty_version' => '8.x-dev', 'version' => '8.9999999.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../illuminate/collections', 'aliases' => array(), 'reference' => '705a4e1ef93cd492c45b9b3e7911cccc990a07f4', 'dev_requirement' => \false), 'illuminate/contracts' => array('pretty_version' => '8.x-dev', 'version' => '8.9999999.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../illuminate/contracts', 'aliases' => array(), 'reference' => '5e0fd287a1b22a6b346a9f7cd484d8cf0234585d', 'dev_requirement' => \false), 'illuminate/macroable' => array('pretty_version' => '8.x-dev', 'version' => '8.9999999.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../illuminate/macroable', 'aliases' => array(), 'reference' => 'aed81891a6e046fdee72edd497f822190f61c162', 'dev_requirement' => \false), 'intervention/image' => array('pretty_version' => '2.7.2', 'version' => '2.7.2.0', 'type' => 'library', 'install_path' => __DIR__ . '/../intervention/image', 'aliases' => array(), 'reference' => '04be355f8d6734c826045d02a1079ad658322dad', 'dev_requirement' => \false), 'jchoptimize/lib' => array('pretty_version' => 'dev-master', 'version' => 'dev-master', 'type' => 'library', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), 'reference' => '857797bdb745daf47b8f4e5410bcdc902b7b7341', 'dev_requirement' => \false), 'joomla/controller' => array('pretty_version' => 'dev-2.0-dev', 'version' => 'dev-2.0-dev', 'type' => 'joomla-package', 'install_path' => __DIR__ . '/../joomla/controller', 'aliases' => array(0 => '2.0.x-dev'), 'reference' => '6a5a386246f6e67ab0c3a4e71d27f0f208720b65', 'dev_requirement' => \false), 'joomla/di' => array('pretty_version' => 'dev-2.0-dev', 'version' => 'dev-2.0-dev', 'type' => 'joomla-package', 'install_path' => __DIR__ . '/../joomla/di', 'aliases' => array(0 => '2.0.x-dev'), 'reference' => 'b68f8de6c3a214eac22c2172f966d8965fd47f9c', 'dev_requirement' => \false), 'joomla/filesystem' => array('pretty_version' => 'dev-1.x-dev', 'version' => 'dev-1.x-dev', 'type' => 'joomla-package', 'install_path' => __DIR__ . '/../joomla/filesystem', 'aliases' => array(), 'reference' => '9ad5d9b64960f0ea56fb71364a33622843b95c27', 'dev_requirement' => \false), 'joomla/filter' => array('pretty_version' => 'dev-2.0-dev', 'version' => 'dev-2.0-dev', 'type' => 'joomla-package', 'install_path' => __DIR__ . '/../joomla/filter', 'aliases' => array(0 => '2.0.x-dev'), 'reference' => '9102630f9069351c1259b6f585a704fde7029d2a', 'dev_requirement' => \false), 'joomla/input' => array('pretty_version' => 'dev-2.0-dev', 'version' => 'dev-2.0-dev', 'type' => 'joomla-package', 'install_path' => __DIR__ . '/../joomla/input', 'aliases' => array(0 => '2.0.x-dev'), 'reference' => '80d2b6384d60307a11b9af39bdc9a8d254949e94', 'dev_requirement' => \false), 'joomla/model' => array('pretty_version' => 'dev-2.0-dev', 'version' => 'dev-2.0-dev', 'type' => 'joomla-package', 'install_path' => __DIR__ . '/../joomla/model', 'aliases' => array(0 => '2.0.x-dev'), 'reference' => 'f322645993346efa5505500f59d6471cbd0d564b', 'dev_requirement' => \false), 'joomla/registry' => array('pretty_version' => 'dev-2.0-dev', 'version' => 'dev-2.0-dev', 'type' => 'joomla-package', 'install_path' => __DIR__ . '/../joomla/registry', 'aliases' => array(0 => '2.0.x-dev'), 'reference' => 'fde95733e7e2634d64bff71f611ee02b9ceff354', 'dev_requirement' => \false), 'joomla/renderer' => array('pretty_version' => '2.0.1', 'version' => '2.0.1.0', 'type' => 'joomla-package', 'install_path' => __DIR__ . '/../joomla/renderer', 'aliases' => array(), 'reference' => '0b514c40d3858fbbbf3bf3347832bc4fc3e776da', 'dev_requirement' => \false), 'joomla/string' => array('pretty_version' => 'dev-2.0-dev', 'version' => 'dev-2.0-dev', 'type' => 'joomla-package', 'install_path' => __DIR__ . '/../joomla/string', 'aliases' => array(0 => '2.0.x-dev'), 'reference' => 'c7a9330f7316a574f3ff538053fa65dc38bafbe6', 'dev_requirement' => \false), 'joomla/utilities' => array('pretty_version' => 'dev-2.0-dev', 'version' => 'dev-2.0-dev', 'type' => 'joomla-package', 'install_path' => __DIR__ . '/../joomla/utilities', 'aliases' => array(0 => '2.0.x-dev'), 'reference' => '2baa8af18fd2ee5a185606b91ab2e273f77e5e4b', 'dev_requirement' => \false), 'joomla/view' => array('pretty_version' => 'dev-2.0-dev', 'version' => 'dev-2.0-dev', 'type' => 'joomla-package', 'install_path' => __DIR__ . '/../joomla/view', 'aliases' => array(0 => '2.0.x-dev'), 'reference' => '7d5e706b29cac01d0b1ee11b871eabaa823f9063', 'dev_requirement' => \false), 'laminas/laminas-cache' => array('pretty_version' => '3.0.x-dev', 'version' => '3.0.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../laminas/laminas-cache', 'aliases' => array(), 'reference' => '86b47eb7b05bc4d24edafb3039494ba81405983b', 'dev_requirement' => \false), 'laminas/laminas-cache-storage-adapter-apcu' => array('pretty_version' => '2.1.x-dev', 'version' => '2.1.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../laminas/laminas-cache-storage-adapter-apcu', 'aliases' => array(), 'reference' => '344aa69ff029788bd340a3bda63754d24623bd85', 'dev_requirement' => \false), 'laminas/laminas-cache-storage-adapter-blackhole' => array('pretty_version' => '2.0.x-dev', 'version' => '2.0.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../laminas/laminas-cache-storage-adapter-blackhole', 'aliases' => array(), 'reference' => 'fdb6c4b9813cc7365d72c002b09dc808e34b7002', 'dev_requirement' => \false), 'laminas/laminas-cache-storage-adapter-filesystem' => array('pretty_version' => '2.1.x-dev', 'version' => '2.1.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../laminas/laminas-cache-storage-adapter-filesystem', 'aliases' => array(), 'reference' => 'd9712a8292fc0a84219e4aba97b6b04b95057cb6', 'dev_requirement' => \false), 'laminas/laminas-cache-storage-adapter-memcached' => array('pretty_version' => '2.1.x-dev', 'version' => '2.1.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../laminas/laminas-cache-storage-adapter-memcached', 'aliases' => array(), 'reference' => '5d6795281f388842ed96acbfc3f8659d0742282f', 'dev_requirement' => \false), 'laminas/laminas-cache-storage-adapter-redis' => array('pretty_version' => '2.1.x-dev', 'version' => '2.1.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../laminas/laminas-cache-storage-adapter-redis', 'aliases' => array(), 'reference' => '289717d10a89755d3f36f799565a3fb9c7e9ab24', 'dev_requirement' => \false), 'laminas/laminas-cache-storage-implementation' => array('dev_requirement' => \false, 'provided' => array(0 => '1.0')), 'laminas/laminas-eventmanager' => array('pretty_version' => '3.11.x-dev', 'version' => '3.11.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../laminas/laminas-eventmanager', 'aliases' => array(), 'reference' => '9cfa79ce247c567f05ce4b7c975c6bdf9698c5dd', 'dev_requirement' => \false), 'laminas/laminas-json' => array('pretty_version' => '3.5.x-dev', 'version' => '3.5.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../laminas/laminas-json', 'aliases' => array(), 'reference' => '7a8a1d7bf2d05dd6c1fbd7c0868d3848cf2b57ec', 'dev_requirement' => \false), 'laminas/laminas-log' => array('pretty_version' => '2.14.x-dev', 'version' => '2.14.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../laminas/laminas-log', 'aliases' => array(), 'reference' => '39f3dcbd77fd0d84b190ff1332f5d3d28d56527e', 'dev_requirement' => \false), 'laminas/laminas-paginator' => array('pretty_version' => '2.11.x-dev', 'version' => '2.11.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../laminas/laminas-paginator', 'aliases' => array(), 'reference' => '7f00d5fdecd1b4f67c8e84e6f6d57bbabda4b7d8', 'dev_requirement' => \false), 'laminas/laminas-serializer' => array('pretty_version' => '2.12.x-dev', 'version' => '2.12.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../laminas/laminas-serializer', 'aliases' => array(), 'reference' => '2826fd71f202569c169456a4b84297da9ff630cd', 'dev_requirement' => \false), 'laminas/laminas-servicemanager' => array('pretty_version' => '3.20.x-dev', 'version' => '3.20.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../laminas/laminas-servicemanager', 'aliases' => array(), 'reference' => 'bc2c2cbe2dd90db8b9d16b0618f542692b76ab59', 'dev_requirement' => \false), 'laminas/laminas-stdlib' => array('pretty_version' => '3.16.x-dev', 'version' => '3.16.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../laminas/laminas-stdlib', 'aliases' => array(), 'reference' => 'f4f773641807c7ccee59b758bfe4ac4ba33ecb17', 'dev_requirement' => \false), 'league/flysystem' => array('pretty_version' => '2.x-dev', 'version' => '2.9999999.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../league/flysystem', 'aliases' => array(), 'reference' => '8aaffb653c5777781b0f7f69a5d937baf7ab6cdb', 'dev_requirement' => \false), 'league/glide' => array('pretty_version' => '2.3.0', 'version' => '2.3.0.0', 'type' => 'library', 'install_path' => __DIR__ . '/../league/glide', 'aliases' => array(), 'reference' => '2ff92c8f1edc80b74e2d3c5efccfc7223f74d407', 'dev_requirement' => \false), 'league/mime-type-detection' => array('pretty_version' => '1.14.0', 'version' => '1.14.0.0', 'type' => 'library', 'install_path' => __DIR__ . '/../league/mime-type-detection', 'aliases' => array(), 'reference' => 'b6a5854368533df0295c5761a0253656a2e52d9e', 'dev_requirement' => \false), 'nicmart/tree' => array('pretty_version' => '0.3.1', 'version' => '0.3.1.0', 'type' => 'library', 'install_path' => __DIR__ . '/../nicmart/tree', 'aliases' => array(), 'reference' => 'c55ba47c64a3cb7454c22e6d630729fc2aab23ff', 'dev_requirement' => \false), 'paragi/php-websocket-client' => array('pretty_version' => 'dev-master', 'version' => 'dev-master', 'type' => 'library', 'install_path' => __DIR__ . '/../paragi/php-websocket-client', 'aliases' => array(0 => '9999999-dev'), 'reference' => 'a40a6bf0525a1e76950d19b41201ccccb80bf9cd', 'dev_requirement' => \false), 'psr/cache' => array('pretty_version' => '1.0.1', 'version' => '1.0.1.0', 'type' => 'library', 'install_path' => __DIR__ . '/../psr/cache', 'aliases' => array(), 'reference' => 'd11b50ad223250cf17b86e38383413f5a6764bf8', 'dev_requirement' => \false), 'psr/cache-implementation' => array('dev_requirement' => \false, 'provided' => array(0 => '1.0')), 'psr/container' => array('pretty_version' => '1.x-dev', 'version' => '1.9999999.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../psr/container', 'aliases' => array(), 'reference' => '513e0666f7216c7459170d56df27dfcefe1689ea', 'dev_requirement' => \false), 'psr/container-implementation' => array('dev_requirement' => \false, 'provided' => array(0 => '~1.0', 1 => '^1.0')), 'psr/http-client' => array('pretty_version' => 'dev-master', 'version' => 'dev-master', 'type' => 'library', 'install_path' => __DIR__ . '/../psr/http-client', 'aliases' => array(0 => '1.0.x-dev'), 'reference' => 'bb5906edc1c324c9a05aa0873d40117941e5fa90', 'dev_requirement' => \false), 'psr/http-client-implementation' => array('dev_requirement' => \false, 'provided' => array(0 => '1.0')), 'psr/http-message' => array('pretty_version' => '1.1', 'version' => '1.1.0.0', 'type' => 'library', 'install_path' => __DIR__ . '/../psr/http-message', 'aliases' => array(), 'reference' => 'cb6ce4845ce34a8ad9e68117c10ee90a29919eba', 'dev_requirement' => \false), 'psr/http-message-implementation' => array('dev_requirement' => \false, 'provided' => array(0 => '1.0')), 'psr/log' => array('pretty_version' => '1.1.4', 'version' => '1.1.4.0', 'type' => 'library', 'install_path' => __DIR__ . '/../psr/log', 'aliases' => array(), 'reference' => 'd49695b909c3b7628b6289db5479a1c204601f11', 'dev_requirement' => \false), 'psr/log-implementation' => array('dev_requirement' => \false, 'provided' => array(0 => '1.0.0')), 'psr/simple-cache' => array('pretty_version' => '1.0.1', 'version' => '1.0.1.0', 'type' => 'library', 'install_path' => __DIR__ . '/../psr/simple-cache', 'aliases' => array(), 'reference' => '408d5eafb83c57f6365a3ca330ff23aa4a5fa39b', 'dev_requirement' => \false), 'psr/simple-cache-implementation' => array('dev_requirement' => \false, 'provided' => array(0 => '1.0')), 'ralouphie/getallheaders' => array('pretty_version' => '3.0.3', 'version' => '3.0.3.0', 'type' => 'library', 'install_path' => __DIR__ . '/../ralouphie/getallheaders', 'aliases' => array(), 'reference' => '120b605dfeb996808c31b6477290a714d356e822', 'dev_requirement' => \false), 'slim/php-view' => array('pretty_version' => 'dev-joomla', 'version' => 'dev-joomla', 'type' => 'library', 'install_path' => __DIR__ . '/../slim/php-view', 'aliases' => array(), 'reference' => 'ab25024a44b3c65a4c2a9968ce283233b490fcb9', 'dev_requirement' => \false), 'spatie/browsershot' => array('pretty_version' => '3.60.1', 'version' => '3.60.1.0', 'type' => 'library', 'install_path' => __DIR__ . '/../spatie/browsershot', 'aliases' => array(), 'reference' => '8779b2cd10dcd9dab4abd0127429e5578da3f9ab', 'dev_requirement' => \false), 'spatie/crawler' => array('pretty_version' => 'v6.x-dev', 'version' => '6.9999999.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../spatie/crawler', 'aliases' => array(), 'reference' => '276ecb429a770474695a1278a9ad3e719fbef259', 'dev_requirement' => \false), 'spatie/image' => array('pretty_version' => '2.2.7', 'version' => '2.2.7.0', 'type' => 'library', 'install_path' => __DIR__ . '/../spatie/image', 'aliases' => array(), 'reference' => '2f802853aab017aa615224daae1588054b5ab20e', 'dev_requirement' => \false), 'spatie/image-optimizer' => array('pretty_version' => '1.7.2', 'version' => '1.7.2.0', 'type' => 'library', 'install_path' => __DIR__ . '/../spatie/image-optimizer', 'aliases' => array(), 'reference' => '62f7463483d1bd975f6f06025d89d42a29608fe1', 'dev_requirement' => \false), 'spatie/robots-txt' => array('pretty_version' => '2.0.3', 'version' => '2.0.3.0', 'type' => 'library', 'install_path' => __DIR__ . '/../spatie/robots-txt', 'aliases' => array(), 'reference' => 'dacba2ba159364987392aa1b0002e196c5923970', 'dev_requirement' => \false), 'spatie/temporary-directory' => array('pretty_version' => '2.2.0', 'version' => '2.2.0.0', 'type' => 'library', 'install_path' => __DIR__ . '/../spatie/temporary-directory', 'aliases' => array(), 'reference' => 'efc258c9f4da28f0c7661765b8393e4ccee3d19c', 'dev_requirement' => \false), 'symfony/deprecation-contracts' => array('pretty_version' => '2.5.x-dev', 'version' => '2.5.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/deprecation-contracts', 'aliases' => array(), 'reference' => '80d075412b557d41002320b96a096ca65aa2c98d', 'dev_requirement' => \false), 'symfony/dom-crawler' => array('pretty_version' => '5.4.x-dev', 'version' => '5.4.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/dom-crawler', 'aliases' => array(), 'reference' => '728f1fc136252a626ba5a69c02bd66a3697ff201', 'dev_requirement' => \false), 'symfony/polyfill-ctype' => array('pretty_version' => '1.x-dev', 'version' => '1.9999999.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/polyfill-ctype', 'aliases' => array(), 'reference' => 'ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb', 'dev_requirement' => \false), 'symfony/polyfill-mbstring' => array('pretty_version' => '1.x-dev', 'version' => '1.9999999.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/polyfill-mbstring', 'aliases' => array(), 'reference' => '42292d99c55abe617799667f454222c54c60e229', 'dev_requirement' => \false), 'symfony/polyfill-php80' => array('pretty_version' => '1.x-dev', 'version' => '1.9999999.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/polyfill-php80', 'aliases' => array(), 'reference' => '6caa57379c4aec19c0a12a38b59b26487dcfe4b5', 'dev_requirement' => \false), 'symfony/process' => array('pretty_version' => '5.4.x-dev', 'version' => '5.4.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/process', 'aliases' => array(), 'reference' => '8fa22178dfc368911dbd513b431cd9b06f9afe7a', 'dev_requirement' => \false), 'webmozart/assert' => array('pretty_version' => '1.11.0', 'version' => '1.11.0.0', 'type' => 'library', 'install_path' => __DIR__ . '/../webmozart/assert', 'aliases' => array(), 'reference' => '11cb2199493b2f8a3b53e7f19068fc6aac760991', 'dev_requirement' => \false)));
     5return array('root' => array('pretty_version' => 'dev-master', 'version' => 'dev-master', 'type' => 'library', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), 'reference' => '35afc258271812e2d577c7dce297c6a3db38ace3', 'name' => 'jchoptimize/lib', 'dev' => \false), 'versions' => array('codealfa/minify' => array('pretty_version' => 'dev-master', 'version' => 'dev-master', 'type' => 'library', 'install_path' => __DIR__ . '/../codealfa/minify', 'aliases' => array(0 => '9999999-dev'), 'reference' => 'a11d3fc4da27e170ca8cb9f966915ff9cfdc519d', 'dev_requirement' => \false), 'codealfa/regextokenizer' => array('pretty_version' => 'dev-master', 'version' => 'dev-master', 'type' => 'library', 'install_path' => __DIR__ . '/../codealfa/regextokenizer', 'aliases' => array(0 => '9999999-dev'), 'reference' => 'b660bf5d561078f40bcbf1a68eeb63428a14b17d', 'dev_requirement' => \false), 'composer/ca-bundle' => array('pretty_version' => 'dev-main', 'version' => 'dev-main', 'type' => 'library', 'install_path' => __DIR__ . '/./ca-bundle', 'aliases' => array(0 => '1.x-dev'), 'reference' => '4d0ae9807cf38e759b6f10b09195b3addd7d8685', 'dev_requirement' => \false), 'container-interop/container-interop' => array('dev_requirement' => \false, 'replaced' => array(0 => '^1.2.0')), 'guzzlehttp/guzzle' => array('pretty_version' => '7.5.x-dev', 'version' => '7.5.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../guzzlehttp/guzzle', 'aliases' => array(), 'reference' => '584d1f06b5caa07b0587f5054d551ed65460ce5d', 'dev_requirement' => \false), 'guzzlehttp/promises' => array('pretty_version' => '1.5.x-dev', 'version' => '1.5.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../guzzlehttp/promises', 'aliases' => array(), 'reference' => '67ab6e18aaa14d753cc148911d273f6e6cb6721e', 'dev_requirement' => \false), 'guzzlehttp/psr7' => array('pretty_version' => '1.9.x-dev', 'version' => '1.9.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../guzzlehttp/psr7', 'aliases' => array(), 'reference' => 'e4490cabc77465aaee90b20cfc9a770f8c04be6b', 'dev_requirement' => \false), 'illuminate/collections' => array('pretty_version' => '8.x-dev', 'version' => '8.9999999.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../illuminate/collections', 'aliases' => array(), 'reference' => '705a4e1ef93cd492c45b9b3e7911cccc990a07f4', 'dev_requirement' => \false), 'illuminate/contracts' => array('pretty_version' => '8.x-dev', 'version' => '8.9999999.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../illuminate/contracts', 'aliases' => array(), 'reference' => '5e0fd287a1b22a6b346a9f7cd484d8cf0234585d', 'dev_requirement' => \false), 'illuminate/macroable' => array('pretty_version' => '8.x-dev', 'version' => '8.9999999.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../illuminate/macroable', 'aliases' => array(), 'reference' => 'aed81891a6e046fdee72edd497f822190f61c162', 'dev_requirement' => \false), 'intervention/image' => array('pretty_version' => '2.7.2', 'version' => '2.7.2.0', 'type' => 'library', 'install_path' => __DIR__ . '/../intervention/image', 'aliases' => array(), 'reference' => '04be355f8d6734c826045d02a1079ad658322dad', 'dev_requirement' => \false), 'jchoptimize/lib' => array('pretty_version' => 'dev-master', 'version' => 'dev-master', 'type' => 'library', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), 'reference' => '35afc258271812e2d577c7dce297c6a3db38ace3', 'dev_requirement' => \false), 'joomla/controller' => array('pretty_version' => 'dev-2.0-dev', 'version' => 'dev-2.0-dev', 'type' => 'joomla-package', 'install_path' => __DIR__ . '/../joomla/controller', 'aliases' => array(0 => '2.0.x-dev'), 'reference' => '6a5a386246f6e67ab0c3a4e71d27f0f208720b65', 'dev_requirement' => \false), 'joomla/di' => array('pretty_version' => 'dev-2.0-dev', 'version' => 'dev-2.0-dev', 'type' => 'joomla-package', 'install_path' => __DIR__ . '/../joomla/di', 'aliases' => array(0 => '2.0.x-dev'), 'reference' => 'b68f8de6c3a214eac22c2172f966d8965fd47f9c', 'dev_requirement' => \false), 'joomla/filesystem' => array('pretty_version' => 'dev-1.x-dev', 'version' => 'dev-1.x-dev', 'type' => 'joomla-package', 'install_path' => __DIR__ . '/../joomla/filesystem', 'aliases' => array(), 'reference' => '9ad5d9b64960f0ea56fb71364a33622843b95c27', 'dev_requirement' => \false), 'joomla/filter' => array('pretty_version' => 'dev-2.0-dev', 'version' => 'dev-2.0-dev', 'type' => 'joomla-package', 'install_path' => __DIR__ . '/../joomla/filter', 'aliases' => array(0 => '2.0.x-dev'), 'reference' => '9102630f9069351c1259b6f585a704fde7029d2a', 'dev_requirement' => \false), 'joomla/input' => array('pretty_version' => 'dev-2.0-dev', 'version' => 'dev-2.0-dev', 'type' => 'joomla-package', 'install_path' => __DIR__ . '/../joomla/input', 'aliases' => array(0 => '2.0.x-dev'), 'reference' => '80d2b6384d60307a11b9af39bdc9a8d254949e94', 'dev_requirement' => \false), 'joomla/model' => array('pretty_version' => 'dev-2.0-dev', 'version' => 'dev-2.0-dev', 'type' => 'joomla-package', 'install_path' => __DIR__ . '/../joomla/model', 'aliases' => array(0 => '2.0.x-dev'), 'reference' => 'f322645993346efa5505500f59d6471cbd0d564b', 'dev_requirement' => \false), 'joomla/registry' => array('pretty_version' => 'dev-2.0-dev', 'version' => 'dev-2.0-dev', 'type' => 'joomla-package', 'install_path' => __DIR__ . '/../joomla/registry', 'aliases' => array(0 => '2.0.x-dev'), 'reference' => 'fde95733e7e2634d64bff71f611ee02b9ceff354', 'dev_requirement' => \false), 'joomla/renderer' => array('pretty_version' => '2.0.1', 'version' => '2.0.1.0', 'type' => 'joomla-package', 'install_path' => __DIR__ . '/../joomla/renderer', 'aliases' => array(), 'reference' => '0b514c40d3858fbbbf3bf3347832bc4fc3e776da', 'dev_requirement' => \false), 'joomla/string' => array('pretty_version' => 'dev-2.0-dev', 'version' => 'dev-2.0-dev', 'type' => 'joomla-package', 'install_path' => __DIR__ . '/../joomla/string', 'aliases' => array(0 => '2.0.x-dev'), 'reference' => 'c7a9330f7316a574f3ff538053fa65dc38bafbe6', 'dev_requirement' => \false), 'joomla/utilities' => array('pretty_version' => 'dev-2.0-dev', 'version' => 'dev-2.0-dev', 'type' => 'joomla-package', 'install_path' => __DIR__ . '/../joomla/utilities', 'aliases' => array(0 => '2.0.x-dev'), 'reference' => '2baa8af18fd2ee5a185606b91ab2e273f77e5e4b', 'dev_requirement' => \false), 'joomla/view' => array('pretty_version' => 'dev-2.0-dev', 'version' => 'dev-2.0-dev', 'type' => 'joomla-package', 'install_path' => __DIR__ . '/../joomla/view', 'aliases' => array(0 => '2.0.x-dev'), 'reference' => '7d5e706b29cac01d0b1ee11b871eabaa823f9063', 'dev_requirement' => \false), 'laminas/laminas-cache' => array('pretty_version' => '3.0.x-dev', 'version' => '3.0.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../laminas/laminas-cache', 'aliases' => array(), 'reference' => '86b47eb7b05bc4d24edafb3039494ba81405983b', 'dev_requirement' => \false), 'laminas/laminas-cache-storage-adapter-apcu' => array('pretty_version' => '2.1.x-dev', 'version' => '2.1.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../laminas/laminas-cache-storage-adapter-apcu', 'aliases' => array(), 'reference' => '344aa69ff029788bd340a3bda63754d24623bd85', 'dev_requirement' => \false), 'laminas/laminas-cache-storage-adapter-blackhole' => array('pretty_version' => '2.0.x-dev', 'version' => '2.0.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../laminas/laminas-cache-storage-adapter-blackhole', 'aliases' => array(), 'reference' => 'fdb6c4b9813cc7365d72c002b09dc808e34b7002', 'dev_requirement' => \false), 'laminas/laminas-cache-storage-adapter-filesystem' => array('pretty_version' => '2.1.x-dev', 'version' => '2.1.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../laminas/laminas-cache-storage-adapter-filesystem', 'aliases' => array(), 'reference' => 'd9712a8292fc0a84219e4aba97b6b04b95057cb6', 'dev_requirement' => \false), 'laminas/laminas-cache-storage-adapter-memcached' => array('pretty_version' => '2.1.x-dev', 'version' => '2.1.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../laminas/laminas-cache-storage-adapter-memcached', 'aliases' => array(), 'reference' => '5d6795281f388842ed96acbfc3f8659d0742282f', 'dev_requirement' => \false), 'laminas/laminas-cache-storage-adapter-redis' => array('pretty_version' => '2.1.x-dev', 'version' => '2.1.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../laminas/laminas-cache-storage-adapter-redis', 'aliases' => array(), 'reference' => '289717d10a89755d3f36f799565a3fb9c7e9ab24', 'dev_requirement' => \false), 'laminas/laminas-cache-storage-implementation' => array('dev_requirement' => \false, 'provided' => array(0 => '1.0')), 'laminas/laminas-eventmanager' => array('pretty_version' => '3.11.x-dev', 'version' => '3.11.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../laminas/laminas-eventmanager', 'aliases' => array(), 'reference' => '9cfa79ce247c567f05ce4b7c975c6bdf9698c5dd', 'dev_requirement' => \false), 'laminas/laminas-json' => array('pretty_version' => '3.5.x-dev', 'version' => '3.5.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../laminas/laminas-json', 'aliases' => array(), 'reference' => '7a8a1d7bf2d05dd6c1fbd7c0868d3848cf2b57ec', 'dev_requirement' => \false), 'laminas/laminas-log' => array('pretty_version' => '2.14.x-dev', 'version' => '2.14.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../laminas/laminas-log', 'aliases' => array(), 'reference' => '39f3dcbd77fd0d84b190ff1332f5d3d28d56527e', 'dev_requirement' => \false), 'laminas/laminas-paginator' => array('pretty_version' => '2.11.x-dev', 'version' => '2.11.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../laminas/laminas-paginator', 'aliases' => array(), 'reference' => '7f00d5fdecd1b4f67c8e84e6f6d57bbabda4b7d8', 'dev_requirement' => \false), 'laminas/laminas-serializer' => array('pretty_version' => '2.12.x-dev', 'version' => '2.12.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../laminas/laminas-serializer', 'aliases' => array(), 'reference' => '2826fd71f202569c169456a4b84297da9ff630cd', 'dev_requirement' => \false), 'laminas/laminas-servicemanager' => array('pretty_version' => '3.20.x-dev', 'version' => '3.20.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../laminas/laminas-servicemanager', 'aliases' => array(), 'reference' => 'bc2c2cbe2dd90db8b9d16b0618f542692b76ab59', 'dev_requirement' => \false), 'laminas/laminas-stdlib' => array('pretty_version' => '3.16.x-dev', 'version' => '3.16.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../laminas/laminas-stdlib', 'aliases' => array(), 'reference' => 'f4f773641807c7ccee59b758bfe4ac4ba33ecb17', 'dev_requirement' => \false), 'league/flysystem' => array('pretty_version' => '2.x-dev', 'version' => '2.9999999.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../league/flysystem', 'aliases' => array(), 'reference' => '8aaffb653c5777781b0f7f69a5d937baf7ab6cdb', 'dev_requirement' => \false), 'league/glide' => array('pretty_version' => '2.3.0', 'version' => '2.3.0.0', 'type' => 'library', 'install_path' => __DIR__ . '/../league/glide', 'aliases' => array(), 'reference' => '2ff92c8f1edc80b74e2d3c5efccfc7223f74d407', 'dev_requirement' => \false), 'league/mime-type-detection' => array('pretty_version' => '1.14.0', 'version' => '1.14.0.0', 'type' => 'library', 'install_path' => __DIR__ . '/../league/mime-type-detection', 'aliases' => array(), 'reference' => 'b6a5854368533df0295c5761a0253656a2e52d9e', 'dev_requirement' => \false), 'nicmart/tree' => array('pretty_version' => '0.3.1', 'version' => '0.3.1.0', 'type' => 'library', 'install_path' => __DIR__ . '/../nicmart/tree', 'aliases' => array(), 'reference' => 'c55ba47c64a3cb7454c22e6d630729fc2aab23ff', 'dev_requirement' => \false), 'paragi/php-websocket-client' => array('pretty_version' => 'dev-master', 'version' => 'dev-master', 'type' => 'library', 'install_path' => __DIR__ . '/../paragi/php-websocket-client', 'aliases' => array(0 => '9999999-dev'), 'reference' => 'a40a6bf0525a1e76950d19b41201ccccb80bf9cd', 'dev_requirement' => \false), 'psr/cache' => array('pretty_version' => '1.0.1', 'version' => '1.0.1.0', 'type' => 'library', 'install_path' => __DIR__ . '/../psr/cache', 'aliases' => array(), 'reference' => 'd11b50ad223250cf17b86e38383413f5a6764bf8', 'dev_requirement' => \false), 'psr/cache-implementation' => array('dev_requirement' => \false, 'provided' => array(0 => '1.0')), 'psr/container' => array('pretty_version' => '1.x-dev', 'version' => '1.9999999.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../psr/container', 'aliases' => array(), 'reference' => '513e0666f7216c7459170d56df27dfcefe1689ea', 'dev_requirement' => \false), 'psr/container-implementation' => array('dev_requirement' => \false, 'provided' => array(0 => '~1.0', 1 => '^1.0')), 'psr/http-client' => array('pretty_version' => 'dev-master', 'version' => 'dev-master', 'type' => 'library', 'install_path' => __DIR__ . '/../psr/http-client', 'aliases' => array(0 => '1.0.x-dev'), 'reference' => 'bb5906edc1c324c9a05aa0873d40117941e5fa90', 'dev_requirement' => \false), 'psr/http-client-implementation' => array('dev_requirement' => \false, 'provided' => array(0 => '1.0')), 'psr/http-message' => array('pretty_version' => '1.1', 'version' => '1.1.0.0', 'type' => 'library', 'install_path' => __DIR__ . '/../psr/http-message', 'aliases' => array(), 'reference' => 'cb6ce4845ce34a8ad9e68117c10ee90a29919eba', 'dev_requirement' => \false), 'psr/http-message-implementation' => array('dev_requirement' => \false, 'provided' => array(0 => '1.0')), 'psr/log' => array('pretty_version' => '1.1.4', 'version' => '1.1.4.0', 'type' => 'library', 'install_path' => __DIR__ . '/../psr/log', 'aliases' => array(), 'reference' => 'd49695b909c3b7628b6289db5479a1c204601f11', 'dev_requirement' => \false), 'psr/log-implementation' => array('dev_requirement' => \false, 'provided' => array(0 => '1.0.0')), 'psr/simple-cache' => array('pretty_version' => '1.0.1', 'version' => '1.0.1.0', 'type' => 'library', 'install_path' => __DIR__ . '/../psr/simple-cache', 'aliases' => array(), 'reference' => '408d5eafb83c57f6365a3ca330ff23aa4a5fa39b', 'dev_requirement' => \false), 'psr/simple-cache-implementation' => array('dev_requirement' => \false, 'provided' => array(0 => '1.0')), 'ralouphie/getallheaders' => array('pretty_version' => '3.0.3', 'version' => '3.0.3.0', 'type' => 'library', 'install_path' => __DIR__ . '/../ralouphie/getallheaders', 'aliases' => array(), 'reference' => '120b605dfeb996808c31b6477290a714d356e822', 'dev_requirement' => \false), 'slim/php-view' => array('pretty_version' => 'dev-joomla', 'version' => 'dev-joomla', 'type' => 'library', 'install_path' => __DIR__ . '/../slim/php-view', 'aliases' => array(), 'reference' => 'ab25024a44b3c65a4c2a9968ce283233b490fcb9', 'dev_requirement' => \false), 'spatie/browsershot' => array('pretty_version' => '3.60.1', 'version' => '3.60.1.0', 'type' => 'library', 'install_path' => __DIR__ . '/../spatie/browsershot', 'aliases' => array(), 'reference' => '8779b2cd10dcd9dab4abd0127429e5578da3f9ab', 'dev_requirement' => \false), 'spatie/crawler' => array('pretty_version' => 'v6.x-dev', 'version' => '6.9999999.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../spatie/crawler', 'aliases' => array(), 'reference' => '276ecb429a770474695a1278a9ad3e719fbef259', 'dev_requirement' => \false), 'spatie/image' => array('pretty_version' => '2.2.7', 'version' => '2.2.7.0', 'type' => 'library', 'install_path' => __DIR__ . '/../spatie/image', 'aliases' => array(), 'reference' => '2f802853aab017aa615224daae1588054b5ab20e', 'dev_requirement' => \false), 'spatie/image-optimizer' => array('pretty_version' => '1.7.2', 'version' => '1.7.2.0', 'type' => 'library', 'install_path' => __DIR__ . '/../spatie/image-optimizer', 'aliases' => array(), 'reference' => '62f7463483d1bd975f6f06025d89d42a29608fe1', 'dev_requirement' => \false), 'spatie/robots-txt' => array('pretty_version' => '2.0.3', 'version' => '2.0.3.0', 'type' => 'library', 'install_path' => __DIR__ . '/../spatie/robots-txt', 'aliases' => array(), 'reference' => 'dacba2ba159364987392aa1b0002e196c5923970', 'dev_requirement' => \false), 'spatie/temporary-directory' => array('pretty_version' => '2.2.0', 'version' => '2.2.0.0', 'type' => 'library', 'install_path' => __DIR__ . '/../spatie/temporary-directory', 'aliases' => array(), 'reference' => 'efc258c9f4da28f0c7661765b8393e4ccee3d19c', 'dev_requirement' => \false), 'symfony/deprecation-contracts' => array('pretty_version' => '2.5.x-dev', 'version' => '2.5.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/deprecation-contracts', 'aliases' => array(), 'reference' => '80d075412b557d41002320b96a096ca65aa2c98d', 'dev_requirement' => \false), 'symfony/dom-crawler' => array('pretty_version' => '5.4.x-dev', 'version' => '5.4.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/dom-crawler', 'aliases' => array(), 'reference' => '728f1fc136252a626ba5a69c02bd66a3697ff201', 'dev_requirement' => \false), 'symfony/polyfill-ctype' => array('pretty_version' => '1.x-dev', 'version' => '1.9999999.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/polyfill-ctype', 'aliases' => array(), 'reference' => 'ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb', 'dev_requirement' => \false), 'symfony/polyfill-mbstring' => array('pretty_version' => '1.x-dev', 'version' => '1.9999999.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/polyfill-mbstring', 'aliases' => array(), 'reference' => '42292d99c55abe617799667f454222c54c60e229', 'dev_requirement' => \false), 'symfony/polyfill-php80' => array('pretty_version' => '1.x-dev', 'version' => '1.9999999.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/polyfill-php80', 'aliases' => array(), 'reference' => '6caa57379c4aec19c0a12a38b59b26487dcfe4b5', 'dev_requirement' => \false), 'symfony/process' => array('pretty_version' => '5.4.x-dev', 'version' => '5.4.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/process', 'aliases' => array(), 'reference' => '8fa22178dfc368911dbd513b431cd9b06f9afe7a', 'dev_requirement' => \false), 'webmozart/assert' => array('pretty_version' => '1.11.0', 'version' => '1.11.0.0', 'type' => 'library', 'install_path' => __DIR__ . '/../webmozart/assert', 'aliases' => array(), 'reference' => '11cb2199493b2f8a3b53e7f19068fc6aac760991', 'dev_requirement' => \false)));
  • jch-optimize/trunk/media/js/platform-wordpress.js

    r2947895 r3087340  
    1111const jchPlatform = (function () {
    1212   
    13     let jch_ajax_url_optimizeimages = ajaxurl + '?action=optimizeimages' + '&_wpnonce=' + optimize_image_url_nonce;
     13    let jch_ajax_url_optimizeimages = ajaxurl + '?action=optimizeimages&_wpnonce=' + jch_optimize_image_url_nonce;
    1414    let jch_ajax_url_smartcombine = ajaxurl + '?action=smartcombine';
    15     let jch_ajax_url_multiselect = ajaxurl + '?action=multiselect';
     15    let jch_ajax_url_multiselect = ajaxurl + '?action=multiselect&_wpnonce=' + jch_multiselect_url_nonce;
    1616   
    1717    let configure_url = ajaxurl + '?action=configuresettings';
  • jch-optimize/trunk/readme.txt

    r3040365 r3087340  
    33Contributors: codealfa
    44Tags: performance, pagespeed, cache, optimize, seo
    5 Tested up to: 6.4.3
    6 Stable tag: 4.2.0
     5Tested up to: 6.5.3
     6Stable tag: 4.2.1
    77License: GPLv3 or later
    88Requires at least: 5.0
     
    8080
    8181== Changelog ==
     82
     83= 4.2.1 =
     84* Fixed security vulnerability on path traversal. Unprivileged users could access directory information on the Optimize Image page
     85* Bug Fix Sort Items on Page Cache tab not working
     86* Use the loading attribute to lazy load images instead of JavaScript. JavaScript only used for background images and audio/video
     87* Asynchronously loaded CSS in Optimize CSS Delivery feature placed at bottom of page.
     88
    8289= 4.2.0 =
    8390* Add responsive image feature to further boost LCP
  • jch-optimize/trunk/src/Model/PageCache.php

    r2997317 r3087340  
    119119
    120120        if (! empty($fullOrderingList)) {
    121             $this->pageCache->setList('list_fullordering', $fullOrderingList);
     121            $this->pageCache->setList('list_fullordering', str_replace('_', ' ', $fullOrderingList));
    122122        }
    123123
  • jch-optimize/trunk/src/Platform/Utility.php

    r2997317 r3087340  
    2222use function array_search;
    2323use function count;
     24use function function_exists;
    2425use function header;
    2526use function headers_list;
     
    5657        }
    5758
    58         return !is_user_logged_in();
     59        if (function_exists('is_user_logged_in')) {
     60            return !is_user_logged_in();
     61        }
     62
     63        return false;
    5964    }
    6065
  • jch-optimize/trunk/src/Plugin/Admin.php

    r2997317 r3087340  
    288288
    289289        $loader_image = Paths::mediaUrl() . '/core/images/loader.gif';
    290         $nonce = wp_create_nonce('jch_optimize_image');
     290        $optimize_image_nonce = wp_create_nonce('jch_optimize_image');
     291        $multiselect_nonce = wp_create_nonce('jch_optimize_multiselect');
     292        $filetree_nonce = wp_create_nonce('jch_optimize_filetree');
    291293        $imageLoaderJs = <<<JS
    292 const jch_loader_image_url = "{$loader_image}"
    293 const optimize_image_url_nonce = '{$nonce}';
     294const jch_loader_image_url = "{$loader_image}";
     295const jch_optimize_image_url_nonce = '{$optimize_image_nonce}';
     296const jch_multiselect_url_nonce = '{$multiselect_nonce}';
     297const jch_filetree_url_nonce = '{$filetree_nonce}';
    294298JS;
    295299
     
    488492    public function doAjaxFileTree()
    489493    {
    490         echo Ajax::getInstance('FileTree')->run();
     494        check_admin_referer('jch_optimize_filetree');
     495
     496        if (current_user_can('manage_options')) {
     497            echo Ajax::getInstance('FileTree')->run();
     498        }
     499
    491500        die();
    492501    }
     
    497506    public function doAjaxMultiSelect()
    498507    {
    499         echo Ajax::getInstance('MultiSelect')->run();
     508        check_admin_referer('jch_optimize_multiselect');
     509
     510        if (current_user_can('manage_options')) {
     511            echo Ajax::getInstance('MultiSelect')->run();
     512        }
     513
    500514        die();
    501515    }
     
    550564            echo Ajax::getInstance('SmartCombine')->run();
    551565        }
     566
    552567        die();
    553568    }
     
    561576        $container->get(Input::class)->def('task', 'getcacheinfo');
    562577        $container->get(ControllerResolver::class)->resolve();
     578
    563579        die();
    564580    }
  • jch-optimize/trunk/src/View/PageCacheHtml.php

    r2997317 r3087340  
    120120        $orderOptions = [
    121121                ''           => 'Sort Table By:',
    122                 'mtime_asc'  => 'Last modified time ascending',
    123                 'mtime_desc' => 'Last modified time descending',
    124                 'url_asc'    => 'Page URL ascending',
    125                 'url_desc'   => 'Page URL descending',
     122                'mtime_ASC'  => 'Last modified time ascending',
     123                'mtime_DESC' => 'Last modified time descending',
     124                'url_ASC'    => 'Page URL ascending',
     125                'url_DESC'   => 'Page URL descending',
    126126        ];
    127127        /** @var string|null $listFullOrderingState */
  • jch-optimize/trunk/tmpl/optimizeimages.php

    r2997317 r3087340  
    8888                    {
    8989                        root: '',
    90                         script: ajaxurl + '?action=filetree',
     90                        script: ajaxurl + '?action=filetree&_wpnonce=' + jch_filetree_url_nonce,
    9191                        expandSpeed: 1000,
    9292                        collapseSpeed: 1000,
  • jch-optimize/trunk/tmpl/pagecache_filters.php

    r2997317 r3087340  
    8080    <script>
    8181        document.getElementById('clear-search').addEventListener('click', function (event) {
    82             document.getElementById('filter_search').value = ''
    83             document.getElementById('filter_time-1').value = ''
    84             document.getElementById('filter_time-2').value = ''
    85             document.getElementById('filter_device').value = ''
    86             document.getElementById('filter_adapter').value = ''
    87             document.getElementById('filter_http-request').value = ''
     82            document.getElementById('filter_search').value = '';
     83            document.getElementById('filter_time-1').value = '';
     84            document.getElementById('filter_time-2').value = '';
     85            document.getElementById('filter_device').value = '';
     86            document.getElementById('filter_adapter').value = '';
     87            document.getElementById('filter_http-request').value = '';
     88            document.getElementById('list_limit').value = '';
     89            document.getElementById('list_fullordering').value = '';
    8890        })
    8991    </script>
  • jch-optimize/trunk/vendor/composer/installed.php

    r3040365 r3087340  
    66        'install_path' => __DIR__ . '/../../',
    77        'aliases' => array(),
    8         'reference' => '857797bdb745daf47b8f4e5410bcdc902b7b7341',
     8        'reference' => '35afc258271812e2d577c7dce297c6a3db38ace3',
    99        'name' => 'jchoptimize/wordpress-platform',
    1010        'dev' => false,
     
    1717            'install_path' => __DIR__ . '/../../',
    1818            'aliases' => array(),
    19             'reference' => '857797bdb745daf47b8f4e5410bcdc902b7b7341',
     19            'reference' => '35afc258271812e2d577c7dce297c6a3db38ace3',
    2020            'dev_requirement' => false,
    2121        ),
  • jch-optimize/trunk/version.php

    r3040365 r3087340  
    1515defined('_JCH_EXEC') or die;
    1616
    17 const JCH_VERSION  = '4.2.0';
    18 const JCH_DATE     = '2024-02-23';
     17const JCH_VERSION  = '4.2.1';
     18const JCH_DATE     = '2024-05-15';
    1919const JCH_PRO      = '0';
    2020const JCH_DEVELOP  = '0';
Note: See TracChangeset for help on using the changeset viewer.