From b79bd63231554b386e7fffdc03a914395fe67d20 Mon Sep 17 00:00:00 2001 From: Philipp Holzer Date: Tue, 5 Feb 2019 22:30:18 +0100 Subject: [PATCH] move isDirectoryUsable to System --- boot.php | 15 ++++++++------- src/App.php | 3 +-- src/Core/System.php | 38 ++++++++++++++++++++++++++++++++++++++ src/Util/BasePath.php | 40 ---------------------------------------- 4 files changed, 47 insertions(+), 49 deletions(-) diff --git a/boot.php b/boot.php index d812724c7b..318798e324 100644 --- a/boot.php +++ b/boot.php @@ -22,6 +22,7 @@ use Friendica\BaseObject; use Friendica\Core\Config; use Friendica\Core\PConfig; use Friendica\Core\Protocol; +use Friendica\Core\System; use Friendica\Database\DBA; use Friendica\Model\Contact; use Friendica\Util\BasePath; @@ -634,7 +635,7 @@ function get_temppath() $temppath = Config::get("system", "temppath"); - if (($temppath != "") && BasePath::isDirectoryUsable($temppath)) { + if (($temppath != "") && System::isDirectoryUsable($temppath)) { // We have a temp path and it is usable return BasePath::getRealPath($temppath); } @@ -643,7 +644,7 @@ function get_temppath() $temppath = sys_get_temp_dir(); // Check if it is usable - if (($temppath != "") && BasePath::isDirectoryUsable($temppath)) { + if (($temppath != "") && System::isDirectoryUsable($temppath)) { // Always store the real path, not the path through symlinks $temppath = BasePath::getRealPath($temppath); @@ -654,7 +655,7 @@ function get_temppath() mkdir($new_temppath); } - if (BasePath::isDirectoryUsable($new_temppath)) { + if (System::isDirectoryUsable($new_temppath)) { // The new path is usable, we are happy Config::set("system", "temppath", $new_temppath); return $new_temppath; @@ -736,7 +737,7 @@ function get_itemcachepath() } $itemcache = Config::get('system', 'itemcache'); - if (($itemcache != "") && BasePath::isDirectoryUsable($itemcache)) { + if (($itemcache != "") && System::isDirectoryUsable($itemcache)) { return BasePath::getRealPath($itemcache); } @@ -748,7 +749,7 @@ function get_itemcachepath() mkdir($itemcache); } - if (BasePath::isDirectoryUsable($itemcache)) { + if (System::isDirectoryUsable($itemcache)) { Config::set("system", "itemcache", $itemcache); return $itemcache; } @@ -764,7 +765,7 @@ function get_itemcachepath() function get_spoolpath() { $spoolpath = Config::get('system', 'spoolpath'); - if (($spoolpath != "") && BasePath::isDirectoryUsable($spoolpath)) { + if (($spoolpath != "") && System::isDirectoryUsable($spoolpath)) { // We have a spool path and it is usable return $spoolpath; } @@ -779,7 +780,7 @@ function get_spoolpath() mkdir($spoolpath); } - if (BasePath::isDirectoryUsable($spoolpath)) { + if (System::isDirectoryUsable($spoolpath)) { // The new path is usable, we are happy Config::set("system", "spoolpath", $spoolpath); return $spoolpath; diff --git a/src/App.php b/src/App.php index 38d41cfcf8..8068a1530b 100644 --- a/src/App.php +++ b/src/App.php @@ -13,7 +13,6 @@ use Friendica\Core\Config\ConfigCacheLoader; use Friendica\Database\DBA; use Friendica\Factory\ConfigFactory; use Friendica\Network\HTTPException\InternalServerErrorException; -use Friendica\Util\BasePath; use Psr\Log\LoggerInterface; /** @@ -194,7 +193,7 @@ class App $this->logger = $logger; $this->basePath = $this->config->get('system', 'basepath'); - if (!BasePath::isDirectoryUsable($this->basePath, false)) { + if (!Core\System::isDirectoryUsable($this->basePath, false)) { throw new Exception('Basepath ' . $this->basePath . ' isn\'t usable.'); } $this->basePath = rtrim($this->basePath, DIRECTORY_SEPARATOR); diff --git a/src/Core/System.php b/src/Core/System.php index c1d23a9ea1..f0ed083573 100644 --- a/src/Core/System.php +++ b/src/Core/System.php @@ -303,6 +303,44 @@ class System extends BaseObject return $processUser['name']; } + /** + * @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 == '') { + Logger::log('Directory is empty. This shouldn\'t happen.', Logger::DEBUG); + return false; + } + + if (!file_exists($directory)) { + Logger::log('Path "' . $directory . '" does not exist for user ' . static::getUser(), Logger::DEBUG); + return false; + } + + if (is_file($directory)) { + Logger::log('Path "' . $directory . '" is a file for user ' . static::getUser(), Logger::DEBUG); + return false; + } + + if (!is_dir($directory)) { + Logger::log('Path "' . $directory . '" is not a directory for user ' . static::getUser(), Logger::DEBUG); + return false; + } + + if ($check_writable && !is_writable($directory)) { + Logger::log('Path "' . $directory . '" is not writable for user ' . static::getUser(), Logger::DEBUG); + return false; + } + + return true; + } + /// @todo Move the following functions from boot.php /* function killme() diff --git a/src/Util/BasePath.php b/src/Util/BasePath.php index fecc63a2ab..a2849831eb 100644 --- a/src/Util/BasePath.php +++ b/src/Util/BasePath.php @@ -2,8 +2,6 @@ namespace Friendica\Util; -use Friendica\Core; - class BasePath { /** @@ -52,42 +50,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; - } }