2 namespace TYPO3\CMS\Core\Resource\Driver;
39 $shortName = $shortName ?: $driverConfig[
'shortName'];
40 $this->
registerDriverClass($driverConfig[
'class'], $shortName, $driverConfig[
'label'], $driverConfig[
'flexFormDS']);
54 public function registerDriverClass($className, $shortName = null, $label = null, $flexFormDataStructurePathAndFilename = null)
57 if (!class_exists($className)) {
58 throw new \InvalidArgumentException(
'Class ' . $className .
' does not exist.', 1314979197);
61 if (!in_array(\TYPO3\CMS\Core\Resource\Driver\DriverInterface::class, class_implements($className),
true)) {
62 throw new \InvalidArgumentException(
'Driver ' . $className .
' needs to implement the DriverInterface.', 1387619575);
64 if ($shortName ===
'') {
65 $shortName = $className;
67 if (array_key_exists($shortName, $this->drivers)) {
69 if ($this->drivers[$shortName] === $className) {
72 throw new \InvalidArgumentException(
'Driver ' . $shortName .
' is already registered.', 1314979451);
75 $this->drivers[$shortName] = $className;
76 $this->driverConfigurations[$shortName] = array(
77 'class' => $className,
78 'shortName' => $shortName,
80 'flexFormDS' => $flexFormDataStructurePathAndFilename
91 if (TYPO3_MODE !==
'BE') {
94 $driverFieldConfig = &
$GLOBALS[
'TCA'][
'sys_file_storage'][
'columns'][
'driver'][
'config'];
95 $configurationFieldConfig = &
$GLOBALS[
'TCA'][
'sys_file_storage'][
'columns'][
'configuration'][
'config'];
96 foreach ($this->driverConfigurations as $driver) {
97 $label = $driver[
'label'] ?: $driver[
'class'];
98 $driverFieldConfig[
'items'][$driver[
'shortName']] = array($label, $driver[
'shortName']);
99 if ($driver[
'flexFormDS']) {
100 $configurationFieldConfig[
'ds'][$driver[
'shortName']] = $driver[
'flexFormDS'];
114 if (in_array($shortName, $this->drivers) && class_exists($shortName)) {
117 if (!array_key_exists($shortName, $this->drivers)) {
118 throw new \InvalidArgumentException(
119 'Desired storage "' . $shortName .
'" is not in the list of available storages.',
122 return $this->drivers[$shortName];
133 return array_key_exists($shortName, $this->drivers);