X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=CRM%2FUtils%2FFile.php;h=aa65b1d181674325d8e99b072e80207fdc8ad542;hb=701fd7a63eb4b10a6b91a91c0c05dba1bbaf8b69;hp=69a5465ca047247867d50245a6fead37ae8dfd0f;hpb=1c1c8792890051ffcd8ae85e7781b0952bbf2907;p=civicrm-core.git diff --git a/CRM/Utils/File.php b/CRM/Utils/File.php index 69a5465ca0..aa65b1d181 100644 --- a/CRM/Utils/File.php +++ b/CRM/Utils/File.php @@ -320,7 +320,7 @@ class CRM_Utils_File { if (FALSE === file_get_contents($fileName)) { // Our file cannot be found. // Using 'die' here breaks this on extension upgrade. - throw new CRM_Exception('Could not find the SQL file.'); + throw new CRM_Core_Exception('Could not find the SQL file.'); } self::runSqlQuery($dsn, file_get_contents($fileName), $prefix, $dieOnErrors); @@ -577,8 +577,19 @@ HTACCESS; } /** - * Create the base file path from which all our internal directories are - * offset. This is derived from the template compile directory set + * (Deprecated) Create the file-path from which all other internal paths are + * computed. This implementation determines it as `dirname(CIVICRM_TEMPLATE_COMPILEDIR)`. + * + * This approach is problematic - e.g. it prevents one from authentically + * splitting the CIVICRM_TEMPLATE_COMPILEDIR away from other dirs. The implementation + * is preserved for backwards compatibility (and should only be called by + * CMS-adapters and by Civi\Core\Paths). + * + * Do not use it for new path construction logic. Instead, use Civi::paths(). + * + * @deprecated + * @see \Civi::paths() + * @see \Civi\Core\Paths */ public static function baseFilePath() { static $_path = NULL; @@ -629,6 +640,10 @@ HTACCESS; * @param $directory * * @return string + * @deprecated + * Computation of a relative path requires some base. + * This implementation is problematic because it relies on an + * implicit base which was constructed problematically. */ public static function relativeDirectory($directory) { // Do nothing on windows @@ -655,12 +670,12 @@ HTACCESS; /** * @param $directory - * @param string|NULL $basePath + * @param string $basePath * The base path when evaluating relative paths. Should include trailing slash. * * @return string */ - public static function absoluteDirectory($directory, $basePath = NULL) { + public static function absoluteDirectory($directory, $basePath) { // check if directory is already absolute, if so return immediately // Note: Windows PHP accepts any mix of "/" or "\", so "C:\htdocs" or "C:/htdocs" would be a valid absolute path if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN' && preg_match(';^[a-zA-Z]:[/\\\\];', $directory)) { @@ -672,8 +687,12 @@ HTACCESS; return $directory; } - // make everything absolute from the baseFilePath - $basePath = ($basePath === NULL) ? self::baseFilePath() : $basePath; + if ($basePath === NULL) { + // Previous versions interpreted `NULL` to mean "default to `self::baseFilePath()`". + // However, no code in the known `universe` relies on this interpretation, and + // the `baseFilePath()` function is problematic/deprecated. + throw new \RuntimeException("absoluteDirectory() requires specifying a basePath"); + } // ensure that $basePath has a trailing slash $basePath = self::addTrailingSlash($basePath);