PluginProbe ʕ •ᴥ•ʔ
Matomo Analytics – Powerful, Privacy-First Insights for WordPress / 4.3.0
Matomo Analytics – Powerful, Privacy-First Insights for WordPress v4.3.0
5.11.1 5.11.0 5.10.2 5.10.1 trunk 1.0.2 1.0.3 1.0.4 1.0.5 1.0.6 1.1.0 1.1.1 1.1.2 1.1.3 1.2.0 1.3.0 1.3.1 1.3.2 4.0.0 4.0.1 4.0.2 4.0.3 4.0.4 4.1.0 4.1.1 4.1.2 4.1.3 4.10.0 4.11.0 4.12.0 4.13.0 4.13.2 4.13.3 4.13.4 4.13.5 4.14.0 4.14.1 4.14.2 4.15.0 4.15.1 4.15.2 4.15.3 4.2.0 4.3.0 4.3.1 4.4.1 4.4.2 4.5.0 4.6.0 5.0.1 5.0.2 5.0.3 5.0.4 5.0.5 5.0.6 5.0.7 5.0.8 5.1.0 5.1.1 5.1.2 5.1.3 5.1.4 5.1.5 5.1.6 5.1.7 5.10.0 5.2.0 5.2.1 5.2.2 5.3.0 5.3.1 5.3.2 5.3.3 5.6.0 5.6.1 5.7.0 5.7.1 5.8.0 5.8.1 5.8.2
matomo / app / core / AssetManager / UIAssetMinifier.php
matomo / app / core / AssetManager Last commit date
UIAsset 5 years ago UIAssetFetcher 5 years ago UIAssetMerger 5 years ago UIAsset.php 5 years ago UIAssetCacheBuster.php 5 years ago UIAssetCatalog.php 5 years ago UIAssetCatalogSorter.php 5 years ago UIAssetFetcher.php 5 years ago UIAssetMerger.php 5 years ago UIAssetMinifier.php 5 years ago
UIAssetMinifier.php
67 lines
1 <?php
2 /**
3 * Matomo - free/libre analytics platform
4 *
5 * @link https://matomo.org
6 * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
7 *
8 * @method static \Piwik\AssetManager\UIAssetMinifier getInstance()
9 */
10 namespace Piwik\AssetManager;
11
12 use Exception;
13 use JShrink\Minifier;
14 use Piwik\Singleton;
15
16 class UIAssetMinifier extends Singleton
17 {
18 const MINIFIED_JS_RATIO = 100;
19
20 protected function __construct()
21 {
22 self::validateDependency();
23 parent::__construct();
24 }
25
26 /**
27 * Indicates if the provided JavaScript content has already been minified or not.
28 * The heuristic is based on a custom ratio : (size of file) / (number of lines).
29 * The threshold (100) has been found empirically on existing files :
30 * - the ratio never exceeds 50 for non-minified content and
31 * - it never goes under 150 for minified content.
32 *
33 * @param string $content Contents of the JavaScript file
34 * @return boolean
35 */
36 public function isMinifiedJs($content)
37 {
38 $lineCount = substr_count($content, "\n");
39
40 if ($lineCount == 0) {
41 return true;
42 }
43
44 $contentSize = strlen($content);
45
46 $ratio = $contentSize / $lineCount;
47
48 return $ratio > self::MINIFIED_JS_RATIO;
49 }
50
51 /**
52 * @param string $content
53 * @return string
54 */
55 public function minifyJs($content)
56 {
57 return Minifier::minify($content);
58 }
59
60 private static function validateDependency()
61 {
62 if (!class_exists("JShrink\\Minifier")) {
63 throw new Exception("JShrink could not be found, maybe you are using Matomo from git and need to update Composer. $ php composer.phar update");
64 }
65 }
66 }
67