Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/matomo-org/matomo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'core/Db.php')
-rw-r--r--core/Db.php129
1 files changed, 129 insertions, 0 deletions
diff --git a/core/Db.php b/core/Db.php
new file mode 100644
index 0000000000..a8efb337a8
--- /dev/null
+++ b/core/Db.php
@@ -0,0 +1,129 @@
+<?php
+/**
+ * Piwik - Open source web analytics
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html Gpl v3 or later
+ * @version $Id$
+ *
+ * @category Piwik
+ * @package Piwik
+ */
+
+/**
+ * @package Piwik
+ */
+class Piwik_Db
+{
+ /**
+ * Get adapter class name
+ *
+ * @param string $adapterName
+ * @return string
+ */
+ private static function getAdapterClassName($adapterName)
+ {
+ return 'Piwik_Db_' . str_replace(' ', '_', ucwords(str_replace('_', ' ', strtolower($adapterName))));
+ }
+
+ /**
+ * Create adapter
+ *
+ * @param string $adapterName
+ * @oaran array $config
+ * @return mixed (Piwik_Db_Mysqli, Piwik_Db_Pdo_Mysql, etc)
+ */
+ public static function factory($adapterName, $config)
+ {
+ $className = self::getAdapterClassName($adapterName);
+ $adapter = new $className($config);
+ return $adapter;
+ }
+
+ /**
+ * Get default port for named adapter
+ *
+ * @param string $adapterName
+ * @return int
+ */
+ public static function getDefaultPortForAdapter($adapterName)
+ {
+ $className = self::getAdapterClassName($adapterName);
+ return call_user_func(array($className, 'getDefaultPort'));
+ }
+
+ /**
+ * Get list of adapters
+ *
+ * @return array
+ */
+ public static function getAdapters()
+ {
+ $path = PIWIK_INCLUDE_PATH . '/core/Db';
+ $pathLength = strlen($path) + 1;
+ $adapters = Piwik::globr($path, '*.php');
+ $adapterNames = array();
+ foreach($adapters as $adapter)
+ {
+ $adapterName = str_replace('/', '_', substr($adapter, $pathLength, -strlen('.php')));
+ $className = 'Piwik_Db_'.$adapterName;
+ if(call_user_func(array($className, 'isEnabled')))
+ {
+ $adapterNames[strtoupper($adapterName)] = call_user_func(array($className, 'getDefaultPort'));
+ }
+ }
+ return $adapterNames;
+ }
+}
+
+interface Piwik_Db_iAdapter
+{
+ /**
+ * Reset the configuration variables in this adapter.
+ */
+ public function resetConfig();
+
+ /**
+ * Return default port.
+ *
+ * @return int
+ */
+ public static function getDefaultPort();
+
+ /**
+ * Check database server version
+ *
+ * @throws Exception if database version is less than required version
+ */
+ public function checkServerVersion();
+
+ /**
+ * Returns true if this adapter's required extensions are enabled
+ *
+ * @return bool
+ */
+ public static function isEnabled();
+
+ /**
+ * Returns true if this adapter supports blobs as fields
+ *
+ * @return bool
+ */
+ public function hasBlobDataType();
+
+ /**
+ * Test error number
+ *
+ * @param Exception $e
+ * @param string $errno
+ * @return bool
+ */
+ public function isErrNo($e, $errno);
+
+ /**
+ * Is the connection character set equal to utf8?
+ *
+ * @return bool
+ */
+ public function isConnectionUTF8();
+}