Reference in New Issue
Block a user
Delete Branch "feat/sitemap-batch-redesign"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Implements the two deferred redesigns. 4 files, all
php -lclean.#106 — Batch cursor pagination
BatchController::process()previously always queried offset 0 and relied onIS NULLto skip done rows — so a row that failed to insert was re-fetched on every chunk forever, and thecreated > 0stop-guard masked it by halting the batch early.Now it paginates by id cursor (
WHERE c.id > :lastId ORDER BY c.id):process()returnsexamined+last_id; the editor JS passes the cursor each chunk and stops when a chunk examines 0 rows (reaches 100% even with failures)#100 — Sitemap throttle + SEF URLs
(The security part — public-access filtering + atomic write — shipped earlier this cycle. These are the remaining two items.)
onContentAfterSaveRebuildSitemapregenerates at most once per 60s (SITEMAP_MIN_INTERVAL), so bulk edits/imports don't rebuild the whole sitemap on every save. Eventually consistent within the window.Route::link('site', …)so the sitemap matches the canonical URLs the plugin emits, with a try/catch fallback to the non-SEFindex.phpURL if routing fails. Worst case = today's behavior; never a broken URL.⚠️ Verification note
Static-only (
php -l). Two things warrant a runtime check on Joomla 6: thatRoute::link('site', …)produces correct SEF URLs from the admin/save context (else the fallback kicks in), and the cursor batch reaching 100% on a site with eligible articles. Both are designed to fail safe.Remaining minor follow-up: per-language sitemaps (optional).
Closes #100, #106.
🤖 Generated with Claude Code