| <?php |
|
|
| |
| |
| |
| |
| |
| |
|
|
| namespace Piwik\Plugins\CustomJsTracker; |
|
|
| use Piwik\Plugins\CustomJsTracker\Exception\AccessDeniedException; |
|
|
| class File |
| { |
| |
| |
| |
| protected $file; |
|
|
| public function __construct($file) |
| { |
| $this->file = $file; |
| } |
|
|
| public function setFile($file) |
| { |
| return new static($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 isFileContentSame($content) |
| { |
| |
| |
| return $this->getContent() === $content; |
| } |
|
|
| public function save($content) |
| { |
| if (false === file_put_contents($this->file, $content, LOCK_EX)) { |
| throw new AccessDeniedException(sprintf("Could not write to %s", $this->file)); |
| } |
| |
| |
| return [$this->getPath()]; |
| } |
|
|
| public function getContent() |
| { |
| if (!$this->hasReadAccess()) { |
| return null; |
| } |
|
|
| return file_get_contents($this->file); |
| } |
|
|
| public function getPath() |
| { |
| return $this->file; |
| } |
|
|
| public function getName() |
| { |
| return basename($this->file); |
| } |
|
|
| |
| |
| |
| public function hasWriteAccess() |
| { |
| if (file_exists($this->file) && !is_writable($this->file)) { |
| return false; |
| } |
| return is_writable(dirname($this->file)) || is_writable($this->file); |
| } |
|
|
| |
| |
| |
| public function hasReadAccess() |
| { |
| return file_exists($this->file) && is_readable($this->file); |
| } |
| } |
|
|