]> git.mxchange.org Git - friendica.git/commitdiff
Add legacy backend storage functionality
authornupplaPhil <admin@philipp.info>
Fri, 17 Jan 2020 22:25:11 +0000 (23:25 +0100)
committernupplaPhil <admin@philipp.info>
Fri, 17 Jan 2020 22:55:19 +0000 (23:55 +0100)
src/Core/StorageManager.php
tests/src/Core/StorageManagerTest.php

index d1a943a227646737f29dab82fd36186a1f637988..8fd0d1a93face3e1f4e985930f1181c0af7215ca 100644 (file)
@@ -88,6 +88,9 @@ class StorageManager
         */
        public function getByName(string $name = null, $onlyUserBackend = false)
        {
+               // @todo 2020.09 Remove this call after 2 releases
+               $name = $this->checkLegacyBackend($name);
+
                // If there's no cached instance create a new instance
                if (!isset($this->backendInstances[$name])) {
                        // If the current name isn't a valid backend (or the SystemResource instance) create it
@@ -140,6 +143,25 @@ class StorageManager
                       (!$onlyUserBackend && $name === Storage\SystemResource::getName());
        }
 
+       /**
+        * Check for legacy backend storage class names (= full model class name)
+        *
+        * @todo 2020.09 Remove this function after 2 releases, because there shouldn't be any legacy backend classes left
+        *
+        * @param string|null $name a potential, legacy storage name ("Friendica\Model\Storage\...")
+        *
+        * @return string|null The current storage name
+        */
+       private function checkLegacyBackend(string $name = null)
+       {
+               if (stristr($name, 'Friendica\Model\Storage\\')) {
+                       $this->logger->notice('Using deprecated storage class value', ['name' => $name]);
+                       return substr($name, 24);
+               }
+
+               return $name;
+       }
+
        /**
         * @brief Set current storage backend class
         *
index 084caa68ab09f2550526b69cc7d206c1d2ca1fbe..b7e5b8c3ddbd0b6ebcc75319dbecd4df7c3dcb00 100644 (file)
@@ -109,10 +109,42 @@ class StorageManagerTest extends DatabaseTest
                ];
        }
 
+       /**
+        * Data array for legacy backends
+        *
+        * @todo 2020.09 After 2 releases, remove the legacy functionality and these data array with it
+        *
+        * @return array
+        */
+       public function dataLegacyBackends()
+       {
+               return [
+                       'legacyDatabase'          => [
+                               'name'        => 'Friendica\Model\Storage\Database',
+                               'assert'      => Storage\Database::class,
+                               'assertName'  => Storage\Database::NAME,
+                               'userBackend' => true,
+                       ],
+                       'legacyFilesystem'       => [
+                               'name'        => 'Friendica\Model\Storage\Filesystem',
+                               'assert'      => Storage\Filesystem::class,
+                               'assertName'  => Storage\Filesystem::NAME,
+                               'userBackend' => true,
+                       ],
+                       'legacySystemResource'     => [
+                               'name'        => 'Friendica\Model\Storage\SystemResource',
+                               'assert'      => Storage\SystemResource::class,
+                               'assertName'  => Storage\SystemResource::NAME,
+                               'userBackend' => false,
+                       ],
+               ];
+       }
+
        /**
         * Test the getByName() method
         *
         * @dataProvider dataStorages
+        * @dataProvider dataLegacyBackends
         */
        public function testGetByName($name, $assert, $assertName, $userBackend)
        {
@@ -123,7 +155,6 @@ class StorageManagerTest extends DatabaseTest
                if (!empty($assert)) {
                        $this->assertInstanceOf(Storage\IStorage::class, $storage);
                        $this->assertInstanceOf($assert, $storage);
-                       $this->assertEquals($name, $storage::getName());
                } else {
                        $this->assertNull($storage);
                }
@@ -178,6 +209,7 @@ class StorageManagerTest extends DatabaseTest
         * Test the method getBackend() with a pre-configured backend
         *
         * @dataProvider dataStorages
+        * @dataProvider dataLegacyBackends
         */
        public function testPresetBackend($name, $assert, $assertName, $userBackend)
        {