DEPRECATION WARNING
This documentation is not using the current rendering mechanism and is probably outdated. The extension maintainer should switch to the new system. Details on how to use the rendering mechanism can be found here.
Utilities¶
The extension also provides a couple of utility classes. Their features are described here.
Format conversions¶
The \Cobweb\Svconnector\Utility\ConnectorUtility
class provides a
conversion method utility, which transforms a
XML structure into a PHP array without losing any information. This
method is simply called as:
$phpArray = \Cobweb\Svconnector\Utility\ConnectorUtility::convertXmlToArray($xml)
Of course one’s own conversion method may be used if needed. The conversion from a PHP array to a XML structure can safely rely on TYPO3 CMS API. e.g.:
$xml = '<?xml version="1.0" encoding="utf-8" standalone="yes" ?>' . "\n" . GeneralUtility::array2xml($result);
Again one’s own conversion method may be used if needed.
Reading files¶
The \Cobweb\Svconnector\Utility\FileUtility
provides a general
method for reading the content of a file. It will transparently handle
the following syntax for pointing to a file:
- an absolute file path (within the TYPO3 root path or
TYPO3_CONF_VARS[BE][lockRootPath]
), e.g./var/foo/web/fileadmin/import/bar.csv
- a file path relative to the TYPO3 root, e.g.
fileadmin/import/foo.txt
- a file reference using the
EXT:
syntax, e.g.EXT:foo/Resources/Private/Data/bar.txt
- a fully qualified URL, e.g.
http://www.example.com/foo.txt
- a FAL reference including storage ID and file identifier, e.g.
FAL:2:/foo.txt
- a custom syntax, starting with whatever keyword you want, e.g.
MYKEY:whatever_you_want
For the latter, you need to implement a “reader” class which will handle this custom reference.
This class must inherit from \Cobweb\Svconnector\Utility\AbstractFileReader
. It must
be declared like a hook, using the custom keyword (without the colon) as a key. Example:
$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['svconnector']['fileReader']['MYKEY']
The class must implement the read()
method, which is expected to return the
file’s content as a string, or false
if some problem happened. An error message
about the problem can be reported from within the reader using:
$this->fileUtility->setError('Some reason here');
The read()
method receives the full syntax as input (in the above example,
MYKEY:whatever_you_want
).
Using the \Cobweb\Svconnector\Utility\FileUtility
in your own Connector service
is very easy. Here is how it’s done in the “svconnector_csv” extension
$fileUtility = GeneralUtility::makeInstance(\Cobweb\Svconnector\Utility\FileUtility::class);
$fileContent = $fileUtility->getFileContent($parameters['filename']);
The getFileContent()
method will return false
if some error happened reading
the file. An error message is available to retrieve using:
$error = $fileUtility->getError();
If you would rather have the content stored into a (temporary) file rather than returned
directly, you can use the getFileAsTemporaryFile()
, which will return the
full path to the file where the content is stored. It is up to you to read the file
and delete it once done:
$fileUtility = GeneralUtility::makeInstance(\Cobweb\Svconnector\Utility\FileUtility::class);
// Get the content stored into a temp file
$filename = $fileUtility->getFileAsTemporaryFile($parameters['filename']);
// Read from the file
$content = file_get_contents($filename);
// Remove the file
unlink($filename);
Method getFileAsTemporaryFile()
will also return false
when something went
wrong reading the distant data.