BUG : dblayer : allow to prepare the SQL with fields containing spaces
BUG : dblayer : add more unit tests git-svn-id: https://svn.fournier38.fr/svn/ProgSVN/trunk@1809 bf3deb0d-5f1a-0410-827f-c0cc1f45334c
This commit is contained in:
@@ -16,5 +16,113 @@ class test_dblayer extends PHPUnit_Framework_TestCase
|
|||||||
$dbconfig["tableprefix"] = "";
|
$dbconfig["tableprefix"] = "";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Test with column name 'group', 'object', 'where', 'with space'
|
||||||
|
// Test with table name 'group', 'object', 'where', 'with space'
|
||||||
|
// For the 3 DB engines
|
||||||
|
|
||||||
|
public function test_createTable ()
|
||||||
|
{
|
||||||
|
// Create a table named group
|
||||||
|
$configuration = new configuration ();
|
||||||
|
$dbconfig = $configuration->get ("database");
|
||||||
|
if (! isset ($dbconfig["tableprefix"]))
|
||||||
|
$dbconfig["tableprefix"] = "";
|
||||||
|
$db = new dblayer ($dbconfig["dsn"], $dbconfig["username"],
|
||||||
|
$dbconfig["password"], $dbconfig["driver_options"]);
|
||||||
|
$db->table = "grouped";
|
||||||
|
$db->fields = array ("group"=>array ("varchar", "255", "not null"),
|
||||||
|
"object"=>array ("varchar", "255", "not null"),
|
||||||
|
"where"=>array ("varchar", "255", "not null"),
|
||||||
|
"with space"=>array ("varchar", "255", "not null"));
|
||||||
|
$res = $db->createTable ();
|
||||||
|
$this->assertSame (0, $res);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function test_insert ()
|
||||||
|
{
|
||||||
|
$configuration = new configuration ();
|
||||||
|
$dbconfig = $configuration->get ("database");
|
||||||
|
if (! isset ($dbconfig["tableprefix"]))
|
||||||
|
$dbconfig["tableprefix"] = "";
|
||||||
|
$db = new dblayer ($dbconfig["dsn"], $dbconfig["username"],
|
||||||
|
$dbconfig["password"], $dbconfig["driver_options"]);
|
||||||
|
$db->table = "grouped";
|
||||||
|
$db->fields = array ("group"=>array ("varchar", "255", "not null"),
|
||||||
|
"object"=>array ("varchar", "255", "not null"),
|
||||||
|
"where"=>array ("varchar", "255", "not null"),
|
||||||
|
"with space"=>array ("varchar", "255", "not null"));
|
||||||
|
$db->unique = array ();
|
||||||
|
$res = $db->insert (array ("group"=>"gr ou\"p",
|
||||||
|
"object"=>"/éobj%",
|
||||||
|
"where"=>"\$'\"",
|
||||||
|
"with space"=>"with space"));
|
||||||
|
$this->assertSame ("1", $res);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function test_read1 ()
|
||||||
|
{
|
||||||
|
$configuration = new configuration ();
|
||||||
|
$dbconfig = $configuration->get ("database");
|
||||||
|
if (! isset ($dbconfig["tableprefix"]))
|
||||||
|
$dbconfig["tableprefix"] = "";
|
||||||
|
$db = new dblayer ($dbconfig["dsn"], $dbconfig["username"],
|
||||||
|
$dbconfig["password"], $dbconfig["driver_options"]);
|
||||||
|
$db->table = "grouped";
|
||||||
|
$db->fields = array ("group"=>array ("varchar", "255", "not null"),
|
||||||
|
"object"=>array ("varchar", "255", "not null"),
|
||||||
|
"where"=>array ("varchar", "255", "not null"),
|
||||||
|
"with space"=>array ("varchar", "255", "not null"));
|
||||||
|
$db->unique = array ();
|
||||||
|
$res = $db->read (array (array ("group", "gr ou\"p"),
|
||||||
|
array ("object","/éobj%"),
|
||||||
|
array ("where","\$'\""),
|
||||||
|
array ("with space","with space")));
|
||||||
|
$this->assertSame (array (0=>array ("group"=>"gr ou\"p",
|
||||||
|
"object"=>"/éobj%",
|
||||||
|
"where"=>"\$'\"",
|
||||||
|
"with space"=>"with space")), $res);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function test_update1 ()
|
||||||
|
{
|
||||||
|
$configuration = new configuration ();
|
||||||
|
$dbconfig = $configuration->get ("database");
|
||||||
|
if (! isset ($dbconfig["tableprefix"]))
|
||||||
|
$dbconfig["tableprefix"] = "";
|
||||||
|
$db = new dblayer ($dbconfig["dsn"], $dbconfig["username"],
|
||||||
|
$dbconfig["password"], $dbconfig["driver_options"]);
|
||||||
|
$db->table = "grouped";
|
||||||
|
$db->fields = array ("group"=>array ("varchar", "255", "not null"),
|
||||||
|
"object"=>array ("varchar", "255", "not null"),
|
||||||
|
"where"=>array ("varchar", "255", "not null"),
|
||||||
|
"with space"=>array ("varchar", "255", "not null"));
|
||||||
|
$db->unique = array ();
|
||||||
|
$db->primary = "group";
|
||||||
|
$db->update ("gr ou\"p", array ("object"=>"%éàoppp",
|
||||||
|
"with space"=>"WITH SPACE"));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function test_read2 ()
|
||||||
|
{
|
||||||
|
$configuration = new configuration ();
|
||||||
|
$dbconfig = $configuration->get ("database");
|
||||||
|
if (! isset ($dbconfig["tableprefix"]))
|
||||||
|
$dbconfig["tableprefix"] = "";
|
||||||
|
$db = new dblayer ($dbconfig["dsn"], $dbconfig["username"],
|
||||||
|
$dbconfig["password"], $dbconfig["driver_options"]);
|
||||||
|
$db->table = "grouped";
|
||||||
|
$db->fields = array ("group"=>array ("varchar", "255", "not null"),
|
||||||
|
"object"=>array ("varchar", "255", "not null"),
|
||||||
|
"where"=>array ("varchar", "255", "not null"),
|
||||||
|
"with space"=>array ("varchar", "255", "not null"));
|
||||||
|
$db->unique = array ();
|
||||||
|
$res = $db->read (array (array ("group", "gr ou\"p"),
|
||||||
|
array ("object","%éàoppp"),
|
||||||
|
array ("where","\$'\""),
|
||||||
|
array ("with space","WITH SPACE")));
|
||||||
|
$this->assertSame (array (0=>array ("group"=>"gr ou\"p",
|
||||||
|
"object"=>"%éàoppp",
|
||||||
|
"where"=>"\$'\"",
|
||||||
|
"with space"=>"WITH SPACE")), $res);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
428
dblayer.php
428
dblayer.php
@@ -60,65 +60,6 @@ class dblayer extends PDO
|
|||||||
/** The connecting DSN */
|
/** The connecting DSN */
|
||||||
private $dsn = null;
|
private $dsn = null;
|
||||||
|
|
||||||
/** Return the connected database name from DSN used to connect */
|
|
||||||
public function databasename ()
|
|
||||||
{
|
|
||||||
if ($this->db === null)
|
|
||||||
throw new Exception (dgettext("domframework", "Database not connected"), 500);
|
|
||||||
$vals = explode (";", substr (strstr ($this->dsn, ":"), 1));
|
|
||||||
$dsnExplode = array ();
|
|
||||||
foreach ($vals as $val)
|
|
||||||
{
|
|
||||||
@list ($k, $v) = explode ("=", $val);
|
|
||||||
$dsnExplode[$k] = $v;
|
|
||||||
}
|
|
||||||
if (isset ($dsnExplode["dbname"]))
|
|
||||||
return $dsnExplode["dbname"];
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Return all the tables available in the database */
|
|
||||||
public function listTables ()
|
|
||||||
{
|
|
||||||
if ($this->db === null)
|
|
||||||
throw new Exception (dgettext("domframework", "Database not connected"), 500);
|
|
||||||
switch ($this->db->getAttribute(PDO::ATTR_DRIVER_NAME))
|
|
||||||
{
|
|
||||||
case "sqlite":
|
|
||||||
$req = "SELECT name FROM sqlite_master WHERE type='table'";
|
|
||||||
$st = $this->db->prepare ($req);
|
|
||||||
$st->execute ();
|
|
||||||
$res = array ();
|
|
||||||
while ($d = $st->fetch (PDO::FETCH_ASSOC))
|
|
||||||
$res[] = $d["name"];
|
|
||||||
break;
|
|
||||||
case "mysql":
|
|
||||||
$req = "SELECT TABLE_NAME
|
|
||||||
FROM information_schema.tables
|
|
||||||
WHERE TABLE_SCHEMA='".$this->databasename()."'";
|
|
||||||
$st = $this->db->prepare ($req);
|
|
||||||
$st->execute ();
|
|
||||||
$res = array ();
|
|
||||||
while ($d = $st->fetch (PDO::FETCH_ASSOC))
|
|
||||||
$res[] = $d["TABLE_NAME"];
|
|
||||||
break;
|
|
||||||
case "pgsql":
|
|
||||||
$req = "SELECT *
|
|
||||||
FROM pg_tables
|
|
||||||
WHERE schemaname = 'public'";
|
|
||||||
$st = $this->db->prepare ($req);
|
|
||||||
$st->execute ();
|
|
||||||
$res = array ();
|
|
||||||
while ($d = $st->fetch (PDO::FETCH_ASSOC))
|
|
||||||
$res[] = $d["tablename"];
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
throw new Exception (dgettext("domframework",
|
|
||||||
"Unknown database driver in listTables"), 500);
|
|
||||||
}
|
|
||||||
return $res;
|
|
||||||
}
|
|
||||||
|
|
||||||
// TODO !!
|
// TODO !!
|
||||||
/** Create Table creation from $this->fields with engine abstraction
|
/** Create Table creation from $this->fields with engine abstraction
|
||||||
Example in sqlite3 id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
|
Example in sqlite3 id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
|
||||||
@@ -161,11 +102,12 @@ class dblayer extends PDO
|
|||||||
// Look at the right to write in database and in the directory
|
// Look at the right to write in database and in the directory
|
||||||
$file = substr ($dsn, 7);
|
$file = substr ($dsn, 7);
|
||||||
if (! is_writeable (dirname ($file)))
|
if (! is_writeable (dirname ($file)))
|
||||||
throw new Exception (
|
throw new Exception (dgettext("domframework",
|
||||||
_("The directory for SQLite database is write protected"),
|
"The directory for SQLite database is write protected"),
|
||||||
500);
|
500);
|
||||||
if (file_exists ($file) && ! is_writeable ($file))
|
if (file_exists ($file) && ! is_writeable ($file))
|
||||||
throw new Exception (_("The SQLite database file is write protected"),
|
throw new Exception (dgettext("domframework",
|
||||||
|
"The SQLite database file is write protected"),
|
||||||
500);
|
500);
|
||||||
if (function_exists ("posix_getuid") &&
|
if (function_exists ("posix_getuid") &&
|
||||||
fileowner ($file) === posix_getuid ())
|
fileowner ($file) === posix_getuid ())
|
||||||
@@ -177,6 +119,67 @@ class dblayer extends PDO
|
|||||||
$this->dsn = $dsn;
|
$this->dsn = $dsn;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Return the connected database name from DSN used to connect */
|
||||||
|
public function databasename ()
|
||||||
|
{
|
||||||
|
if ($this->db === null)
|
||||||
|
throw new Exception (dgettext("domframework", "Database not connected"),
|
||||||
|
500);
|
||||||
|
$vals = explode (";", substr (strstr ($this->dsn, ":"), 1));
|
||||||
|
$dsnExplode = array ();
|
||||||
|
foreach ($vals as $val)
|
||||||
|
{
|
||||||
|
@list ($k, $v) = explode ("=", $val);
|
||||||
|
$dsnExplode[$k] = $v;
|
||||||
|
}
|
||||||
|
if (isset ($dsnExplode["dbname"]))
|
||||||
|
return $dsnExplode["dbname"];
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Return all the tables available in the database */
|
||||||
|
public function listTables ()
|
||||||
|
{
|
||||||
|
if ($this->db === null)
|
||||||
|
throw new Exception (dgettext("domframework", "Database not connected"),
|
||||||
|
500);
|
||||||
|
switch ($this->db->getAttribute(PDO::ATTR_DRIVER_NAME))
|
||||||
|
{
|
||||||
|
case "sqlite":
|
||||||
|
$req = "SELECT name FROM sqlite_master WHERE type='table'";
|
||||||
|
$st = $this->db->prepare ($req);
|
||||||
|
$st->execute ();
|
||||||
|
$res = array ();
|
||||||
|
while ($d = $st->fetch (PDO::FETCH_ASSOC))
|
||||||
|
$res[] = $d["name"];
|
||||||
|
break;
|
||||||
|
case "mysql":
|
||||||
|
$req = "SELECT TABLE_NAME
|
||||||
|
FROM information_schema.tables
|
||||||
|
WHERE TABLE_SCHEMA='".$this->databasename()."'";
|
||||||
|
$st = $this->db->prepare ($req);
|
||||||
|
$st->execute ();
|
||||||
|
$res = array ();
|
||||||
|
while ($d = $st->fetch (PDO::FETCH_ASSOC))
|
||||||
|
$res[] = $d["TABLE_NAME"];
|
||||||
|
break;
|
||||||
|
case "pgsql":
|
||||||
|
$req = "SELECT *
|
||||||
|
FROM pg_tables
|
||||||
|
WHERE schemaname = 'public'";
|
||||||
|
$st = $this->db->prepare ($req);
|
||||||
|
$st->execute ();
|
||||||
|
$res = array ();
|
||||||
|
while ($d = $st->fetch (PDO::FETCH_ASSOC))
|
||||||
|
$res[] = $d["tablename"];
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
throw new Exception (dgettext("domframework",
|
||||||
|
"Unknown database driver in listTables"), 500);
|
||||||
|
}
|
||||||
|
return $res;
|
||||||
|
}
|
||||||
|
|
||||||
/** Create a new entry in the table. Datas must be an indexed array
|
/** Create a new entry in the table. Datas must be an indexed array
|
||||||
@param array $datas Datas to be recorded (column=>value)
|
@param array $datas Datas to be recorded (column=>value)
|
||||||
@obsolete 0.5 */
|
@obsolete 0.5 */
|
||||||
@@ -190,11 +193,14 @@ class dblayer extends PDO
|
|||||||
public function insert ($datas)
|
public function insert ($datas)
|
||||||
{
|
{
|
||||||
if ($this->db === null)
|
if ($this->db === null)
|
||||||
throw new Exception (_("Database not connected"), 500);
|
throw new Exception (dgettext("domframework", "Database not connected"),
|
||||||
|
500);
|
||||||
if ($this->unique === null)
|
if ($this->unique === null)
|
||||||
throw new Exception (_("Unique fields of table are not defined"), 500);
|
throw new Exception (dgettext("domframework",
|
||||||
|
"Unique fields of table are not defined"), 500);
|
||||||
if (!is_array ($datas))
|
if (!is_array ($datas))
|
||||||
throw new Exception (_("The datas provided to create are not array"),
|
throw new Exception (dgettext("domframework",
|
||||||
|
"The datas provided to create are not array"),
|
||||||
405);
|
405);
|
||||||
if (!in_array ($this->primary, $this->unique))
|
if (!in_array ($this->primary, $this->unique))
|
||||||
$this->unique[] = $this->primary;
|
$this->unique[] = $this->primary;
|
||||||
@@ -205,10 +211,12 @@ class dblayer extends PDO
|
|||||||
if (in_array ("autoincrement", $params))
|
if (in_array ("autoincrement", $params))
|
||||||
$datas[$key] = null;
|
$datas[$key] = null;
|
||||||
if (in_array ("not null", $params) && !array_key_exists ($key, $datas))
|
if (in_array ("not null", $params) && !array_key_exists ($key, $datas))
|
||||||
throw new Exception (sprintf (_("Mandatory field '%s' not provided"),
|
throw new Exception (sprintf (dgettext("domframework",
|
||||||
|
"Mandatory field '%s' not provided"),
|
||||||
$key), 405);
|
$key), 405);
|
||||||
if (in_array ("not null", $params) && $datas[$key] === "")
|
if (in_array ("not null", $params) && $datas[$key] === "")
|
||||||
throw new Exception (sprintf (_("Mandatory field '%s' is empty"),
|
throw new Exception (sprintf (dgettext("domframework",
|
||||||
|
"Mandatory field '%s' is empty"),
|
||||||
$key), 405);
|
$key), 405);
|
||||||
if (!array_key_exists ($key, $datas))
|
if (!array_key_exists ($key, $datas))
|
||||||
continue;
|
continue;
|
||||||
@@ -221,19 +229,22 @@ class dblayer extends PDO
|
|||||||
{
|
{
|
||||||
if (strspn ($datas[$key], "0123456789") !== strlen ($datas[$key]))
|
if (strspn ($datas[$key], "0123456789") !== strlen ($datas[$key]))
|
||||||
throw new Exception (sprintf (
|
throw new Exception (sprintf (
|
||||||
_("Errors in consistency : '%s' is not an integer"),
|
dgettext("domframework",
|
||||||
|
"Errors in consistency : '%s' is not an integer"),
|
||||||
$key), 405);
|
$key), 405);
|
||||||
}
|
}
|
||||||
elseif ($datas[$key] !== "" && $params[0] === "varchar")
|
elseif ($datas[$key] !== "" && $params[0] === "varchar")
|
||||||
{
|
{
|
||||||
if (! isset ($params[1]))
|
if (! isset ($params[1]))
|
||||||
throw new Exception (sprintf (
|
throw new Exception (sprintf (
|
||||||
_("The length of varchar field '%s' is not provided"),
|
dgettext("domframework",
|
||||||
|
"The length of varchar field '%s' is not provided"),
|
||||||
$key), 500);
|
$key), 500);
|
||||||
if (strlen ($datas[$key]) > $params[1])
|
if (strlen ($datas[$key]) > $params[1])
|
||||||
throw new Exception (sprintf (
|
throw new Exception (sprintf (
|
||||||
_("Errors in consistency : '%s' data is too long"),
|
dgettext("domframework",
|
||||||
$key), 405);
|
"Errors in consistency : '%s' data is too long"),
|
||||||
|
$key), 405);
|
||||||
}
|
}
|
||||||
elseif ($datas[$key] !== "" && $params[0] === "datetime")
|
elseif ($datas[$key] !== "" && $params[0] === "datetime")
|
||||||
{
|
{
|
||||||
@@ -241,8 +252,9 @@ class dblayer extends PDO
|
|||||||
$d = DateTime::createFromFormat("Y-m-d H:i:s", $datas[$key]);
|
$d = DateTime::createFromFormat("Y-m-d H:i:s", $datas[$key]);
|
||||||
if (!$d || $d->format("Y-m-d H:i:s") !== $datas[$key])
|
if (!$d || $d->format("Y-m-d H:i:s") !== $datas[$key])
|
||||||
throw new Exception (sprintf (
|
throw new Exception (sprintf (
|
||||||
_("Incorrect datetime provided for field '%s'"),
|
dgettext("domframework",
|
||||||
$key), 500);
|
"Incorrect datetime provided for field '%s'"),
|
||||||
|
$key), 500);
|
||||||
}
|
}
|
||||||
elseif ($datas[$key] !== "" && $params[0] === "date")
|
elseif ($datas[$key] !== "" && $params[0] === "date")
|
||||||
{
|
{
|
||||||
@@ -250,11 +262,13 @@ class dblayer extends PDO
|
|||||||
$d = DateTime::createFromFormat("Y-m-d", $datas[$key]);
|
$d = DateTime::createFromFormat("Y-m-d", $datas[$key]);
|
||||||
if (!$d || $d->format("Y-m-d") !== $datas[$key])
|
if (!$d || $d->format("Y-m-d") !== $datas[$key])
|
||||||
throw new Exception (sprintf (
|
throw new Exception (sprintf (
|
||||||
_("Incorrect date provided for field '%s'"),
|
dgettext("domframework",
|
||||||
$key), 500);
|
"Incorrect date provided for field '%s'"),
|
||||||
|
$key), 500);
|
||||||
}
|
}
|
||||||
elseif ($datas[$key] !== "")
|
elseif ($datas[$key] !== "")
|
||||||
throw new Exception (sprintf (_("Unknown field type for '%s'"), $key),
|
throw new Exception (sprintf (dgettext("domframework",
|
||||||
|
"Unknown field type for '%s'"), $key),
|
||||||
500);
|
500);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -266,7 +280,7 @@ class dblayer extends PDO
|
|||||||
// Check for inconsistency
|
// Check for inconsistency
|
||||||
$verify = $this->verifyAll ($datas);
|
$verify = $this->verifyAll ($datas);
|
||||||
if (count ($verify))
|
if (count ($verify))
|
||||||
throw new Exception (_("Errors in consistency : ").
|
throw new Exception (dgettext("domframework", "Errors in consistency : ").
|
||||||
print_r ($verify, TRUE), 405);
|
print_r ($verify, TRUE), 405);
|
||||||
|
|
||||||
// Check if the unique constrain is valid before doing the insertion
|
// Check if the unique constrain is valid before doing the insertion
|
||||||
@@ -283,8 +297,9 @@ class dblayer extends PDO
|
|||||||
$rc = $this->read ($select, array ($this->primary));
|
$rc = $this->read ($select, array ($this->primary));
|
||||||
if (count ($rc) > 0)
|
if (count ($rc) > 0)
|
||||||
throw new Exception (sprintf (
|
throw new Exception (sprintf (
|
||||||
_("The provided values for columns '%s' already exists"),
|
dgettext("domframework",
|
||||||
implode (",", $columns)), 405);
|
"The provided values for columns '%s' already exists"),
|
||||||
|
implode (",", $columns)), 405);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -293,8 +308,9 @@ class dblayer extends PDO
|
|||||||
array ($this->primary));
|
array ($this->primary));
|
||||||
if (count ($rc) > 0)
|
if (count ($rc) > 0)
|
||||||
throw new Exception (sprintf (
|
throw new Exception (sprintf (
|
||||||
_("The column '%s' with this value already exists"),
|
dgettext("domframework",
|
||||||
$columns), 405);
|
"The column '%s' with this value already exists"),
|
||||||
|
$columns), 405);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -304,23 +320,23 @@ class dblayer extends PDO
|
|||||||
$table = $data[0];
|
$table = $data[0];
|
||||||
$column = $data[1];
|
$column = $data[1];
|
||||||
$req = "SELECT $column FROM `$this->tableprefix$table` ".
|
$req = "SELECT $column FROM `$this->tableprefix$table` ".
|
||||||
"WHERE $column=:$column";
|
"WHERE \"$column\"=:".md5 ($column);
|
||||||
if ($this->debug) echo "DEBUG : $req\n";
|
if ($this->debug) echo "DEBUG : $req\n";
|
||||||
$st = $this->db->prepare ($req);
|
$st = $this->db->prepare ($req);
|
||||||
$val = $datasOK[$foreign];
|
$val = $datasOK[$foreign];
|
||||||
$key = $column;
|
$key = $column;
|
||||||
if ($this->debug) echo "DEBUG BIND : $column->".var_export ($val, TRUE).
|
if ($this->debug) echo "DEBUG BIND : $column(".md5 ($column)."->".
|
||||||
"\n";
|
var_export ($val, TRUE)."\n";
|
||||||
if ($val === null)
|
if ($val === null)
|
||||||
$st->bindValue (":$key", $val, PDO::PARAM_NULL);
|
$st->bindValue (":".md5 ($key), $val, PDO::PARAM_NULL);
|
||||||
elseif ($this->fields[$key][0] === "integer")
|
elseif ($this->fields[$key][0] === "integer")
|
||||||
$st->bindValue (":$key", $val, PDO::PARAM_INT);
|
$st->bindValue (":".md5 ($key), $val, PDO::PARAM_INT);
|
||||||
elseif ($this->fields[$key][0] === "varchar")
|
elseif ($this->fields[$key][0] === "varchar")
|
||||||
$st->bindValue (":$key", $val, PDO::PARAM_STR);
|
$st->bindValue (":".md5 ($key), $val, PDO::PARAM_STR);
|
||||||
elseif ($this->fields[$key][0] === "datetime")
|
elseif ($this->fields[$key][0] === "datetime")
|
||||||
$st->bindValue (":$key", $val, PDO::PARAM_STR);
|
$st->bindValue (":".md5 ($key), $val, PDO::PARAM_STR);
|
||||||
elseif ($this->fields[$key][0] === "date")
|
elseif ($this->fields[$key][0] === "date")
|
||||||
$st->bindValue (":$key", $val, PDO::PARAM_STR);
|
$st->bindValue (":".md5 ($key), $val, PDO::PARAM_STR);
|
||||||
else
|
else
|
||||||
throw new Exception ("TO BE DEVELOPPED : ".$this->fields[$key][0], 500);
|
throw new Exception ("TO BE DEVELOPPED : ".$this->fields[$key][0], 500);
|
||||||
$st->execute ();
|
$st->execute ();
|
||||||
@@ -328,29 +344,35 @@ class dblayer extends PDO
|
|||||||
while ($d = $st->fetch (PDO::FETCH_ASSOC))
|
while ($d = $st->fetch (PDO::FETCH_ASSOC))
|
||||||
$res[] = $d;
|
$res[] = $d;
|
||||||
if (count ($res) === 0)
|
if (count ($res) === 0)
|
||||||
throw new Exception (sprintf (_("The foreign key '%s' doesn't exists"),
|
throw new Exception (sprintf (dgettext("domframework",
|
||||||
|
"The foreign key '%s' doesn't exists"),
|
||||||
$column), 405);
|
$column), 405);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$binds = array_keys ($datasOK);
|
||||||
|
array_walk ($binds, function(&$value, $key) {
|
||||||
|
$value = md5 ($value);
|
||||||
|
});
|
||||||
$req = "INSERT INTO `$this->tableprefix$this->table` ";
|
$req = "INSERT INTO `$this->tableprefix$this->table` ";
|
||||||
$req .= "(".implode (",", array_keys ($datasOK)).")";
|
$req .= "(\"".implode ("\",\"", array_keys ($datasOK))."\")";
|
||||||
$req .= " VALUES ";
|
$req .= " VALUES ";
|
||||||
$req .= "(:".implode (",:", array_keys ($datasOK)).")";
|
$req .= "(:".implode (",:", $binds).")";
|
||||||
if ($this->debug) echo "DEBUG : $req\n";
|
if ($this->debug) echo "DEBUG : $req\n";
|
||||||
$st = $this->db->prepare ($req);
|
$st = $this->db->prepare ($req);
|
||||||
foreach ($datasOK as $key=>$val)
|
foreach ($datasOK as $key=>$val)
|
||||||
{
|
{
|
||||||
if ($this->debug) echo "DEBUG BIND : $key->".var_export ($val, TRUE)."\n";
|
if ($this->debug) echo "DEBUG BIND : $key(".md5 ($key).")->".
|
||||||
|
var_export ($val, TRUE)."\n";
|
||||||
if ($val === null)
|
if ($val === null)
|
||||||
$st->bindValue (":$key", $val, PDO::PARAM_NULL);
|
$st->bindValue (":".md5 ($key), $val, PDO::PARAM_NULL);
|
||||||
elseif ($this->fields[$key][0] === "integer")
|
elseif ($this->fields[$key][0] === "integer")
|
||||||
$st->bindValue (":$key", $val, PDO::PARAM_INT);
|
$st->bindValue (":".md5 ($key), $val, PDO::PARAM_INT);
|
||||||
elseif ($this->fields[$key][0] === "varchar")
|
elseif ($this->fields[$key][0] === "varchar")
|
||||||
$st->bindValue (":$key", $val, PDO::PARAM_STR);
|
$st->bindValue (":".md5 ($key), $val, PDO::PARAM_STR);
|
||||||
elseif ($this->fields[$key][0] === "datetime")
|
elseif ($this->fields[$key][0] === "datetime")
|
||||||
$st->bindValue (":$key", $val, PDO::PARAM_STR);
|
$st->bindValue (":".md5 ($key), $val, PDO::PARAM_STR);
|
||||||
elseif ($this->fields[$key][0] === "date")
|
elseif ($this->fields[$key][0] === "date")
|
||||||
$st->bindValue (":$key", $val, PDO::PARAM_STR);
|
$st->bindValue (":".md5 ($key), $val, PDO::PARAM_STR);
|
||||||
else
|
else
|
||||||
throw new Exception ("TO BE DEVELOPPED : ".$this->fields[$key][0], 500);
|
throw new Exception ("TO BE DEVELOPPED : ".$this->fields[$key][0], 500);
|
||||||
}
|
}
|
||||||
@@ -375,22 +397,27 @@ class dblayer extends PDO
|
|||||||
$whereOr=false)
|
$whereOr=false)
|
||||||
{
|
{
|
||||||
if ($this->db === null)
|
if ($this->db === null)
|
||||||
throw new Exception (_("Database not connected"), 500);
|
throw new Exception (dgettext("domframework", "Database not connected"),
|
||||||
|
500);
|
||||||
if ($select !== null && !is_array ($select))
|
if ($select !== null && !is_array ($select))
|
||||||
throw new Exception (_("Select information provided is not an array"),
|
throw new Exception (dgettext("domframework",
|
||||||
|
"Select information provided is not an array"),
|
||||||
405);
|
405);
|
||||||
if ($display !== null && !is_array ($display))
|
if ($display !== null && !is_array ($display))
|
||||||
throw new Exception (_("Display information provided is not an array"),
|
throw new Exception (dgettext("domframework",
|
||||||
|
"Display information provided is not an array"),
|
||||||
405);
|
405);
|
||||||
if ($order !== null && !is_array ($order))
|
if ($order !== null && !is_array ($order))
|
||||||
throw new Exception (_("Order information provided is not an array"),
|
throw new Exception (dgettext("domframework",
|
||||||
|
"Order information provided is not an array"),
|
||||||
405);
|
405);
|
||||||
if ($display !== null)
|
if ($display !== null)
|
||||||
{
|
{
|
||||||
foreach ($display as $f)
|
foreach ($display as $f)
|
||||||
{
|
{
|
||||||
if (!in_array ($f, array_keys ($this->fields)))
|
if (!in_array ($f, array_keys ($this->fields)))
|
||||||
throw new Exception (sprintf (_("Field '%s' not allowed"), $f), 506);
|
throw new Exception (sprintf (dgettext("domframework",
|
||||||
|
"Field '%s' not allowed"), $f), 506);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -398,9 +425,9 @@ class dblayer extends PDO
|
|||||||
$display = array_keys ($this->fields);
|
$display = array_keys ($this->fields);
|
||||||
}
|
}
|
||||||
|
|
||||||
$req = "SELECT ";
|
$req = "SELECT \"";
|
||||||
$req .= implode (",", $display);
|
$req .= implode ("\",\"", $display);
|
||||||
$req .= " FROM `$this->tableprefix$this->table`";
|
$req .= "\" FROM `$this->tableprefix$this->table`";
|
||||||
if ($select !== null)
|
if ($select !== null)
|
||||||
{
|
{
|
||||||
$req .= " WHERE ";
|
$req .= " WHERE ";
|
||||||
@@ -415,7 +442,14 @@ class dblayer extends PDO
|
|||||||
}
|
}
|
||||||
if (!isset ($s[2]))
|
if (!isset ($s[2]))
|
||||||
$s[2] = "=";
|
$s[2] = "=";
|
||||||
$req .= " ".$s[0]." ".$s[2]." :".$s[0];
|
if (!isset ($s[0]))
|
||||||
|
throw new Exception (sprintf (dgettext("domframework",
|
||||||
|
"Select not found for id=%d"), $n), 500);
|
||||||
|
// The double-quotes are added for sqlite to escape the column if its
|
||||||
|
// name is 'group'
|
||||||
|
// Don't put single quotes : don't work with SQLite
|
||||||
|
// TODO : Test for PostgreSQL (Tested for SQLite and MySQL)
|
||||||
|
$req .= " \"".$s[0]."\" ".$s[2]." :".md5 ($s[0]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -435,18 +469,32 @@ class dblayer extends PDO
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ($this->debug) echo "DEBUG : $req\n";
|
if ($this->debug) echo "DEBUG : $req\n";
|
||||||
$st = $this->db->prepare ($req);
|
try
|
||||||
|
{
|
||||||
|
$st = $this->db->prepare ($req);
|
||||||
|
}
|
||||||
|
catch (Exception $e)
|
||||||
|
{
|
||||||
|
if ($this->debug) echo "DEBUG : PREPARE ERROR ! Return FALSE".
|
||||||
|
$e->getMessage()."\n";
|
||||||
|
throw new Exception ($e->getMessage(), 500);
|
||||||
|
}
|
||||||
|
|
||||||
if ($select !== NULL)
|
if ($select !== NULL)
|
||||||
{
|
{
|
||||||
foreach ($select as $s)
|
foreach ($select as $s)
|
||||||
{
|
{
|
||||||
if ($this->debug) echo "DEBUG BIND : ".$s[0]."->".
|
if ($this->debug) echo "DEBUG BIND : ".$s[0]."(".md5 ($s[0]).")->".
|
||||||
var_export ($s[1], TRUE)."\n";
|
var_export ($s[1], TRUE)."\n";
|
||||||
$st->bindValue (":".$s[0], $s[1]);
|
$st->bindValue (":".md5 ($s[0]), $s[1]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$st->execute ();
|
$rc = $st->execute ();
|
||||||
|
if ($rc === false)
|
||||||
|
{
|
||||||
|
if ($this->debug) echo "DEBUG : EXECUTE ERROR ! Return FALSE\n";
|
||||||
|
}
|
||||||
$res = array ();
|
$res = array ();
|
||||||
while ($d = $st->fetch (PDO::FETCH_ASSOC))
|
while ($d = $st->fetch (PDO::FETCH_ASSOC))
|
||||||
$res[] = $d;
|
$res[] = $d;
|
||||||
@@ -461,7 +509,12 @@ class dblayer extends PDO
|
|||||||
public function update ($updatekey, $datas)
|
public function update ($updatekey, $datas)
|
||||||
{
|
{
|
||||||
if ($this->db === null)
|
if ($this->db === null)
|
||||||
throw new Exception (_("Database not connected"), 500);
|
throw new Exception (dgettext("domframework", "Database not connected"),
|
||||||
|
500);
|
||||||
|
if (count ($this->fields) === 0)
|
||||||
|
throw new Exception (dgettext("domframework", "No Field defined"), 500);
|
||||||
|
if ($this->primary === null)
|
||||||
|
throw new Exception (dgettext("domframework", "No Primary defined"), 500);
|
||||||
$datasOK = array ();
|
$datasOK = array ();
|
||||||
// Check for missing parameters
|
// Check for missing parameters
|
||||||
foreach ($this->fields as $key=>$params)
|
foreach ($this->fields as $key=>$params)
|
||||||
@@ -475,19 +528,22 @@ class dblayer extends PDO
|
|||||||
{
|
{
|
||||||
if (strspn ($datas[$key], "0123456789") !== strlen ($datas[$key]))
|
if (strspn ($datas[$key], "0123456789") !== strlen ($datas[$key]))
|
||||||
throw new Exception (sprintf (
|
throw new Exception (sprintf (
|
||||||
_("Errors in consistency : '%s' is not an integer"),
|
dgettext("domframework",
|
||||||
$key), 405);
|
"Errors in consistency : '%s' is not an integer"),
|
||||||
|
$key), 405);
|
||||||
}
|
}
|
||||||
elseif ($datas[$key] !== "" && $params[0] === "varchar")
|
elseif ($datas[$key] !== "" && $params[0] === "varchar")
|
||||||
{
|
{
|
||||||
if (! isset ($params[1]))
|
if (! isset ($params[1]))
|
||||||
throw new Exception (sprintf (
|
throw new Exception (sprintf (
|
||||||
_("The length of varchar field '%s' is not provided"),
|
dgettext("domframework",
|
||||||
$key), 500);
|
"The length of varchar field '%s' is not provided"),
|
||||||
|
$key), 500);
|
||||||
if (strlen ($datas[$key]) > $params[1])
|
if (strlen ($datas[$key]) > $params[1])
|
||||||
throw new Exception (sprintf (
|
throw new Exception (sprintf (
|
||||||
_("Errors in consistency : '%s' data is too long"),
|
dgettext("domframework",
|
||||||
$key), 405);
|
"Errors in consistency : '%s' data is too long"),
|
||||||
|
$key), 405);
|
||||||
}
|
}
|
||||||
elseif ($datas[$key] !== "" && $params[0] === "datetime")
|
elseif ($datas[$key] !== "" && $params[0] === "datetime")
|
||||||
{
|
{
|
||||||
@@ -495,8 +551,9 @@ class dblayer extends PDO
|
|||||||
$d = DateTime::createFromFormat("Y-m-d H:i:s", $datas[$key]);
|
$d = DateTime::createFromFormat("Y-m-d H:i:s", $datas[$key]);
|
||||||
if (!$d || $d->format("Y-m-d H:i:s") !== $datas[$key])
|
if (!$d || $d->format("Y-m-d H:i:s") !== $datas[$key])
|
||||||
throw new Exception (sprintf (
|
throw new Exception (sprintf (
|
||||||
_("Incorrect datetime provided for field '%s'"),
|
dgettext("domframework",
|
||||||
$key), 500);
|
"Incorrect datetime provided for field '%s'"),
|
||||||
|
$key), 500);
|
||||||
}
|
}
|
||||||
elseif ($datas[$key] !== "" && $params[0] === "date")
|
elseif ($datas[$key] !== "" && $params[0] === "date")
|
||||||
{
|
{
|
||||||
@@ -504,11 +561,13 @@ class dblayer extends PDO
|
|||||||
$d = DateTime::createFromFormat("Y-m-d", $datas[$key]);
|
$d = DateTime::createFromFormat("Y-m-d", $datas[$key]);
|
||||||
if (!$d || $d->format("Y-m-d") !== $datas[$key])
|
if (!$d || $d->format("Y-m-d") !== $datas[$key])
|
||||||
throw new Exception (sprintf (
|
throw new Exception (sprintf (
|
||||||
_("Incorrect date provided for field '%s'"),
|
dgettext("domframework",
|
||||||
$key), 500);
|
"Incorrect date provided for field '%s'"),
|
||||||
|
$key), 500);
|
||||||
}
|
}
|
||||||
elseif ($datas[$key] !== "")
|
elseif ($datas[$key] !== "")
|
||||||
throw new Exception (sprintf (_("Unknown field type for '%s'"), $key),
|
throw new Exception (sprintf (dgettext("domframework",
|
||||||
|
"Unknown field type for '%s'"), $key),
|
||||||
500);
|
500);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -519,7 +578,8 @@ class dblayer extends PDO
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (count ($datasOK) === 0)
|
if (count ($datasOK) === 0)
|
||||||
throw new Exception (_("Don't receive any field to display"), 501);
|
throw new Exception (dgettext("domframework",
|
||||||
|
"Don't receive any field to display"), 501);
|
||||||
|
|
||||||
// Check for type inconsistencies before using $datasOK
|
// Check for type inconsistencies before using $datasOK
|
||||||
foreach ($datasOK as $key=>$params)
|
foreach ($datasOK as $key=>$params)
|
||||||
@@ -533,7 +593,8 @@ class dblayer extends PDO
|
|||||||
// 1. Read the actual state
|
// 1. Read the actual state
|
||||||
$before = $this->read (array (array ($this->primary, $updatekey)));
|
$before = $this->read (array (array ($this->primary, $updatekey)));
|
||||||
if (count ($before) === 0)
|
if (count ($before) === 0)
|
||||||
throw new Exception (_("Entry to modify unavailable"), 404);
|
throw new Exception (dgettext("domframework",
|
||||||
|
"Entry to modify unavailable"), 404);
|
||||||
$before = reset ($before);
|
$before = reset ($before);
|
||||||
// 2. Map the proposal entries into the before state
|
// 2. Map the proposal entries into the before state
|
||||||
$after = $before;
|
$after = $before;
|
||||||
@@ -560,8 +621,9 @@ class dblayer extends PDO
|
|||||||
$rc = $this->read ($select, array ($this->primary));
|
$rc = $this->read ($select, array ($this->primary));
|
||||||
if (count ($rc) > 0)
|
if (count ($rc) > 0)
|
||||||
throw new Exception (sprintf (
|
throw new Exception (sprintf (
|
||||||
_("The provided values for columns '%s' already exists"),
|
dgettext("domframework",
|
||||||
implode (",", $columns)), 405);
|
"The provided values for columns '%s' already exists"),
|
||||||
|
implode (",", $columns)), 405);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -576,8 +638,9 @@ class dblayer extends PDO
|
|||||||
array ($this->primary));
|
array ($this->primary));
|
||||||
if (count ($rc) > 0)
|
if (count ($rc) > 0)
|
||||||
throw new Exception (sprintf (
|
throw new Exception (sprintf (
|
||||||
_("An entry already exists with this value in the column '%s'"),
|
dgettext("domframework",
|
||||||
$columns), 405);
|
"An entry already exists with this value in the column '%s'"),
|
||||||
|
$columns), 405);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -591,23 +654,24 @@ class dblayer extends PDO
|
|||||||
$table = $data[0];
|
$table = $data[0];
|
||||||
$column = $data[1];
|
$column = $data[1];
|
||||||
$req = "SELECT $column FROM `$this->tableprefix$table` ".
|
$req = "SELECT $column FROM `$this->tableprefix$table` ".
|
||||||
"WHERE $column=:$column";
|
"WHERE \"$column\"=:".md5 ($column);
|
||||||
if ($this->debug) echo "DEBUG : $req\n";
|
if ($this->debug) echo "DEBUG : $req\n";
|
||||||
$st = $this->db->prepare ($req);
|
$st = $this->db->prepare ($req);
|
||||||
$val = $datasOK[$foreign];
|
$val = $datasOK[$foreign];
|
||||||
$key = $column;
|
$key = $column;
|
||||||
if ($this->debug) echo "DEBUG BIND : $column->".var_export ($val, TRUE).
|
if ($this->debug) echo "DEBUG BIND : $column(".md5 ($column).")->".
|
||||||
|
var_export ($val, TRUE).
|
||||||
"\n";
|
"\n";
|
||||||
if ($val === null)
|
if ($val === null)
|
||||||
$st->bindValue (":$key", $val, PDO::PARAM_NULL);
|
$st->bindValue (":".md5 ($key), $val, PDO::PARAM_NULL);
|
||||||
elseif ($this->fields[$key][0] === "integer")
|
elseif ($this->fields[$key][0] === "integer")
|
||||||
$st->bindValue (":$key", $val, PDO::PARAM_INT);
|
$st->bindValue (":".md5 ($key), $val, PDO::PARAM_INT);
|
||||||
elseif ($this->fields[$key][0] === "varchar")
|
elseif ($this->fields[$key][0] === "varchar")
|
||||||
$st->bindValue (":$key", $val, PDO::PARAM_STR);
|
$st->bindValue (":".md5 ($key), $val, PDO::PARAM_STR);
|
||||||
elseif ($this->fields[$key][0] === "datetime")
|
elseif ($this->fields[$key][0] === "datetime")
|
||||||
$st->bindValue (":$key", $val, PDO::PARAM_STR);
|
$st->bindValue (":".md5 ($key), $val, PDO::PARAM_STR);
|
||||||
elseif ($this->fields[$key][0] === "date")
|
elseif ($this->fields[$key][0] === "date")
|
||||||
$st->bindValue (":$key", $val, PDO::PARAM_STR);
|
$st->bindValue (":".md5 ($key), $val, PDO::PARAM_STR);
|
||||||
else
|
else
|
||||||
throw new Exception ("TO BE DEVELOPPED : ".$this->fields[$key][0], 500);
|
throw new Exception ("TO BE DEVELOPPED : ".$this->fields[$key][0], 500);
|
||||||
$st->execute ();
|
$st->execute ();
|
||||||
@@ -615,7 +679,8 @@ class dblayer extends PDO
|
|||||||
while ($d = $st->fetch (PDO::FETCH_ASSOC))
|
while ($d = $st->fetch (PDO::FETCH_ASSOC))
|
||||||
$res[] = $d;
|
$res[] = $d;
|
||||||
if (count ($res) === 0)
|
if (count ($res) === 0)
|
||||||
throw new Exception (sprintf (_("The foreign key '%s' doesn't exists"),
|
throw new Exception (sprintf (dgettext("domframework",
|
||||||
|
"The foreign key '%s' doesn't exists"),
|
||||||
$column), 405);
|
$column), 405);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -625,40 +690,41 @@ class dblayer extends PDO
|
|||||||
foreach ($datasOK as $key=>$val)
|
foreach ($datasOK as $key=>$val)
|
||||||
{
|
{
|
||||||
if ($i>0) $req .= ",";
|
if ($i>0) $req .= ",";
|
||||||
$req .= "$key=:$key";
|
$req .= "\"$key\"=:".md5 ($key);
|
||||||
$i++;
|
$i++;
|
||||||
}
|
}
|
||||||
|
|
||||||
$req .= " WHERE $this->primary=:$this->primary";
|
$req .= " WHERE \"$this->primary\"=:".md5 ($this->primary);
|
||||||
if ($this->debug) echo "DEBUG : $req\n";
|
if ($this->debug) echo "DEBUG : $req\n";
|
||||||
$st = $this->db->prepare ($req);
|
$st = $this->db->prepare ($req);
|
||||||
foreach ($datasOK as $key=>$val)
|
foreach ($datasOK as $key=>$val)
|
||||||
{
|
{
|
||||||
if ($this->debug) echo "DEBUG BIND : $key->".var_export ($val, TRUE)." ";
|
if ($this->debug) echo "DEBUG BIND : $key(".md5 ($key).")->".
|
||||||
|
var_export ($val, TRUE)." ";
|
||||||
if ($val === null)
|
if ($val === null)
|
||||||
{
|
{
|
||||||
if ($this->debug) echo "(null)\n";
|
if ($this->debug) echo "(null)\n";
|
||||||
$st->bindValue (":$key", $val, PDO::PARAM_NULL);
|
$st->bindValue (":".md5 ($key), $val, PDO::PARAM_NULL);
|
||||||
}
|
}
|
||||||
elseif ($this->fields[$key][0] === "integer")
|
elseif ($this->fields[$key][0] === "integer")
|
||||||
{
|
{
|
||||||
if ($this->debug) echo "(integer)\n";
|
if ($this->debug) echo "(integer)\n";
|
||||||
$st->bindValue (":$key", $val, PDO::PARAM_INT);
|
$st->bindValue (":".md5 ($key), $val, PDO::PARAM_INT);
|
||||||
}
|
}
|
||||||
elseif ($this->fields[$key][0] === "varchar")
|
elseif ($this->fields[$key][0] === "varchar")
|
||||||
{
|
{
|
||||||
if ($this->debug) echo "(varchar)\n";
|
if ($this->debug) echo "(varchar)\n";
|
||||||
$st->bindValue (":$key", $val, PDO::PARAM_STR);
|
$st->bindValue (":".md5 ($key), $val, PDO::PARAM_STR);
|
||||||
}
|
}
|
||||||
elseif ($this->fields[$key][0] === "datetime")
|
elseif ($this->fields[$key][0] === "datetime")
|
||||||
{
|
{
|
||||||
if ($this->debug) echo "(datetime)\n";
|
if ($this->debug) echo "(datetime)\n";
|
||||||
$st->bindValue (":$key", $val, PDO::PARAM_STR);
|
$st->bindValue (":".md5 ($key), $val, PDO::PARAM_STR);
|
||||||
}
|
}
|
||||||
elseif ($this->fields[$key][0] === "date")
|
elseif ($this->fields[$key][0] === "date")
|
||||||
{
|
{
|
||||||
if ($this->debug) echo "(date)\n";
|
if ($this->debug) echo "(date)\n";
|
||||||
$st->bindValue (":$key", $val, PDO::PARAM_STR);
|
$st->bindValue (":".md5 ($key), $val, PDO::PARAM_STR);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -677,7 +743,7 @@ class dblayer extends PDO
|
|||||||
public function delete ($deletekey)
|
public function delete ($deletekey)
|
||||||
{
|
{
|
||||||
if ($this->db === null)
|
if ($this->db === null)
|
||||||
throw new Exception (_("Database not connected"));
|
throw new Exception (dgettext("domframework", "Database not connected"));
|
||||||
$req = "DELETE FROM `$this->tableprefix$this->table` ";
|
$req = "DELETE FROM `$this->tableprefix$this->table` ";
|
||||||
$req .= "WHERE $this->primary = :primary";
|
$req .= "WHERE $this->primary = :primary";
|
||||||
$st = $this->db->prepare ($req);
|
$st = $this->db->prepare ($req);
|
||||||
@@ -692,6 +758,8 @@ class dblayer extends PDO
|
|||||||
/** Translation of fields */
|
/** Translation of fields */
|
||||||
public function titles ()
|
public function titles ()
|
||||||
{
|
{
|
||||||
|
if (count ($this->fields) === 0)
|
||||||
|
throw new Exception (dgettext("domframework", "No Field defined"), 500);
|
||||||
$arr = array ();
|
$arr = array ();
|
||||||
foreach ($this->fields as $field=>$v)
|
foreach ($this->fields as $field=>$v)
|
||||||
$arr[$field] = $field;
|
$arr[$field] = $field;
|
||||||
@@ -702,7 +770,7 @@ class dblayer extends PDO
|
|||||||
public function dropTable ()
|
public function dropTable ()
|
||||||
{
|
{
|
||||||
if ($this->db === null)
|
if ($this->db === null)
|
||||||
throw new Exception (_("Database not connected"));
|
throw new Exception (dgettext("domframework", "Database not connected"));
|
||||||
switch ($this->db->getAttribute(PDO::ATTR_DRIVER_NAME))
|
switch ($this->db->getAttribute(PDO::ATTR_DRIVER_NAME))
|
||||||
{
|
{
|
||||||
case "sqlite":
|
case "sqlite":
|
||||||
@@ -715,7 +783,8 @@ class dblayer extends PDO
|
|||||||
$sql = "DROP TABLE `$this->tableprefix$this->table`";
|
$sql = "DROP TABLE `$this->tableprefix$this->table`";
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
throw new Exception (sprintf (_("Unknown DB engine for drop table '%s'"),
|
throw new Exception (sprintf (dgettext("domframework",
|
||||||
|
"Unknown DB engine for drop table '%s'"),
|
||||||
$this->db->getAttribute(PDO::ATTR_DRIVER_NAME)),
|
$this->db->getAttribute(PDO::ATTR_DRIVER_NAME)),
|
||||||
500);
|
500);
|
||||||
}
|
}
|
||||||
@@ -743,7 +812,10 @@ class dblayer extends PDO
|
|||||||
public function createTable ()
|
public function createTable ()
|
||||||
{
|
{
|
||||||
if ($this->db === null)
|
if ($this->db === null)
|
||||||
throw new Exception (_("Database not connected"), 500);
|
throw new Exception (dgettext("domframework", "Database not connected"),
|
||||||
|
500);
|
||||||
|
if (count ($this->fields) === 0)
|
||||||
|
throw new Exception (dgettext("domframework", "No Field defined"), 500);
|
||||||
switch ($this->db->getAttribute(PDO::ATTR_DRIVER_NAME))
|
switch ($this->db->getAttribute(PDO::ATTR_DRIVER_NAME))
|
||||||
{
|
{
|
||||||
case "sqlite":
|
case "sqlite":
|
||||||
@@ -758,8 +830,9 @@ class dblayer extends PDO
|
|||||||
// Type of field : in $params[0]
|
// Type of field : in $params[0]
|
||||||
if (!isset ($params[0]))
|
if (!isset ($params[0]))
|
||||||
throw new Exception (sprintf (
|
throw new Exception (sprintf (
|
||||||
_("No database type defined for field '%s'"),
|
dgettext("domframework",
|
||||||
$field), 500);
|
"No database type defined for field '%s'"),
|
||||||
|
$field), 500);
|
||||||
|
|
||||||
switch ($params[0])
|
switch ($params[0])
|
||||||
{
|
{
|
||||||
@@ -769,7 +842,8 @@ class dblayer extends PDO
|
|||||||
break;
|
break;
|
||||||
case "varchar":
|
case "varchar":
|
||||||
if (!isset ($params[1]))
|
if (!isset ($params[1]))
|
||||||
throw new Exception (_("No Size provided for varchar field"), 500);
|
throw new Exception (dgettext("domframework",
|
||||||
|
"No Size provided for varchar field"), 500);
|
||||||
$sql .= "VARCHAR(".$params[1].")";
|
$sql .= "VARCHAR(".$params[1].")";
|
||||||
$params = array_slice ($params, 2);
|
$params = array_slice ($params, 2);
|
||||||
break;
|
break;
|
||||||
@@ -783,8 +857,9 @@ class dblayer extends PDO
|
|||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
throw new Exception (sprintf (
|
throw new Exception (sprintf (
|
||||||
_("Unknown type '%s' provided for field '%s'"),
|
dgettext("domframework",
|
||||||
$params[0], $field), 500);
|
"Unknown type '%s' provided for field '%s'"),
|
||||||
|
$params[0], $field), 500);
|
||||||
}
|
}
|
||||||
// Primary key
|
// Primary key
|
||||||
if ($this->primary === $field)
|
if ($this->primary === $field)
|
||||||
@@ -800,7 +875,8 @@ class dblayer extends PDO
|
|||||||
case "not null": $sql .= " NOT NULL"; break;
|
case "not null": $sql .= " NOT NULL"; break;
|
||||||
case "autoincrement": $sql .= " AUTOINCREMENT";break;
|
case "autoincrement": $sql .= " AUTOINCREMENT";break;
|
||||||
default:
|
default:
|
||||||
throw new Exception (_("Unknown additionnal parameter for field"),
|
throw new Exception (dgettext("domframework",
|
||||||
|
"Unknown additionnal parameter for field"),
|
||||||
500);
|
500);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -810,7 +886,8 @@ class dblayer extends PDO
|
|||||||
if ($this->unique !== null)
|
if ($this->unique !== null)
|
||||||
{
|
{
|
||||||
if (!is_array ($this->unique))
|
if (!is_array ($this->unique))
|
||||||
throw new Exception (_("The Unique field definition is not an array"),
|
throw new Exception (dgettext("domframework",
|
||||||
|
"The Unique field definition is not an array"),
|
||||||
500);
|
500);
|
||||||
foreach ($this->unique as $u)
|
foreach ($this->unique as $u)
|
||||||
{
|
{
|
||||||
@@ -845,7 +922,8 @@ class dblayer extends PDO
|
|||||||
$sql .= "`$field` ";
|
$sql .= "`$field` ";
|
||||||
// Type of field : in $params[0]
|
// Type of field : in $params[0]
|
||||||
if (!isset ($params[0]))
|
if (!isset ($params[0]))
|
||||||
throw new Exception (_("No database type defined for field"), 500);
|
throw new Exception (dgettext("domframework",
|
||||||
|
"No database type defined for field"), 500);
|
||||||
switch ($params[0])
|
switch ($params[0])
|
||||||
{
|
{
|
||||||
case "integer":
|
case "integer":
|
||||||
@@ -854,7 +932,8 @@ class dblayer extends PDO
|
|||||||
break;
|
break;
|
||||||
case "varchar":
|
case "varchar":
|
||||||
if (!isset ($params[1]))
|
if (!isset ($params[1]))
|
||||||
throw new Exception (_("No Size provided for varchar field"), 500);
|
throw new Exception (dgettext("domframework",
|
||||||
|
"No Size provided for varchar field"), 500);
|
||||||
$sql .= "VARCHAR(".$params[1].")";
|
$sql .= "VARCHAR(".$params[1].")";
|
||||||
$params = array_slice ($params, 2);
|
$params = array_slice ($params, 2);
|
||||||
break;
|
break;
|
||||||
@@ -868,8 +947,9 @@ class dblayer extends PDO
|
|||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
throw new Exception (sprintf (
|
throw new Exception (sprintf (
|
||||||
_("Unknown type provided for field '%s'"),
|
dgettext("domframework",
|
||||||
$field), 500);
|
"Unknown type provided for field '%s'"),
|
||||||
|
$field), 500);
|
||||||
}
|
}
|
||||||
// Primary key
|
// Primary key
|
||||||
if ($this->primary === $field)
|
if ($this->primary === $field)
|
||||||
@@ -886,8 +966,9 @@ class dblayer extends PDO
|
|||||||
case "autoincrement": $sql .= " AUTO_INCREMENT";break;
|
case "autoincrement": $sql .= " AUTO_INCREMENT";break;
|
||||||
default:
|
default:
|
||||||
throw new Exception (sprintf (
|
throw new Exception (sprintf (
|
||||||
_("Unknown additionnal parameter for field '%s'"),
|
dgettext("domframework",
|
||||||
$field), 500);
|
"Unknown additionnal parameter for field '%s'"),
|
||||||
|
$field), 500);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$i ++;
|
$i ++;
|
||||||
@@ -935,8 +1016,9 @@ class dblayer extends PDO
|
|||||||
// Type of field : in $params[0]
|
// Type of field : in $params[0]
|
||||||
if (!isset ($params[0]))
|
if (!isset ($params[0]))
|
||||||
throw new Exception (sprintf (
|
throw new Exception (sprintf (
|
||||||
_("No database type defined for field '%s'"),
|
dgettext("domframework",
|
||||||
$field), 500);
|
"No database type defined for field '%s'"),
|
||||||
|
$field), 500);
|
||||||
switch ($params[0])
|
switch ($params[0])
|
||||||
{
|
{
|
||||||
case "integer":
|
case "integer":
|
||||||
@@ -946,7 +1028,8 @@ class dblayer extends PDO
|
|||||||
case "varchar":
|
case "varchar":
|
||||||
if (!isset ($params[1]))
|
if (!isset ($params[1]))
|
||||||
throw new Exception (sprintf (
|
throw new Exception (sprintf (
|
||||||
_("No Size provided for varchar field '%s'"),
|
dgettext("domframework",
|
||||||
|
"No Size provided for varchar field '%s'"),
|
||||||
$field), 500);
|
$field), 500);
|
||||||
$sql .= "VARCHAR(".$params[1].")";
|
$sql .= "VARCHAR(".$params[1].")";
|
||||||
$params = array_slice ($params, 2);
|
$params = array_slice ($params, 2);
|
||||||
@@ -961,8 +1044,9 @@ class dblayer extends PDO
|
|||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
throw new Exception (sprintf (
|
throw new Exception (sprintf (
|
||||||
_("Unknown type provided for field '%s'"),
|
dgettext("domframework",
|
||||||
$field), 500);
|
"Unknown type provided for field '%s'"),
|
||||||
|
$field), 500);
|
||||||
}
|
}
|
||||||
// Primary key
|
// Primary key
|
||||||
if ($this->primary === $field)
|
if ($this->primary === $field)
|
||||||
@@ -978,8 +1062,9 @@ class dblayer extends PDO
|
|||||||
case "not null": $sql .= " NOT NULL"; break;
|
case "not null": $sql .= " NOT NULL"; break;
|
||||||
default:
|
default:
|
||||||
throw new Exception (sprintf (
|
throw new Exception (sprintf (
|
||||||
_("Unknown additionnal parameter for field '%s'"),
|
dgettext("domframework",
|
||||||
$field), 500);
|
"Unknown additionnal parameter for field '%s'"),
|
||||||
|
$field), 500);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1013,7 +1098,8 @@ class dblayer extends PDO
|
|||||||
$sql .=")";
|
$sql .=")";
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
throw new Exception (_("PDO Engine not supported in dbLayer"), 500);
|
throw new Exception (dgettext("domframework",
|
||||||
|
"PDO Engine not supported in dbLayer"), 500);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($this->debug)
|
if ($this->debug)
|
||||||
|
|||||||
Reference in New Issue
Block a user