X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FUtil%2FBasePath.php;h=3d5a23727809a9023d29807c4e9e08a6c46e7392;hb=204e52ea307b182175ae0c64d6eb69c71a104658;hp=fecc63a2ab60e2a6c28f21306b822d74a67db66e;hpb=6a9d73f7d9711bcd29142b8614fe6ddc09f4eae1;p=friendica.git diff --git a/src/Util/BasePath.php b/src/Util/BasePath.php index fecc63a2ab..3d5a237278 100644 --- a/src/Util/BasePath.php +++ b/src/Util/BasePath.php @@ -1,39 +1,81 @@ . + * + */ namespace Friendica\Util; -use Friendica\Core; - class BasePath { /** - * @brief Returns the base filesystem path of the App + * @var string + */ + private $baseDir; + /** + * @var array + */ + private $server; + + /** + * @param string|null $baseDir The default base path + * @param array $server server arguments + */ + public function __construct(string $baseDir, array $server = []) + { + $this->baseDir = $baseDir; + $this->server = $server; + } + + /** + * Returns the base filesystem path of the App * * It first checks for the internal variable, then for DOCUMENT_ROOT and * finally for PWD * - * @param string|null $basePath The default base path - * @param array $server server arguments - * * @return string * * @throws \Exception if directory isn't usable */ - public static function create($basePath, $server = []) + public function getPath() { - if (!$basePath && !empty($server['DOCUMENT_ROOT'])) { - $basePath = $server['DOCUMENT_ROOT']; + $baseDir = $this->baseDir; + $server = $this->server; + + if ((!$baseDir || !is_dir($baseDir)) && !empty($server['DOCUMENT_ROOT'])) { + $baseDir = $server['DOCUMENT_ROOT']; } - if (!$basePath && !empty($server['PWD'])) { - $basePath = $server['PWD']; + if ((!$baseDir || !is_dir($baseDir)) && !empty($server['PWD'])) { + $baseDir = $server['PWD']; } - return self::getRealPath($basePath); + $baseDir = self::getRealPath($baseDir); + + if (!is_dir($baseDir)) { + throw new \Exception(sprintf('\'%s\' is not a valid basepath', $baseDir)); + } + + return $baseDir; } /** - * @brief Returns a normalized file path + * Returns a normalized file path * * This is a wrapper for the "realpath" function. * That function cannot detect the real path when some folders aren't readable. @@ -52,42 +94,4 @@ class BasePath return $path; } } - - /** - * @brief Checks if a given directory is usable for the system - * - * @param $directory - * @param bool $check_writable - * - * @return boolean the directory is usable - */ - public static function isDirectoryUsable($directory, $check_writable = true) - { - if ($directory == '') { - Core\Logger::log('Directory is empty. This shouldn\'t happen.', Core\Logger::DEBUG); - return false; - } - - if (!file_exists($directory)) { - Core\Logger::log('Path "' . $directory . '" does not exist for user ' . Core\System::getUser(), Core\Logger::DEBUG); - return false; - } - - if (is_file($directory)) { - Core\Logger::log('Path "' . $directory . '" is a file for user ' . Core\System::getUser(), Core\Logger::DEBUG); - return false; - } - - if (!is_dir($directory)) { - Core\Logger::log('Path "' . $directory . '" is not a directory for user ' . Core\System::getUser(), Core\Logger::DEBUG); - return false; - } - - if ($check_writable && !is_writable($directory)) { - Core\Logger::log('Path "' . $directory . '" is not writable for user ' . Core\System::getUser(), Core\Logger::DEBUG); - return false; - } - - return true; - } }