/** * @param int $id * @param array $fieldArray * @param \TYPO3\CMS\Core\DataHandling\DataHandler $dataHandler * * @return void */ public function preventEmptyFlexFormValues($id, &$fieldArray, $dataHandler) { $content = BackendUtility::getRecord('tt_content', $id); if (isset($fieldArray) && $fieldArray['CType'] === $this->CType || $content['CType'] === $this->CType) { if (isset($fieldArray['pi_flexform'])) { $flexformData = GeneralUtility::xml2array($fieldArray['pi_flexform']); if (isset($flexformData['data'])) { foreach ($flexformData['data'] as $sheet => $fields) { foreach ($fields['lDEF'] as $fieldKey => $fieldValue) { if (strpos($fieldKey, 'settings.') !== false && $fieldValue['vDEF'] === '') { unset($flexformData['data'][$sheet]['lDEF'][$fieldKey]); } } if (isset($flexformData['data'][$sheet]['lDEF']) && $flexformData['data'][$sheet]['lDEF'] === []) { unset($flexformData['data'][$sheet]); } } $fieldArray['pi_flexform'] = $this->flexFormTools->flexArray2Xml($flexformData, true); } } } }
/** * Updates the FlexForm data in the given outdated content element. * * @param array $outdatedContent * @param array &$dbQueries Queries done in this update */ protected function updateOutdatedContentFlexForm($outdatedContent, array &$dbQueries) { $flexFormArray = GeneralUtility::xml2array($outdatedContent['pi_flexform']); if (isset($flexFormArray['data']['rss']['lDEF']['settings.list.rss.channel'])) { $title = $flexFormArray['data']['rss']['lDEF']['settings.list.rss.channel']; unset($flexFormArray['data']['rss']['lDEF']['settings.list.rss.channel']); $flexFormArray['data']['rss']['lDEF']['settings.list.rss.channel.title'] = $title; } $flexFormData = $this->flexObj->flexArray2Xml($flexFormArray); $query = $this->db->UPDATEquery('tt_content', 'uid=' . (int) $outdatedContent['uid'], array('pi_flexform' => $flexFormData)); $this->db->sql_query($query); $dbQueries[] = $query; }