‪TYPO3CMS  9.5
DataMapFactory.php
Go to the documentation of this file.
1 <?php
3 
4 /*
5  * This file is part of the TYPO3 CMS project.
6  *
7  * It is free software; you can redistribute it and/or modify it under
8  * the terms of the GNU General Public License, either version 2
9  * of the License, or any later version.
10  *
11  * For the full copyright and license information, please read the
12  * LICENSE.txt file that was distributed with this source code.
13  *
14  * The TYPO3 project - inspiring people to share!
15  */
16 
18 
24 {
28  protected ‪$reflectionService;
29 
33  protected ‪$configurationManager;
34 
38  protected ‪$objectManager;
39 
43  protected ‪$cacheManager;
44 
48  protected ‪$dataMapCache;
49 
55  protected ‪$dataMaps = [];
56 
60  public function ‪injectReflectionService(\‪TYPO3\CMS\‪Extbase\Reflection\ReflectionService ‪$reflectionService)
61  {
62  $this->reflectionService = ‪$reflectionService;
63  }
64 
69  {
70  $this->configurationManager = ‪$configurationManager;
71  }
72 
77  {
78  $this->objectManager = ‪$objectManager;
79  }
80 
84  public function ‪injectCacheManager(\‪TYPO3\CMS\Core\Cache\CacheManager ‪$cacheManager)
85  {
86  $this->cacheManager = ‪$cacheManager;
87  }
88 
92  public function ‪initializeObject()
93  {
94  $this->dataMapCache = $this->cacheManager->getCache('extbase_datamapfactory_datamap');
95  }
96 
105  public function ‪buildDataMap($className)
106  {
107  if (isset($this->dataMaps[$className])) {
108  return $this->dataMaps[$className];
109  }
110  $dataMap = $this->dataMapCache->get(str_replace('\\', '%', $className));
111  if ($dataMap === false) {
112  $dataMap = $this->‪buildDataMapInternal($className);
113  $this->dataMapCache->set(str_replace('\\', '%', $className), $dataMap);
114  }
115  $this->dataMaps[$className] = $dataMap;
116  return $dataMap;
117  }
118 
128  protected function ‪buildDataMapInternal($className)
129  {
130  if (!class_exists($className)) {
131  throw new \TYPO3\CMS\Extbase\Persistence\Generic\Exception\InvalidClassException(
132  'Could not find class definition for name "' . $className . '". This could be caused by a mis-spelling of the class name in the class definition.',
133  1476045117
134  );
135  }
136  $recordType = null;
137  $subclasses = [];
138  $tableName = $this->‪resolveTableName($className);
139  $columnMapping = [];
140  $frameworkConfiguration = $this->configurationManager->getConfiguration(\‪TYPO3\CMS\‪Extbase\Configuration\‪ConfigurationManagerInterface::CONFIGURATION_TYPE_FRAMEWORK);
141  $classSettings = $frameworkConfiguration['persistence']['classes'][$className] ?? null;
142  if ($classSettings !== null) {
143  if (isset($classSettings['subclasses']) && is_array($classSettings['subclasses'])) {
144  $subclasses = $this->‪resolveSubclassesRecursive($frameworkConfiguration['persistence']['classes'], $classSettings['subclasses']);
145  }
146  if (isset($classSettings['mapping']['recordType']) && $classSettings['mapping']['recordType'] !== '') {
147  $recordType = $classSettings['mapping']['recordType'];
148  }
149  if (isset($classSettings['mapping']['tableName']) && $classSettings['mapping']['tableName'] !== '') {
150  $tableName = $classSettings['mapping']['tableName'];
151  }
152  $classHierarchy = array_merge([$className], class_parents($className));
153  foreach ($classHierarchy as $currentClassName) {
154  if (in_array($currentClassName, [\‪TYPO3\CMS\‪Extbase\DomainObject\AbstractEntity::class, \‪TYPO3\CMS\‪Extbase\DomainObject\AbstractValueObject::class])) {
155  break;
156  }
157  $currentClassSettings = $frameworkConfiguration['persistence']['classes'][$currentClassName];
158  if ($currentClassSettings !== null) {
159  if (isset($currentClassSettings['mapping']['columns']) && is_array($currentClassSettings['mapping']['columns'])) {
160  ‪\TYPO3\CMS\Core\Utility\ArrayUtility::mergeRecursiveWithOverrule($columnMapping, $currentClassSettings['mapping']['columns'], true, false);
161  }
162  }
163  }
164  }
166  $dataMap = $this->objectManager->get(\‪TYPO3\CMS\‪Extbase\Persistence\Generic\Mapper\DataMap::class, $className, $tableName, $recordType, $subclasses);
167  $dataMap = $this->‪addMetaDataColumnNames($dataMap, $tableName);
168  // $classPropertyNames = $this->reflectionService->getClassPropertyNames($className);
169  $tcaColumnsDefinition = $this->‪getColumnsDefinition($tableName);
170  ‪\TYPO3\CMS\Core\Utility\ArrayUtility::mergeRecursiveWithOverrule($tcaColumnsDefinition, $columnMapping);
171  // @todo Is this is too powerful?
172 
173  foreach ($tcaColumnsDefinition as $columnName => $columnDefinition) {
174  if (isset($columnDefinition['mapOnProperty'])) {
175  $propertyName = $columnDefinition['mapOnProperty'];
176  } else {
177  $propertyName = \TYPO3\CMS\Core\Utility\GeneralUtility::underscoredToLowerCamelCase($columnName);
178  }
179  // if (in_array($propertyName, $classPropertyNames)) {
180  // @todo Enable check for property existence
181  $columnMap = $this->‪createColumnMap($columnName, $propertyName);
182  $propertyMetaData = $this->reflectionService->getClassSchema($className)->getProperty($propertyName);
183  $columnMap = $this->‪setType($columnMap, $columnDefinition['config']);
184  $columnMap = $this->‪setRelations($columnMap, $columnDefinition['config'], $propertyMetaData);
185  $columnMap = $this->‪setFieldEvaluations($columnMap, $columnDefinition['config']);
186  $dataMap->addColumnMap($columnMap);
187  }
188  return $dataMap;
189  }
190 
197  protected function ‪resolveTableName($className)
198  {
199  $className = ltrim($className, '\\');
200  $classNameParts = explode('\\', $className);
201  // Skip vendor and product name for core classes
202  if (strpos($className, 'TYPO3\\CMS\\') === 0) {
203  $classPartsToSkip = 2;
204  } else {
205  $classPartsToSkip = 1;
206  }
207  $tableName = 'tx_' . strtolower(implode('_', array_slice($classNameParts, $classPartsToSkip)));
208 
209  return $tableName;
210  }
211 
220  protected function ‪resolveSubclassesRecursive(array $classesConfiguration, array $subclasses)
221  {
222  $allSubclasses = [];
223  foreach ($subclasses as $subclass) {
224  $allSubclasses[] = $subclass;
225  if (isset($classesConfiguration[$subclass]['subclasses']) && is_array($classesConfiguration[$subclass]['subclasses'])) {
226  $childSubclasses = $this->‪resolveSubclassesRecursive($classesConfiguration, $classesConfiguration[$subclass]['subclasses']);
227  $allSubclasses = array_merge($allSubclasses, $childSubclasses);
228  }
229  }
230  return $allSubclasses;
231  }
232 
239  protected function ‪getControlSection($tableName)
240  {
241  return (isset(‪$GLOBALS['TCA'][$tableName]['ctrl']) && is_array(‪$GLOBALS['TCA'][$tableName]['ctrl']))
242  ? ‪$GLOBALS['TCA'][$tableName]['ctrl']
243  : null;
244  }
245 
252  protected function ‪getColumnsDefinition($tableName)
253  {
254  return is_array(‪$GLOBALS['TCA'][$tableName]['columns']) ? ‪$GLOBALS['TCA'][$tableName]['columns'] : [];
255  }
256 
262  protected function ‪addMetaDataColumnNames(\‪TYPO3\CMS\‪Extbase\Persistence\Generic\Mapper\‪DataMap $dataMap, $tableName)
263  {
264  $controlSection = ‪$GLOBALS['TCA'][$tableName]['ctrl'];
265  $dataMap->setPageIdColumnName('pid');
266  if (isset($controlSection['tstamp'])) {
267  $dataMap->setModificationDateColumnName($controlSection['tstamp']);
268  }
269  if (isset($controlSection['crdate'])) {
270  $dataMap->setCreationDateColumnName($controlSection['crdate']);
271  }
272  if (isset($controlSection['cruser_id'])) {
273  $dataMap->setCreatorColumnName($controlSection['cruser_id']);
274  }
275  if (isset($controlSection['delete'])) {
276  $dataMap->setDeletedFlagColumnName($controlSection['delete']);
277  }
278  if (isset($controlSection['languageField'])) {
279  $dataMap->setLanguageIdColumnName($controlSection['languageField']);
280  }
281  if (isset($controlSection['transOrigPointerField'])) {
282  $dataMap->setTranslationOriginColumnName($controlSection['transOrigPointerField']);
283  }
284  if (isset($controlSection['transOrigDiffSourceField'])) {
285  $dataMap->setTranslationOriginDiffSourceName($controlSection['transOrigDiffSourceField']);
286  }
287  if (isset($controlSection['type'])) {
288  $dataMap->setRecordTypeColumnName($controlSection['type']);
289  }
290  if (isset($controlSection['rootLevel'])) {
291  $dataMap->setRootLevel($controlSection['rootLevel']);
292  }
293  if (isset($controlSection['is_static'])) {
294  $dataMap->setIsStatic($controlSection['is_static']);
295  }
296  if (isset($controlSection['enablecolumns']['disabled'])) {
297  $dataMap->setDisabledFlagColumnName($controlSection['enablecolumns']['disabled']);
298  }
299  if (isset($controlSection['enablecolumns']['starttime'])) {
300  $dataMap->setStartTimeColumnName($controlSection['enablecolumns']['starttime']);
301  }
302  if (isset($controlSection['enablecolumns']['endtime'])) {
303  $dataMap->setEndTimeColumnName($controlSection['enablecolumns']['endtime']);
304  }
305  if (isset($controlSection['enablecolumns']['fe_group'])) {
306  $dataMap->setFrontEndUserGroupColumnName($controlSection['enablecolumns']['fe_group']);
307  }
308  return $dataMap;
309  }
310 
318  protected function ‪setType(‪ColumnMap $columnMap, $columnConfiguration)
319  {
320  $tableColumnType = $columnConfiguration['type'] ?? null;
321  $columnMap->‪setType(\‪TYPO3\CMS\Core\DataHandling\TableColumnType::cast($tableColumnType));
322  $tableColumnSubType = $columnConfiguration['internal_type'] ?? null;
323  $columnMap->‪setInternalType(\‪TYPO3\CMS\Core\DataHandling\TableColumnSubType::cast($tableColumnSubType));
324 
325  return $columnMap;
326  }
327 
337  protected function ‪setRelations(‪ColumnMap $columnMap, $columnConfiguration, $propertyMetaData)
338  {
339  if (isset($columnConfiguration)) {
340  if (isset($columnConfiguration['MM'])) {
341  $columnMap = $this->‪setManyToManyRelation($columnMap, $columnConfiguration);
342  } elseif (isset($propertyMetaData['elementType'])) {
343  $columnMap = $this->‪setOneToManyRelation($columnMap, $columnConfiguration);
344  } elseif (isset($propertyMetaData['type']) && strpbrk($propertyMetaData['type'], '_\\') !== false) {
345  $columnMap = $this->‪setOneToOneRelation($columnMap, $columnConfiguration);
346  } elseif (
347  isset($columnConfiguration['type'], $columnConfiguration['renderType'])
348  && $columnConfiguration['type'] === 'select'
349  && (
350  $columnConfiguration['renderType'] !== 'selectSingle'
351  || (isset($columnConfiguration['maxitems']) && $columnConfiguration['maxitems'] > 1)
352  )
353  ) {
355  } elseif (
356  isset($columnConfiguration['type']) && $columnConfiguration['type'] === 'group'
357  && (!isset($columnConfiguration['maxitems']) || $columnConfiguration['maxitems'] > 1)
358  ) {
360  } else {
362  }
363  } else {
365  }
366  return $columnMap;
367  }
368 
376  protected function ‪setFieldEvaluations(ColumnMap $columnMap, array $columnConfiguration = null)
377  {
378  if (!empty($columnConfiguration['eval'])) {
379  $fieldEvaluations = \TYPO3\CMS\Core\Utility\GeneralUtility::trimExplode(',', $columnConfiguration['eval'], true);
380  $dateTimeTypes = ‪QueryHelper::getDateTimeTypes();
381 
382  if (!empty(array_intersect($dateTimeTypes, $fieldEvaluations)) && !empty($columnConfiguration['dbType'])) {
383  $columnMap->setDateTimeStorageFormat($columnConfiguration['dbType']);
384  }
385  }
386 
387  return $columnMap;
388  }
389 
398  protected function ‪setOneToOneRelation(ColumnMap $columnMap, array $columnConfiguration = null)
399  {
401  $columnMap->setChildTableName($columnConfiguration['foreign_table']);
402  $columnMap->setChildTableWhereStatement($columnConfiguration['foreign_table_where'] ?? null);
403  $columnMap->setChildSortByFieldName($columnConfiguration['foreign_sortby'] ?? null);
404  $columnMap->setParentKeyFieldName($columnConfiguration['foreign_field'] ?? null);
405  $columnMap->setParentTableFieldName($columnConfiguration['foreign_table_field'] ?? null);
406  if (is_array($columnConfiguration['foreign_match_fields'])) {
407  $columnMap->setRelationTableMatchFields($columnConfiguration['foreign_match_fields']);
408  }
409  return $columnMap;
410  }
411 
420  protected function ‪setOneToManyRelation(ColumnMap $columnMap, array $columnConfiguration = null)
421  {
423  $columnMap->setChildTableName($columnConfiguration['foreign_table']);
424  $columnMap->setChildTableWhereStatement($columnConfiguration['foreign_table_where'] ?? null);
425  $columnMap->setChildSortByFieldName($columnConfiguration['foreign_sortby'] ?? null);
426  $columnMap->setParentKeyFieldName($columnConfiguration['foreign_field'] ?? null);
427  $columnMap->setParentTableFieldName($columnConfiguration['foreign_table_field'] ?? null);
428  if (is_array($columnConfiguration['foreign_match_fields'] ?? null)) {
429  $columnMap->setRelationTableMatchFields($columnConfiguration['foreign_match_fields']);
430  }
431  return $columnMap;
432  }
433 
443  protected function ‪setManyToManyRelation(ColumnMap $columnMap, array $columnConfiguration = null)
444  {
445  if (isset($columnConfiguration['MM'])) {
447  $columnMap->setChildTableName($columnConfiguration['foreign_table']);
448  $columnMap->setChildTableWhereStatement($columnConfiguration['foreign_table_where'] ?? null);
449  $columnMap->setRelationTableName($columnConfiguration['MM']);
450  if (isset($columnConfiguration['MM_match_fields']) && is_array($columnConfiguration['MM_match_fields'])) {
451  $columnMap->setRelationTableMatchFields($columnConfiguration['MM_match_fields']);
452  }
453  if (isset($columnConfiguration['MM_insert_fields']) && is_array($columnConfiguration['MM_insert_fields'])) {
454  $columnMap->setRelationTableInsertFields($columnConfiguration['MM_insert_fields']);
455  }
456  $columnMap->setRelationTableWhereStatement($columnConfiguration['MM_table_where'] ?? null);
457  if (!empty($columnConfiguration['MM_opposite_field'])) {
458  $columnMap->setParentKeyFieldName('uid_foreign');
459  $columnMap->setChildKeyFieldName('uid_local');
460  $columnMap->setChildSortByFieldName('sorting_foreign');
461  } else {
462  $columnMap->setParentKeyFieldName('uid_local');
463  $columnMap->setChildKeyFieldName('uid_foreign');
464  $columnMap->setChildSortByFieldName('sorting');
465  }
466  } else {
467  throw new \TYPO3\CMS\Extbase\Persistence\Generic\Exception\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);
468  }
469  if ($this->‪getControlSection($columnMap->getRelationTableName()) !== null) {
470  $columnMap->setRelationTablePageIdColumnName('pid');
471  }
472  return $columnMap;
473  }
474 
483  protected function ‪createColumnMap($columnName, $propertyName)
484  {
485  return $this->objectManager->get(\‪TYPO3\CMS\‪Extbase\Persistence\Generic\Mapper\ColumnMap::class, $columnName, $propertyName);
486  }
487 }
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMapFactory\resolveSubclassesRecursive
‪array resolveSubclassesRecursive(array $classesConfiguration, array $subclasses)
Definition: DataMapFactory.php:214
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMapFactory\initializeObject
‪initializeObject()
Definition: DataMapFactory.php:86
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\ColumnMap\setParentTableFieldName
‪setParentTableFieldName($parentTableFieldName)
Definition: ColumnMap.php:361
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\ColumnMap\setInternalType
‪setInternalType($internalType)
Definition: ColumnMap.php:409
‪TYPO3\CMS\Extbase\Annotation
Definition: IgnoreValidation.php:4
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMapFactory\injectCacheManager
‪injectCacheManager(\TYPO3\CMS\Core\Cache\CacheManager $cacheManager)
Definition: DataMapFactory.php:78
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\ColumnMap\setChildSortByFieldName
‪setChildSortByFieldName($childSortByFieldName)
Definition: ColumnMap.php:249
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMap
Definition: DataMap.php:22
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\ColumnMap\setRelationTableMatchFields
‪setRelationTableMatchFields(array $relationTableMatchFields)
Definition: ColumnMap.php:297
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMapFactory\injectObjectManager
‪injectObjectManager(\TYPO3\CMS\Extbase\Object\ObjectManagerInterface $objectManager)
Definition: DataMapFactory.php:70
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMapFactory\$objectManager
‪TYPO3 CMS Extbase Object ObjectManagerInterface $objectManager
Definition: DataMapFactory.php:35
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMapFactory\setType
‪ColumnMap setType(ColumnMap $columnMap, $columnConfiguration)
Definition: DataMapFactory.php:312
‪TYPO3
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\ColumnMap\setChildTableName
‪setChildTableName($childTableName)
Definition: ColumnMap.php:217
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMapFactory\setManyToManyRelation
‪ColumnMap setManyToManyRelation(ColumnMap $columnMap, array $columnConfiguration=null)
Definition: DataMapFactory.php:437
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\ColumnMap
Definition: ColumnMap.php:22
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\ColumnMap\setRelationTablePageIdColumnName
‪setRelationTablePageIdColumnName($relationTablePageIdColumnName)
Definition: ColumnMap.php:281
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMapFactory\$configurationManager
‪TYPO3 CMS Extbase Configuration ConfigurationManagerInterface $configurationManager
Definition: DataMapFactory.php:31
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\ColumnMap\RELATION_HAS_AND_BELONGS_TO_MANY
‪const RELATION_HAS_AND_BELONGS_TO_MANY
Definition: ColumnMap.php:30
‪TYPO3\CMS\Extbase\Configuration\ConfigurationManagerInterface
Definition: ConfigurationManagerInterface.php:22
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\ColumnMap\setTypeOfRelation
‪setTypeOfRelation($typeOfRelation)
Definition: ColumnMap.php:169
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\ColumnMap\setRelationTableWhereStatement
‪setRelationTableWhereStatement($relationTableWhereStatement)
Definition: ColumnMap.php:329
‪TYPO3\CMS\Core\Utility\ArrayUtility\mergeRecursiveWithOverrule
‪static mergeRecursiveWithOverrule(array &$original, array $overrule, $addKeys=true, $includeEmptyValues=true, $enableUnsetFeature=true)
Definition: ArrayUtility.php:614
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\ColumnMap\setChildTableWhereStatement
‪setChildTableWhereStatement($childTableWhereStatement)
Definition: ColumnMap.php:233
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\ColumnMap\RELATION_HAS_MANY
‪const RELATION_HAS_MANY
Definition: ColumnMap.php:28
‪TYPO3\CMS\Extbase\Object\ObjectManagerInterface
Definition: ObjectManagerInterface.php:23
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\ColumnMap\RELATION_HAS_ONE
‪const RELATION_HAS_ONE
Definition: ColumnMap.php:27
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMapFactory\buildDataMapInternal
‪TYPO3 CMS Extbase Persistence Generic Mapper DataMap buildDataMapInternal($className)
Definition: DataMapFactory.php:122
‪TYPO3\CMS\Extbase\Configuration\ConfigurationManagerInterface\CONFIGURATION_TYPE_FRAMEWORK
‪const CONFIGURATION_TYPE_FRAMEWORK
Definition: ConfigurationManagerInterface.php:23
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMapFactory
Definition: DataMapFactory.php:24
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\ColumnMap\setRelationTableName
‪setRelationTableName($relationTableName)
Definition: ColumnMap.php:265
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMapFactory\injectConfigurationManager
‪injectConfigurationManager(\TYPO3\CMS\Extbase\Configuration\ConfigurationManagerInterface $configurationManager)
Definition: DataMapFactory.php:62
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\ColumnMap\setChildKeyFieldName
‪setChildKeyFieldName($childKeyFieldName)
Definition: ColumnMap.php:377
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMapFactory\setOneToOneRelation
‪ColumnMap setOneToOneRelation(ColumnMap $columnMap, array $columnConfiguration=null)
Definition: DataMapFactory.php:392
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMapFactory\setFieldEvaluations
‪ColumnMap setFieldEvaluations(ColumnMap $columnMap, array $columnConfiguration=null)
Definition: DataMapFactory.php:370
‪TYPO3\CMS\Core\Database\Query\QueryHelper
Definition: QueryHelper.php:30
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMapFactory\$dataMaps
‪array $dataMaps
Definition: DataMapFactory.php:49
‪TYPO3\CMS\Core\Database\Query\QueryHelper\getDateTimeTypes
‪static array getDateTimeTypes()
Definition: QueryHelper.php:200
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMapFactory\$cacheManager
‪TYPO3 CMS Core Cache CacheManager $cacheManager
Definition: DataMapFactory.php:39
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\ColumnMap\RELATION_NONE
‪const RELATION_NONE
Definition: ColumnMap.php:26
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMapFactory\buildDataMap
‪TYPO3 CMS Extbase Persistence Generic Mapper DataMap buildDataMap($className)
Definition: DataMapFactory.php:99
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMapFactory\createColumnMap
‪ColumnMap createColumnMap($columnName, $propertyName)
Definition: DataMapFactory.php:477
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMapFactory\getColumnsDefinition
‪array getColumnsDefinition($tableName)
Definition: DataMapFactory.php:246
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMapFactory\resolveTableName
‪string resolveTableName($className)
Definition: DataMapFactory.php:191
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\ColumnMap\getRelationTableName
‪string getRelationTableName()
Definition: ColumnMap.php:273
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMapFactory\getControlSection
‪array getControlSection($tableName)
Definition: DataMapFactory.php:233
‪TYPO3\CMS\Core\SingletonInterface
Definition: SingletonInterface.php:22
‪$GLOBALS
‪$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['adminpanel']['modules']
Definition: ext_localconf.php:5
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMapFactory\setRelations
‪ColumnMap setRelations(ColumnMap $columnMap, $columnConfiguration, $propertyMetaData)
Definition: DataMapFactory.php:331
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\ColumnMap\setParentKeyFieldName
‪setParentKeyFieldName($parentKeyFieldName)
Definition: ColumnMap.php:345
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMapFactory\setOneToManyRelation
‪ColumnMap setOneToManyRelation(ColumnMap $columnMap, array $columnConfiguration=null)
Definition: DataMapFactory.php:414
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMapFactory\addMetaDataColumnNames
‪DataMap addMetaDataColumnNames(\TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMap $dataMap, $tableName)
Definition: DataMapFactory.php:256
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMapFactory\$dataMapCache
‪TYPO3 CMS Core Cache Frontend FrontendInterface $dataMapCache
Definition: DataMapFactory.php:43
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper
Definition: ColumnMap.php:2
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\ColumnMap\setType
‪setType($type)
Definition: ColumnMap.php:425
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\ColumnMap\setRelationTableInsertFields
‪setRelationTableInsertFields(array $relationTableInsertFields)
Definition: ColumnMap.php:313
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMapFactory\$reflectionService
‪TYPO3 CMS Extbase Reflection ReflectionService $reflectionService
Definition: DataMapFactory.php:27
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMapFactory\injectReflectionService
‪injectReflectionService(\TYPO3\CMS\Extbase\Reflection\ReflectionService $reflectionService)
Definition: DataMapFactory.php:54
‪TYPO3\CMS\Extbase\Persistence\Generic\Mapper\ColumnMap\setDateTimeStorageFormat
‪setDateTimeStorageFormat($dateTimeStorageFormat)
Definition: ColumnMap.php:393