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,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="50" height="49" viewBox="0 0 50 49">
<path fill="#7a30e2" d="M27.582 38.223c5.164 1.554 6.797 3.16 8.387 8.218.125.407.715.407.84 0 1.59-5.058 3.222-6.664 8.386-8.218.414-.121.414-.7 0-.825-5.164-1.554-6.797-3.16-8.386-8.218-.125-.407-.715-.407-.84 0-1.59 5.062-3.227 6.664-8.387 8.218-.414.125-.414.704 0 .825ZM4.082 23.5c9.367-2.82 12.336-5.73 15.215-14.91.23-.738 1.297-.738 1.527 0 2.883 9.18 5.848 12.09 15.219 14.91a.78.78 0 0 1 0 1.5c-9.371 2.824-12.34 5.73-15.219 14.914-.23.738-1.297.738-1.527 0C16.418 30.73 13.449 27.82 4.082 25a.78.78 0 0 1 0-1.5Zm23.5-13.508c5.164-1.555 6.797-3.156 8.387-8.215.125-.41.715-.41.84 0 1.59 5.059 3.222 6.66 8.386 8.215a.431.431 0 0 1 0 .828c-5.164 1.555-6.797 3.157-8.386 8.215-.125.41-.715.41-.84 0-1.59-5.058-3.227-6.66-8.387-8.215a.431.431 0 0 1 0-.828Zm0 0"/>
</svg>

After

Width:  |  Height:  |  Size: 863 B