From 7a77331e942fe8273941f2748be1ffbf8edb4a79 Mon Sep 17 00:00:00 2001 From: Tim Otten Date: Wed, 9 Sep 2015 13:50:11 -0700 Subject: [PATCH] CRM_Core_Config - Fix bugs in path/dir settings --- CRM/Core/Config.php | 2 +- CRM/Core/Config/Defaults.php | 20 ++++++++++++-------- Civi/Core/SettingsBag.php | 17 ++++++++++++++--- 3 files changed, 27 insertions(+), 12 deletions(-) diff --git a/CRM/Core/Config.php b/CRM/Core/Config.php index 8fd55569f7..688c7dabd2 100644 --- a/CRM/Core/Config.php +++ b/CRM/Core/Config.php @@ -296,7 +296,7 @@ class CRM_Core_Config extends CRM_Core_Config_Variables { $this->extensionsDir = CRM_Core_Config_Defaults::getExtensionsDir(); $this->imageUploadDir = CRM_Core_Config_Defaults::getImageUploadDir(); $this->resourceBase = CRM_Core_Config_Defaults::getResourceBase(); - $this->uploadDir = CRM_Core_Config_Defaults::getImageUploadDir(); + $this->uploadDir = CRM_Core_Config_Defaults::getUploadDir(); $this->userFrameworkResourceURL = CRM_Core_Config_Defaults::getUserFrameworkResourceUrl(); $this->customCSSURL = CRM_Core_Config_Defaults::getCustomCssUrl(); diff --git a/CRM/Core/Config/Defaults.php b/CRM/Core/Config/Defaults.php index 9c468daf3f..3ea2982de5 100644 --- a/CRM/Core/Config/Defaults.php +++ b/CRM/Core/Config/Defaults.php @@ -61,10 +61,11 @@ class CRM_Core_Config_Defaults { } public static function getCustomFileUploadDir() { - $value = Civi::settings()->getPath('customFileUploadDir'); + $settings = Civi::settings(); + $value = $settings->getPath('customFileUploadDir'); if (empty($value)) { $defaultFileStorage = CRM_Core_Config::singleton()->userSystem->getDefaultFileStorage(); - $value = $defaultFileStorage['url'] . "custom/"; + $value = $settings->filterPath($defaultFileStorage['path'] . "custom/"); } $value = CRM_Utils_File::addTrailingSlash($value); CRM_Utils_File::createDir($value); @@ -90,10 +91,11 @@ class CRM_Core_Config_Defaults { } public static function getImageUploadDir() { - $value = Civi::settings()->getPath('imageUploadDir'); + $settings = Civi::settings(); + $value = $settings->getPath('imageUploadDir'); if (empty($value)) { $defaultFileStorage = CRM_Core_Config::singleton()->userSystem->getDefaultFileStorage(); - $value = $defaultFileStorage['path'] . "persist/contribute/"; + $value = $settings->filterPath($defaultFileStorage['path'] . "persist/contribute/"); } $value = CRM_Utils_File::addTrailingSlash($value); CRM_Utils_File::createDir($value); @@ -101,19 +103,21 @@ class CRM_Core_Config_Defaults { } public static function getImageUploadUrl() { - $imageUploadURL = Civi::settings()->getUrl('imageUploadURL', 'absolute'); + $settings = Civi::settings(); + $imageUploadURL = $settings->getUrl('imageUploadURL', 'absolute'); if (empty($imageUploadURL)) { $defaultFileStorage = CRM_Core_Config::singleton()->userSystem->getDefaultFileStorage(); - $imageUploadURL = $defaultFileStorage['url'] . 'persist/contribute/'; + $imageUploadURL = $settings->filterUrl($defaultFileStorage['url'] . 'persist/contribute/', 'absolute'); } return $imageUploadURL; } public static function getUploadDir() { - $value = Civi::settings()->getPath('uploadDir'); + $settings = Civi::settings(); + $value = $settings->getPath('uploadDir'); if (empty($value)) { $defaultFileStorage = CRM_Core_Config::singleton()->userSystem->getDefaultFileStorage(); - $value = $defaultFileStorage['path'] . "upload/"; + $value = $settings->filterPath($defaultFileStorage['path'] . "upload/"); } $value = CRM_Utils_File::addTrailingSlash($value); CRM_Utils_File::createDir($value); diff --git a/Civi/Core/SettingsBag.php b/Civi/Core/SettingsBag.php index f7c668b839..0496cfcf3f 100644 --- a/Civi/Core/SettingsBag.php +++ b/Civi/Core/SettingsBag.php @@ -165,7 +165,7 @@ class SettingsBag { */ public function getPath($key) { if (!isset($this->filteredValues[$key])) { - $this->filteredValues[$key] = \CRM_Utils_File::absoluteDirectory($this->get($key)); + $this->filteredValues[$key] = $this->filterPath($this->get($key)); } return $this->filteredValues[$key]; } @@ -350,11 +350,22 @@ class SettingsBag { if ($value) { if ($ssl || ($ssl === NULL && \CRM_Utils_System::isSSL())) { $value = str_replace('http://', 'https://', $value); - return $value; } - return $value; } return $value; } + /** + * @param string $value + * @return bool|string + */ + public function filterPath($value) { + if ($value) { + return \CRM_Utils_File::absoluteDirectory($value); + } + else { + return FALSE; + } + } + } -- 2.25.1