|
|
@@ -981,6 +981,18 @@ class SiteController extends ActionController
|
|
|
{
|
|
|
$queryBuilder = $this->connectionPool->getQueryBuilderForTable($table);
|
|
|
if (!$hard) {
|
|
|
+ if ($table === 'pages' || $table === 'tt_content') {
|
|
|
+ // Keep track of the manually deleted pages and content, so that these won't be restored if the site
|
|
|
+ // is undeleted
|
|
|
+ $cnn = $this->connectionPool->getConnectionForTable($table);
|
|
|
+ $cnn->executeStatement("
|
|
|
+ UPDATE " . $table . " t
|
|
|
+ SET t.manually_deleted = t.deleted
|
|
|
+ WHERE " . $whereKey . "=?;",
|
|
|
+ [$whereValue]
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
$queryBuilder
|
|
|
->update($table)
|
|
|
->set('deleted', 1)
|
|
|
@@ -1031,28 +1043,48 @@ class SiteController extends ActionController
|
|
|
$queryBuilder
|
|
|
->update('tt_content')
|
|
|
->set('deleted', 0)
|
|
|
- ->where($queryBuilder->expr()->eq('pid', $page['uid']))
|
|
|
+ ->where(
|
|
|
+ $queryBuilder->expr()->andX(
|
|
|
+ $queryBuilder->expr()->eq('pid', $page['uid']),
|
|
|
+ $queryBuilder->expr()->eq('manually_deleted', 0)
|
|
|
+ )
|
|
|
+ )
|
|
|
->execute();
|
|
|
|
|
|
$queryBuilder = $this->connectionPool->getQueryBuilderForTable('pages');
|
|
|
$queryBuilder
|
|
|
->update('pages')
|
|
|
->set('deleted', 0)
|
|
|
- ->where($queryBuilder->expr()->eq('uid', $page['uid']))
|
|
|
+ ->where(
|
|
|
+ $queryBuilder->expr()->andX(
|
|
|
+ $queryBuilder->expr()->eq('uid', $page['uid']),
|
|
|
+ $queryBuilder->expr()->eq('manually_deleted', 0)
|
|
|
+ )
|
|
|
+ )
|
|
|
->execute();
|
|
|
}
|
|
|
$queryBuilder = $this->connectionPool->getQueryBuilderForTable('tt_content');
|
|
|
$queryBuilder
|
|
|
->update('tt_content')
|
|
|
->set('deleted', 0)
|
|
|
- ->where($queryBuilder->expr()->eq('pid', $rootUid))
|
|
|
+ ->where(
|
|
|
+ $queryBuilder->expr()->andX(
|
|
|
+ $queryBuilder->expr()->eq('pid', $rootUid),
|
|
|
+ $queryBuilder->expr()->eq('manually_deleted', 0)
|
|
|
+ )
|
|
|
+ )
|
|
|
->execute();
|
|
|
|
|
|
$queryBuilder = $this->connectionPool->getQueryBuilderForTable('pages');
|
|
|
$queryBuilder
|
|
|
->update('pages')
|
|
|
->set('deleted', 0)
|
|
|
- ->where($queryBuilder->expr()->eq('uid', $rootUid))
|
|
|
+ ->where(
|
|
|
+ $queryBuilder->expr()->andX(
|
|
|
+ $queryBuilder->expr()->eq('uid', $rootUid),
|
|
|
+ $queryBuilder->expr()->eq('manually_deleted', 0)
|
|
|
+ )
|
|
|
+ )
|
|
|
->execute();
|
|
|
|
|
|
$queryBuilder = $this->connectionPool->getQueryBuilderForTable('sys_template');
|