Fixed bug #15092: Ajax loaded items of inline records are encoded twice (Thanks to...
[Packages/TYPO3.CMS.git] / t3lib / class.t3lib_svbase.php
old mode 100755 (executable)
new mode 100644 (file)
index 2d0f23e..46fc274
@@ -2,7 +2,7 @@
 /***************************************************************
 *  Copyright notice
 *
-*  (c) 1999-2005 Kasper Skaarhoj (kasperYYYY@typo3.com)
+*  (c) 1999-2010 Kasper Skaarhoj (kasperYYYY@typo3.com)
 *  All rights reserved
 *
 *  This script is part of the Typo3 project. The Typo3 project is
  * $Id$
  * TODO: temp files are not removed
  *
- * @author     René Fritz <r.fritz@colorcube.de>
+ * @author     Rene Fritz <r.fritz@colorcube.de>
  */
 /**
  * [CLASS/FUNCTION INDEX of SCRIPT]
  *
  *
  *
- *  127: class t3lib_svbase
+ *  125: class t3lib_svbase
  *
  *              SECTION: Get service meta information
- *  195:     function getServiceInfo()
- *  203:     function getServiceKey()
+ *  191:     function getServiceInfo()
+ *  201:     function getServiceKey()
  *  211:     function getServiceTitle()
  *  224:     function getServiceOption($optionName, $defaultValue='', $includeDefaultConfig=TRUE)
  *
  *              SECTION: General service functions
  *  377:     function checkExec($progList)
  *  401:     function deactivateService()
- *  407:     function available()
  *
  *              SECTION: IO tools
- *  445:     function checkInputFile ($absFile)
- *  466:     function readFile ($absFile, $length=0)
- *  491:     function writeFile ($content, $absFile='')
- *  517:     function tempFile ($filePrefix)
- *  535:     function registerTempFile ($absFile)
- *  545:     function unlinkTempFiles ()
+ *  427:     function checkInputFile ($absFile)
+ *  448:     function readFile ($absFile, $length=0)
+ *  473:     function writeFile ($content, $absFile='')
+ *  499:     function tempFile ($filePrefix)
+ *  517:     function registerTempFile ($absFile)
+ *  527:     function unlinkTempFiles ()
  *
  *              SECTION: IO input
- *  567:     function setInput ($content, $type='')
- *  581:     function setInputFile ($absFile, $type='')
- *  594:     function getInput ()
- *  609:     function getInputFile ($createFile='')
+ *  549:     function setInput ($content, $type='')
+ *  563:     function setInputFile ($absFile, $type='')
+ *  576:     function getInput ()
+ *  591:     function getInputFile ($createFile='')
  *
  *              SECTION: IO output
- *  634:     function setOutputFile ($absFile)
- *  644:     function getOutput ()
- *  658:     function getOutputFile ($absFile='')
+ *  616:     function setOutputFile ($absFile)
+ *  626:     function getOutput ()
+ *  640:     function getOutputFile ($absFile='')
  *
  *              SECTION: Service implementation
- *  682:     function init()
- *  706:     function reset()
- *  721:     function __destruct()
- *  727:     function process($content='', $type='', $conf=array())
+ *  664:     function init()
+ *  688:     function reset()
+ *  703:     function __destruct()
  *
- * TOTAL FUNCTIONS: 32
+ * TOTAL FUNCTIONS: 30
  * (This index is automatically created/updated by the extension "extdeveval")
  *
  */
@@ -110,7 +108,6 @@ define ('T3_ERR_SV_PROG_FAILED', -41); // passed subtype is not possible with th
 // define ('T3_ERR_SV_serviceType_myerr, -100); // All errors with prefix T3_ERR_SV_[serviceType]_ and lower than -99 are service type dependent error
 
 
-require_once(PATH_t3lib.'class.t3lib_exec.php');
 
 
 
@@ -120,11 +117,11 @@ require_once(PATH_t3lib.'class.t3lib_exec.php');
 /**
  * Parent class for "Services" classes
  *
- * @author     René Fritz <r.fritz@colorcube.de>
+ * @author     Rene Fritz <r.fritz@colorcube.de>
  * @package TYPO3
  * @subpackage t3lib
  */
-class t3lib_svbase {
+abstract class t3lib_svbase {
 
        /**
         * service description array
@@ -178,19 +175,13 @@ class t3lib_svbase {
 
 
 
-
-
-
-
-
-
-
        /***************************************
         *
         *       Get service meta information
         *
         ***************************************/
 
+
        /**
         * Returns internal information array for service
         *
@@ -200,6 +191,7 @@ class t3lib_svbase {
                return $this->info;
        }
 
+
        /**
         * Returns the service key of the service
         *
@@ -209,6 +201,7 @@ class t3lib_svbase {
                return $this->info['serviceKey'];
        }
 
+
        /**
         * Returns the title of the service
         *
@@ -218,23 +211,22 @@ class t3lib_svbase {
                return $this->info['title'];
        }
 
+
        /**
         * Returns service configuration values from the $TYPO3_CONF_VARS['SVCONF'] array
         *
         * @param       string          Name of the config option
         * @param       boolean         If set the 'default' config will be return if no special config for this service is available (default: true)
-        * @param       boolean         If set, the option value will be searched for in the "default" configuration (service key = "default") if not found for the service key of the service.
+        * @param       [type]          $includeDefaultConfig: ...
         * @return      mixed           configuration value for the service
         */
        function getServiceOption($optionName, $defaultValue='', $includeDefaultConfig=TRUE) {
-               global $TYPO3_CONF_VARS;
-
                $config = NULL;
 
-               $svOptions = $TYPO3_CONF_VARS['SVCONF'][$this->info['serviceType']];
+               $svOptions = $GLOBALS['TYPO3_CONF_VARS']['SVCONF'][$this->info['serviceType']];
 
                if(isset($svOptions[$this->info['serviceKey']][$optionName])) {
-                       $config = $svOptions['default'][$optionName];
+                       $config = $svOptions[$this->info['serviceKey']][$optionName];
                } elseif($includeDefaultConfig AND isset($svOptions['default'][$optionName])) {
                        $config = $svOptions['default'][$optionName];
                }
@@ -246,20 +238,13 @@ class t3lib_svbase {
 
 
 
-
-
-
-
-
-
-
-
        /***************************************
         *
         *       Error handling
         *
         ***************************************/
 
+
        /**
         * Logs debug messages to t3lib_div::devLog()
         *
@@ -274,6 +259,7 @@ class t3lib_svbase {
                }
        }
 
+
        /**
         * Puts an error on the error stack. Calling without parameter adds a general error.
         *
@@ -290,6 +276,7 @@ class t3lib_svbase {
 
        }
 
+
        /**
         * Removes the last error from the error stack.
         *
@@ -301,6 +288,7 @@ class t3lib_svbase {
                // pop for $GLOBALS['TT']->setTSlogMessage is not supported
        }
 
+
        /**
         * Returns the last error number from the error stack.
         *
@@ -315,6 +303,7 @@ class t3lib_svbase {
                }
        }
 
+
        /**
         * Returns the last message from the error stack.
         *
@@ -329,6 +318,7 @@ class t3lib_svbase {
                }
        }
 
+
        /**
         * Returns all error messages as array.
         *
@@ -346,6 +336,7 @@ class t3lib_svbase {
                return $errArr;
        }
 
+
        /**
         * Returns the last array from the error stack.
         *
@@ -366,21 +357,14 @@ class t3lib_svbase {
 
 
 
-
-
-
-
-
-
-
-
-
        /***************************************
         *
         *       General service functions
         *
         ***************************************/
 
+
+
        /**
         * check the availability of external programs
         *
@@ -388,12 +372,8 @@ class t3lib_svbase {
         * @return      boolean         return FALSE if one program was not found
         */
        function checkExec($progList) {
-               global $TYPO3_CONF_VARS;
-
                $ret = TRUE;
 
-               require_once(PATH_t3lib.'class.t3lib_exec.php');
-
                $progList = t3lib_div::trimExplode(',', $progList, 1);
                foreach($progList as $prog) {
                        if (!t3lib_exec::checkCommand($prog)) {
@@ -405,6 +385,7 @@ class t3lib_svbase {
                return $ret;
        }
 
+
        /**
         * Deactivate the service. Use this if the service fails at runtime and will not be available.
         *
@@ -422,16 +403,14 @@ class t3lib_svbase {
 
 
 
-
-
-
-
        /***************************************
         *
         *       IO tools
         *
         ***************************************/
 
+
+
        /**
         * Check if a file exists and is readable.
         *
@@ -451,6 +430,7 @@ class t3lib_svbase {
                return FALSE;
        }
 
+
        /**
         * Read content from a file a file.
         *
@@ -461,20 +441,16 @@ class t3lib_svbase {
        function readFile ($absFile, $length=0) {
                $out = FALSE;
 
-               if ($this->checkInputFile ($absFile)) {
-                       if ($fd = fopen ($absFile, 'rb')) {
-                               $length = intval($length) ? intval($length) : filesize ($absFile);
-                               if ($length > 0) {
-                                       $out = fread ($fd, $length);
-                               }
-                               fclose ($fd);
-                       } else {
+               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);
                        }
                }
                return $out;
        }
 
+
        /**
         * Write content to a file.
         *
@@ -544,23 +520,13 @@ class t3lib_svbase {
        }
 
 
-
-
-
-
-
-
-
-
-
-
-
        /***************************************
         *
         *       IO input
         *
         ***************************************/
 
+
        /**
         * Set the input content for service processing.
         *
@@ -574,6 +540,7 @@ class t3lib_svbase {
                $this->inputType = $type;
        }
 
+
        /**
         * Set the input file name for service processing.
         *
@@ -587,6 +554,7 @@ class t3lib_svbase {
                $this->inputType = $type;
        }
 
+
        /**
         * Get the input content.
         * Will be read from input file if needed. (That is if ->inputContent is empty and ->inputFile is not)
@@ -600,6 +568,7 @@ class t3lib_svbase {
                return $this->inputContent;
        }
 
+
        /**
         * Get the input file name.
         * If the content was set by setContent a file will be created.
@@ -619,19 +588,13 @@ class t3lib_svbase {
 
 
 
-
-
-
-
-
-
-
        /***************************************
         *
         *       IO output
         *
         ***************************************/
 
+
        /**
         * Set the output file name.
         *
@@ -642,6 +605,7 @@ class t3lib_svbase {
                $this->outputFile = $absFile;
        }
 
+
        /**
         * Get the output content.
         *
@@ -654,6 +618,7 @@ class t3lib_svbase {
                return $this->out;
        }
 
+
        /**
         * Get the output file name. If no output file is set, the ->out buffer is written to the file given by input parameter filename
         *
@@ -670,14 +635,6 @@ class t3lib_svbase {
 
 
 
-
-
-
-
-
-
-
-
        /***************************************
         *
         *       Service implementation
@@ -706,9 +663,10 @@ class t3lib_svbase {
                        }
                }
 
-               return $this->getLastError();
+               return ($this->getLastError() === true);
        }
 
+
        /**
         * Resets the service.
         * Will be called by init(). Should be used before every use if a service instance is used multiple times.
@@ -734,10 +692,12 @@ class t3lib_svbase {
                $this->unlinkTempFiles();
        }
 
+
        /* every service type has it's own API
        function process($content='', $type='', $conf=array())  {       //
        }
        */
+
 }
 
 /**