2025-02-23 20:52:25 +01:00

47 lines
1.3 KiB
PHP

<?php
namespace XFramework;
/**
* Roundcube Plus Framework plugin.
*
* This class retrieves request data sent by Angular ajax requests. Angular json-encodes the parameters and php doesn't
* decode them properly into $_POST, so we get the data and decode it manually.
*
* Copyright 2016, Tecorama LLC.
*
* @license Commercial. See the LICENSE file for details.
*/
require_once "Singleton.php";
require_once("DatabaseMysql.php");
require_once("DatabaseSqlite.php");
require_once("DatabasePostgres.php");
class Database
{
use Singleton;
static private $provider;
/**
* @throws \Exception
*/
public static function instance($provider = null)
{
if (static::$instance && (!$provider || $provider == static::$provider)) {
return static::$instance;
}
static::$provider = $provider ?? xrc()->get_dbh()->db_provider;
switch (static::$provider) {
case "mysql":
return static::$instance = new DatabaseMysql();
case "sqlite":
return static::$instance = new DatabaseSqlite();
case "postgres":
return static::$instance = new DatabasePostgres();
default:
throw new \Exception("Error: This plugin does not support database provider $provider.");
}
}
}