Commit Graph
7 Commits
Author SHA1 Message Date
yorickandClaude Opus 4.6 a361df2668 Add OIDC login support for external identity providers
Adds "Login with <provider>" as an alternative login method using the
jumbojett/openid-connect-php library. OIDC users must already exist in
the database (matched by email). Configurable via OIDC_PROVIDER_URL,
OIDC_CLIENT_ID, OIDC_CLIENT_SECRET, and OIDC_PROVIDER_NAME constants.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 16:08:45 +01:00
yorickandClaude Opus 4.6 c862d14e45 Fix pinch-to-zoom being misinterpreted as swipe navigation
Multi-finger gestures like pinch-to-zoom were triggering photo
navigation because the touch handler didn't check touch count.
Move swipe detection to touchend, reject multi-touch gestures,
and require a minimum 40px horizontal distance.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 15:48:22 +01:00
yorickandClaude Opus 4.6 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
yorickandClaude Opus 4.6 a4d453792d Add Nix flake for dev environment
Provides PHP with imagick, pdo_mysql, pdo_sqlite extensions, composer,
and sqlite CLI.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 15:23:45 +01:00
yorickandClaude Opus 4.6 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
yorickandClaude Opus 4.6 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
yorickandClaude Opus 4.6 7f7067852a ViewPeople: fix incorrect pagination count
Tag::getCount was called without the third argument, causing it to
count tags where kind \!= 'Person' instead of kind = 'Person'.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 11:19:04 +01:00