PluginProbe ʕ •ᴥ•ʔ
Matomo Analytics – Powerful, Privacy-First Insights for WordPress / 5.12.1
Matomo Analytics – Powerful, Privacy-First Insights for WordPress v5.12.1
5.12.1 5.12.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 / UIAsset / OnDiskUIAsset.php
matomo / app / core / AssetManager / UIAsset Last commit date
InMemoryUIAsset.php 1 year ago OnDiskUIAsset.php 1 month ago
OnDiskUIAsset.php
115 lines
1 <?php
2
3 /**
4 * Matomo - free/libre analytics platform
5 *
6 * @link https://matomo.org
7 * @license https://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
8 */
9 namespace Piwik\AssetManager\UIAsset;
10
11 use Exception;
12 use Piwik\AssetManager\UIAsset;
13 use Piwik\Common;
14 use Piwik\Filesystem;
15 class OnDiskUIAsset extends UIAsset
16 {
17 /**
18 * @var string
19 */
20 private $baseDirectory;
21 /**
22 * @var string
23 */
24 private $relativeLocation;
25 /**
26 * @var string
27 */
28 private $relativeRootDir;
29 /**
30 * @param string $baseDirectory
31 * @param string $fileLocation
32 * @param string $relativeRootDir
33 */
34 public function __construct($baseDirectory, $fileLocation, $relativeRootDir = '')
35 {
36 $this->baseDirectory = $baseDirectory;
37 $this->relativeLocation = $fileLocation;
38 if (!empty($relativeRootDir) && is_string($relativeRootDir) && !Common::stringEndsWith($relativeRootDir, '/')) {
39 $relativeRootDir .= '/';
40 }
41 $this->relativeRootDir = $relativeRootDir;
42 }
43 public function getAbsoluteLocation()
44 {
45 return $this->baseDirectory . '/' . $this->relativeLocation;
46 }
47 public function getRelativeLocation()
48 {
49 if (isset($this->relativeRootDir)) {
50 return $this->relativeRootDir . $this->relativeLocation;
51 }
52 return $this->relativeLocation;
53 }
54 public function getBaseDirectory()
55 {
56 return $this->baseDirectory;
57 }
58 public function validateFile()
59 {
60 if (!$this->assetIsReadable()) {
61 throw new Exception("The ui asset with 'href' = " . $this->getAbsoluteLocation() . " is not readable");
62 }
63 }
64 public function delete()
65 {
66 if ($this->exists()) {
67 try {
68 Filesystem::remove($this->getAbsoluteLocation());
69 } catch (Exception $e) {
70 throw new Exception("Unable to delete merged file : " . $this->getAbsoluteLocation() . ". Please delete the file and refresh");
71 }
72 // try to remove compressed version of the merged file.
73 Filesystem::remove($this->getAbsoluteLocation() . ".deflate", \true);
74 Filesystem::remove($this->getAbsoluteLocation() . ".gz", \true);
75 }
76 }
77 /**
78 * @param string $content
79 * @throws \Exception
80 */
81 public function writeContent($content) : void
82 {
83 $this->delete();
84 $location = $this->getAbsoluteLocation();
85 $newFile = @fopen($location, 'w');
86 if (!$newFile) {
87 throw new Exception('The file : ' . $location . ' can not be opened in write mode.');
88 }
89 fwrite($newFile, $content);
90 fclose($newFile);
91 }
92 /**
93 * @return string
94 */
95 public function getContent()
96 {
97 return file_get_contents($this->getAbsoluteLocation());
98 }
99 public function exists()
100 {
101 return $this->assetIsReadable();
102 }
103 /**
104 * @return boolean
105 */
106 private function assetIsReadable()
107 {
108 return is_readable($this->getAbsoluteLocation());
109 }
110 public function getModificationDate()
111 {
112 return filemtime($this->getAbsoluteLocation());
113 }
114 }
115