From 65e0c9d7b69349b76636624574beecdd63a16aa4 Mon Sep 17 00:00:00 2001 From: Luke Towers Date: Mon, 5 Nov 2018 16:02:12 -0600 Subject: [PATCH] Add initial support for deleted paths --- modules/cms/classes/AutoDatasource.php | 21 ++++++++++++++++--- ...018_11_01_000001_Db_Cms_Theme_Contents.php | 1 + 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/modules/cms/classes/AutoDatasource.php b/modules/cms/classes/AutoDatasource.php index 58cde30a0..9c6da6a5d 100644 --- a/modules/cms/classes/AutoDatasource.php +++ b/modules/cms/classes/AutoDatasource.php @@ -83,10 +83,19 @@ class AutoDatasource extends Datasource implements DatasourceInterface // Default to the last datasource provided $datasourceIndex = count($this->datasources) - 1; + $isDeleted = false; + foreach ($this->pathCache as $i => $paths) { - if (in_array($path, $paths)) { + if (isset($paths[$path])) { $datasourceIndex = $i; - } + + // Set isDeleted to the inverse of the the path's existance flag + $isDeleted = !$paths[$path]; + } + } + + if ($isDeleted) { + throw new Exception("$path is deleted"); } return $this->datasources[$datasourceIndex]; @@ -115,7 +124,13 @@ class AutoDatasource extends Datasource implements DatasourceInterface */ public function selectOne($dirName, $fileName, $extension) { - return $this->getDatasourceForPath($this->makeFilePath($dirName, $fileName, $extension))->selectOne($dirName, $fileName, $extension); + try { + $result = $this->getDatasourceForPath($this->makeFilePath($dirName, $fileName, $extension))->selectOne($dirName, $fileName, $extension); + } catch (Exception $ex) { + $result = null; + } + + return $result; } /** diff --git a/modules/cms/database/migrations/2018_11_01_000001_Db_Cms_Theme_Contents.php b/modules/cms/database/migrations/2018_11_01_000001_Db_Cms_Theme_Contents.php index 1c46b0177..0ddb5631f 100644 --- a/modules/cms/database/migrations/2018_11_01_000001_Db_Cms_Theme_Contents.php +++ b/modules/cms/database/migrations/2018_11_01_000001_Db_Cms_Theme_Contents.php @@ -15,6 +15,7 @@ class DbCmsThemeContents extends Migration $table->longText('content'); $table->integer('file_size')->unsigned(); $table->dateTime('updated_at')->nullable(); + $table->dateTime('deleted_at')->nullable(); }); }