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 width="17" height="16" viewBox="0 0 17 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M6.23975 14.9257C7.42725 15.2695 8.67725 14.5507 9.021 13.3632L9.17725 12.7382C9.30225 12.332 9.521 11.957 9.80225 11.6445L11.396 9.89447C11.6772 9.58197 11.646 9.11322 11.3647 8.83197C11.0522 8.55072 10.5835 8.58197 10.3022 8.89447L8.67725 10.6445C8.23975 11.1132 7.92725 11.707 7.73975 12.332L7.5835 12.957C7.4585 13.3632 7.05225 13.582 6.646 13.4882C6.23975 13.3632 6.021 12.957 6.11475 12.5507L6.30225 11.9257C6.48975 11.3007 6.771 10.707 7.146 10.1757C7.30225 9.95697 7.30225 9.64447 7.17725 9.39447C7.05225 9.14447 6.80225 8.98822 6.521 8.98822H2.3335C2.0835 8.98822 1.8335 8.76947 1.8335 8.48822C1.8335 8.30072 1.98975 8.11322 2.17725 8.01947C2.396 7.95697 2.5835 7.73822 2.646 7.51947C2.7085 7.26947 2.646 7.01947 2.4585 6.83197C2.396 6.73822 2.3335 6.64447 2.3335 6.48822C2.3335 6.26947 2.521 6.05072 2.73975 6.01947C3.021 5.95697 3.23975 5.76947 3.30225 5.55072C3.396 5.30072 3.36475 5.01947 3.2085 4.80072C3.146 4.73822 3.0835 4.61322 3.0835 4.48822C3.0835 4.30072 3.23975 4.11322 3.42725 4.01947C3.771 3.89447 3.9585 3.51947 3.86475 3.14447C3.86475 3.08197 3.8335 3.05072 3.8335 2.98822C3.8335 2.73822 4.0835 2.48822 4.3335 2.48822H7.396C7.80225 2.48822 8.17725 2.61322 8.48975 2.83197L10.4272 4.11322C10.771 4.36322 11.2397 4.26947 11.4585 3.89447C11.7085 3.55072 11.6147 3.11322 11.271 2.86322L9.3335 1.58197C8.771 1.20697 8.0835 0.98822 7.396 0.98822H4.3335C3.271 0.98822 2.396 1.86322 2.3335 2.92572C1.896 3.30072 1.5835 3.86322 1.5835 4.48822C1.5835 4.64447 1.61475 4.76947 1.646 4.89447C1.146 5.26947 0.833496 5.83197 0.833496 6.48822C0.833496 6.70697 0.864746 6.89447 0.927246 7.08197C0.583496 7.45697 0.333496 7.95697 0.333496 8.48822C0.333496 9.61322 1.23975 10.4882 2.3335 10.4882H5.23975C5.0835 10.832 4.9585 11.1757 4.86475 11.5195L4.67725 12.1445C4.3335 13.332 5.021 14.582 6.23975 14.9257ZM15.3335 11.9882C15.896 11.9882 16.3335 11.5507 16.3335 10.9882V3.98822C16.3335 3.45697 15.896 2.98822 15.3335 2.98822H13.3335C12.8022 2.98822 12.3335 3.45697 12.3335 3.98822V10.9882C12.3335 11.5507 12.8022 11.9882 13.3335 11.9882H15.3335Z" fill="#777777"/>
</svg>

After

Width:  |  Height:  |  Size: 2.1 KiB