Contao\Database\Updater::run31Update PHP Method

run31Update() public method

Version 3.1.0 update
public run31Update ( )
    public function run31Update()
    {
        // Get all page layouts that use the CSS framework
        $objLayout = $this->Database->query("SELECT `id`, `framework` FROM `tl_layout` WHERE `framework`!=''");
        // Rename "responsive.css" to "grid.css"
        while ($objLayout->next()) {
            $arrCss = \StringUtil::deserialize($objLayout->framework);
            if (($key = array_search('responsive.css', $arrCss)) !== false) {
                $arrCss[$key] = 'grid.css';
            }
            $this->Database->prepare("UPDATE `tl_layout` SET `framework`=? WHERE `id`=?")->execute(serialize($arrCss), $objLayout->id);
        }
        // Add the jQuery fields if they do not yet exist (see #5689)
        if (!$this->Database->fieldExists('addJQuery', 'tl_layout')) {
            $this->Database->query("ALTER TABLE `tl_layout` ADD `addJQuery` char(1) NOT NULL default ''");
            $this->Database->query("ALTER TABLE `tl_layout` ADD `jSource` varchar(16) NOT NULL default ''");
            $this->Database->query("ALTER TABLE `tl_layout` ADD `jquery` text NULL");
        }
        // Get all page layouts that use the moo_mediaelement template
        $objLayout = $this->Database->query("SELECT `id`, `addJQuery`, `jquery`, `mootools` FROM `tl_layout` WHERE `addMooTools`=1 AND `mootools` LIKE '%\"moo_mediaelement\"%'");
        // Activate the "j_mediaelement" template instead
        while ($objLayout->next()) {
            $arrSet = array();
            // jQuery already activated
            if ($objLayout->addjQuery) {
                $arrJQuery = \StringUtil::deserialize($objLayout->jquery);
                // Add j_mediaelement
                if (!is_array($arrJQuery)) {
                    $arrSet['jquery'] = serialize(array('j_mediaelement'));
                } elseif (!in_array('j_mediaelement', $arrJQuery)) {
                    $arrJQuery[] = 'j_mediaelement';
                    $arrSet['jquery'] = serialize($arrJQuery);
                }
            } else {
                $arrSet['addJQuery'] = 1;
                $arrSet['jSource'] = 'j_local';
                $arrSet['jquery'] = serialize(array('j_mediaelement'));
            }
            $arrMooTools = \StringUtil::deserialize($objLayout->mootools);
            // Unset the moo_mediaelement template
            if (($key = array_search('moo_mediaelement', $arrMooTools)) !== false) {
                unset($arrMooTools[$key]);
            }
            // Update the MooTools templates
            if (empty($arrMooTools)) {
                $arrSet['mootools'] = '';
            } else {
                $arrSet['mootools'] = serialize(array_values($arrMooTools));
            }
            $this->Database->prepare("UPDATE `tl_layout` %s WHERE `id`=?")->set($arrSet)->execute($objLayout->id);
        }
        // Get all page layouts
        $objLayout = $this->Database->query("SELECT `id`, `modules` FROM `tl_layout`");
        // Add the "enable" flag to all modules
        while ($objLayout->next()) {
            $arrModules = \StringUtil::deserialize($objLayout->modules);
            foreach (array_keys($arrModules) as $key) {
                $arrModules[$key]['enable'] = true;
            }
            $this->Database->prepare("UPDATE `tl_layout` SET `modules`=? WHERE `id`=?")->execute(serialize($arrModules), $objLayout->id);
        }
        // Adjust the accordion elements
        $this->Database->query("UPDATE `tl_content` SET `type`='accordionStart' WHERE `type`='accordion' AND `mooType`='mooStart'");
        $this->Database->query("UPDATE `tl_content` SET `type`='accordionStop' WHERE `type`='accordion' AND `mooType`='mooStop'");
        $this->Database->query("UPDATE `tl_content` SET `type`='accordionSingle' WHERE `type`='accordion' AND `mooType`='mooSingle'");
        // White-space is now in the "alignment" section (see #4519)
        $this->Database->query("UPDATE `tl_style` SET `alignment`=1 WHERE `whitespace`!=''");
        $this->Database->query("ALTER TABLE `tl_style` CHANGE `whitespace` `whitespace` varchar(8) NOT NULL default ''");
        $this->Database->query("UPDATE `tl_style` SET `whitespace`='nowrap' WHERE `whitespace`!=''");
        // Drop the tl_files.path index (see #5598)
        if ($this->Database->indexExists('path', 'tl_files')) {
            $this->Database->query("ALTER TABLE `tl_files` DROP INDEX `path`");
        }
        // Remove the "mooType" field (triggers the version 3.1 update)
        $this->Database->query("ALTER TABLE `tl_content` DROP `mooType`");
    }