diff --git a/core/modules/mysql/mysql.services.yml b/core/modules/mysql/mysql.services.yml deleted file mode 100644 index c20d7f1833c4856ec2e459bd09342ccc7b1ba8e7..0000000000000000000000000000000000000000 --- a/core/modules/mysql/mysql.services.yml +++ /dev/null @@ -1,4 +0,0 @@ -services: - mysql.views.cast_sql: - class: Drupal\mysql\Plugin\views\query\MysqlCastSql - public: false diff --git a/core/modules/mysql/src/MysqlServiceProvider.php b/core/modules/mysql/src/MysqlServiceProvider.php new file mode 100644 index 0000000000000000000000000000000000000000..8c1578e25827789a8188c9f66933c227e9cb8175 --- /dev/null +++ b/core/modules/mysql/src/MysqlServiceProvider.php @@ -0,0 +1,25 @@ +<?php + +namespace Drupal\mysql; + +use Drupal\Core\DependencyInjection\ContainerBuilder; +use Drupal\Core\DependencyInjection\ServiceProviderBase; +use Drupal\mysql\Plugin\views\query\MysqlCastSql; + +/** + * Registers the 'mysql.views.cast_sql' service when views is installed. + */ +class MysqlServiceProvider extends ServiceProviderBase { + + /** + * {@inheritdoc} + */ + public function register(ContainerBuilder $container): void { + if (isset($container->getParameter('container.modules')['views'])) { + $container + ->register('mysql.views.cast_sql', MysqlCastSql::class) + ->setPublic(FALSE); + } + } + +} diff --git a/core/modules/mysql/tests/src/Kernel/mysql/ViewsTest.php b/core/modules/mysql/tests/src/Kernel/mysql/ViewsTest.php new file mode 100644 index 0000000000000000000000000000000000000000..d2914692ce78550d29c43f8f10cd1b33d91c24c8 --- /dev/null +++ b/core/modules/mysql/tests/src/Kernel/mysql/ViewsTest.php @@ -0,0 +1,36 @@ +<?php + +declare(strict_types=1); + +namespace Drupal\Tests\mysql\Kernel\mysql; + +use Drupal\Core\DependencyInjection\ContainerBuilder; +use Drupal\KernelTests\Core\Database\DriverSpecificDatabaseTestBase; +use Drupal\mysql\Plugin\views\query\MysqlCastSql; + +/** + * Tests views service. + * + * @group Database + */ +class ViewsTest extends DriverSpecificDatabaseTestBase { + + /** + * Tests views service. + */ + public function testViewsService(): void { + $this->assertFalse($this->container->has('views.cast_sql')); + $this->enableModules(['views']); + $this->assertInstanceOf(MysqlCastSql::class, $this->container->get('views.cast_sql')); + $this->assertFalse($this->container->has('mysql.views.cast_sql')); + } + + /** + * {@inheritdoc} + */ + public function register(ContainerBuilder $container): void { + parent::register($container); + $this->assertSame($container->hasDefinition('mysql.views.cast_sql'), isset($container->getParameter('container.modules')['views'])); + } + +} diff --git a/core/modules/views/views.services.yml b/core/modules/views/views.services.yml index eb07ae2497604582d9932b1e2b298edef362cd12..2a3aa1a16fad951b255bdc2e5aa25e8f53cc2e66 100644 --- a/core/modules/views/views.services.yml +++ b/core/modules/views/views.services.yml @@ -106,3 +106,4 @@ services: class: Drupal\views\Plugin\views\query\CastSql tags: - { name: backend_overridable } + Drupal\views\Plugin\views\query\CastSqlInterface: '@views.cast_sql'