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