예제 #1
0
function _convertThemes2Component()
{
    global $objDatabase, $_CORELANG;
    // Find all themes
    $result = $objDatabase->Execute('SELECT `themesname`, `foldername` FROM `' . DBPREFIX . 'skins`');
    if ($result->EOF) {
        \DBG::msg('No themes found!');
        return false;
    }
    $errorMessages = '';
    $themeRepository = new \Cx\Core\View\Model\Repository\ThemeRepository();
    while (!$result->EOF) {
        $themePath = ASCMS_THEMES_PATH . '/' . $result->fields['foldername'];
        if (!is_dir($themePath)) {
            \DBG::msg('Skipping theme "' . $result->fields['themesname'] . '"; No such folder!');
            $errorMessages .= '<div class="message-warning">' . sprintf($_CORELANG['TXT_CSS_UPDATE_MISSING_FOLDER'], $result->fields['themesname']) . '</div>';
            $result->MoveNext();
            continue;
        }
        // create a new one if no component.yml exists
        if (!file_exists($themePath . '/component.yml')) {
            \DBG::msg('Converting theme "' . $result->fields['themesname'] . ' to component');
            $themeRepository->convertThemeToComponent($result->fields['foldername']);
        }
        $result->MoveNext();
    }
    if (!empty($errorMessages)) {
        setUpdateMsg($errorMessages, 'msg');
        setUpdateMsg('<input type="submit" value="' . $_CORELANG['TXT_CONTINUE_UPDATE'] . '" name="updateNext" /><input type="hidden" name="processUpdate" id="processUpdate" />', 'button');
        $_SESSION['contrexx_update']['update']['done'][] = 'convertTemplates';
        return false;
    }
    return true;
}