Commit Graph

172 Commits

Author SHA1 Message Date
d788391f4a Refactor fragile SQLite regex rewrites into driver-aware query methods
Move the ON DUPLICATE KEY UPDATE and UPDATE...AS alias SQL rewrites out
of Database::rewriteForSQLite() and into Tag::createNew() and
Tag::recount() as driver-aware branches via a new Database::getDriver()
method. This keeps dialect-specific SQL explicit at the call site rather
than buried in fragile regex transforms.

Also fix Tag::getAlbums() and Tag::getPeople() failing on SQLite when
id_parent is NULL by adding an IS NULL fallback for root-level queries.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 15:40:46 +01:00
5832ce6228 Dispatcher: fix trigger404 using nonexistent ViewErrorPage class
Use the existing errorPage() helper, consistent with trigger400 and
trigger403.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 15:23:44 +01:00
a71b8c9717 Add SQLite support as alternative database backend
Support config-driven choice between MySQL and SQLite via DB_DRIVER
constant, defaulting to MySQL for backward compatibility. All SQL
adaptation lives in Database.php (UDFs + query rewriting), so model
files need no changes.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

SQLite: remove FK constraints, revert 0→null sentinel changes

The SQLite schema had FOREIGN KEY constraints that don't exist in the
MySQL schema. These forced a cascade of 0→null changes to satisfy FK
enforcement. Removing them keeps the two backends behaviorally consistent
and minimises the diff. Real SQLite compat fixes (UDFs, query rewriting,
rowCount→count, Router fixes, EditAlbum guard) are preserved.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 15:23:41 +01:00
b0ee3081a6 Tag: invert behaviour of getCount and getOffset methods 2026-02-14 12:56:50 +01:00
913fb974c7 Fix two more stray queries 2025-09-18 11:10:04 +02:00
92b2cfa391 Merge pull request 'Simplify and clarify Forms and FormViews' (#54) from form-views into master
Reviewed-on: #54
2025-09-18 11:08:42 +02:00
48377ec823 Update stray queries to PDO-style parameters 2025-09-18 11:07:55 +02:00
8373c5d2d5 Form: reorder class properties and rework constructor 2025-09-11 20:01:36 +02:00
e69139e591 Form: introduce 'after_fields' content as well 2025-09-11 20:00:22 +02:00
f88d1885a2 Form: rename 'content_above' to 'before_fields' 2025-09-11 19:59:53 +02:00
be51946436 Form: rename 'content_below' to 'buttons_extra' 2025-09-11 19:59:30 +02:00
f82e952247 Asset: fix createNew query 2025-08-21 21:59:22 +02:00
26d8063c45 Asset/Thumbnail: replace 'NULL' placeholder strings with actual null values 2025-05-16 11:57:07 +02:00
3dfda45681 GenericTable: better handling of null values for timestamps 2025-05-16 11:54:05 +02:00
219260c57f Member: set empty reset key for new users 2025-05-16 11:53:59 +02:00
4b26c677bb AssetIterator: rewrite to standard Iterator interface 2025-05-13 23:29:43 +02:00
9989ba1fa7 CachedPDOIterator: introduce rewindable PDOStatement iterator 2025-05-13 22:51:12 +02:00
8dbf1dce7b Database: start reworking the DBA to work with PDO 2025-05-13 20:51:43 +02:00
7faa59562d Database: address PHP 8.5 mysqli deprecation warning 2025-04-18 19:26:50 +02:00
fc9de822d8 Merge branch 'master' into password-reset 2025-03-02 15:00:34 +01:00
041b56ff8c ErrorPage: display debug info in separate box 2025-02-26 15:33:18 +01:00
13cbe08219 Merge pull request 'Replace deprecated trigger_error calls with exceptions' (#52) from trigger-error into master
Reviewed-on: #52
2025-02-26 15:29:13 +01:00
85ed6ba8d3 Replace deprecated trigger_error calls with exceptions 2025-02-13 11:38:45 +01:00
00ca931cf3 GenericTable: rework timestamp formatting 2025-01-08 19:11:10 +01:00
7c25d628e1 GenericTable: remove unused formatting types 2025-01-08 19:11:10 +01:00
9740416cb2 Management controllers: make format functions first-level 2025-01-08 19:11:10 +01:00
6ca3ee6d9d GenericTable: move link generation out of from formatting options 2025-01-08 19:11:10 +01:00
77809faada GenericTable: rename 'parse' option to 'format' 2025-01-08 19:11:10 +01:00
cc0ff71ef7 Management controllers: move table queries into models 2025-01-08 19:11:10 +01:00
1e26a51d08 ErrorLog: use DELETE FROM instead of TRUNCATE 2024-12-22 15:35:50 +01:00
bb8a8bad27 GenericTable: refactor order and pagination initalisation 2024-12-19 15:00:00 +01:00
06c95853f5 GenericTable: drop $tableIsSortable property 2024-12-19 12:01:00 +01:00
e57289eeb6 GenericTable: drop support for get_count_params, get_data_params 2024-12-19 11:56:00 +01:00
adfb5a2198 ResetPassword: add time-out to password resets; prevent repeated mails 2024-11-05 17:19:59 +01:00
084658820e Authentication: replace checkExists with Member::fromId 2024-11-05 16:46:53 +01:00
8eaeb6c332 Authentication: remove remnants of user agent checks 2024-11-05 16:45:40 +01:00
9c86d2c475 Authentication: replace getUserId with Member::fromEmailAddress 2024-11-05 16:44:54 +01:00
3de4e9391c Authentication: reorder methods alphabetically 2024-11-05 16:39:42 +01:00
814a1f82f6 ManageAssets: add thumbnails to asset table 2024-08-27 12:00:46 +02:00
d6f39a3410 Database: patch error handling to account for exceptions thrown by mysqli_query 2024-08-27 11:46:18 +02:00
6ec5994de0 ViewPhotoAlbum: build edit menu in controller 2024-01-18 13:18:22 +01:00
0487ad16b9 Asset: remove old setKeyData method 2024-01-17 17:54:18 +01:00
8613054d69 Asset: introduce save method 2024-01-17 17:51:25 +01:00
ec2d702a0d ViewPhoto: simplify filter verification 2024-01-15 11:33:43 +01:00
accf093935 PageIndex: rewrite getLink to be way less messy 2024-01-15 00:51:06 +01:00
d8c3e76df6 ViewPhoto: take filter into account for prev/next links 2024-01-15 00:43:02 +01:00
f33a7e397c Asset: combine getUrlFor{Next,Previous}InSet into one private method 2024-01-15 00:19:39 +01:00
6a25ecec23 ViewPhotoAlbum: add method to filter by id_user_uploaded 2024-01-14 21:06:54 +01:00
16683d2f1f Tag: add getContributorList method 2024-01-14 21:06:34 +01:00
44ca9ed1a5 Fix dereferencing $tag when null 2024-01-14 16:15:23 +01:00