PHP 8.2.31
Preview: Duda.php Size: 1.72 KB
//opt/cpanel/ea-wappspector/src/Matchers/Duda.php

<?php

declare(strict_types=1);

namespace Plesk\Wappspector\Matchers;

use League\Flysystem\Filesystem;
use Plesk\Wappspector\Helper\InspectorHelper;
use Plesk\Wappspector\MatchResult\Duda as MatchResult;
use Plesk\Wappspector\MatchResult\EmptyMatchResult;
use Plesk\Wappspector\MatchResult\MatchResultInterface;

class Duda implements MatcherInterface
{
    private const CSS_FILES = [
        '/Style/desktop.css',
        '/Style/mobile.css',
        '/Style/tablet.css',
    ];

    private const RUNTIME_JS_FILE = '/Scripts/runtime.js';

    public function match(Filesystem $fs, string $path): MatchResultInterface
    {
        $rTrimPath = rtrim($path, '/');

        $cssFile = $this->getCssFile($fs, $rTrimPath);

        $inspectorHelper = new InspectorHelper();

        if ($cssFile !== null) {
            $cssFileContent = $fs->read($rTrimPath . $cssFile);
            if (
                $inspectorHelper->fileContentContainsString($cssFileContent, 'dmDudaonePreviewBody') ||
                $inspectorHelper->fileContentContainsString($cssFileContent, 'dudaSnipcartProductGalleryId')
            ) {
                return new MatchResult($path);
            }
        }

        if (!$fs->fileExists($rTrimPath . self::RUNTIME_JS_FILE)) {
            return new EmptyMatchResult();
        }

        return $inspectorHelper->fileContainsString($fs, $rTrimPath . self::RUNTIME_JS_FILE, 'duda')
            ? new MatchResult($path)
            : new EmptyMatchResult();
    }

    private function getCssFile(Filesystem $fs, string $path): ?string
    {
        foreach (self::CSS_FILES as $cssFile) {
            if ($fs->fileExists($path . $cssFile)) {
                return $cssFile;
            }
        }

        return null;
    }
}

Directory Contents

Dirs: 0 × Files: 23

Name Size Perms Modified Actions
1.02 KB lrw-r--r-- 2026-05-14 15:20:35
Edit Download
1.14 KB lrw-r--r-- 2026-05-14 15:20:35
Edit Download
1.09 KB lrw-r--r-- 2026-05-14 15:20:35
Edit Download
1.05 KB lrw-r--r-- 2026-05-14 15:20:35
Edit Download
1.63 KB lrw-r--r-- 2026-05-14 15:20:35
Edit Download
1.72 KB lrw-r--r-- 2026-05-14 15:20:35
Edit Download
3.79 KB lrw-r--r-- 2026-05-14 15:20:35
Edit Download
1.90 KB lrw-r--r-- 2026-05-14 15:20:35
Edit Download
343 B lrw-r--r-- 2026-05-14 15:20:35
Edit Download
866 B lrw-r--r-- 2026-05-14 15:20:35
Edit Download
1.07 KB lrw-r--r-- 2026-05-14 15:20:35
Edit Download
1.41 KB lrw-r--r-- 2026-05-14 15:20:35
Edit Download
742 B lrw-r--r-- 2026-05-14 15:20:35
Edit Download
713 B lrw-r--r-- 2026-05-14 15:20:35
Edit Download
976 B lrw-r--r-- 2026-05-14 15:20:35
Edit Download
1.79 KB lrw-r--r-- 2026-05-14 15:20:35
Edit Download
980 B lrw-r--r-- 2026-05-14 15:20:35
Edit Download
905 B lrw-r--r-- 2026-05-14 15:20:35
Edit Download
1.77 KB lrw-r--r-- 2026-05-14 15:20:35
Edit Download
982 B lrw-r--r-- 2026-05-14 15:20:35
Edit Download
1.97 KB lrw-r--r-- 2026-05-14 15:20:35
Edit Download
1.48 KB lrw-r--r-- 2026-05-14 15:20:35
Edit Download
1.64 KB lrw-r--r-- 2026-05-14 15:20:35
Edit Download

If ZipArchive is unavailable, a .tar will be created (no compression).