[TASK] Replace last occurrences of PATH_site with Environment API 41/57241/3
authorBenni Mack <benni@typo3.org>
Fri, 15 Jun 2018 19:54:03 +0000 (21:54 +0200)
committerChristian Kuhn <lolli@schwarzbu.ch>
Fri, 15 Jun 2018 20:59:45 +0000 (22:59 +0200)
Resolves: #85285
Releases: master
Change-Id: I4d12f7add6f536b3a412e554c8a6c4d64fd677e4
Reviewed-on: https://review.typo3.org/57241
Tested-by: TYPO3com <no-reply@typo3.com>
Reviewed-by: Jan Helke <typo3@helke.de>
Tested-by: Jan Helke <typo3@helke.de>
Reviewed-by: Christian Kuhn <lolli@schwarzbu.ch>
Tested-by: Christian Kuhn <lolli@schwarzbu.ch>
typo3/sysext/core/Classes/Configuration/ConfigurationManager.php
typo3/sysext/core/Classes/Core/ClassLoadingInformation.php
typo3/sysext/core/Classes/Core/ClassLoadingInformationGenerator.php
typo3/sysext/core/Classes/Core/SystemEnvironmentBuilder.php
typo3/sysext/core/Classes/Utility/GeneralUtility.php
typo3/sysext/core/Documentation/Changelog/master/Deprecation-85285-DeprecatedSystemConstants.rst [new file with mode: 0644]
typo3/sysext/core/Tests/Unit/Utility/Fixtures/GeneralUtilityFixture.php
typo3/sysext/frontend/Classes/Controller/TypoScriptFrontendController.php
typo3/sysext/install/Configuration/ExtensionScanner/Php/ConstantMatcher.php
typo3/sysext/scheduler/Classes/Controller/SchedulerModuleController.php

index 0efd98c..f444467 100644 (file)
@@ -14,6 +14,7 @@ namespace TYPO3\CMS\Core\Configuration;
  * The TYPO3 project - inspiring people to share!
  */
 
+use TYPO3\CMS\Core\Core\Environment;
 use TYPO3\CMS\Core\Crypto\Random;
 use TYPO3\CMS\Core\Service\OpcodeCacheService;
 use TYPO3\CMS\Core\Utility\ArrayUtility;
@@ -37,22 +38,22 @@ use TYPO3\CMS\Core\Utility\GeneralUtility;
 class ConfigurationManager
 {
     /**
-     * @var string Path to default TYPO3_CONF_VARS file, relative to PATH_site
+     * @var string Path to default TYPO3_CONF_VARS file, relative to the public web folder
      */
     protected $defaultConfigurationFile = 'typo3/sysext/core/Configuration/DefaultConfiguration.php';
 
     /**
-     * @var string Path to description file for TYPO3_CONF_VARS, relative to PATH_site
+     * @var string Path to description file for TYPO3_CONF_VARS, relative to the public web folder
      */
     protected $defaultConfigurationDescriptionFile = 'typo3/sysext/core/Configuration/DefaultConfigurationDescription.yaml';
 
     /**
-     * @var string Path to local overload TYPO3_CONF_VARS file, relative to PATH_site
+     * @var string Path to local overload TYPO3_CONF_VARS file, relative to the public web folder
      */
     protected $localConfigurationFile = 'typo3conf/LocalConfiguration.php';
 
     /**
-     * @var string Path to additional local file, relative to PATH_site
+     * @var string Path to additional local file, relative to the public web folder
      */
     protected $additionalConfigurationFile = 'typo3conf/AdditionalConfiguration.php';
 
@@ -100,7 +101,7 @@ class ConfigurationManager
      */
     public function getDefaultConfigurationFileLocation()
     {
-        return PATH_site . $this->defaultConfigurationFile;
+        return Environment::getPublicPath() . '/' . $this->defaultConfigurationFile;
     }
 
     /**
@@ -112,7 +113,7 @@ class ConfigurationManager
      */
     public function getDefaultConfigurationDescriptionFileLocation()
     {
-        return PATH_site . $this->defaultConfigurationDescriptionFile;
+        return Environment::getPublicPath() . '/' . $this->defaultConfigurationDescriptionFile;
     }
 
     /**
@@ -134,7 +135,7 @@ class ConfigurationManager
      */
     public function getLocalConfigurationFileLocation()
     {
-        return PATH_site . $this->localConfigurationFile;
+        return Environment::getPublicPath() . '/' . $this->localConfigurationFile;
     }
 
     /**
@@ -158,7 +159,7 @@ class ConfigurationManager
      */
     public function getAdditionalConfigurationFileLocation()
     {
-        return PATH_site . $this->additionalConfigurationFile;
+        return Environment::getPublicPath() . '/' . $this->additionalConfigurationFile;
     }
 
     /**
@@ -168,7 +169,7 @@ class ConfigurationManager
      */
     protected function getFactoryConfigurationFileLocation()
     {
-        return PATH_site . $this->factoryConfigurationFile;
+        return Environment::getPublicPath() . '/' . $this->factoryConfigurationFile;
     }
 
     /**
@@ -178,7 +179,7 @@ class ConfigurationManager
      */
     protected function getAdditionalFactoryConfigurationFileLocation()
     {
-        return PATH_site . $this->additionalFactoryConfigurationFile;
+        return Environment::getPublicPath() . '/' . $this->additionalFactoryConfigurationFile;
     }
 
     /**
@@ -320,7 +321,7 @@ class ConfigurationManager
     public function canWriteConfiguration()
     {
         $fileLocation = $this->getLocalConfigurationFileLocation();
-        return @is_writable(file_exists($fileLocation) ? $fileLocation : PATH_site . 'typo3conf/');
+        return @is_writable(file_exists($fileLocation) ? $fileLocation : Environment::getPublicPath() . '/typo3conf/');
     }
 
     /**
@@ -392,7 +393,7 @@ class ConfigurationManager
     public function writeAdditionalConfiguration(array $additionalConfigurationLines)
     {
         return GeneralUtility::writeFile(
-            PATH_site . $this->additionalConfigurationFile,
+            Environment::getPublicPath() . '/' . $this->additionalConfigurationFile,
             '<?php' . LF .
                 implode(LF, $additionalConfigurationLines) . LF
         );
index 2c9ef4a..56ceb6c 100644 (file)
@@ -92,7 +92,7 @@ class ClassLoadingInformation
         $activeExtensionPackages = static::getActiveExtensionPackages();
 
         /** @var ClassLoadingInformationGenerator  $generator */
-        $generator = GeneralUtility::makeInstance(ClassLoadingInformationGenerator::class, $composerClassLoader, $activeExtensionPackages, PATH_site, self::isTestingContext());
+        $generator = GeneralUtility::makeInstance(ClassLoadingInformationGenerator::class, $composerClassLoader, $activeExtensionPackages, Environment::getPublicPath() . '/', self::isTestingContext());
         $classInfoFiles = $generator->buildAutoloadInformationFiles();
         GeneralUtility::writeFile(self::getClassLoadingInformationDirectory() . self::AUTOLOAD_CLASSMAP_FILENAME, $classInfoFiles['classMapFile']);
         GeneralUtility::writeFile(self::getClassLoadingInformationDirectory() . self::AUTOLOAD_PSR4_FILENAME, $classInfoFiles['psr-4File']);
@@ -148,7 +148,7 @@ class ClassLoadingInformation
         $activeExtensionPackages = static::getActiveExtensionPackages();
 
         /** @var ClassLoadingInformationGenerator  $generator */
-        $generator = GeneralUtility::makeInstance(ClassLoadingInformationGenerator::class, $composerClassLoader, $activeExtensionPackages, PATH_site, self::isTestingContext());
+        $generator = GeneralUtility::makeInstance(ClassLoadingInformationGenerator::class, $composerClassLoader, $activeExtensionPackages, Environment::getPublicPath() . '/', self::isTestingContext());
 
         $classInformation = $generator->buildClassLoadingInformationForPackage($package);
         $composerClassLoader->addClassMap($classInformation['classMap']);
@@ -167,9 +167,9 @@ class ClassLoadingInformation
     protected static function getClassLoadingInformationDirectory()
     {
         if (self::isTestingContext()) {
-            return PATH_site . self::AUTOLOAD_INFO_DIR_TESTS;
+            return Environment::getPublicPath() . '/' . self::AUTOLOAD_INFO_DIR_TESTS;
         }
-        return PATH_site . self::AUTOLOAD_INFO_DIR;
+        return Environment::getPublicPath() . '/' . self::AUTOLOAD_INFO_DIR;
     }
 
     /**
index 33fc9d3..fe45dd6 100644 (file)
@@ -214,7 +214,7 @@ class ClassLoadingInformationGenerator
 
 // autoload_classmap.php @generated by TYPO3
 
-\$typo3InstallDir = PATH_site;
+\$typo3InstallDir = \TYPO3\CMS\Core\Core\Environment::getPublicPath() . '/';
 
 return array(
 
index 3c3c888..119450c 100644 (file)
@@ -188,10 +188,12 @@ class SystemEnvironmentBuilder
         }
 
         if (!defined('PATH_thisScript')) {
+            // @deprecated since v9, will be removed in v10
             define('PATH_thisScript', $scriptPath);
         }
         // Absolute path of the document root of the instance with trailing slash
         if (!defined('PATH_site')) {
+            // @deprecated since v9, will be removed in v10
             define('PATH_site', $rootPath . '/');
         }
         // Relative path from document root to typo3/ directory
index d953a01..b29d684 100644 (file)
@@ -2003,7 +2003,7 @@ class GeneralUtility
      * Writes $content to a filename in the typo3temp/ folder (and possibly one or two subfolders...)
      * Accepts an additional subdirectory in the file path!
      *
-     * @param string $filepath Absolute file path to write to inside "typo3temp/". First part of this string must match PATH_site."typo3temp/"
+     * @param string $filepath Absolute file path to write within the typo3temp/ or Environment::getVarPath() folder - the file path must be prefixed with this path
      * @param string $content Content string to write
      * @return string Returns NULL on success, otherwise an error string telling about the problem.
      */
@@ -2022,7 +2022,7 @@ class GeneralUtility
             Environment::getPublicPath() . '/typo3temp' => 'Environment::getPublicPath() + "/typo3temp/"'
         ];
         // Also allow project-path + /var/
-        if (Environment::getVarPath() !== PATH_site . 'typo3temp/var') {
+        if (Environment::getVarPath() !== Environment::getPublicPath() . '/typo3temp/var') {
             $relPath = substr(Environment::getVarPath(), strlen(Environment::getProjectPath()) + 1);
             $allowedPathPrefixes[Environment::getVarPath()] = 'ProjectPath + ' . $relPath;
         }
@@ -2820,7 +2820,7 @@ class GeneralUtility
                 // This can only be set by external entry scripts
                 if (defined('TYPO3_PATH_WEB')) {
                     $retVal = $url;
-                } elseif (Environment::getCurrentScript() && defined('PATH_site')) {
+                } elseif (Environment::getCurrentScript()) {
                     $lPath = PathUtility::stripPathSitePrefix(PathUtility::dirnameDuringBootstrap(Environment::getCurrentScript())) . '/';
                     $siteUrl = substr($url, 0, -strlen($lPath));
                     if (substr($siteUrl, -1) !== '/') {
@@ -3083,7 +3083,7 @@ class GeneralUtility
     /**
      * Returns the absolute filename of a relative reference, resolves the "EXT:" prefix
      * (way of referring to files inside extensions) and checks that the file is inside
-     * the PATH_site of the TYPO3 installation and implies a check with
+     * the TYPO3's base folder and implies a check with
      * \TYPO3\CMS\Core\Utility\GeneralUtility::validPathStr().
      *
      * @param string $filename The input filename/filepath to evaluate
@@ -3102,8 +3102,8 @@ class GeneralUtility
                 $filename = ExtensionManagementUtility::extPath($extKey) . $local;
             }
         } elseif (!static::isAbsPath($filename)) {
-            // is relative. Prepended with PATH_site
-            $filename = PATH_site . $filename;
+            // is relative. Prepended with the public web folder
+            $filename = Environment::getPublicPath() . '/' . $filename;
         } elseif (!(
                   static::isFirstPartOfStr($filename, Environment::getProjectPath())
                   || static::isFirstPartOfStr($filename, Environment::getPublicPath())
@@ -3147,7 +3147,7 @@ class GeneralUtility
     }
 
     /**
-     * Returns TRUE if the path is absolute, without backpath '..' and within the PATH_site OR within the lockRootPath
+     * Returns TRUE if the path is absolute, without backpath '..' and within TYPO3s project or public folder OR within the lockRootPath
      *
      * @param string $path File path to evaluate
      * @return bool
@@ -3189,11 +3189,11 @@ class GeneralUtility
      */
     public static function copyDirectory($source, $destination)
     {
-        if (strpos($source, PATH_site) === false) {
-            $source = PATH_site . $source;
+        if (strpos($source, Environment::getPublicPath() . '/') === false) {
+            $source = Environment::getPublicPath() . '/' . $source;
         }
-        if (strpos($destination, PATH_site) === false) {
-            $destination = PATH_site . $destination;
+        if (strpos($destination, Environment::getPublicPath() . '/') === false) {
+            $destination = Environment::getPublicPath() . '/' . $destination;
         }
         if (static::isAllowedAbsPath($source) && static::isAllowedAbsPath($destination)) {
             static::mkdir_deep($destination);
@@ -3287,7 +3287,7 @@ class GeneralUtility
     /**
      * Will move an uploaded file (normally in "/tmp/xxxxx") to a temporary filename in Environment::getProjectPath() . "var/" from where TYPO3 can use it.
      * Use this function to move uploaded files to where you can work on them.
-     * REMEMBER to use \TYPO3\CMS\Core\Utility\GeneralUtility::unlink_tempfile() afterwards - otherwise temp-files will build up! They are NOT automatically deleted in PATH_site."typo3temp/"!
+     * REMEMBER to use \TYPO3\CMS\Core\Utility\GeneralUtility::unlink_tempfile() afterwards - otherwise temp-files will build up! They are NOT automatically deleted in the temporary folder!
      *
      * @param string $uploadedFileName The temporary uploaded filename, eg. $_FILES['[upload field name here]']['tmp_name']
      * @return string If a new file was successfully created, return its filename, otherwise blank string.
@@ -3311,11 +3311,11 @@ class GeneralUtility
     }
 
     /**
-     * Deletes (unlink) a temporary filename in 'PATH_site."typo3temp/"' given as input.
-     * The function will check that the file exists, is in PATH_site."typo3temp/" and does not contain back-spaces ("../") so it should be pretty safe.
+     * Deletes (unlink) a temporary filename in the var/ or typo3temp folder given as input.
+     * The function will check that the file exists, is within TYPO3's var/ or typo3temp/ folder and does not contain back-spaces ("../") so it should be pretty safe.
      * Use this after upload_to_tempfile() or tempnam() from this class!
      *
-     * @param string $uploadedTempFileName Filepath for a file in PATH_site."typo3temp/". Must be absolute.
+     * @param string $uploadedTempFileName absolute file path - must reside within var/ or typo3temp/ folder.
      * @return bool Returns TRUE if the file was unlink()'ed
      * @see upload_to_tempfile(), tempnam()
      */
@@ -3326,7 +3326,7 @@ class GeneralUtility
             if (
                 self::validPathStr($uploadedTempFileName)
                 && (
-                    self::isFirstPartOfStr($uploadedTempFileName, PATH_site . 'typo3temp/')
+                    self::isFirstPartOfStr($uploadedTempFileName, Environment::getPublicPath() . '/typo3temp/')
                     || self::isFirstPartOfStr($uploadedTempFileName, Environment::getVarPath() . '/')
                 )
                 && @is_file($uploadedTempFileName)
@@ -3345,7 +3345,7 @@ class GeneralUtility
      *
      * @param string $filePrefix Prefix for temporary file
      * @param string $fileSuffix Suffix for temporary file, for example a special file extension
-     * @return string result from PHP function tempnam() with PATH_site . 'typo3temp/' set for temp path.
+     * @return string result from PHP function tempnam() with the temp/var folder prefixed.
      * @see unlink_tempfile(), upload_to_tempfile()
      */
     public static function tempnam($filePrefix, $fileSuffix = '')
@@ -3995,7 +3995,7 @@ class GeneralUtility
             $renderingContext->getControllerName(),
             $renderingContext->getControllerAction()
         );
-        $template = str_replace(PATH_site, '', $template);
+        $template = str_replace(Environment::getPublicPath() . '/', '', $template);
         $message = [];
         $message[] = '[' . $template . ']';
         $message[] = 'The property "' . $property . '" has been marked as deprecated.';
@@ -4013,7 +4013,7 @@ class GeneralUtility
     public static function getDeprecationLogFileName()
     {
         static::writeDeprecationLogFileEntry(__METHOD__ . ' is deprecated since TYPO3 v9.0, will be removed in TYPO3 v10.0');
-        return Environment::getVarPath() . '/log/deprecation_' . self::shortMD5(PATH_site . $GLOBALS['TYPO3_CONF_VARS']['SYS']['encryptionKey']) . '.log';
+        return Environment::getVarPath() . '/log/deprecation_' . self::shortMD5(Environment::getProjectPath() . $GLOBALS['TYPO3_CONF_VARS']['SYS']['encryptionKey']) . '.log';
     }
 
     /**
@@ -4180,7 +4180,7 @@ class GeneralUtility
     {
         $date = date($GLOBALS['TYPO3_CONF_VARS']['SYS']['ddmmyy'] . ' ' . $GLOBALS['TYPO3_CONF_VARS']['SYS']['hhmm'] . ': ');
         // Write a longer message to the deprecation log
-        $destination = Environment::getVarPath() . '/log/deprecation_' . self::shortMD5(PATH_site . $GLOBALS['TYPO3_CONF_VARS']['SYS']['encryptionKey']) . '.log';
+        $destination = Environment::getVarPath() . '/log/deprecation_' . self::shortMD5(Environment::getProjectPath() . $GLOBALS['TYPO3_CONF_VARS']['SYS']['encryptionKey']) . '.log';
         $file = @fopen($destination, 'a');
         if ($file) {
             @fwrite($file, $date . $msg . LF);
diff --git a/typo3/sysext/core/Documentation/Changelog/master/Deprecation-85285-DeprecatedSystemConstants.rst b/typo3/sysext/core/Documentation/Changelog/master/Deprecation-85285-DeprecatedSystemConstants.rst
new file mode 100644 (file)
index 0000000..d00ec92
--- /dev/null
@@ -0,0 +1,45 @@
+.. include:: ../../Includes.txt
+
+=======================================================
+Deprecation: #85285 - Deprecated path related constants
+=======================================================
+
+See :issue:`85285`
+
+Description
+===========
+
+The following constants have been deprecated and should not be used any longer:
+
+* :php:`PATH_thisScript`
+  Use :php:`Environment::getCurrentScript()` instead
+
+* :php:`PATH_site`
+  Use :php:`Environment::getPublicPath() . '/'` instead
+
+
+Impact
+======
+
+The above constants are still defined in TYPO3 v9, but their definition will be
+dropped in v10.
+
+
+Affected Installations
+======================
+
+Constants can not be deprecated as such and using them does not log a deprecation message.
+Extensions in v9 should not use them any longer but switch to the alternatives already.
+
+The extension scanner will find usages of the above constants and marks them as strong
+matches.
+
+
+
+Migration
+=========
+
+Usages of the above constants should be switched to the Environment class methods instead.
+
+
+.. index:: PHP-API, FullyScanned
\ No newline at end of file
index 85a2b3b..c4dc4b0 100644 (file)
@@ -21,8 +21,6 @@ use TYPO3\CMS\Core\Utility\GeneralUtility;
  */
 class GeneralUtilityFixture extends GeneralUtility
 {
-    const DEPRECATION_LOG_PATH = 'typo3temp/var/test_deprecation/test.log';
-
     /**
      * @var int
      */
@@ -59,16 +57,6 @@ class GeneralUtilityFixture extends GeneralUtility
     }
 
     /**
-     * Gets the absolute path to the deprecation log file.
-     *
-     * @return string Absolute path to the deprecation log file
-     */
-    public static function getDeprecationLogFileName()
-    {
-        return PATH_site . static::DEPRECATION_LOG_PATH;
-    }
-
-    /**
      * Resets the internal computed class name cache.
      */
     public static function resetFinalClassNameCache()
index f6a99bf..3f03d38 100644 (file)
@@ -4122,10 +4122,10 @@ class TypoScriptFrontendController implements LoggerAwareInterface
         } else {
             $trace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, 1);
             // This is a hack to work around ___FILE___ resolving symbolic links
-            $PATH_site_real = PathUtility::dirname(realpath(Environment::getPublicPath() . '/typo3')) . '/';
+            $realWebPath = PathUtility::dirname(realpath(Environment::getPublicPath() . '/typo3')) . '/';
             $file = $trace[0]['file'];
-            if (strpos($file, $PATH_site_real) === 0) {
-                $file = str_replace($PATH_site_real, '', $file);
+            if (strpos($file, $realWebPath) === 0) {
+                $file = str_replace($realWebPath, '', $file);
             } else {
                 $file = str_replace(Environment::getPublicPath() . '/', '', $file);
             }
index 6024e18..3efef43 100644 (file)
@@ -65,4 +65,10 @@ return [
             'Deprecation-85123-ConstantsRelatedToServices.rst',
         ],
     ],
+    'PATH_thisScript' => [
+        'restFiles' => [
+            'Feature-84153-IntroduceAGenericEnvironmentClass.rst',
+            'Deprecation-85285-DeprecatedSystemConstants.rst',
+        ],
+    ],
 ];
index ad1a0b2..f1b2d22 100644 (file)
@@ -349,7 +349,7 @@ class SchedulerModuleController
         $this->view->assign('lastRunSeverity', $severity);
 
         // Check if CLI script is executable or not
-        $script = PATH_site . 'typo3/sysext/core/bin/typo3';
+        $script = GeneralUtility::getFileAbsFileName('EXT:core/bin/typo3');
         $this->view->assign('script', $script);
 
         // Skip this check if running Windows, as rights do not work the same way on this platform