Mercurial > hg > mgallery
comparison 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 |
comparison
equal
deleted
inserted
replaced
342:4dd202fffdf7 | 343:d6422e856ecd |
---|---|
99 | 99 |
100 "med_format" => [MG_STR_LC, "jpeg"], | 100 "med_format" => [MG_STR_LC, "jpeg"], |
101 "med_width" => [MG_INT, 1200], | 101 "med_width" => [MG_INT, 1200], |
102 "med_height" => [MG_INT, 900], | 102 "med_height" => [MG_INT, 900], |
103 "med_quality" => [MG_INT, 90], | 103 "med_quality" => [MG_INT, 90], |
104 | |
105 "backend" => [MG_STR_LC, "php"], | |
106 "sql_db" => [MG_STR, FALSE], | |
107 "sql_username" => [MG_STR, ""], | |
108 "sql_password" => [MG_STR, ""], | |
109 "sql_options" => [MG_STR_ARRAY, []], | |
110 ]; | 104 ]; |
111 | 105 |
112 | 106 |
113 function mgDebug($msg) | 107 function mgDebug($msg) |
114 { | 108 { |
378 | 372 |
379 return $str; | 373 return $str; |
380 } | 374 } |
381 | 375 |
382 | 376 |
383 function mgLogSQLError($dbh, $sql) | |
384 { | |
385 return mgError("SQL error '".implode("; ", $dbh->errorInfo())."' in statement: \"".$sql."\""); | |
386 } | |
387 | |
388 | |
389 function mgDBGetSQLParam($dbh, $type, $value) | |
390 { | |
391 switch ($type) | |
392 { | |
393 case "d": return intval($value); | |
394 case "s": return $dbh->quote($value); | |
395 case "b": return intval($value) ? 1 : 0; | |
396 case "D": | |
397 if ($value instanceOf DateTime) | |
398 { | |
399 switch ($dbh->getAttribute(PDO::ATTR_DRIVER_NAME)) | |
400 { | |
401 case "pgsql" : $fmt = "Y-m-d H:i:sP"; break; | |
402 case "sqlite" : $fmt = DATE_RFC3339; break; | |
403 case "mysql" : $fmt = "Y-m-d H:i:s"; break; | |
404 default : $fmt = DATE_RFC3339; | |
405 } | |
406 return $dbh->quote($value->format($fmt)); | |
407 } | |
408 else | |
409 return intval($value); | |
410 } | |
411 } | |
412 | |
413 | |
414 function mgSQLToDateTime($dbh, $stamp) | |
415 { | |
416 switch ($dbh->getAttribute(PDO::ATTR_DRIVER_NAME)) | |
417 { | |
418 case "pgsql": | |
419 // PostgreSQL 'timestamptz' format | |
420 $tmp = DateTime::createFromFormat("Y-m-d H:i:sP", $stamp); | |
421 break; | |
422 | |
423 case "sqlite": | |
424 // SQLite can use RFC3339 format | |
425 $tmp = DateTime::createFromFormat(DATE_RFC3339, $stamp); | |
426 break; | |
427 | |
428 case "mysql": | |
429 // MySQL uses UTC internally, no way to specify TZ | |
430 $tmp = DateTime::createFromFormat("Y-m-d H:i:s", $stamp); | |
431 break; | |
432 | |
433 default: | |
434 $tmp = NULL; | |
435 } | |
436 | |
437 // echo "<p>".$stamp." :: ".var_export(($tmp instanceOf DateTime) ? $tmp : NULL, TRUE)."</p>"; | |
438 return ($tmp instanceOf DateTime) ? $tmp : NULL; | |
439 } | |
440 | |
441 | |
442 function mgConnectSQLDB() | |
443 { | |
444 global $db; | |
445 try { | |
446 $db = new PDO(mgGetSetting("sql_db"), | |
447 mgGetSetting("sql_username", NULL), | |
448 mgGetSetting("sql_password", NULL), | |
449 mgGetSetting("sql_options", array())); | |
450 } | |
451 catch (PDOException $e) { | |
452 mgError("Could not connect to SQL database: ".$e->getMessage()."."); | |
453 return FALSE; | |
454 } | |
455 return ($db !== false); | |
456 } | |
457 | |
458 | |
459 function mgDBPrepareSQLUpdate($dbh, $table, $cond, $pairs, $values = NULL) | |
460 { | |
461 $sql = []; | |
462 foreach ($pairs as $name => $attr) | |
463 { | |
464 $sql[] = $name."=".mgDBGetSQLParam($dbh, | |
465 $attr, $values !== NULL ? $values[$name] : $name); | |
466 } | |
467 return | |
468 "UPDATE ".$table." SET ".implode(",", $sql). | |
469 ($cond != "" ? " ".$cond : ""); | |
470 } | |
471 | |
472 | |
473 function mgDBPrepareSQL_V($dbh, $fmt, $argv) | |
474 { | |
475 $len = strlen($fmt); | |
476 $sql = ""; | |
477 $argn = 0; | |
478 $argc = count($argv); | |
479 | |
480 for ($pos = 0; $pos < $len; $pos++) | |
481 { | |
482 if ($fmt[$pos] == "%") | |
483 { | |
484 if ($argn < $argc) | |
485 $sql .= mgDBGetSQLParam($dbh, $fmt[++$pos], $argv[$argn++]); | |
486 else | |
487 { | |
488 mgError("Invalid SQL statement format string '".$fmt. | |
489 "', not enough parameters specified (".$argn." of ".$argc.")"); | |
490 return FALSE; | |
491 } | |
492 } | |
493 else | |
494 $sql .= $fmt[$pos]; | |
495 } | |
496 | |
497 return $sql; | |
498 } | |
499 | |
500 | |
501 function mgDBPrepareSQL($dbh) | |
502 { | |
503 $argv = func_get_args(); | |
504 return mgDBPrepareSQL_V($dbh, $argv[1], array_splice($argv, 2)); | |
505 } | |
506 | |
507 | |
508 function mgPrepareSQL() | |
509 { | |
510 global $db; | |
511 $argv = func_get_args(); | |
512 return mgDBPrepareSQL_V($db, $argv[0], array_splice($argv, 1)); | |
513 } | |
514 | |
515 | |
516 function mgDBExecSQLInsert($dbh, $sql) | |
517 { | |
518 switch ($dbh->getAttribute(PDO::ATTR_DRIVER_NAME)) | |
519 { | |
520 case "pgsql": | |
521 if (($res = mgDBFetchSQLColumn($dbh, $sql." RETURNING id")) !== false) | |
522 return $res; | |
523 else | |
524 return FALSE; | |
525 | |
526 default: | |
527 if (mgDBExecSQL($dbh, $sql) !== false) | |
528 return $dbh->lastInsertId(); | |
529 else | |
530 return FALSE; | |
531 } | |
532 } | |
533 | |
534 | |
535 function mgDBExecSQL($dbh, $sql) | |
536 { | |
537 if (($res = $dbh->query($sql)) !== FALSE) | |
538 return $res; | |
539 else | |
540 { | |
541 mgLogSQLError($dbh, $sql); | |
542 return FALSE; | |
543 } | |
544 } | |
545 | |
546 | |
547 function mgDBFetchSQL($dbh, $sql) | |
548 { | |
549 if (($res = $dbh->query($sql)) !== FALSE) | |
550 return $res->fetch(); | |
551 else | |
552 { | |
553 mgLogSQLError($dbh, $sql); | |
554 return FALSE; | |
555 } | |
556 } | |
557 | |
558 | |
559 function mgDBFetchSQLColumn($dbh, $sql, $column = 0) | |
560 { | |
561 if (($res = $dbh->query($sql)) !== FALSE) | |
562 return $res->fetchColumn($column); | |
563 else | |
564 { | |
565 mgLogSQLError($dbh, $sql); | |
566 return FALSE; | |
567 } | |
568 } | |
569 | |
570 | |
571 function mgPrepareSQLUpdate($table, $cond, $pairs) | |
572 { | |
573 global $db; | |
574 return mgDBPrepareSQLUpdate($db, $table, $cond, $pairs); | |
575 } | |
576 | |
577 | |
578 function mgExecSQLInsert($sql) | |
579 { | |
580 global $db; | |
581 return mgDBExecSQLInsert($db, $sql); | |
582 } | |
583 | |
584 | |
585 function mgExecSQL($sql) | |
586 { | |
587 global $db; | |
588 return mgDBExecSQL($db, $sql); | |
589 } | |
590 | |
591 | |
592 function mgFetchSQL($sql) | |
593 { | |
594 global $db; | |
595 return mgDBFetchSQL($db, $sql); | |
596 } | |
597 | |
598 | |
599 function mgFetchSQLColumn($sql, $column = 0) | |
600 { | |
601 global $db; | |
602 return mgDBFetchSQLColumn($db, $sql, $column); | |
603 } | |
604 | |
605 | |
606 function mgDBBeginTransaction($dbh = FALSE) | |
607 { | |
608 global $db; | |
609 return mgDBExecSQL(($dbh !== FALSE) ? $dbh : $db, "BEGIN TRANSACTION"); | |
610 } | |
611 | |
612 | |
613 function mgDBCommitTransaction($dbh = FALSE) | |
614 { | |
615 global $db; | |
616 return mgDBExecSQL(($dbh !== FALSE) ? $dbh : $db, "COMMIT"); | |
617 } | |
618 | |
619 | |
620 function mgDBGetTableSchema($dbh, $schema) | |
621 { | |
622 $res = []; | |
623 $driver = $dbh->getAttribute(PDO::ATTR_DRIVER_NAME); | |
624 | |
625 // Go through the table schema, definition by definition | |
626 foreach ($schema as $scol) | |
627 { | |
628 $tmp = []; | |
629 | |
630 // And each element of the one definition | |
631 // (like 'foo INTEGER AUTOINCREMENT') | |
632 foreach ($scol as $elem) | |
633 switch ($driver) | |
634 { | |
635 case "pgsql": | |
636 switch ($elem) | |
637 { | |
638 case "AUTOINCREMENT": | |
639 // For Postgres, use SERIAL for autoincrement and | |
640 // "cleverly" replace the 2nd element with SERIAL | |
641 // assuming that it is INTEGER or such. | |
642 $tmp[1] = "SERIAL"; | |
643 break; | |
644 | |
645 case "DATETIME": | |
646 $tmp[] = "TIMESTAMPTZ"; | |
647 break; | |
648 | |
649 default: | |
650 $tmp[] = $elem; | |
651 break; | |
652 } | |
653 break; | |
654 | |
655 case "mysql": | |
656 switch ($elem) | |
657 { | |
658 case "AUTOINCREMENT": | |
659 $tmp[] = "AUTO_INCREMENT"; | |
660 break; | |
661 | |
662 case "DATETIME": | |
663 $tmp[] = "TIMESTAMP"; | |
664 break; | |
665 | |
666 default: | |
667 $tmp[] = $elem; | |
668 break; | |
669 } | |
670 break; | |
671 | |
672 case "sqlite": | |
673 $tmp[] = $elem; | |
674 break; | |
675 | |
676 default: | |
677 die("Don't know how to handle PDO driver '".$driver."' yet.\n"); | |
678 } | |
679 | |
680 $res[] = implode(" ", $tmp); | |
681 } | |
682 | |
683 return implode(", ", $res); | |
684 } | |
685 | |
686 | |
687 function mgDBCreateOneTable($dbh, $name, $schema) | |
688 { | |
689 return (mgDBExecSQL($dbh, "CREATE TABLE IF NOT EXISTS ".$name." (".$schema.")") !== FALSE) ? TRUE : FALSE; | |
690 } | |
691 | |
692 ?> | 377 ?> |