Snapshot: MLS sync fixes, image refresh, plugin/theme updates

MLS plugin fixes from this session:
- Fix silent insert failures: location column NOT NULL was rejecting wpdb->insert calls,
  causing ~18k new properties since Dec 2025 to be lost. Inserts now build raw SQL
  with ST_PointFromText so the spatial column is populated atomically.
- Auto-refresh expired media URLs in MLS_Media_Handler::fetch_and_cache(), guarded by
  a property-level GET_LOCK so concurrent fetches share one API refresh.
- Normalize WP_Error to null in mls_get_property_image() so callers can rely on the
  documented string|null contract.
- Support comma-separated property_type filters in MLS_Query and MLS_Cluster so the
  homepage "View All Commercial" link (?property_type=Commercial+Sale,Land,Farm)
  actually filters correctly.
- Incremental sync now looks back 10 minutes past the latest modification timestamp
  as a safety margin against missed records.
- Smart sync exits silently (info-level, not warning) when a full sync is in progress.

Operational:
- New cron: weekly full sync Sundays at 3 AM (/usr/local/bin/mls-full-sync).
- New cron: hourly 2GB cap on mls-thumbnails/ and cache/transformed-images/
  (/usr/local/bin/mls-image-cache-cap).
- Logrotate config for wp-content/debug.log (2-day retention, daily rotation,
  delaycompress).

Repo policy:
- CLAUDE.md updated with explicit "commit everything except build artifacts" policy.
- .gitignore: untrack runtime image caches and debug.log rotations.

Other modifications in this snapshot are pre-existing in-flight theme/plugin/db_content_updates work.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
root
2026-04-29 15:32:23 +00:00
parent 57b752f54e
commit b6df4dbb92
5385 changed files with 838580 additions and 2416 deletions
@@ -0,0 +1 @@
<svg viewBox="0 0 48 49" xmlns="http://www.w3.org/2000/svg"><path d="M48.25 24c0-13.255-10.745-24-24-24s-24 10.745-24 24 10.745 24 24 24 24-10.745 24-24Z" fill="#FCF1EA"/><path xmlns="http://www.w3.org/2000/svg" d="M33 15.5H30.75V13.0625C30.75 12.7812 30.4688 12.5 30.1875 12.5H29.8125C29.4844 12.5 29.25 12.7812 29.25 13.0625V15.5H20.25V13.0625C20.25 12.7812 19.9688 12.5 19.6875 12.5H19.3125C18.9844 12.5 18.75 12.7812 18.75 13.0625V15.5H16.5C15.2344 15.5 14.25 16.5312 14.25 17.75V34.25C14.25 35.5156 15.2344 36.5 16.5 36.5H33C34.2188 36.5 35.25 35.5156 35.25 34.25V17.75C35.25 16.5312 34.2188 15.5 33 15.5ZM16.5 17H33C33.375 17 33.75 17.375 33.75 17.75V20H15.75V17.75C15.75 17.375 16.0781 17 16.5 17ZM33 35H16.5C16.0781 35 15.75 34.6719 15.75 34.25V21.5H33.75V34.25C33.75 34.6719 33.375 35 33 35ZM21.1875 27.5C21.4688 27.5 21.75 27.2656 21.75 26.9375V25.0625C21.75 24.7812 21.4688 24.5 21.1875 24.5H19.3125C18.9844 24.5 18.75 24.7812 18.75 25.0625V26.9375C18.75 27.2656 18.9844 27.5 19.3125 27.5H21.1875ZM25.6875 27.5C25.9688 27.5 26.25 27.2656 26.25 26.9375V25.0625C26.25 24.7812 25.9688 24.5 25.6875 24.5H23.8125C23.4844 24.5 23.25 24.7812 23.25 25.0625V26.9375C23.25 27.2656 23.4844 27.5 23.8125 27.5H25.6875ZM30.1875 27.5C30.4688 27.5 30.75 27.2656 30.75 26.9375V25.0625C30.75 24.7812 30.4688 24.5 30.1875 24.5H28.3125C27.9844 24.5 27.75 24.7812 27.75 25.0625V26.9375C27.75 27.2656 27.9844 27.5 28.3125 27.5H30.1875ZM25.6875 32C25.9688 32 26.25 31.7656 26.25 31.4375V29.5625C26.25 29.2812 25.9688 29 25.6875 29H23.8125C23.4844 29 23.25 29.2812 23.25 29.5625V31.4375C23.25 31.7656 23.4844 32 23.8125 32H25.6875ZM21.1875 32C21.4688 32 21.75 31.7656 21.75 31.4375V29.5625C21.75 29.2812 21.4688 29 21.1875 29H19.3125C18.9844 29 18.75 29.2812 18.75 29.5625V31.4375C18.75 31.7656 18.9844 32 19.3125 32H21.1875ZM30.1875 32C30.4688 32 30.75 31.7656 30.75 31.4375V29.5625C30.75 29.2812 30.4688 29 30.1875 29H28.3125C27.9844 29 27.75 29.2812 27.75 29.5625V31.4375C27.75 31.7656 27.9844 32 28.3125 32H30.1875Z" fill="#E27730"/></svg>

After

Width:  |  Height:  |  Size: 2.0 KiB