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`");
}