[BUGFIX] Fix several typos in php comments
[Packages/TYPO3.CMS.git] / typo3 / sysext / core / Classes / Service / AbstractService.php
index 1ccd225..e440c89 100644 (file)
@@ -13,14 +13,49 @@ namespace TYPO3\CMS\Core\Service;
  *
  * The TYPO3 project - inspiring people to share!
  */
+
+use Psr\Log\LoggerAwareInterface;
+use Psr\Log\LoggerAwareTrait;
 use TYPO3\CMS\Core\TimeTracker\TimeTracker;
+use TYPO3\CMS\Core\Utility\CommandUtility;
+use TYPO3\CMS\Core\Utility\ExtensionManagementUtility;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
 
 /**
  * Parent class for "Services" classes
  */
-abstract class AbstractService
+abstract class AbstractService implements LoggerAwareInterface
 {
+    use LoggerAwareTrait;
+
+    // General error - something went wrong
+    const ERROR_GENERAL = -1;
+
+    // During execution it showed that the service is not available and
+    // should be ignored. The service itself should call $this->setNonAvailable()
+    const ERROR_SERVICE_NOT_AVAILABLE = -2;
+
+    // Passed subtype is not possible with this service
+    const ERROR_WRONG_SUBTYPE = -3;
+
+    // Passed subtype is not possible with this service
+    const ERROR_NO_INPUT = -4;
+
+    // File not found which the service should process
+    const ERROR_FILE_NOT_FOUND = -20;
+
+    // File not readable
+    const ERROR_FILE_NOT_READABLE = -21;
+
+    // File not writable
+    // @todo: check writeable vs. writable
+    const ERROR_FILE_NOT_WRITEABLE = -22;
+
+    // Passed subtype is not possible with this service
+    const ERROR_PROGRAM_NOT_FOUND = -40;
+
+    // Passed subtype is not possible with this service
+    const ERROR_PROGRAM_FAILED = -41;
     /**
      * @var array service description array
      */
@@ -32,11 +67,6 @@ abstract class AbstractService
     public $error = [];
 
     /**
-     * @var bool Defines if debug messages should be written with \TYPO3\CMS\Core\Utility\GeneralUtility::devLog
-     */
-    public $writeDevLog = false;
-
-    /**
      * @var string The output content. That's what the services produced as result.
      */
     public $out = '';
@@ -125,9 +155,11 @@ abstract class AbstractService
     public function getServiceOption($optionName, $defaultValue = '', $includeDefaultConfig = true)
     {
         $config = null;
-        $svOptions = $GLOBALS['TYPO3_CONF_VARS']['SVCONF'][$this->info['serviceType']];
-        if (isset($svOptions[$this->info['serviceKey']][$optionName])) {
-            $config = $svOptions[$this->info['serviceKey']][$optionName];
+        $serviceType = $this->info['serviceType'] ?? '';
+        $serviceKey = $this->info['serviceKey'] ?? '';
+        $svOptions = $GLOBALS['TYPO3_CONF_VARS']['SVCONF'][$serviceType] ?? [];
+        if (isset($svOptions[$serviceKey][$optionName])) {
+            $config = $svOptions[$serviceKey][$optionName];
         } elseif ($includeDefaultConfig && isset($svOptions['default'][$optionName])) {
             $config = $svOptions['default'][$optionName];
         }
@@ -142,27 +174,14 @@ abstract class AbstractService
      *  Error handling
      *
      ***************************************/
-    /**
-     * Logs debug messages to \TYPO3\CMS\Core\Utility\GeneralUtility::devLog()
-     *
-     * @param string $msg Debug message
-     * @param int $severity Severity: 0 is info, 1 is notice, 2 is warning, 3 is fatal error, -1 is "OK" message
-     * @param array|bool $dataVar dditional data you want to pass to the logger.
-     */
-    public function devLog($msg, $severity = 0, $dataVar = false)
-    {
-        if ($this->writeDevLog) {
-            GeneralUtility::devLog($msg, $this->info['serviceKey'], $severity, $dataVar);
-        }
-    }
 
     /**
      * Puts an error on the error stack. Calling without parameter adds a general error.
      *
-     * @param int $errNum Error number (see T3_ERR_SV_* constants)
+     * @param int $errNum Error number (see class constants)
      * @param string $errMsg Error message
      */
-    public function errorPush($errNum = T3_ERR_SV_GENERAL, $errMsg = 'Unspecified error occurred')
+    public function errorPush($errNum = self::ERROR_GENERAL, $errMsg = 'Unspecified error occurred')
     {
         $this->error[] = ['nr' => $errNum, 'msg' => $errMsg];
         /** @var \TYPO3\CMS\Core\TimeTracker\TimeTracker $timeTracker */
@@ -259,9 +278,9 @@ abstract class AbstractService
         $ret = true;
         $progList = GeneralUtility::trimExplode(',', $progList, true);
         foreach ($progList as $prog) {
-            if (!\TYPO3\CMS\Core\Utility\CommandUtility::checkCommand($prog)) {
+            if (!CommandUtility::checkCommand($prog)) {
                 // Program not found
-                $this->errorPush(T3_ERR_SV_PROG_NOT_FOUND, 'External program not found: ' . $prog);
+                $this->errorPush(self::ERROR_PROGRAM_NOT_FOUND, 'External program not found: ' . $prog);
                 $ret = false;
             }
         }
@@ -273,7 +292,7 @@ abstract class AbstractService
      */
     public function deactivateService()
     {
-        \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::deactivateService($this->info['serviceType'], $this->info['serviceKey']);
+        ExtensionManagementUtility::deactivateService($this->info['serviceType'], $this->info['serviceKey']);
     }
 
     /***************************************
@@ -294,10 +313,10 @@ abstract class AbstractService
             if (@is_readable($absFile)) {
                 $checkResult = $absFile;
             } else {
-                $this->errorPush(T3_ERR_SV_FILE_READ, 'File is not readable: ' . $absFile);
+                $this->errorPush(self::ERROR_FILE_NOT_READABLE, 'File is not readable: ' . $absFile);
             }
         } else {
-            $this->errorPush(T3_ERR_SV_FILE_NOT_FOUND, 'File not found: ' . $absFile);
+            $this->errorPush(self::ERROR_FILE_NOT_FOUND, 'File not found: ' . $absFile);
         }
         return $checkResult;
     }
@@ -315,7 +334,7 @@ abstract class AbstractService
         if ($this->checkInputFile($absFile)) {
             $out = file_get_contents($absFile);
             if ($out === false) {
-                $this->errorPush(T3_ERR_SV_FILE_READ, 'Can not read from file: ' . $absFile);
+                $this->errorPush(self::ERROR_FILE_NOT_READABLE, 'Can not read from file: ' . $absFile);
             }
         }
         return $out;
@@ -338,7 +357,7 @@ abstract class AbstractService
                 @fwrite($fd, $content);
                 @fclose($fd);
             } else {
-                $this->errorPush(T3_ERR_SV_FILE_WRITE, 'Can not write to file: ' . $absFile);
+                $this->errorPush(self::ERROR_FILE_NOT_WRITEABLE, 'Can not write to file: ' . $absFile);
                 $absFile = false;
             }
         }
@@ -359,7 +378,7 @@ abstract class AbstractService
             $this->registerTempFile($absFile);
         } else {
             $ret = false;
-            $this->errorPush(T3_ERR_SV_FILE_WRITE, 'Can not create temp file.');
+            $this->errorPush(self::ERROR_FILE_NOT_WRITEABLE, 'Can not create temp file.');
         }
         return $ret;
     }
@@ -367,7 +386,7 @@ abstract class AbstractService
     /**
      * Register file which should be deleted afterwards.
      *
-     * @param string File name with absolute path.
+     * @param string $absFile File name with absolute path.
      */
     public function registerTempFile($absFile)
     {
@@ -502,7 +521,7 @@ abstract class AbstractService
      * Initialization of the service.
      *
      * The class have to do a strict check if the service is available.
-     * example: check if the perl interpreter is available which is needed to run an extern perl script.
+     * example: check if the perl interpreter is available which is needed to run an external perl script.
      *
      * @return bool TRUE if the service is available
      */
@@ -512,8 +531,7 @@ abstract class AbstractService
         $this->reset();
         // Check for external programs which are defined by $info['exec']
         if (trim($this->info['exec'])) {
-            if (!$this->checkExec($this->info['exec'])) {
-            }
+            $this->checkExec($this->info['exec']);
         }
         return $this->getLastError() === true;
     }