예제 #1
0
파일: boot.php 프로젝트: redaxo/redaxo
    });
    rex_extension::register('ART_SLICES_QUERY', function (rex_extension_point $ep) {
        $history_date = rex_request('rex_history_date', 'string');
        $history_revision = rex_request('history_revision', 'int', 0);
        $article = $ep->getParam('article');
        if ($article instanceof rex_article_content && $article->getArticleId() == rex_article::getCurrentId()) {
            $articleLimit = '';
            if ($article->getArticleId() != 0) {
                $articleLimit = ' AND ' . rex::getTablePrefix() . 'article_slice.article_id=' . $article->getArticleId();
            }
            $sliceLimit = '';
            $escapeSql = rex_sql::factory();
            $sliceDate = ' AND ' . rex::getTablePrefix() . 'article_slice.history_date = ' . $escapeSql->escape($history_date);
            return 'SELECT ' . rex::getTablePrefix() . 'module.id, ' . rex::getTablePrefix() . 'module.name, ' . rex::getTablePrefix() . 'module.output, ' . rex::getTablePrefix() . 'module.input, ' . rex::getTablePrefix() . 'article_slice.*, ' . rex::getTablePrefix() . 'article.parent_id
                FROM
                    ' . rex_article_slice_history::getTable() . ' as ' . rex::getTablePrefix() . 'article_slice
                LEFT JOIN ' . rex::getTablePrefix() . 'module ON ' . rex::getTablePrefix() . 'article_slice.module_id=' . rex::getTablePrefix() . 'module.id
                LEFT JOIN ' . rex::getTablePrefix() . 'article ON ' . rex::getTablePrefix() . 'article_slice.article_id=' . rex::getTablePrefix() . 'article.id
                WHERE
                    ' . rex::getTablePrefix() . "article_slice.clang_id='" . $article->getClang() . "' AND\n                    " . rex::getTablePrefix() . "article.clang_id='" . $article->getClang() . "' AND\n                    " . rex::getTablePrefix() . "article_slice.revision='" . $history_revision . "'\n                    " . $articleLimit . '
                    ' . $sliceLimit . '
                    ' . $sliceDate . '
                    ORDER BY ' . rex::getTablePrefix() . 'article_slice.priority';
        }
    });
}
if (rex::isBackend() && rex::getUser() && rex::getUser()->hasPerm('history[article_rollback]')) {
    rex_extension::register(['ART_SLICES_COPY', 'SLICE_ADD', 'SLICE_UPDATE', 'SLICE_MOVE', 'SLICE_DELETE'], function (rex_extension_point $ep) {
        switch ($ep->getName()) {
            case 'ART_SLICES_COPY':
                $type = 'slices_copy';