dbLayer : new format with static call to limit the number of connection to the database
authzgroups : update to support the new dbLayer format git-svn-id: https://svn.fournier38.fr/svn/ProgSVN/trunk@1950 bf3deb0d-5f1a-0410-827f-c0cc1f45334c
This commit is contained in:
@@ -54,7 +54,7 @@ class authzgroups
|
|||||||
if ($this->debug) echo "$req\n";
|
if ($this->debug) echo "$req\n";
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
$st = $this->dbObject->db->prepare ($req);
|
$st = $this->dbObject->prepare ($req);
|
||||||
}
|
}
|
||||||
catch (Exception $e)
|
catch (Exception $e)
|
||||||
{
|
{
|
||||||
|
|||||||
77
dblayer.php
77
dblayer.php
@@ -101,23 +101,27 @@ class dblayer extends PDO
|
|||||||
if (! isset ($driver[0]))
|
if (! isset ($driver[0]))
|
||||||
throw new Exception (_("No valid DSN provided"), 500);
|
throw new Exception (_("No valid DSN provided"), 500);
|
||||||
// Force specifics initialisations
|
// Force specifics initialisations
|
||||||
$oldInst = self::getInstance($dsn, $username);
|
/* $oldInst = self::getInstance($dsn, $username);
|
||||||
|
|
||||||
if ($oldInst !== null)
|
if ($oldInst !== null)
|
||||||
{
|
{
|
||||||
$this->db = $oldInst["db"];
|
$this = $oldInst["db"];
|
||||||
|
$this->setAttribute (PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
|
||||||
|
$this->exec("PRAGMA foreign_keys = ON");
|
||||||
$this->sep = $oldInst["sep"];
|
$this->sep = $oldInst["sep"];
|
||||||
$this->dsn = $oldInst["dsn"];
|
$this->dsn = $oldInst["dsn"];
|
||||||
|
echo "OLD\n";
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
echo "NEW\n";*/
|
||||||
switch ($driver[0])
|
switch ($driver[0])
|
||||||
{
|
{
|
||||||
case "sqlite":
|
case "sqlite":
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
$this->db = new PDO ($dsn, $username, $password, $driver_options);
|
parent::__construct ($dsn, $username, $password, $driver_options);
|
||||||
$this->db->setAttribute (PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
|
parent::setAttribute (PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
|
||||||
}
|
}
|
||||||
catch (Exception $e)
|
catch (Exception $e)
|
||||||
{
|
{
|
||||||
@@ -138,15 +142,15 @@ class dblayer extends PDO
|
|||||||
fileowner ($file) === posix_getuid ())
|
fileowner ($file) === posix_getuid ())
|
||||||
chmod ($file, 0666);
|
chmod ($file, 0666);
|
||||||
// Force ForeignKeys support (disabled by default)
|
// Force ForeignKeys support (disabled by default)
|
||||||
$this->db->exec("PRAGMA foreign_keys = ON");
|
$this->exec("PRAGMA foreign_keys = ON");
|
||||||
$this->sep = "`";
|
$this->sep = "`";
|
||||||
break;
|
break;
|
||||||
case "mysql":
|
case "mysql":
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
$driver_options[PDO::MYSQL_ATTR_FOUND_ROWS] = 1;
|
$driver_options[PDO::MYSQL_ATTR_FOUND_ROWS] = 1;
|
||||||
$this->db = new PDO ($dsn, $username, $password, $driver_options);
|
parent::__construct ($dsn, $username, $password, $driver_options);
|
||||||
$this->db->setAttribute (PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
|
parent::setAttribute (PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
|
||||||
}
|
}
|
||||||
catch (Exception $e)
|
catch (Exception $e)
|
||||||
{
|
{
|
||||||
@@ -154,14 +158,14 @@ class dblayer extends PDO
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Set the coding to UTF8
|
// Set the coding to UTF8
|
||||||
$this->db->exec("SET CHARACTER SET utf8");
|
$this->exec("SET CHARACTER SET utf8");
|
||||||
$this->sep = "`";
|
$this->sep = "`";
|
||||||
break;
|
break;
|
||||||
case "pgsql":
|
case "pgsql":
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
$this->db = new PDO ($dsn, $username, $password, $driver_options);
|
parent::__construct ($dsn, $username, $password, $driver_options);
|
||||||
$this->db->setAttribute (PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
|
parent::setAttribute (PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
|
||||||
}
|
}
|
||||||
catch (Exception $e)
|
catch (Exception $e)
|
||||||
{
|
{
|
||||||
@@ -169,12 +173,12 @@ class dblayer extends PDO
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Set the coding to UTF8
|
// Set the coding to UTF8
|
||||||
$this->db->exec("SET NAMES 'utf8'");
|
$this->exec("SET NAMES 'utf8'");
|
||||||
$this->sep = "\"";
|
$this->sep = "\"";
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
$this->dsn = $dsn;
|
$this->dsn = $dsn;
|
||||||
self::$instance["$dsn-$username"]["db"] = $this->db;
|
self::$instance["$dsn-$username"]["db"] = $this;
|
||||||
self::$instance["$dsn-$username"]["dsn"] = $this->dsn;
|
self::$instance["$dsn-$username"]["dsn"] = $this->dsn;
|
||||||
self::$instance["$dsn-$username"]["sep"] = $this->sep;
|
self::$instance["$dsn-$username"]["sep"] = $this->sep;
|
||||||
}
|
}
|
||||||
@@ -193,7 +197,7 @@ class dblayer extends PDO
|
|||||||
/** Return the connected database name from DSN used to connect */
|
/** Return the connected database name from DSN used to connect */
|
||||||
public function databasename ()
|
public function databasename ()
|
||||||
{
|
{
|
||||||
if ($this->db === null)
|
if ($this === null)
|
||||||
throw new Exception (dgettext("domframework", "Database not connected"),
|
throw new Exception (dgettext("domframework", "Database not connected"),
|
||||||
500);
|
500);
|
||||||
$vals = explode (";", substr (strstr ($this->dsn, ":"), 1));
|
$vals = explode (";", substr (strstr ($this->dsn, ":"), 1));
|
||||||
@@ -211,14 +215,14 @@ class dblayer extends PDO
|
|||||||
/** Return all the tables available in the database */
|
/** Return all the tables available in the database */
|
||||||
public function listTables ()
|
public function listTables ()
|
||||||
{
|
{
|
||||||
if ($this->db === null)
|
if ($this === null)
|
||||||
throw new Exception (dgettext("domframework", "Database not connected"),
|
throw new Exception (dgettext("domframework", "Database not connected"),
|
||||||
500);
|
500);
|
||||||
switch ($this->db->getAttribute(PDO::ATTR_DRIVER_NAME))
|
switch ($this->getAttribute(PDO::ATTR_DRIVER_NAME))
|
||||||
{
|
{
|
||||||
case "sqlite":
|
case "sqlite":
|
||||||
$req = "SELECT name FROM sqlite_master WHERE type='table'";
|
$req = "SELECT name FROM sqlite_master WHERE type='table'";
|
||||||
$st = $this->db->prepare ($req);
|
$st = $this->prepare ($req);
|
||||||
$st->execute ();
|
$st->execute ();
|
||||||
$res = array ();
|
$res = array ();
|
||||||
while ($d = $st->fetch (PDO::FETCH_ASSOC))
|
while ($d = $st->fetch (PDO::FETCH_ASSOC))
|
||||||
@@ -228,7 +232,7 @@ class dblayer extends PDO
|
|||||||
$req = "SELECT TABLE_NAME
|
$req = "SELECT TABLE_NAME
|
||||||
FROM information_schema.tables
|
FROM information_schema.tables
|
||||||
WHERE TABLE_SCHEMA='".$this->databasename()."'";
|
WHERE TABLE_SCHEMA='".$this->databasename()."'";
|
||||||
$st = $this->db->prepare ($req);
|
$st = $this->prepare ($req);
|
||||||
$st->execute ();
|
$st->execute ();
|
||||||
$res = array ();
|
$res = array ();
|
||||||
while ($d = $st->fetch (PDO::FETCH_ASSOC))
|
while ($d = $st->fetch (PDO::FETCH_ASSOC))
|
||||||
@@ -238,7 +242,7 @@ class dblayer extends PDO
|
|||||||
$req = "SELECT *
|
$req = "SELECT *
|
||||||
FROM pg_tables
|
FROM pg_tables
|
||||||
WHERE schemaname = 'public'";
|
WHERE schemaname = 'public'";
|
||||||
$st = $this->db->prepare ($req);
|
$st = $this->prepare ($req);
|
||||||
$st->execute ();
|
$st->execute ();
|
||||||
$res = array ();
|
$res = array ();
|
||||||
while ($d = $st->fetch (PDO::FETCH_ASSOC))
|
while ($d = $st->fetch (PDO::FETCH_ASSOC))
|
||||||
@@ -492,7 +496,7 @@ class dblayer extends PDO
|
|||||||
"FROM $this->sep$this->tableprefix$table$this->sep ".
|
"FROM $this->sep$this->tableprefix$table$this->sep ".
|
||||||
"WHERE $this->sep$column$this->sep=:".md5 ($column);
|
"WHERE $this->sep$column$this->sep=:".md5 ($column);
|
||||||
if ($this->debug) echo "DEBUG : $req\n";
|
if ($this->debug) echo "DEBUG : $req\n";
|
||||||
$st = $this->db->prepare ($req);
|
$st = $this->prepare ($req);
|
||||||
$val = $datas[$foreign];
|
$val = $datas[$foreign];
|
||||||
$key = $column;
|
$key = $column;
|
||||||
if ($this->debug) echo "DEBUG BIND : ".$this->fields[$foreign][0]."\n";
|
if ($this->debug) echo "DEBUG BIND : ".$this->fields[$foreign][0]."\n";
|
||||||
@@ -541,7 +545,7 @@ class dblayer extends PDO
|
|||||||
public function insert ($datas)
|
public function insert ($datas)
|
||||||
{
|
{
|
||||||
if ($this->debug) echo "== Entering insert\n";
|
if ($this->debug) echo "== Entering insert\n";
|
||||||
if ($this->db === null)
|
if ($this === null)
|
||||||
throw new Exception (dgettext("domframework", "Database not connected"),
|
throw new Exception (dgettext("domframework", "Database not connected"),
|
||||||
500);
|
500);
|
||||||
if ($this->unique === null)
|
if ($this->unique === null)
|
||||||
@@ -584,7 +588,7 @@ class dblayer extends PDO
|
|||||||
$req .= " VALUES ";
|
$req .= " VALUES ";
|
||||||
$req .= "(:".implode (",:", $binds).")";
|
$req .= "(:".implode (",:", $binds).")";
|
||||||
if ($this->debug) echo "DEBUG : $req\n";
|
if ($this->debug) echo "DEBUG : $req\n";
|
||||||
$st = $this->db->prepare ($req);
|
$st = $this->prepare ($req);
|
||||||
foreach ($datasOK as $key=>$val)
|
foreach ($datasOK as $key=>$val)
|
||||||
{
|
{
|
||||||
if ($this->debug) echo "DEBUG BIND : $key(".md5 ($key).")->".
|
if ($this->debug) echo "DEBUG BIND : $key(".md5 ($key).")->".
|
||||||
@@ -612,7 +616,7 @@ class dblayer extends PDO
|
|||||||
echo "dblayer execute exception : ".$e->getMessage()."\n";
|
echo "dblayer execute exception : ".$e->getMessage()."\n";
|
||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
return $this->db->lastInsertId();
|
return $this->lastInsertId();
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Read the table content based on a select filter, ordered by order
|
/** Read the table content based on a select filter, ordered by order
|
||||||
@@ -631,7 +635,7 @@ class dblayer extends PDO
|
|||||||
$whereOr=false)
|
$whereOr=false)
|
||||||
{
|
{
|
||||||
if ($this->debug) echo "== Entering read\n";
|
if ($this->debug) echo "== Entering read\n";
|
||||||
if ($this->db === null)
|
if ($this === null)
|
||||||
throw new Exception (dgettext("domframework", "Database not connected"),
|
throw new Exception (dgettext("domframework", "Database not connected"),
|
||||||
500);
|
500);
|
||||||
if ($select !== null && !is_array ($select))
|
if ($select !== null && !is_array ($select))
|
||||||
@@ -708,7 +712,7 @@ class dblayer extends PDO
|
|||||||
if ($this->debug) echo "DEBUG : $req\n";
|
if ($this->debug) echo "DEBUG : $req\n";
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
$st = $this->db->prepare ($req);
|
$st = $this->prepare ($req);
|
||||||
}
|
}
|
||||||
catch (Exception $e)
|
catch (Exception $e)
|
||||||
{
|
{
|
||||||
@@ -747,7 +751,7 @@ class dblayer extends PDO
|
|||||||
public function update ($updatekey, $datas)
|
public function update ($updatekey, $datas)
|
||||||
{
|
{
|
||||||
if ($this->debug) echo "== Entering update\n";
|
if ($this->debug) echo "== Entering update\n";
|
||||||
if ($this->db === null)
|
if ($this === null)
|
||||||
throw new Exception (dgettext("domframework", "Database not connected"),
|
throw new Exception (dgettext("domframework", "Database not connected"),
|
||||||
500);
|
500);
|
||||||
if (count ($this->fields) === 0)
|
if (count ($this->fields) === 0)
|
||||||
@@ -780,7 +784,7 @@ class dblayer extends PDO
|
|||||||
$req .= " WHERE $this->sep$this->primary$this->sep=:".
|
$req .= " WHERE $this->sep$this->primary$this->sep=:".
|
||||||
md5 ("PRIMARY".$this->primary);
|
md5 ("PRIMARY".$this->primary);
|
||||||
if ($this->debug) echo "DEBUG : $req\n";
|
if ($this->debug) echo "DEBUG : $req\n";
|
||||||
$st = $this->db->prepare ($req);
|
$st = $this->prepare ($req);
|
||||||
// Add the primary key to field list temporaly. It will permit to update the
|
// Add the primary key to field list temporaly. It will permit to update the
|
||||||
// primary key
|
// primary key
|
||||||
$fields = $this->fields;
|
$fields = $this->fields;
|
||||||
@@ -832,11 +836,11 @@ class dblayer extends PDO
|
|||||||
public function delete ($deletekey)
|
public function delete ($deletekey)
|
||||||
{
|
{
|
||||||
if ($this->debug) echo "== Entering delete\n";
|
if ($this->debug) echo "== Entering delete\n";
|
||||||
if ($this->db === null)
|
if ($this === null)
|
||||||
throw new Exception (dgettext("domframework", "Database not connected"));
|
throw new Exception (dgettext("domframework", "Database not connected"));
|
||||||
$req = "DELETE FROM $this->sep$this->tableprefix$this->table$this->sep ";
|
$req = "DELETE FROM $this->sep$this->tableprefix$this->table$this->sep ";
|
||||||
$req .= "WHERE $this->primary = :primary";
|
$req .= "WHERE $this->primary = :primary";
|
||||||
$st = $this->db->prepare ($req);
|
$st = $this->prepare ($req);
|
||||||
if ($this->debug) echo "DEBUG : $req\n";
|
if ($this->debug) echo "DEBUG : $req\n";
|
||||||
if ($this->debug) echo "DEBUG BIND : primary->".
|
if ($this->debug) echo "DEBUG BIND : primary->".
|
||||||
var_export ($deletekey, TRUE)."\n";
|
var_export ($deletekey, TRUE)."\n";
|
||||||
@@ -869,12 +873,12 @@ class dblayer extends PDO
|
|||||||
public function dropTable ()
|
public function dropTable ()
|
||||||
{
|
{
|
||||||
if ($this->debug) echo "== Entering dropTables\n";
|
if ($this->debug) echo "== Entering dropTables\n";
|
||||||
if ($this->db === null)
|
if ($this === null)
|
||||||
throw new Exception (dgettext("domframework", "Database not connected"));
|
throw new Exception (dgettext("domframework", "Database not connected"));
|
||||||
$sql = "DROP TABLE $this->sep$this->tableprefix$this->table$this->sep";
|
$sql = "DROP TABLE $this->sep$this->tableprefix$this->table$this->sep";
|
||||||
if ($this->debug)
|
if ($this->debug)
|
||||||
echo "$sql\n";
|
echo "$sql\n";
|
||||||
return $this->db->exec($sql);
|
return $this->exec($sql);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Create the table defined by the differents fields.
|
/** Create the table defined by the differents fields.
|
||||||
@@ -896,12 +900,12 @@ class dblayer extends PDO
|
|||||||
public function createTable ()
|
public function createTable ()
|
||||||
{
|
{
|
||||||
if ($this->debug) echo "== Entering createTable\n";
|
if ($this->debug) echo "== Entering createTable\n";
|
||||||
if ($this->db === null)
|
if ($this === null)
|
||||||
throw new Exception (dgettext("domframework", "Database not connected"),
|
throw new Exception (dgettext("domframework", "Database not connected"),
|
||||||
500);
|
500);
|
||||||
if (count ($this->fields) === 0)
|
if (count ($this->fields) === 0)
|
||||||
throw new Exception (dgettext("domframework", "No Field defined"), 500);
|
throw new Exception (dgettext("domframework", "No Field defined"), 500);
|
||||||
switch ($this->db->getAttribute(PDO::ATTR_DRIVER_NAME))
|
switch ($this->getAttribute(PDO::ATTR_DRIVER_NAME))
|
||||||
{
|
{
|
||||||
case "sqlite":
|
case "sqlite":
|
||||||
$sql = "CREATE TABLE $this->sep$this->tableprefix$this->table$this->sep ".
|
$sql = "CREATE TABLE $this->sep$this->tableprefix$this->table$this->sep ".
|
||||||
@@ -1191,9 +1195,14 @@ class dblayer extends PDO
|
|||||||
"PDO Engine not supported in dbLayer"), 500);
|
"PDO Engine not supported in dbLayer"), 500);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$this->debug = true;
|
||||||
if ($this->debug)
|
if ($this->debug)
|
||||||
echo "$sql\n";
|
echo "$sql\n";
|
||||||
return $this->db->exec($sql);
|
$rc=$this->exec($sql);
|
||||||
|
var_dump ($rc);
|
||||||
|
//print_r($this->errorInfo());
|
||||||
|
return $rc;
|
||||||
|
return $this->exec($sql);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** This function permit to send a SQL request to the database to do a SELECT
|
/** This function permit to send a SQL request to the database to do a SELECT
|
||||||
@@ -1201,7 +1210,7 @@ class dblayer extends PDO
|
|||||||
public function directRead ($sql)
|
public function directRead ($sql)
|
||||||
{
|
{
|
||||||
if ($this->debug) echo "== Entering directRead\n";
|
if ($this->debug) echo "== Entering directRead\n";
|
||||||
$st = $this->db->prepare ($sql);
|
$st = $this->prepare ($sql);
|
||||||
$st->execute ();
|
$st->execute ();
|
||||||
$res = array ();
|
$res = array ();
|
||||||
while ($d = $st->fetch (PDO::FETCH_ASSOC))
|
while ($d = $st->fetch (PDO::FETCH_ASSOC))
|
||||||
|
|||||||
Reference in New Issue
Block a user