‪TYPO3CMS  ‪main
InlineMnGroup.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 
26 
33 {
37  protected ‪$tableName = 'tx_styleguide_inline_mngroup';
38 
45  public function ‪handle(string ‪$tableName): void
46  {
47  $recordFinder = GeneralUtility::makeInstance(RecordFinder::class);
48  $pidOfMainTable = $recordFinder->findPidOfMainTableRecord(‪$tableName);
49  $recordData = GeneralUtility::makeInstance(RecordData::class);
50  $context = GeneralUtility::makeInstance(Context::class);
51 
52  $childRelationUids = [];
53  $numberOfChildRelationsToCreate = 2;
54  $numberOfChildRows = 4;
55  $connectionPool = GeneralUtility::makeInstance(ConnectionPool::class);
56  for ($i = 0; $i < $numberOfChildRows; $i++) {
57  $fieldValues = [
58  'pid' => $pidOfMainTable,
59  'tstamp' => $context->getAspect('date')->get('timestamp'),
60  'crdate' => $context->getAspect('date')->get('timestamp'),
61  ];
62  $connection = $connectionPool->getConnectionForTable('tx_styleguide_inline_mngroup_child');
63  $connection->insert('tx_styleguide_inline_mngroup_child', $fieldValues);
64  $fieldValues['uid'] = $connection->lastInsertId();
65  if (count($childRelationUids) < $numberOfChildRelationsToCreate) {
66  $childRelationUids[] = $fieldValues['uid'];
67  }
68  $fieldValues = $recordData->generate('tx_styleguide_inline_mngroup_child', $fieldValues);
69  // Do not update primary identifier uid anymore, db's choke on that for good reason
70  $updateValues = $fieldValues;
71  unset($updateValues['uid']);
72  $connection->update(
73  'tx_styleguide_inline_mngroup_child',
74  $updateValues,
75  [ 'uid' => (int)$fieldValues['uid'] ]
76  );
77  }
78 
79  $fieldValues = [
80  'pid' => $pidOfMainTable,
81  'tstamp' => $context->getAspect('date')->get('timestamp'),
82  'crdate' => $context->getAspect('date')->get('timestamp'),
83  'inline_1' => $numberOfChildRelationsToCreate,
84  ];
85  $connection = $connectionPool->getConnectionForTable(‪$tableName);
86  $connection->insert(‪$tableName, $fieldValues);
87  $parentid = $fieldValues['uid'] = $connection->lastInsertId();
88  $fieldValues = $recordData->generate(‪$tableName, $fieldValues);
89  // Do not update primary identifier uid anymore, db's choke on that for good reason
90  $updateValues = $fieldValues;
91  unset($updateValues['uid']);
92  $connection->update(
94  $updateValues,
95  [ 'uid' => (int)$fieldValues['uid'] ]
96  );
97 
98  $this->‪generateTranslatedRecords($tableName, $fieldValues);
99 
100  foreach ($childRelationUids as ‪$uid) {
101  $mmFieldValues = [
102  'pid' => $pidOfMainTable,
103  'tstamp' => $context->getAspect('date')->get('timestamp'),
104  'crdate' => $context->getAspect('date')->get('timestamp'),
105  'parentid' => $parentid,
106  'childid' => ‪$uid,
107  ];
108  $connection = $connectionPool->getConnectionForTable('tx_styleguide_inline_mngroup_mm');
109  $connection->insert('tx_styleguide_inline_mngroup_mm', $mmFieldValues);
110  }
111  }
112 }
‪TYPO3\CMS\Styleguide\TcaDataGenerator\TableHandlerInterface
Definition: TableHandlerInterface.php:26
‪TYPO3\CMS\Styleguide\TcaDataGenerator\TableHandler\AbstractTableHandler
Definition: AbstractTableHandler.php:32
‪TYPO3\CMS\Styleguide\TcaDataGenerator\TableHandler\InlineMnGroup\$tableName
‪string $tableName
Definition: InlineMnGroup.php:36
‪TYPO3\CMS\Core\Context\Context
Definition: Context.php:54
‪TYPO3\CMS\Styleguide\TcaDataGenerator\TableHandler
Definition: AbstractTableHandler.php:18
‪TYPO3\CMS\Styleguide\TcaDataGenerator\TableHandler\InlineMnGroup\handle
‪handle(string $tableName)
Definition: InlineMnGroup.php:44
‪TYPO3\CMS\Webhooks\Message\$uid
‪identifier readonly int $uid
Definition: PageModificationMessage.php:35
‪TYPO3\CMS\Styleguide\TcaDataGenerator\TableHandler\InlineMnGroup
Definition: InlineMnGroup.php:33
‪TYPO3\CMS\Styleguide\TcaDataGenerator\TableHandler\AbstractTableHandler\generateTranslatedRecords
‪generateTranslatedRecords(string $tableName, $fieldValues)
Definition: AbstractTableHandler.php:52
‪TYPO3\CMS\Core\Database\ConnectionPool
Definition: ConnectionPool.php:46
‪TYPO3\CMS\Core\Utility\GeneralUtility
Definition: GeneralUtility.php:52
‪TYPO3\CMS\Styleguide\TcaDataGenerator\RecordFinder
Definition: RecordFinder.php:38
‪TYPO3\CMS\Styleguide\TcaDataGenerator\RecordData
Definition: RecordData.php:28