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: Public/pics#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: Public/pics#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