PluginProbe ʕ •ᴥ•ʔ
Matomo Analytics – Powerful, Privacy-First Insights for WordPress / 5.8.2
Matomo Analytics – Powerful, Privacy-First Insights for WordPress v5.8.2
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 year ago
OnDiskUIAsset.php
114 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 */
33 public function __construct($baseDirectory, $fileLocation, $relativeRootDir = '')
34 {
35 $this->baseDirectory = $baseDirectory;
36 $this->relativeLocation = $fileLocation;
37 if (!empty($relativeRootDir) && is_string($relativeRootDir) && !Common::stringEndsWith($relativeRootDir, '/')) {
38 $relativeRootDir .= '/';
39 }
40 $this->relativeRootDir = $relativeRootDir;
41 }
42 public function getAbsoluteLocation()
43 {
44 return $this->baseDirectory . '/' . $this->relativeLocation;
45 }
46 public function getRelativeLocation()
47 {
48 if (isset($this->relativeRootDir)) {
49 return $this->relativeRootDir . $this->relativeLocation;
50 }
51 return $this->relativeLocation;
52 }
53 public function getBaseDirectory()
54 {
55 return $this->baseDirectory;
56 }
57 public function validateFile()
58 {
59 if (!$this->assetIsReadable()) {
60 throw new Exception("The ui asset with 'href' = " . $this->getAbsoluteLocation() . " is not readable");
61 }
62 }
63 public function delete()
64 {
65 if ($this->exists()) {
66 try {
67 Filesystem::remove($this->getAbsoluteLocation());
68 } catch (Exception $e) {
69 throw new Exception("Unable to delete merged file : " . $this->getAbsoluteLocation() . ". Please delete the file and refresh");
70 }
71 // try to remove compressed version of the merged file.
72 Filesystem::remove($this->getAbsoluteLocation() . ".deflate", \true);
73 Filesystem::remove($this->getAbsoluteLocation() . ".gz", \true);
74 }
75 }
76 /**
77 * @param string $content
78 * @throws \Exception
79 */
80 public function writeContent($content) : void
81 {
82 $this->delete();
83 $location = $this->getAbsoluteLocation();
84 $newFile = @fopen($location, 'w');
85 if (!$newFile) {
86 throw new Exception('The file : ' . $location . ' can not be opened in write mode.');
87 }
88 fwrite($newFile, $content);
89 fclose($newFile);
90 }
91 /**
92 * @return string
93 */
94 public function getContent()
95 {
96 return file_get_contents($this->getAbsoluteLocation());
97 }
98 public function exists()
99 {
100 return $this->assetIsReadable();
101 }
102 /**
103 * @return boolean
104 */
105 private function assetIsReadable()
106 {
107 return is_readable($this->getAbsoluteLocation());
108 }
109 public function getModificationDate()
110 {
111 return filemtime($this->getAbsoluteLocation());
112 }
113 }
114