‪TYPO3CMS  10.4
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 
36 
42 {
46  protected ‪$reflectionService;
47 
51  protected ‪$configurationManager;
52 
56  protected ‪$objectManager;
57 
61  protected ‪$cacheManager;
62 
66  protected ‪$dataMapCache;
67 
73  protected ‪$dataMaps = [];
74 
79 
86  public function ‪__construct(
91  ‪ClassesConfigurationFactory $classesConfigurationFactory
92  ) {
93  $this->reflectionService = ‪$reflectionService;
94  $this->configurationManager = ‪$configurationManager;
95  $this->objectManager = ‪$objectManager;
96  $this->cacheManager = ‪$cacheManager;
97 
98  $this->dataMapCache = $this->cacheManager->‪getCache('extbase');
99  $this->classesConfiguration = $classesConfigurationFactory->‪createClassesConfiguration();
100  }
101 
110  public function ‪buildDataMap(string $className): ‪DataMap
111  {
112  $className = ltrim($className, '\\');
113  if (isset($this->dataMaps[$className])) {
114  return $this->dataMaps[$className];
115  }
116  $cacheIdentifierClassName = str_replace('\\', '', $className);
117  $cacheIdentifier = 'DataMap_' . $cacheIdentifierClassName . '_' . sha1((string)(new ‪Typo3Version()) . ‪Environment::getProjectPath());
118  $dataMap = $this->dataMapCache->get($cacheIdentifier);
119  if ($dataMap === false) {
120  $dataMap = $this->‪buildDataMapInternal($className);
121  $this->dataMapCache->set($cacheIdentifier, $dataMap);
122  }
123  $this->dataMaps[$className] = $dataMap;
124  return $dataMap;
125  }
126 
136  protected function ‪buildDataMapInternal(string $className): DataMap
137  {
138  if (!class_exists($className)) {
139  throw new InvalidClassException(
140  'Could not find class definition for name "' . $className . '". This could be caused by a mis-spelling of the class name in the class definition.',
141  1476045117
142  );
143  }
144  $recordType = null;
145  $subclasses = [];
146  $tableName = $this->‪resolveTableName($className);
147  $fieldNameToPropertyNameMapping = [];
148  if ($this->classesConfiguration->hasClass($className)) {
149  $classSettings = $this->classesConfiguration->getConfigurationFor($className);
150  $subclasses = $this->classesConfiguration->getSubClasses($className);
151  if (isset($classSettings['recordType']) && $classSettings['recordType'] !== '') {
152  $recordType = $classSettings['recordType'];
153  }
154  if (isset($classSettings['tableName']) && $classSettings['tableName'] !== '') {
155  $tableName = $classSettings['tableName'];
156  }
157  foreach ($classSettings['properties'] ?? [] as $propertyName => $propertyDefinition) {
158  $fieldNameToPropertyNameMapping[$propertyDefinition['fieldName']] = $propertyName;
159  }
160  }
162  $dataMap = $this->objectManager->get(DataMap::class, $className, $tableName, $recordType, $subclasses);
163  $dataMap = $this->‪addMetaDataColumnNames($dataMap, $tableName);
164 
165  foreach ($this->‪getColumnsDefinition($tableName) as $columnName => $columnDefinition) {
166  $propertyName = $fieldNameToPropertyNameMapping[$columnName]
168 
169  // @todo: shall we really create column maps for non existing properties?
170  // @todo: check why this could happen in the first place. TCA definitions for non existing model properties?
171  $columnMap = $this->‪createColumnMap($columnName, $propertyName);
172  try {
173  $property = $this->reflectionService->getClassSchema($className)->getProperty($propertyName);
174  [$type, $elementType] = [$property->getType(), $property->getElementType()];
175  } catch (NoSuchPropertyException $e) {
176  [$type, $elementType] = [null, null];
177  }
178  $columnMap = $this->‪setType($columnMap, $columnDefinition['config']);
179  $columnMap = $this->‪setRelations($columnMap, $columnDefinition['config'], $type, $elementType);
180  $columnMap = $this->‪setFieldEvaluations($columnMap, $columnDefinition['config']);
181  $dataMap->addColumnMap($columnMap);
182  }
183  return $dataMap;
184  }
185 
192  protected function ‪resolveTableName(string $className): string
193  {
194  $className = ltrim($className, '\\');
195  $classNameParts = explode('\\', $className);
196  // Skip vendor and product name for core classes
197  if (strpos($className, 'TYPO3\\CMS\\') === 0) {
198  $classPartsToSkip = 2;
199  } else {
200  $classPartsToSkip = 1;
201  }
202  $tableName = 'tx_' . strtolower(implode('_', array_slice($classNameParts, $classPartsToSkip)));
203 
204  return $tableName;
205  }
206 
213  protected function ‪getControlSection(string $tableName): ?array
214  {
215  return (isset(‪$GLOBALS['TCA'][$tableName]['ctrl']) && is_array(‪$GLOBALS['TCA'][$tableName]['ctrl']))
216  ? ‪$GLOBALS['TCA'][$tableName]['ctrl']
217  : null;
218  }
219 
226  protected function ‪getColumnsDefinition(string $tableName): array
227  {
228  return is_array(‪$GLOBALS['TCA'][$tableName]['columns']) ? ‪$GLOBALS['TCA'][$tableName]['columns'] : [];
229  }
230 
236  protected function ‪addMetaDataColumnNames(‪DataMap $dataMap, string $tableName): ‪DataMap
237  {
238  $controlSection = ‪$GLOBALS['TCA'][$tableName]['ctrl'];
239  $dataMap->‪setPageIdColumnName('pid');
240  if (isset($controlSection['tstamp'])) {
241  $dataMap->‪setModificationDateColumnName($controlSection['tstamp']);
242  }
243  if (isset($controlSection['crdate'])) {
244  $dataMap->‪setCreationDateColumnName($controlSection['crdate']);
245  }
246  if (isset($controlSection['cruser_id'])) {
247  $dataMap->‪setCreatorColumnName($controlSection['cruser_id']);
248  }
249  if (isset($controlSection['delete'])) {
250  $dataMap->‪setDeletedFlagColumnName($controlSection['delete']);
251  }
252  if (isset($controlSection['languageField'])) {
253  $dataMap->‪setLanguageIdColumnName($controlSection['languageField']);
254  }
255  if (isset($controlSection['transOrigPointerField'])) {
256  $dataMap->‪setTranslationOriginColumnName($controlSection['transOrigPointerField']);
257  }
258  if (isset($controlSection['transOrigDiffSourceField'])) {
259  $dataMap->‪setTranslationOriginDiffSourceName($controlSection['transOrigDiffSourceField']);
260  }
261  if (isset($controlSection['type'])) {
262  $dataMap->‪setRecordTypeColumnName($controlSection['type']);
263  }
264  if (isset($controlSection['rootLevel'])) {
265  $dataMap->‪setRootLevel($controlSection['rootLevel']);
266  }
267  if (isset($controlSection['is_static'])) {
268  $dataMap->‪setIsStatic($controlSection['is_static']);
269  }
270  if (isset($controlSection['enablecolumns']['disabled'])) {
271  $dataMap->‪setDisabledFlagColumnName($controlSection['enablecolumns']['disabled']);
272  }
273  if (isset($controlSection['enablecolumns']['starttime'])) {
274  $dataMap->‪setStartTimeColumnName($controlSection['enablecolumns']['starttime']);
275  }
276  if (isset($controlSection['enablecolumns']['endtime'])) {
277  $dataMap->‪setEndTimeColumnName($controlSection['enablecolumns']['endtime']);
278  }
279  if (isset($controlSection['enablecolumns']['fe_group'])) {
280  $dataMap->‪setFrontEndUserGroupColumnName($controlSection['enablecolumns']['fe_group']);
281  }
282  return $dataMap;
283  }
284 
292  protected function ‪setType(ColumnMap $columnMap, array $columnConfiguration): ColumnMap
293  {
294  // todo: this method should only be called with proper arguments which means that the TCA integrity check should
295  // todo: take place outside this method.
296 
297  $tableColumnType = $columnConfiguration['type'] ?? null;
298  $columnMap->setType(‪TableColumnType::cast($tableColumnType));
299  $tableColumnSubType = $columnConfiguration['internal_type'] ?? null;
300  $columnMap->setInternalType(‪TableColumnSubType::cast($tableColumnSubType));
301 
302  return $columnMap;
303  }
304 
315  protected function ‪setRelations(ColumnMap $columnMap, ?array $columnConfiguration, ?string $type, ?string $elementType): ColumnMap
316  {
317  if (isset($columnConfiguration)) {
318  if (isset($columnConfiguration['MM'])) {
319  $columnMap = $this->‪setManyToManyRelation($columnMap, $columnConfiguration);
320  } elseif ($elementType !== null) {
321  $columnMap = $this->‪setOneToManyRelation($columnMap, $columnConfiguration);
322  } elseif ($type !== null && strpbrk($type, '_\\') !== false) {
323  // @todo: check the strpbrk function call. Seems to be a check for Tx_Foo_Bar style class names
324  $columnMap = $this->‪setOneToOneRelation($columnMap, $columnConfiguration);
325  } elseif (
326  isset($columnConfiguration['type'], $columnConfiguration['renderType'])
327  && $columnConfiguration['type'] === 'select'
328  && (
329  $columnConfiguration['renderType'] !== 'selectSingle'
330  || (isset($columnConfiguration['maxitems']) && $columnConfiguration['maxitems'] > 1)
331  )
332  ) {
333  $columnMap->setTypeOfRelation(‪ColumnMap::RELATION_HAS_MANY);
334  } elseif (
335  isset($columnConfiguration['type']) && $columnConfiguration['type'] === 'group'
336  && (!isset($columnConfiguration['maxitems']) || $columnConfiguration['maxitems'] > 1)
337  ) {
338  $columnMap->setTypeOfRelation(‪ColumnMap::RELATION_HAS_MANY);
339  } else {
340  $columnMap->setTypeOfRelation(‪ColumnMap::RELATION_NONE);
341  }
342  } else {
343  $columnMap->setTypeOfRelation(‪ColumnMap::RELATION_NONE);
344  }
345  return $columnMap;
346  }
347 
355  protected function ‪setFieldEvaluations(ColumnMap $columnMap, array $columnConfiguration = null): ColumnMap
356  {
357  // todo: this method should only be called with proper arguments which means that the TCA integrity check should
358  // todo: take place outside this method.
359 
360  if (!empty($columnConfiguration['eval'])) {
361  $fieldEvaluations = ‪GeneralUtility::trimExplode(',', $columnConfiguration['eval'], true);
362  $dateTimeTypes = ‪QueryHelper::getDateTimeTypes();
363 
364  if (!empty(array_intersect($dateTimeTypes, $fieldEvaluations)) && !empty($columnConfiguration['dbType'])) {
365  $columnMap->setDateTimeStorageFormat($columnConfiguration['dbType']);
366  }
367  }
368 
369  return $columnMap;
370  }
371 
380  protected function ‪setOneToOneRelation(ColumnMap $columnMap, array $columnConfiguration = null): ColumnMap
381  {
382  // todo: this method should only be called with proper arguments which means that the TCA integrity check should
383  // todo: take place outside this method.
384 
385  $columnMap->setTypeOfRelation(‪ColumnMap::RELATION_HAS_ONE);
386  $columnMap->setChildTableName($columnConfiguration['foreign_table']);
387  // todo: don't update column map if value(s) isn't/aren't set.
388  $columnMap->setChildSortByFieldName($columnConfiguration['foreign_sortby'] ?? null);
389  $columnMap->setParentKeyFieldName($columnConfiguration['foreign_field'] ?? null);
390  $columnMap->setParentTableFieldName($columnConfiguration['foreign_table_field'] ?? null);
391  if (is_array($columnConfiguration['foreign_match_fields'])) {
392  $columnMap->setRelationTableMatchFields($columnConfiguration['foreign_match_fields']);
393  }
394  return $columnMap;
395  }
396 
405  protected function ‪setOneToManyRelation(ColumnMap $columnMap, array $columnConfiguration = null): ColumnMap
406  {
407  // todo: this method should only be called with proper arguments which means that the TCA integrity check should
408  // todo: take place outside this method.
409 
410  $columnMap->setTypeOfRelation(‪ColumnMap::RELATION_HAS_MANY);
411  $columnMap->setChildTableName($columnConfiguration['foreign_table']);
412  // todo: don't update column map if value(s) isn't/aren't set.
413  $columnMap->setChildSortByFieldName($columnConfiguration['foreign_sortby'] ?? null);
414  $columnMap->setParentKeyFieldName($columnConfiguration['foreign_field'] ?? null);
415  $columnMap->setParentTableFieldName($columnConfiguration['foreign_table_field'] ?? null);
416  if (is_array($columnConfiguration['foreign_match_fields'] ?? null)) {
417  $columnMap->setRelationTableMatchFields($columnConfiguration['foreign_match_fields']);
418  }
419  return $columnMap;
420  }
421 
431  protected function ‪setManyToManyRelation(ColumnMap $columnMap, array $columnConfiguration = null): ColumnMap
432  {
433  // todo: this method should only be called with proper arguments which means that the TCA integrity check should
434  // todo: take place outside this method.
435 
436  if (isset($columnConfiguration['MM'])) {
437  $columnMap->setTypeOfRelation(‪ColumnMap::RELATION_HAS_AND_BELONGS_TO_MANY);
438  $columnMap->setChildTableName($columnConfiguration['foreign_table']);
439  // todo: don't update column map if value(s) isn't/aren't set.
440  $columnMap->setRelationTableName($columnConfiguration['MM']);
441  if (isset($columnConfiguration['MM_match_fields']) && is_array($columnConfiguration['MM_match_fields'])) {
442  $columnMap->setRelationTableMatchFields($columnConfiguration['MM_match_fields']);
443  }
444  if (isset($columnConfiguration['MM_insert_fields']) && is_array($columnConfiguration['MM_insert_fields'])) {
445  $columnMap->setRelationTableInsertFields($columnConfiguration['MM_insert_fields']);
446  }
447  // todo: don't update column map if value(s) isn't/aren't set.
448  if (!empty($columnConfiguration['MM_opposite_field'])) {
449  $columnMap->setParentKeyFieldName('uid_foreign');
450  $columnMap->setChildKeyFieldName('uid_local');
451  $columnMap->setChildSortByFieldName('sorting_foreign');
452  } else {
453  $columnMap->setParentKeyFieldName('uid_local');
454  $columnMap->setChildKeyFieldName('uid_foreign');
455  $columnMap->setChildSortByFieldName('sorting');
456  }
457  } else {
458  // todo: this else part is actually superfluous because \TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMapFactory::setRelations
459  // todo: only calls this method if $columnConfiguration['MM'] is set.
460 
461  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);
462  }
463  $relationTableName = $columnMap->getRelationTableName();
464  if ($relationTableName !== null && $this->‪getControlSection($relationTableName) !== null) {
465  $columnMap->setRelationTablePageIdColumnName('pid');
466  }
467  return $columnMap;
468  }
469 
478  protected function ‪createColumnMap(string $columnName, string $propertyName): ColumnMap
479  {
480  return $this->objectManager->get(ColumnMap::class, $columnName, $propertyName);
481  }
482 }
‪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:71
‪TYPO3\CMS\Core\Utility\GeneralUtility\underscoredToLowerCamelCase
‪static string underscoredToLowerCamelCase($string)
Definition: GeneralUtility.php:902
‪TYPO3\CMS\Extbase\Reflection\ClassSchema\Exception\NoSuchPropertyException
Definition: NoSuchPropertyException.php:24
‪TYPO3\CMS\Core\Cache\CacheManager\getCache
‪FrontendInterface getCache($identifier)
Definition: CacheManager.php:141
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMap
Definition: DataMap.php:23
‪TYPO3\CMS\Core\Information\Typo3Version
Definition: Typo3Version.php:21
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\ColumnMap\setParentKeyFieldName
‪setParentKeyFieldName(?string $parentKeyFieldName)
Definition: ColumnMap.php:319
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMapFactory\$objectManager
‪TYPO3 CMS Extbase Object ObjectManagerInterface $objectManager
Definition: DataMapFactory.php:53
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMap\setPageIdColumnName
‪setPageIdColumnName($pageIdColumnName)
Definition: DataMap.php:247
‪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
Definition: ColumnMap.php:28
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMapFactory\$configurationManager
‪TYPO3 CMS Extbase Configuration ConfigurationManagerInterface $configurationManager
Definition: DataMapFactory.php:49
‪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:229
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\ColumnMap\setDateTimeStorageFormat
‪setDateTimeStorageFormat(?string $dateTimeStorageFormat)
Definition: ColumnMap.php:367
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMapFactory\getColumnsDefinition
‪array getColumnsDefinition(string $tableName)
Definition: DataMapFactory.php:219
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\ColumnMap\setChildTableName
‪setChildTableName(?string $childTableName)
Definition: ColumnMap.php:223
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\ColumnMap\setTypeOfRelation
‪setTypeOfRelation(string $typeOfRelation)
Definition: ColumnMap.php:191
‪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:103
‪TYPO3\CMS\Extbase\Persistence\Generic\Exception\UnsupportedRelationException
Definition: UnsupportedRelationException.php:26
‪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:308
‪TYPO3\CMS\Extbase\Persistence\Generic\Exception\InvalidClassException
Definition: InvalidClassException.php:26
‪TYPO3\CMS\Extbase\Object\ObjectManagerInterface
Definition: ObjectManagerInterface.php:26
‪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:285
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMapFactory
Definition: DataMapFactory.php:42
‪TYPO3\CMS\Extbase\Reflection\ReflectionService
Definition: ReflectionService.php:31
‪TYPO3\CMS\Core\Type\Enumeration\cast
‪static static cast($value)
Definition: Enumeration.php:186
‪TYPO3\CMS\Core\Core\Environment\getProjectPath
‪static string getProjectPath()
Definition: Environment.php:169
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMapFactory\setOneToOneRelation
‪ColumnMap setOneToOneRelation(ColumnMap $columnMap, array $columnConfiguration=null)
Definition: DataMapFactory.php:373
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMapFactory\setFieldEvaluations
‪ColumnMap setFieldEvaluations(ColumnMap $columnMap, array $columnConfiguration=null)
Definition: DataMapFactory.php:348
‪TYPO3\CMS\Core\Database\Query\QueryHelper
Definition: QueryHelper.php:32
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMapFactory\getControlSection
‪array null getControlSection(string $tableName)
Definition: DataMapFactory.php:206
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMapFactory\$dataMaps
‪array $dataMaps
Definition: DataMapFactory.php:67
‪TYPO3\CMS\Core\Database\Query\QueryHelper\getDateTimeTypes
‪static array getDateTimeTypes()
Definition: QueryHelper.php:202
‪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:57
‪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:399
‪TYPO3\CMS\Core\Cache\CacheManager
Definition: CacheManager.php:35
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMap\setCreatorColumnName
‪setCreatorColumnName($creatorColumnName)
Definition: DataMap.php:367
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\ColumnMap\setRelationTablePageIdColumnName
‪setRelationTablePageIdColumnName(string $relationTablePageIdColumnName)
Definition: ColumnMap.php:271
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMapFactory\__construct
‪__construct(ReflectionService $reflectionService, ConfigurationManagerInterface $configurationManager, ObjectManagerInterface $objectManager, CacheManager $cacheManager, ClassesConfigurationFactory $classesConfigurationFactory)
Definition: DataMapFactory.php:79
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMap\setEndTimeColumnName
‪setEndTimeColumnName($endTimeColumnName)
Definition: DataMap.php:447
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\ColumnMap\setInternalType
‪setInternalType(TableColumnSubType $internalType)
Definition: ColumnMap.php:383
‪TYPO3\CMS\Extbase\Persistence\ClassesConfiguration
Definition: ClassesConfiguration.php:24
‪TYPO3\CMS\Core\Utility\GeneralUtility\trimExplode
‪static string[] trimExplode($delim, $string, $removeEmptyValues=false, $limit=0)
Definition: GeneralUtility.php:1059
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMapFactory\createColumnMap
‪ColumnMap createColumnMap(string $columnName, string $propertyName)
Definition: DataMapFactory.php:471
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMapFactory\resolveTableName
‪string resolveTableName(string $className)
Definition: DataMapFactory.php:185
‪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:351
‪TYPO3\CMS\Core\SingletonInterface
Definition: SingletonInterface.php:23
‪TYPO3\CMS\Core\DataHandling\TableColumnSubType
Definition: TableColumnSubType.php:24
‪$GLOBALS
‪$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['adminpanel']['modules']
Definition: ext_localconf.php:5
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMap\setTranslationOriginColumnName
‪setTranslationOriginColumnName($translationOriginColumnName)
Definition: DataMap.php:287
‪TYPO3\CMS\Core\Core\Environment
Definition: Environment.php:40
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMapFactory\setOneToManyRelation
‪ColumnMap setOneToManyRelation(ColumnMap $columnMap, array $columnConfiguration=null)
Definition: DataMapFactory.php:398
‪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:129
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMap\setCreationDateColumnName
‪setCreationDateColumnName($creationDateColumnName)
Definition: DataMap.php:347
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMapFactory\$dataMapCache
‪TYPO3 CMS Core Cache Frontend FrontendInterface $dataMapCache
Definition: DataMapFactory.php:61
‪TYPO3\CMS\Core\Utility\GeneralUtility
Definition: GeneralUtility.php:46
‪TYPO3\CMS\Extbase\Persistence\ClassesConfigurationFactory\createClassesConfiguration
‪ClassesConfiguration createClassesConfiguration()
Definition: ClassesConfigurationFactory.php:65
‪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:239
‪TYPO3\CMS\Extbase\Persistence\ClassesConfigurationFactory
Definition: ClassesConfigurationFactory.php:37
‪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:303
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\ColumnMap\getRelationTableName
‪string null getRelationTableName()
Definition: ColumnMap.php:263
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMapFactory\$reflectionService
‪TYPO3 CMS Extbase Reflection ReflectionService $reflectionService
Definition: DataMapFactory.php:45
‪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:335
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\ColumnMap\setRelationTableMatchFields
‪setRelationTableMatchFields(?array $relationTableMatchFields)
Definition: ColumnMap.php:287
‪TYPO3\CMS\Core\DataHandling\TableColumnType
Definition: TableColumnType.php:24
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\ColumnMap\setRelationTableName
‪setRelationTableName(?string $relationTableName)
Definition: ColumnMap.php:255