Seditio Source
Root |
./othercms/elxis_5.3_atlas_rev2452/includes/js/jodit/connector/vendor/jodit/application/src/Source.php
<?php
namespace Jodit;

defined('_ELXIS_') or die ('Direct access to this location is not allowed');


/**
 * Class Source
 * @package jodit
 * @property string $baseurl
 * @property string $root
 * @property number $maxFileSize
 * @property number $quality
 * @property string $thumbFolderName
 * @property string $defaultPermission
 * @property string[] $imageExtensions
 */
class Source {
   
/**
     * @property string $action
     */
   
public $action;

    private
$data = [];
   
/**
     * @var \Jodit\Config
     */
   
private $defaultOptions;

    function
__get($key) {
        if (!empty(
$this->data->{$key})) {
            return
$this->data->{$key};
        }
        if (
$this->defaultOptions->{$key}) {
            return
$this->defaultOptions->{$key};
        }

        throw new \
ErrorException('Option ' . $key . ' not set', 501);
    }

    function
__construct($data, $defaultOptuions) {
       
$this->data           = (object)$data;
       
$this->defaultOptions = $defaultOptuions;
       
$this->request        = new Request();
    }

   
/**
     * Get full path for $source->root with trailing slash
     *
     * @return string
     * @throws \Exception
     */
   
public function getRoot() {
        if (
$this->root) {
            if (!
is_dir($this->root)) {
                throw new \
Exception('Root directory not exists ' . $this->root, 501);
            }
            return
realpath($this->root) . DIRECTORY_SEPARATOR;
        }

        throw new \
Exception('Set root directory for source', 501);
    }

   
/**
     * Get full path for $_REQUEST[$name] relative path with trailing slash(if directory)
     *
     * @param string $relativePath
     * @return bool|string
     * @throws \Exception
     */
   
public function getPath ($relativePath = false) {
       
$root = $this->getRoot();

        if (
$relativePath === false) {
           
$relativePath = $this->request->path ?: '';
        }

       
//always check whether we are below the root category is not reached
       
if (realpath($root . $relativePath) && strpos(realpath($root . $relativePath) . DIRECTORY_SEPARATOR, $root) !== false) {
           
$root = realpath($root . $relativePath);
            if (
is_dir($root)) {
               
$root .= DIRECTORY_SEPARATOR;
            }
        } else {
            throw new \
Exception('Path does not exist', 404);
        }

        return
$root;
    }
}