diff --git a/lib/Alchemy/Phrasea/Databox/ArrayCacheDataboxRepository.php b/lib/Alchemy/Phrasea/Databox/ArrayCacheDataboxRepository.php index 15440ea51b..f4c87c2ce7 100644 --- a/lib/Alchemy/Phrasea/Databox/ArrayCacheDataboxRepository.php +++ b/lib/Alchemy/Phrasea/Databox/ArrayCacheDataboxRepository.php @@ -62,6 +62,16 @@ class ArrayCacheDataboxRepository implements DataboxRepository return $this->repository->save($databox); } + /** + * @param \databox $databox + */ + public function delete(\databox $databox) + { + $this->clear(); + + return $this->repository->delete($databox); + } + /** * @param $host * @param $port diff --git a/lib/Alchemy/Phrasea/Databox/CachingDataboxRepositoryDecorator.php b/lib/Alchemy/Phrasea/Databox/CachingDataboxRepositoryDecorator.php index 1a7d40dca3..b056b4b659 100644 --- a/lib/Alchemy/Phrasea/Databox/CachingDataboxRepositoryDecorator.php +++ b/lib/Alchemy/Phrasea/Databox/CachingDataboxRepositoryDecorator.php @@ -69,6 +69,13 @@ final class CachingDataboxRepositoryDecorator implements DataboxRepository return $this->repository->save($databox); } + public function delete(\databox $databox) + { + $this->clearCache(); + + return $this->repository->delete($databox); + } + /** * @param $host * @param $port diff --git a/lib/Alchemy/Phrasea/Databox/DataboxRepository.php b/lib/Alchemy/Phrasea/Databox/DataboxRepository.php index e784809e95..d415518165 100644 --- a/lib/Alchemy/Phrasea/Databox/DataboxRepository.php +++ b/lib/Alchemy/Phrasea/Databox/DataboxRepository.php @@ -27,6 +27,11 @@ interface DataboxRepository */ public function save(\databox $databox); + /** + * @param \databox $databox + */ + public function delete(\databox $databox); + /** * @param $host * @param $port diff --git a/lib/Alchemy/Phrasea/Databox/DbalDataboxRepository.php b/lib/Alchemy/Phrasea/Databox/DbalDataboxRepository.php index 1752df02ed..44c99b253f 100644 --- a/lib/Alchemy/Phrasea/Databox/DbalDataboxRepository.php +++ b/lib/Alchemy/Phrasea/Databox/DbalDataboxRepository.php @@ -56,6 +56,11 @@ final class DbalDataboxRepository implements DataboxRepository return true; } + public function delete(\databox $databox) + { + return true; + } + /** * @param int $id * @return false|array diff --git a/lib/classes/databox.php b/lib/classes/databox.php index c0efdce77b..6061a78f75 100644 --- a/lib/classes/databox.php +++ b/lib/classes/databox.php @@ -935,6 +935,8 @@ class databox extends base implements ThumbnailedElement $this->get_appbox()->delete_data_from_cache(appbox::CACHE_LIST_BASES); + $this->databoxRepository->delete($this); + $this->app['dispatcher']->dispatch( DataboxEvents::DELETED, new DeletedEvent(