protected function writeStyleSheet($row)
{
if ($row['id'] == '' || $row['name'] == '') {
return;
}
$row['name'] = basename($row['name']);
// Check whether the target file is writeable
if (file_exists(TL_ROOT . '/assets/css/' . $row['name'] . '.css') && !$this->Files->is_writeable('assets/css/' . $row['name'] . '.css')) {
\Message::addError(sprintf($GLOBALS['TL_LANG']['ERR']['notWriteable'], 'assets/css/' . $row['name'] . '.css'));
return;
}
$vars = array();
// Get the global theme variables
$objTheme = $this->Database->prepare("SELECT vars FROM tl_theme WHERE id=?")->limit(1)->execute($row['pid']);
if ($objTheme->vars != '') {
if (is_array($tmp = \StringUtil::deserialize($objTheme->vars))) {
foreach ($tmp as $v) {
$vars[$v['key']] = $v['value'];
}
}
}
// Merge the global style sheet variables
if ($row['vars'] != '') {
if (is_array($tmp = \StringUtil::deserialize($row['vars']))) {
foreach ($tmp as $v) {
$vars[$v['key']] = $v['value'];
}
}
}
// Sort by key length (see #3316)
uksort($vars, 'length_sort_desc');
// Create the file
$objFile = new \File('assets/css/' . $row['name'] . '.css');
$objFile->write('/* ' . $row['name'] . ".css */\n");
$objDefinitions = $this->Database->prepare("SELECT * FROM tl_style WHERE pid=? AND invisible!='1' ORDER BY sorting")->execute($row['id']);
// Append the definition
while ($objDefinitions->next()) {
$objFile->append($this->compileDefinition($objDefinitions->row(), true, $vars, $row), '');
}
$objFile->close();
}