aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/phpbb/db/extractor/factory.php
diff options
context:
space:
mode:
authorOliver Schramm <oliver.schramm97@gmail.com>2017-10-05 14:54:47 +0200
committerOliver Schramm <oliver.schramm97@gmail.com>2017-10-05 14:54:47 +0200
commit5514b1069968d451adb7eaf89278a6e1e5dc20df (patch)
tree245b21642c134c4509e46fab60d130065e123624 /phpBB/phpbb/db/extractor/factory.php
parent93621aa1844ab48d9bae068d9872d2c49ae86de4 (diff)
parentca5678cc1c2a1f723d39127e0c066eba6c9a3336 (diff)
downloadforums-5514b1069968d451adb7eaf89278a6e1e5dc20df.tar
forums-5514b1069968d451adb7eaf89278a6e1e5dc20df.tar.gz
forums-5514b1069968d451adb7eaf89278a6e1e5dc20df.tar.bz2
forums-5514b1069968d451adb7eaf89278a6e1e5dc20df.tar.xz
forums-5514b1069968d451adb7eaf89278a6e1e5dc20df.zip
Merge pull request #4960 from rxu/ticket/15367
[ticket/15367] Escape special characters in Sphinx search backend
Diffstat (limited to 'phpBB/phpbb/db/extractor/factory.php')
-rw-r--r--phpBB/phpbb/db/extractor/factory.php75
1 files changed, 75 insertions, 0 deletions
diff --git a/phpBB/phpbb/db/extractor/factory.php b/phpBB/phpbb/db/extractor/factory.php
new file mode 100644
index 0000000000..f27aae720f
--- /dev/null
+++ b/phpBB/phpbb/db/extractor/factory.php
@@ -0,0 +1,75 @@
+<?php
+/**
+*
+* This file is part of the phpBB Forum Software package.
+*
+* @copyright (c) phpBB Limited <https://www.phpbb.com>
+* @license GNU General Public License, version 2 (GPL-2.0)
+*
+* For full copyright and license information, please see
+* the docs/CREDITS.txt file.
+*
+*/
+
+namespace phpbb\db\extractor;
+
+/**
+* A factory which serves the suitable extractor instance for the given dbal
+*/
+class factory
+{
+ /**
+ * @var \phpbb\db\driver\driver_interface
+ */
+ protected $db;
+
+ /**
+ * @var \Symfony\Component\DependencyInjection\ContainerInterface
+ */
+ protected $container;
+
+ /**
+ * Extractor factory constructor
+ *
+ * @param \phpbb\db\driver\driver_interface $db
+ * @param \Symfony\Component\DependencyInjection\ContainerInterface $container
+ */
+ public function __construct(\phpbb\db\driver\driver_interface $db, \Symfony\Component\DependencyInjection\ContainerInterface $container)
+ {
+ $this->db = $db;
+ $this->container = $container;
+ }
+
+ /**
+ * DB extractor factory getter
+ *
+ * @return \phpbb\db\extractor\extractor_interface an appropriate instance of the database extractor for the used database driver
+ * @throws \InvalidArgumentException when the database driver is unknown
+ */
+ public function get()
+ {
+ // Return the appropriate DB extractor
+ if ($this->db instanceof \phpbb\db\driver\mssql_base)
+ {
+ return $this->container->get('dbal.extractor.extractors.mssql_extractor');
+ }
+ else if ($this->db instanceof \phpbb\db\driver\mysql_base)
+ {
+ return $this->container->get('dbal.extractor.extractors.mysql_extractor');
+ }
+ else if ($this->db instanceof \phpbb\db\driver\oracle)
+ {
+ return $this->container->get('dbal.extractor.extractors.oracle_extractor');
+ }
+ else if ($this->db instanceof \phpbb\db\driver\postgres)
+ {
+ return $this->container->get('dbal.extractor.extractors.postgres_extractor');
+ }
+ else if ($this->db instanceof \phpbb\db\driver\sqlite3)
+ {
+ return $this->container->get('dbal.extractor.extractors.sqlite3_extractor');
+ }
+
+ throw new \InvalidArgumentException('Invalid database driver given');
+ }
+}