예제 #1
0
 /**
  * @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;
 }