diff options
Diffstat (limited to 'plugins/CustomPiwikJs/File.php')
-rw-r--r-- | plugins/CustomPiwikJs/File.php | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/plugins/CustomPiwikJs/File.php b/plugins/CustomPiwikJs/File.php new file mode 100644 index 0000000000..79a93e7437 --- /dev/null +++ b/plugins/CustomPiwikJs/File.php @@ -0,0 +1,75 @@ +<?php +/** + * Piwik - free/libre analytics platform + * + * @link http://piwik.org + * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later + */ + +namespace Piwik\Plugins\CustomPiwikJs; + +use Piwik\Plugins\CustomPiwikJs\Exception\AccessDeniedException; + +class File +{ + /** + * @var string + */ + private $file; + + public function __construct($file) + { + $this->file = $file; + } + + public function checkReadable() + { + if (!$this->hasReadAccess()) { + throw new AccessDeniedException(sprintf('The file %s is not readable', $this->file)); + } + } + + public function checkWritable() + { + if (!$this->hasWriteAccess()) { + throw new AccessDeniedException(sprintf('The file %s is not writable', $this->file)); + } + } + + public function save($content) + { + file_put_contents($this->file, $content); + } + + public function getContent() + { + if (!$this->hasReadAccess()) { + return null; + } + + return file_get_contents($this->file); + } + + public function getName() + { + return basename($this->file); + } + + /** + * @return bool + */ + public function hasWriteAccess() + { + return $this->hasReadAccess() && is_writable($this->file); + } + + /** + * @return bool + */ + public function hasReadAccess() + { + return file_exists($this->file) && is_readable($this->file); + } + + +} |