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 / UIAsset / OnDiskUIAsset.php
matomo / app / core / AssetManager / UIAsset Last commit date
InMemoryUIAsset.php 5 years ago OnDiskUIAsset.php 5 years ago
OnDiskUIAsset.php
136 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 */
9 namespace Piwik\AssetManager\UIAsset;
10
11 use Exception;
12 use Piwik\AssetManager\UIAsset;
13 use Piwik\Common;
14 use Piwik\Filesystem;
15
16 class OnDiskUIAsset extends UIAsset
17 {
18 /**
19 * @var string
20 */
21 private $baseDirectory;
22
23 /**
24 * @var string
25 */
26 private $relativeLocation;
27
28 /**
29 * @var string
30 */
31 private $relativeRootDir;
32
33 /**
34 * @param string $baseDirectory
35 * @param string $fileLocation
36 */
37 public function __construct($baseDirectory, $fileLocation, $relativeRootDir = '')
38 {
39 $this->baseDirectory = $baseDirectory;
40 $this->relativeLocation = $fileLocation;
41
42 if (!empty($relativeRootDir)
43 && is_string($relativeRootDir)
44 && !Common::stringEndsWith($relativeRootDir, '/')) {
45 $relativeRootDir .= '/';
46 }
47
48 $this->relativeRootDir = $relativeRootDir;
49 }
50
51 public function getAbsoluteLocation()
52 {
53 return $this->baseDirectory . '/' . $this->relativeLocation;
54 }
55
56 public function getRelativeLocation()
57 {
58 if (isset($this->relativeRootDir)) {
59 return $this->relativeRootDir . $this->relativeLocation;
60 }
61 return $this->relativeLocation;
62 }
63
64 public function getBaseDirectory()
65 {
66 return $this->baseDirectory;
67 }
68
69 public function validateFile()
70 {
71 if (!$this->assetIsReadable()) {
72 throw new Exception("The ui asset with 'href' = " . $this->getAbsoluteLocation() . " is not readable");
73 }
74 }
75
76 public function delete()
77 {
78 if ($this->exists()) {
79 try {
80 Filesystem::remove($this->getAbsoluteLocation());
81 } catch (Exception $e) {
82 throw new Exception("Unable to delete merged file : " . $this->getAbsoluteLocation() . ". Please delete the file and refresh");
83 }
84
85 // try to remove compressed version of the merged file.
86 Filesystem::remove($this->getAbsoluteLocation() . ".deflate", true);
87 Filesystem::remove($this->getAbsoluteLocation() . ".gz", true);
88 }
89 }
90
91 /**
92 * @param string $content
93 * @throws \Exception
94 */
95 public function writeContent($content)
96 {
97 $this->delete();
98
99 $newFile = @fopen($this->getAbsoluteLocation(), "w");
100
101 if (!$newFile) {
102 throw new Exception("The file : " . $newFile . " can not be opened in write mode.");
103 }
104
105 fwrite($newFile, $content);
106
107 fclose($newFile);
108 }
109
110 /**
111 * @return string
112 */
113 public function getContent()
114 {
115 return file_get_contents($this->getAbsoluteLocation());
116 }
117
118 public function exists()
119 {
120 return $this->assetIsReadable();
121 }
122
123 /**
124 * @return boolean
125 */
126 private function assetIsReadable()
127 {
128 return is_readable($this->getAbsoluteLocation());
129 }
130
131 public function getModificationDate()
132 {
133 return filemtime($this->getAbsoluteLocation());
134 }
135 }
136