‪TYPO3CMS  11.5
DataMapFactory.php
Go to the documentation of this file.
1 <?php
2 
3 declare(strict_types=1);
4 
5 /*
6  * This file is part of the TYPO3 CMS project.
7  *
8  * It is free software; you can redistribute it and/or modify it under
9  * the terms of the GNU General Public License, either version 2
10  * of the License, or any later version.
11  *
12  * For the full copyright and license information, please read the
13  * LICENSE.txt file that was distributed with this source code.
14  *
15  * The TYPO3 project - inspiring people to share!
16  */
17 
19 
33 
39 {
43  protected ‪$reflectionService;
44 
48  protected ‪$configurationManager;
49 
53  protected ‪$cacheManager;
54 
58  protected ‪$dataMapCache;
59 
65  protected ‪$dataMaps = [];
66 
71 
72  protected string ‪$baseCacheIdentifier;
73 
74  public function ‪__construct(
80  ) {
81  $this->reflectionService = ‪$reflectionService;
82  $this->configurationManager = ‪$configurationManager;
83  $this->cacheManager = ‪$cacheManager;
84  $this->dataMapCache = $this->cacheManager->‪getCache('extbase');
85  $this->classesConfiguration = ‪$classesConfiguration;
86  $this->baseCacheIdentifier = ‪$baseCacheIdentifier;
87  }
88 
97  public function ‪buildDataMap(string $className): ‪DataMap
98  {
99  $className = ltrim($className, '\\');
100  if (isset($this->dataMaps[$className])) {
101  return $this->dataMaps[$className];
102  }
103  $cacheIdentifierClassName = str_replace('\\', '', $className) . '_';
104  $cacheIdentifier = 'DataMap_' . $cacheIdentifierClassName . ‪$this->baseCacheIdentifier;
105  $dataMap = $this->dataMapCache->get($cacheIdentifier);
106  if ($dataMap === false) {
107  $dataMap = $this->‪buildDataMapInternal($className);
108  $this->dataMapCache->set($cacheIdentifier, $dataMap);
109  }
110  $this->dataMaps[$className] = $dataMap;
111  return $dataMap;
112  }
113 
123  protected function ‪buildDataMapInternal(string $className): DataMap
124  {
125  if (!class_exists($className)) {
126  throw new InvalidClassException(
127  'Could not find class definition for name "' . $className . '". This could be caused by a mis-spelling of the class name in the class definition.',
128  1476045117
129  );
130  }
131  $recordType = null;
132  $subclasses = [];
133  $tableName = $this->‪resolveTableName($className);
134  $fieldNameToPropertyNameMapping = [];
135  if ($this->classesConfiguration->hasClass($className)) {
136  $classSettings = $this->classesConfiguration->getConfigurationFor($className);
137  $subclasses = $this->classesConfiguration->getSubClasses($className);
138  if (isset($classSettings['recordType']) && $classSettings['recordType'] !== '') {
139  $recordType = $classSettings['recordType'];
140  }
141  if (isset($classSettings['tableName']) && $classSettings['tableName'] !== '') {
142  $tableName = $classSettings['tableName'];
143  }
144  foreach ($classSettings['properties'] ?? [] as $propertyName => $propertyDefinition) {
145  $fieldNameToPropertyNameMapping[$propertyDefinition['fieldName']] = $propertyName;
146  }
147  }
148  $dataMap = GeneralUtility::makeInstance(DataMap::class, $className, $tableName, $recordType, $subclasses);
149  $dataMap = $this->‪addMetaDataColumnNames($dataMap, $tableName);
150 
151  foreach ($this->‪getColumnsDefinition($tableName) as $columnName => $columnDefinition) {
152  $propertyName = $fieldNameToPropertyNameMapping[$columnName]
154 
155  // @todo: shall we really create column maps for non existing properties?
156  // @todo: check why this could happen in the first place. TCA definitions for non existing model properties?
157  $columnMap = $this->‪createColumnMap($columnName, $propertyName);
158  try {
159  $property = $this->reflectionService->getClassSchema($className)->getProperty($propertyName);
160  [$type, $elementType] = [$property->getType(), $property->getElementType()];
161  } catch (NoSuchPropertyException $e) {
162  [$type, $elementType] = [null, null];
163  }
164  $columnMap = $this->‪setType($columnMap, $columnDefinition['config']);
165  $columnMap = $this->‪setRelations($columnMap, $columnDefinition['config'], $type, $elementType);
166  $columnMap = $this->‪setFieldEvaluations($columnMap, $columnDefinition['config']);
167  $dataMap->addColumnMap($columnMap);
168  }
169  return $dataMap;
170  }
171 
178  protected function ‪resolveTableName(string $className): string
179  {
180  $className = ltrim($className, '\\');
181  $classNameParts = explode('\\', $className);
182  // Skip vendor and product name for core classes
183  if (strpos($className, 'TYPO3\\CMS\\') === 0) {
184  $classPartsToSkip = 2;
185  } else {
186  $classPartsToSkip = 1;
187  }
188  $tableName = 'tx_' . strtolower(implode('_', array_slice($classNameParts, $classPartsToSkip)));
189 
190  return $tableName;
191  }
192 
199  protected function ‪getControlSection(string $tableName): ?array
200  {
201  return (isset(‪$GLOBALS['TCA'][$tableName]['ctrl']) && is_array(‪$GLOBALS['TCA'][$tableName]['ctrl']))
202  ? ‪$GLOBALS['TCA'][$tableName]['ctrl']
203  : null;
204  }
205 
212  protected function ‪getColumnsDefinition(string $tableName): array
213  {
214  return is_array(‪$GLOBALS['TCA'][$tableName]['columns'] ?? null) ? ‪$GLOBALS['TCA'][$tableName]['columns'] : [];
215  }
216 
222  protected function ‪addMetaDataColumnNames(‪DataMap $dataMap, string $tableName): ‪DataMap
223  {
224  $controlSection = ‪$GLOBALS['TCA'][$tableName]['ctrl'] ?? null;
225  if ($controlSection === null) {
226  return $dataMap;
227  }
228  $dataMap->‪setPageIdColumnName('pid');
229  if (isset($controlSection['tstamp'])) {
230  $dataMap->‪setModificationDateColumnName($controlSection['tstamp']);
231  }
232  if (isset($controlSection['crdate'])) {
233  $dataMap->‪setCreationDateColumnName($controlSection['crdate']);
234  }
235  if (isset($controlSection['cruser_id'])) {
236  $dataMap->‪setCreatorColumnName($controlSection['cruser_id']);
237  }
238  if (isset($controlSection['delete'])) {
239  $dataMap->‪setDeletedFlagColumnName($controlSection['delete']);
240  }
241  if (isset($controlSection['languageField'])) {
242  $dataMap->‪setLanguageIdColumnName($controlSection['languageField']);
243  }
244  if (isset($controlSection['transOrigPointerField'])) {
245  $dataMap->‪setTranslationOriginColumnName($controlSection['transOrigPointerField']);
246  }
247  if (isset($controlSection['transOrigDiffSourceField'])) {
248  $dataMap->‪setTranslationOriginDiffSourceName($controlSection['transOrigDiffSourceField']);
249  }
250  if (isset($controlSection['type'])) {
251  $dataMap->‪setRecordTypeColumnName($controlSection['type']);
252  }
253  if (isset($controlSection['rootLevel'])) {
254  $dataMap->‪setRootLevel($controlSection['rootLevel']);
255  }
256  if (isset($controlSection['is_static'])) {
257  $dataMap->‪setIsStatic($controlSection['is_static']);
258  }
259  if (isset($controlSection['enablecolumns']['disabled'])) {
260  $dataMap->‪setDisabledFlagColumnName($controlSection['enablecolumns']['disabled']);
261  }
262  if (isset($controlSection['enablecolumns']['starttime'])) {
263  $dataMap->‪setStartTimeColumnName($controlSection['enablecolumns']['starttime']);
264  }
265  if (isset($controlSection['enablecolumns']['endtime'])) {
266  $dataMap->‪setEndTimeColumnName($controlSection['enablecolumns']['endtime']);
267  }
268  if (isset($controlSection['enablecolumns']['fe_group'])) {
269  $dataMap->‪setFrontEndUserGroupColumnName($controlSection['enablecolumns']['fe_group']);
270  }
271  return $dataMap;
272  }
273 
281  protected function ‪setType(‪ColumnMap $columnMap, array $columnConfiguration): ‪ColumnMap
282  {
283  // todo: this method should only be called with proper arguments which means that the TCA integrity check should
284  // todo: take place outside this method.
285 
286  $tableColumnType = $columnConfiguration['type'] ?? null;
287  $columnMap->‪setType(‪TableColumnType::cast($tableColumnType));
288  $tableColumnSubType = null;
289  if ($tableColumnType === 'group') {
290  $tableColumnSubType = $columnConfiguration['internal_type'] ?? 'db';
291  }
292  $columnMap->‪setInternalType(‪TableColumnSubType::cast($tableColumnSubType));
293 
294  return $columnMap;
295  }
296 
307  protected function ‪setRelations(ColumnMap $columnMap, ?array $columnConfiguration, ?string $type, ?string $elementType): ColumnMap
308  {
309  if (isset($columnConfiguration)) {
310  if (isset($columnConfiguration['MM'])) {
311  $columnMap = $this->‪setManyToManyRelation($columnMap, $columnConfiguration);
312  } elseif ($elementType !== null) {
313  $columnMap = $this->‪setOneToManyRelation($columnMap, $columnConfiguration);
314  } elseif ($type !== null && strpbrk($type, '_\\') !== false) {
315  // @todo: check the strpbrk function call. Seems to be a check for Tx_Foo_Bar style class names
316  $columnMap = $this->‪setOneToOneRelation($columnMap, $columnConfiguration);
317  } elseif (
318  isset($columnConfiguration['type'], $columnConfiguration['renderType'])
319  && $columnConfiguration['type'] === 'select'
320  && (
321  $columnConfiguration['renderType'] !== 'selectSingle'
322  || (isset($columnConfiguration['maxitems']) && $columnConfiguration['maxitems'] > 1)
323  )
324  ) {
325  $columnMap->setTypeOfRelation(‪ColumnMap::RELATION_HAS_MANY);
326  } elseif (
327  isset($columnConfiguration['type']) && $columnConfiguration['type'] === 'group'
328  && (!isset($columnConfiguration['maxitems']) || $columnConfiguration['maxitems'] > 1)
329  ) {
330  $columnMap->setTypeOfRelation(‪ColumnMap::RELATION_HAS_MANY);
331  } else {
332  $columnMap->setTypeOfRelation(‪ColumnMap::RELATION_NONE);
333  }
334  } else {
335  $columnMap->setTypeOfRelation(‪ColumnMap::RELATION_NONE);
336  }
337  return $columnMap;
338  }
339 
347  protected function ‪setFieldEvaluations(ColumnMap $columnMap, ?array $columnConfiguration = null): ColumnMap
348  {
349  // todo: this method should only be called with proper arguments which means that the TCA integrity check should
350  // todo: take place outside this method.
351 
352  if (!empty($columnConfiguration['eval'])) {
353  $fieldEvaluations = ‪GeneralUtility::trimExplode(',', $columnConfiguration['eval'], true);
354  $dateTimeTypes = ‪QueryHelper::getDateTimeTypes();
355 
356  if (!empty(array_intersect($dateTimeTypes, $fieldEvaluations)) && !empty($columnConfiguration['dbType'])) {
357  $columnMap->setDateTimeStorageFormat($columnConfiguration['dbType']);
358  }
359  }
360 
361  return $columnMap;
362  }
363 
372  protected function ‪setOneToOneRelation(ColumnMap $columnMap, ?array $columnConfiguration = null): ColumnMap
373  {
374  // todo: this method should only be called with proper arguments which means that the TCA integrity check should
375  // todo: take place outside this method.
376 
377  $columnMap->setTypeOfRelation(‪ColumnMap::RELATION_HAS_ONE);
378  // check if foreign_table is set, which usually won't be the case for type "group" fields
379  if (!empty($columnConfiguration['foreign_table'])) {
380  $columnMap->setChildTableName($columnConfiguration['foreign_table']);
381  }
382  // todo: don't update column map if value(s) isn't/aren't set.
383  $columnMap->setChildSortByFieldName($columnConfiguration['foreign_sortby'] ?? null);
384  $columnMap->setParentKeyFieldName($columnConfiguration['foreign_field'] ?? null);
385  $columnMap->setParentTableFieldName($columnConfiguration['foreign_table_field'] ?? null);
386  if (isset($columnConfiguration['foreign_match_fields']) && is_array($columnConfiguration['foreign_match_fields'])) {
387  $columnMap->setRelationTableMatchFields($columnConfiguration['foreign_match_fields']);
388  }
389  return $columnMap;
390  }
391 
400  public function ‪setOneToManyRelation(ColumnMap $columnMap, ?array $columnConfiguration = null): ColumnMap
401  {
402  // todo: this method should only be called with proper arguments which means that the TCA integrity check should
403  // todo: take place outside this method.
404 
405  $columnMap->setTypeOfRelation(‪ColumnMap::RELATION_HAS_MANY);
406  // check if foreign_table is set, which usually won't be the case for type "group" fields
407  if (!empty($columnConfiguration['foreign_table'])) {
408  $columnMap->setChildTableName($columnConfiguration['foreign_table']);
409  }
410  // todo: don't update column map if value(s) isn't/aren't set.
411  $columnMap->setChildSortByFieldName($columnConfiguration['foreign_sortby'] ?? null);
412  $columnMap->setChildTableDefaultSortings($columnConfiguration['foreign_default_sortby'] ?? null);
413  $columnMap->setParentKeyFieldName($columnConfiguration['foreign_field'] ?? null);
414  $columnMap->setParentTableFieldName($columnConfiguration['foreign_table_field'] ?? null);
415  if (isset($columnConfiguration['foreign_match_fields']) && is_array($columnConfiguration['foreign_match_fields'])) {
416  $columnMap->setRelationTableMatchFields($columnConfiguration['foreign_match_fields']);
417  }
418  return $columnMap;
419  }
420 
430  protected function ‪setManyToManyRelation(ColumnMap $columnMap, ?array $columnConfiguration = null): ColumnMap
431  {
432  // todo: this method should only be called with proper arguments which means that the TCA integrity check should
433  // todo: take place outside this method.
434 
435  if (isset($columnConfiguration['MM'])) {
436  $columnMap->setTypeOfRelation(‪ColumnMap::RELATION_HAS_AND_BELONGS_TO_MANY);
437  // check if foreign_table is set, which usually won't be the case for type "group" fields
438  if (!empty($columnConfiguration['foreign_table'])) {
439  $columnMap->setChildTableName($columnConfiguration['foreign_table']);
440  }
441  // todo: don't update column map if value(s) isn't/aren't set.
442  $columnMap->setRelationTableName($columnConfiguration['MM']);
443  if (isset($columnConfiguration['MM_match_fields']) && is_array($columnConfiguration['MM_match_fields'])) {
444  $columnMap->setRelationTableMatchFields($columnConfiguration['MM_match_fields']);
445  }
446  if (isset($columnConfiguration['MM_insert_fields']) && is_array($columnConfiguration['MM_insert_fields'])) {
447  $columnMap->setRelationTableInsertFields($columnConfiguration['MM_insert_fields']);
448  }
449  // todo: don't update column map if value(s) isn't/aren't set.
450  if (!empty($columnConfiguration['MM_opposite_field'])) {
451  $columnMap->setParentKeyFieldName('uid_foreign');
452  $columnMap->setChildKeyFieldName('uid_local');
453  $columnMap->setChildSortByFieldName('sorting_foreign');
454  } else {
455  $columnMap->setParentKeyFieldName('uid_local');
456  $columnMap->setChildKeyFieldName('uid_foreign');
457  $columnMap->setChildSortByFieldName('sorting');
458  }
459  } else {
460  // todo: this else part is actually superfluous because \TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMapFactory::setRelations
461  // todo: only calls this method if $columnConfiguration['MM'] is set.
462 
463  throw new UnsupportedRelationException('The given information to build a many-to-many-relation was not sufficient. Check your TCA definitions. mm-relations with IRRE must have at least a defined "MM" or "foreign_selector".', 1268817963);
464  }
465  $relationTableName = $columnMap->getRelationTableName();
466  if ($relationTableName !== null && $this->‪getControlSection($relationTableName) !== null) {
467  $columnMap->setRelationTablePageIdColumnName('pid');
468  }
469  return $columnMap;
470  }
471 
480  protected function ‪createColumnMap(string $columnName, string $propertyName): ColumnMap
481  {
482  return GeneralUtility::makeInstance(ColumnMap::class, $columnName, $propertyName);
483  }
484 }
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMap\setDeletedFlagColumnName
‪setDeletedFlagColumnName($deletedFlagColumnName)
Definition: DataMap.php:387
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMapFactory\$classesConfiguration
‪ClassesConfiguration $classesConfiguration
Definition: DataMapFactory.php:64
‪TYPO3\CMS\Core\Utility\GeneralUtility\underscoredToLowerCamelCase
‪static string underscoredToLowerCamelCase($string)
Definition: GeneralUtility.php:841
‪TYPO3\CMS\Extbase\Reflection\ClassSchema\Exception\NoSuchPropertyException
Definition: NoSuchPropertyException.php:24
‪TYPO3\CMS\Core\Utility\GeneralUtility\trimExplode
‪static list< string > trimExplode($delim, $string, $removeEmptyValues=false, $limit=0)
Definition: GeneralUtility.php:999
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMapFactory\__construct
‪__construct(ReflectionService $reflectionService, ConfigurationManagerInterface $configurationManager, CacheManager $cacheManager, ClassesConfiguration $classesConfiguration, string $baseCacheIdentifier)
Definition: DataMapFactory.php:68
‪TYPO3\CMS\Core\Cache\CacheManager\getCache
‪FrontendInterface getCache($identifier)
Definition: CacheManager.php:142
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMap
Definition: DataMap.php:23
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMapFactory\setOneToOneRelation
‪ColumnMap setOneToOneRelation(ColumnMap $columnMap, ?array $columnConfiguration=null)
Definition: DataMapFactory.php:366
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\ColumnMap\setParentKeyFieldName
‪setParentKeyFieldName(?string $parentKeyFieldName)
Definition: ColumnMap.php:339
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMap\setPageIdColumnName
‪setPageIdColumnName($pageIdColumnName)
Definition: DataMap.php:247
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\ColumnMap
Definition: ColumnMap.php:28
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\ColumnMap\setChildTableDefaultSortings
‪setChildTableDefaultSortings(?string $childTableDefaultSortings)
Definition: ColumnMap.php:246
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMapFactory\$configurationManager
‪TYPO3 CMS Extbase Configuration ConfigurationManagerInterface $configurationManager
Definition: DataMapFactory.php:46
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\ColumnMap\RELATION_HAS_AND_BELONGS_TO_MANY
‪const RELATION_HAS_AND_BELONGS_TO_MANY
Definition: ColumnMap.php:52
‪TYPO3\CMS\Extbase\Configuration\ConfigurationManagerInterface
Definition: ConfigurationManagerInterface.php:28
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMapFactory\addMetaDataColumnNames
‪DataMap addMetaDataColumnNames(DataMap $dataMap, string $tableName)
Definition: DataMapFactory.php:216
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\ColumnMap\setDateTimeStorageFormat
‪setDateTimeStorageFormat(?string $dateTimeStorageFormat)
Definition: ColumnMap.php:387
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMapFactory\getColumnsDefinition
‪array getColumnsDefinition(string $tableName)
Definition: DataMapFactory.php:206
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\ColumnMap\setChildTableName
‪setChildTableName(?string $childTableName)
Definition: ColumnMap.php:230
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\ColumnMap\setTypeOfRelation
‪setTypeOfRelation(string $typeOfRelation)
Definition: ColumnMap.php:198
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMap\setDisabledFlagColumnName
‪setDisabledFlagColumnName($disabledFlagColumnName)
Definition: DataMap.php:407
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\ColumnMap\RELATION_HAS_MANY
‪const RELATION_HAS_MANY
Definition: ColumnMap.php:42
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMapFactory\buildDataMap
‪TYPO3 CMS Extbase Persistence Generic Mapper DataMap buildDataMap(string $className)
Definition: DataMapFactory.php:91
‪TYPO3\CMS\Extbase\Persistence\Generic\Exception\UnsupportedRelationException
Definition: UnsupportedRelationException.php:25
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMap\setIsStatic
‪setIsStatic($isStatic)
Definition: DataMap.php:505
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMapFactory\setRelations
‪ColumnMap setRelations(ColumnMap $columnMap, ?array $columnConfiguration, ?string $type, ?string $elementType)
Definition: DataMapFactory.php:301
‪TYPO3\CMS\Extbase\Persistence\Generic\Exception\InvalidClassException
Definition: InvalidClassException.php:25
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\ColumnMap\RELATION_HAS_ONE
‪const RELATION_HAS_ONE
Definition: ColumnMap.php:37
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMapFactory\setType
‪ColumnMap setType(ColumnMap $columnMap, array $columnConfiguration)
Definition: DataMapFactory.php:275
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMapFactory
Definition: DataMapFactory.php:39
‪TYPO3\CMS\Extbase\Reflection\ReflectionService
Definition: ReflectionService.php:28
‪TYPO3\CMS\Core\Type\Enumeration\cast
‪static static cast($value)
Definition: Enumeration.php:186
‪TYPO3\CMS\Core\Database\Query\QueryHelper
Definition: QueryHelper.php:32
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMapFactory\setFieldEvaluations
‪ColumnMap setFieldEvaluations(ColumnMap $columnMap, ?array $columnConfiguration=null)
Definition: DataMapFactory.php:341
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMapFactory\getControlSection
‪array null getControlSection(string $tableName)
Definition: DataMapFactory.php:193
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMapFactory\$dataMaps
‪array $dataMaps
Definition: DataMapFactory.php:60
‪TYPO3\CMS\Core\Database\Query\QueryHelper\getDateTimeTypes
‪static array getDateTimeTypes()
Definition: QueryHelper.php:211
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMap\setStartTimeColumnName
‪setStartTimeColumnName($startTimeColumnName)
Definition: DataMap.php:427
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMapFactory\$cacheManager
‪TYPO3 CMS Core Cache CacheManager $cacheManager
Definition: DataMapFactory.php:50
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\ColumnMap\RELATION_NONE
‪const RELATION_NONE
Definition: ColumnMap.php:32
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMap\setFrontEndUserGroupColumnName
‪setFrontEndUserGroupColumnName($frontendUserGroupColumnName)
Definition: DataMap.php:467
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\ColumnMap\setType
‪setType(TableColumnType $type)
Definition: ColumnMap.php:419
‪TYPO3\CMS\Core\Cache\CacheManager
Definition: CacheManager.php:36
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMap\setCreatorColumnName
‪setCreatorColumnName($creatorColumnName)
Definition: DataMap.php:367
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMapFactory\setManyToManyRelation
‪ColumnMap setManyToManyRelation(ColumnMap $columnMap, ?array $columnConfiguration=null)
Definition: DataMapFactory.php:424
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\ColumnMap\setRelationTablePageIdColumnName
‪setRelationTablePageIdColumnName(string $relationTablePageIdColumnName)
Definition: ColumnMap.php:291
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMap\setEndTimeColumnName
‪setEndTimeColumnName($endTimeColumnName)
Definition: DataMap.php:447
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMapFactory\setOneToManyRelation
‪ColumnMap setOneToManyRelation(ColumnMap $columnMap, ?array $columnConfiguration=null)
Definition: DataMapFactory.php:394
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\ColumnMap\setInternalType
‪setInternalType(TableColumnSubType $internalType)
Definition: ColumnMap.php:403
‪TYPO3\CMS\Extbase\Persistence\ClassesConfiguration
Definition: ClassesConfiguration.php:21
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMapFactory\$baseCacheIdentifier
‪string $baseCacheIdentifier
Definition: DataMapFactory.php:66
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMapFactory\createColumnMap
‪ColumnMap createColumnMap(string $columnName, string $propertyName)
Definition: DataMapFactory.php:474
‪TYPO3\CMS\Core\Cache\Frontend\FrontendInterface
Definition: FrontendInterface.php:22
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMapFactory\resolveTableName
‪string resolveTableName(string $className)
Definition: DataMapFactory.php:172
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMap\setRecordTypeColumnName
‪setRecordTypeColumnName($recordTypeColumnName)
Definition: DataMap.php:487
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\ColumnMap\setChildKeyFieldName
‪setChildKeyFieldName(string $childKeyFieldName)
Definition: ColumnMap.php:371
‪TYPO3\CMS\Core\SingletonInterface
Definition: SingletonInterface.php:22
‪TYPO3\CMS\Core\DataHandling\TableColumnSubType
Definition: TableColumnSubType.php:24
‪$GLOBALS
‪$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['adminpanel']['modules']
Definition: ext_localconf.php:25
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMap\setTranslationOriginColumnName
‪setTranslationOriginColumnName($translationOriginColumnName)
Definition: DataMap.php:287
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMapFactory\$dataMapCache
‪FrontendInterface $dataMapCache
Definition: DataMapFactory.php:54
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMap\setModificationDateColumnName
‪setModificationDateColumnName($modificationDateColumnName)
Definition: DataMap.php:327
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMapFactory\buildDataMapInternal
‪TYPO3 CMS Extbase Persistence Generic Mapper DataMap buildDataMapInternal(string $className)
Definition: DataMapFactory.php:117
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMap\setCreationDateColumnName
‪setCreationDateColumnName($creationDateColumnName)
Definition: DataMap.php:347
‪TYPO3\CMS\Core\Utility\GeneralUtility
Definition: GeneralUtility.php:50
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMap\setTranslationOriginDiffSourceName
‪setTranslationOriginDiffSourceName($translationOriginDiffSourceName)
Definition: DataMap.php:307
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper
Definition: ColumnMap.php:18
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\ColumnMap\setChildSortByFieldName
‪setChildSortByFieldName(?string $childSortByFieldName)
Definition: ColumnMap.php:259
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMap\setLanguageIdColumnName
‪setLanguageIdColumnName($languageIdColumnName)
Definition: DataMap.php:267
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\ColumnMap\setRelationTableInsertFields
‪setRelationTableInsertFields(array $relationTableInsertFields)
Definition: ColumnMap.php:323
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\ColumnMap\getRelationTableName
‪string null getRelationTableName()
Definition: ColumnMap.php:283
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMapFactory\$reflectionService
‪TYPO3 CMS Extbase Reflection ReflectionService $reflectionService
Definition: DataMapFactory.php:42
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMap\setRootLevel
‪setRootLevel($rootLevel)
Definition: DataMap.php:521
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\ColumnMap\setParentTableFieldName
‪setParentTableFieldName(?string $parentTableFieldName)
Definition: ColumnMap.php:355
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\ColumnMap\setRelationTableMatchFields
‪setRelationTableMatchFields(?array $relationTableMatchFields)
Definition: ColumnMap.php:307
‪TYPO3\CMS\Core\DataHandling\TableColumnType
Definition: TableColumnType.php:24
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\ColumnMap\setRelationTableName
‪setRelationTableName(?string $relationTableName)
Definition: ColumnMap.php:275