Contao\Database\Updater::updateFileTreeFields PHP Method

updateFileTreeFields() public method

Update all FileTree fields
    public function updateFileTreeFields()
    {
        $processed = array();
        /** @var SplFileInfo[] $files */
        $files = \System::getContainer()->get('contao.resource_finder')->findIn('dca')->depth(0)->files()->name('*.php');
        foreach ($files as $file) {
            if (in_array($file->getBasename(), $processed)) {
                continue;
            }
            $strTable = $file->getBasename('.php');
            try {
                $this->loadDataContainer($strTable);
            } catch (\Exception $e) {
                continue;
            }
            $arrConfig =& $GLOBALS['TL_DCA'][$strTable]['config'];
            // Skip non-database DCAs
            if ($arrConfig['dataContainer'] == 'File') {
                continue;
            }
            if ($arrConfig['dataContainer'] == 'Folder' && !$arrConfig['databaseAssisted']) {
                continue;
            }
            // Make sure there are fields (see #6437)
            if (is_array($GLOBALS['TL_DCA'][$strTable]['fields'])) {
                foreach ($GLOBALS['TL_DCA'][$strTable]['fields'] as $strField => $arrField) {
                    if ($arrField['inputType'] == 'fileTree') {
                        if ($this->Database->fieldExists($strField, $strTable, true)) {
                            $key = $arrField['eval']['multiple'] ? 'multiple' : 'single';
                            $arrFields[$key][] = $strTable . '.' . $strField;
                        }
                        // Convert the order fields as well
                        if (isset($arrField['eval']['orderField']) && isset($GLOBALS['TL_DCA'][$strTable]['fields'][$arrField['eval']['orderField']])) {
                            if ($this->Database->fieldExists($arrField['eval']['orderField'], $strTable, true)) {
                                $arrFields['order'][] = $strTable . '.' . $arrField['eval']['orderField'];
                            }
                        }
                    }
                }
            }
        }
        // Update the existing singleSRC entries
        if (isset($arrFields['single'])) {
            foreach ($arrFields['single'] as $val) {
                list($table, $field) = explode('.', $val);
                static::convertSingleField($table, $field);
            }
        }
        // Update the existing multiSRC entries
        if (isset($arrFields['multiple'])) {
            foreach ($arrFields['multiple'] as $val) {
                list($table, $field) = explode('.', $val);
                static::convertMultiField($table, $field);
            }
        }
        // Update the existing orderField entries
        if (isset($arrFields['order'])) {
            foreach ($arrFields['order'] as $val) {
                list($table, $field) = explode('.', $val);
                static::convertOrderField($table, $field);
            }
        }
    }