Welcome to mirror list, hosted at ThFree Co, Russian Federation.

UIAssetCatalogSorter.php « AssetManager « core - github.com/matomo-org/matomo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 087d0464fc0f2164a1a2bd29511cb46f1e47152b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<?php
/**
 * Piwik - free/libre analytics platform
 *
 * @link https://matomo.org
 * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
 *
 */
namespace Piwik\AssetManager;

class UIAssetCatalogSorter
{
    /**
     * @var string[]
     */
    private $priorityOrder;

    /**
     * @param string[] $priorityOrder
     */
    public function __construct($priorityOrder)
    {
        $this->priorityOrder = $priorityOrder;
    }

    /**
     * @param UIAssetCatalog $uiAssetCatalog
     * @return UIAssetCatalog
     */
    public function sortUIAssetCatalog($uiAssetCatalog)
    {
        $sortedCatalog = new UIAssetCatalog($this);
        foreach ($this->priorityOrder as $filePattern) {
            $assetsMatchingPattern = array_filter($uiAssetCatalog->getAssets(), function ($uiAsset) use ($filePattern) {
                return preg_match('~^' . $filePattern . '~', $uiAsset->getRelativeLocation());
            });

            foreach ($assetsMatchingPattern as $assetMatchingPattern) {
                $sortedCatalog->addUIAsset($assetMatchingPattern);
            }
        }

        $this->addUnmatchedAssets($uiAssetCatalog, $sortedCatalog);

        return $sortedCatalog;
    }

    /**
     * @param UIAssetCatalog $uiAssetCatalog
     * @param UIAssetCatalog $sortedCatalog
     */
    private function addUnmatchedAssets($uiAssetCatalog, $sortedCatalog)
    {
        foreach ($uiAssetCatalog->getAssets() as $uiAsset) {
            $sortedCatalog->addUIAsset($uiAsset);
        }
    }
}