}); 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';