Mercurial > hg > mgallery
diff mgallery.inc.php @ 343:d6422e856ecd
Remove the backend/SQL stuff for now.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Sun, 27 Aug 2023 04:16:05 +0300 |
parents | 14d3741061f5 |
children | 0f14a20f48ca |
line wrap: on
line diff
--- a/mgallery.inc.php Sun Aug 27 01:45:44 2023 +0300 +++ b/mgallery.inc.php Sun Aug 27 04:16:05 2023 +0300 @@ -101,12 +101,6 @@ "med_width" => [MG_INT, 1200], "med_height" => [MG_INT, 900], "med_quality" => [MG_INT, 90], - - "backend" => [MG_STR_LC, "php"], - "sql_db" => [MG_STR, FALSE], - "sql_username" => [MG_STR, ""], - "sql_password" => [MG_STR, ""], - "sql_options" => [MG_STR_ARRAY, []], ]; @@ -380,313 +374,4 @@ } -function mgLogSQLError($dbh, $sql) -{ - return mgError("SQL error '".implode("; ", $dbh->errorInfo())."' in statement: \"".$sql."\""); -} - - -function mgDBGetSQLParam($dbh, $type, $value) -{ - switch ($type) - { - case "d": return intval($value); - case "s": return $dbh->quote($value); - case "b": return intval($value) ? 1 : 0; - case "D": - if ($value instanceOf DateTime) - { - switch ($dbh->getAttribute(PDO::ATTR_DRIVER_NAME)) - { - case "pgsql" : $fmt = "Y-m-d H:i:sP"; break; - case "sqlite" : $fmt = DATE_RFC3339; break; - case "mysql" : $fmt = "Y-m-d H:i:s"; break; - default : $fmt = DATE_RFC3339; - } - return $dbh->quote($value->format($fmt)); - } - else - return intval($value); - } -} - - -function mgSQLToDateTime($dbh, $stamp) -{ - switch ($dbh->getAttribute(PDO::ATTR_DRIVER_NAME)) - { - case "pgsql": - // PostgreSQL 'timestamptz' format - $tmp = DateTime::createFromFormat("Y-m-d H:i:sP", $stamp); - break; - - case "sqlite": - // SQLite can use RFC3339 format - $tmp = DateTime::createFromFormat(DATE_RFC3339, $stamp); - break; - - case "mysql": - // MySQL uses UTC internally, no way to specify TZ - $tmp = DateTime::createFromFormat("Y-m-d H:i:s", $stamp); - break; - - default: - $tmp = NULL; - } - - // echo "<p>".$stamp." :: ".var_export(($tmp instanceOf DateTime) ? $tmp : NULL, TRUE)."</p>"; - return ($tmp instanceOf DateTime) ? $tmp : NULL; -} - - -function mgConnectSQLDB() -{ - global $db; - try { - $db = new PDO(mgGetSetting("sql_db"), - mgGetSetting("sql_username", NULL), - mgGetSetting("sql_password", NULL), - mgGetSetting("sql_options", array())); - } - catch (PDOException $e) { - mgError("Could not connect to SQL database: ".$e->getMessage()."."); - return FALSE; - } - return ($db !== false); -} - - -function mgDBPrepareSQLUpdate($dbh, $table, $cond, $pairs, $values = NULL) -{ - $sql = []; - foreach ($pairs as $name => $attr) - { - $sql[] = $name."=".mgDBGetSQLParam($dbh, - $attr, $values !== NULL ? $values[$name] : $name); - } - return - "UPDATE ".$table." SET ".implode(",", $sql). - ($cond != "" ? " ".$cond : ""); -} - - -function mgDBPrepareSQL_V($dbh, $fmt, $argv) -{ - $len = strlen($fmt); - $sql = ""; - $argn = 0; - $argc = count($argv); - - for ($pos = 0; $pos < $len; $pos++) - { - if ($fmt[$pos] == "%") - { - if ($argn < $argc) - $sql .= mgDBGetSQLParam($dbh, $fmt[++$pos], $argv[$argn++]); - else - { - mgError("Invalid SQL statement format string '".$fmt. - "', not enough parameters specified (".$argn." of ".$argc.")"); - return FALSE; - } - } - else - $sql .= $fmt[$pos]; - } - - return $sql; -} - - -function mgDBPrepareSQL($dbh) -{ - $argv = func_get_args(); - return mgDBPrepareSQL_V($dbh, $argv[1], array_splice($argv, 2)); -} - - -function mgPrepareSQL() -{ - global $db; - $argv = func_get_args(); - return mgDBPrepareSQL_V($db, $argv[0], array_splice($argv, 1)); -} - - -function mgDBExecSQLInsert($dbh, $sql) -{ - switch ($dbh->getAttribute(PDO::ATTR_DRIVER_NAME)) - { - case "pgsql": - if (($res = mgDBFetchSQLColumn($dbh, $sql." RETURNING id")) !== false) - return $res; - else - return FALSE; - - default: - if (mgDBExecSQL($dbh, $sql) !== false) - return $dbh->lastInsertId(); - else - return FALSE; - } -} - - -function mgDBExecSQL($dbh, $sql) -{ - if (($res = $dbh->query($sql)) !== FALSE) - return $res; - else - { - mgLogSQLError($dbh, $sql); - return FALSE; - } -} - - -function mgDBFetchSQL($dbh, $sql) -{ - if (($res = $dbh->query($sql)) !== FALSE) - return $res->fetch(); - else - { - mgLogSQLError($dbh, $sql); - return FALSE; - } -} - - -function mgDBFetchSQLColumn($dbh, $sql, $column = 0) -{ - if (($res = $dbh->query($sql)) !== FALSE) - return $res->fetchColumn($column); - else - { - mgLogSQLError($dbh, $sql); - return FALSE; - } -} - - -function mgPrepareSQLUpdate($table, $cond, $pairs) -{ - global $db; - return mgDBPrepareSQLUpdate($db, $table, $cond, $pairs); -} - - -function mgExecSQLInsert($sql) -{ - global $db; - return mgDBExecSQLInsert($db, $sql); -} - - -function mgExecSQL($sql) -{ - global $db; - return mgDBExecSQL($db, $sql); -} - - -function mgFetchSQL($sql) -{ - global $db; - return mgDBFetchSQL($db, $sql); -} - - -function mgFetchSQLColumn($sql, $column = 0) -{ - global $db; - return mgDBFetchSQLColumn($db, $sql, $column); -} - - -function mgDBBeginTransaction($dbh = FALSE) -{ - global $db; - return mgDBExecSQL(($dbh !== FALSE) ? $dbh : $db, "BEGIN TRANSACTION"); -} - - -function mgDBCommitTransaction($dbh = FALSE) -{ - global $db; - return mgDBExecSQL(($dbh !== FALSE) ? $dbh : $db, "COMMIT"); -} - - -function mgDBGetTableSchema($dbh, $schema) -{ - $res = []; - $driver = $dbh->getAttribute(PDO::ATTR_DRIVER_NAME); - - // Go through the table schema, definition by definition - foreach ($schema as $scol) - { - $tmp = []; - - // And each element of the one definition - // (like 'foo INTEGER AUTOINCREMENT') - foreach ($scol as $elem) - switch ($driver) - { - case "pgsql": - switch ($elem) - { - case "AUTOINCREMENT": - // For Postgres, use SERIAL for autoincrement and - // "cleverly" replace the 2nd element with SERIAL - // assuming that it is INTEGER or such. - $tmp[1] = "SERIAL"; - break; - - case "DATETIME": - $tmp[] = "TIMESTAMPTZ"; - break; - - default: - $tmp[] = $elem; - break; - } - break; - - case "mysql": - switch ($elem) - { - case "AUTOINCREMENT": - $tmp[] = "AUTO_INCREMENT"; - break; - - case "DATETIME": - $tmp[] = "TIMESTAMP"; - break; - - default: - $tmp[] = $elem; - break; - } - break; - - case "sqlite": - $tmp[] = $elem; - break; - - default: - die("Don't know how to handle PDO driver '".$driver."' yet.\n"); - } - - $res[] = implode(" ", $tmp); - } - - return implode(", ", $res); -} - - -function mgDBCreateOneTable($dbh, $name, $schema) -{ - return (mgDBExecSQL($dbh, "CREATE TABLE IF NOT EXISTS ".$name." (".$schema.")") !== FALSE) ? TRUE : FALSE; -} - ?> \ No newline at end of file