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="25" height="25" viewBox="0 0 25 25" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M16.1875 4.875C16.0469 4.78125 15.9531 4.6875 15.9531 4.54688C15.9531 4.35938 16.0469 4.26562 16.1875 4.17188L19 3L20.125 0.234375C20.2188 0.09375 20.3125 0 20.4531 0C20.6406 0 20.7344 0.09375 20.8281 0.234375L22 3L24.7656 4.17188C24.9062 4.26562 25 4.35938 25 4.5C25 4.6875 24.9062 4.78125 24.7656 4.875L22 6L20.8281 8.8125C20.7344 8.95312 20.6406 9.04688 20.5 9.04688C20.3125 9.04688 20.2188 8.95312 20.125 8.8125L19 6L16.1875 4.875ZM24.7656 19.1719C24.9062 19.2656 25 19.3594 25 19.5C25 19.6875 24.9062 19.7812 24.7656 19.875L22 21L20.8281 23.8125C20.7344 23.9531 20.6406 24.0469 20.5 24.0469C20.3125 24.0469 20.2188 23.9531 20.125 23.8125L19 21L16.1875 19.875C16.0469 19.7812 15.9531 19.6875 15.9531 19.5469C15.9531 19.3594 16.0469 19.2656 16.1875 19.1719L19 18L20.125 15.2344C20.2188 15.0938 20.3125 15 20.4531 15C20.6406 15 20.7344 15.0938 20.8281 15.2344L22 18L24.7656 19.1719ZM19 12C18.9531 12.4688 18.7188 12.8438 18.3438 13.0312L13.4219 15.4688L10.9844 20.3906C10.7969 20.7656 10.4219 21.0469 10 21.0469C9.53125 21.0469 9.15625 20.7656 8.96875 20.3906L6.53125 15.4688L1.60938 13.0312C1.23438 12.8438 0.953125 12.4688 0.953125 12.0469C0.953125 11.5781 1.23438 11.2031 1.60938 11.0156L6.53125 8.57812L8.96875 3.65625C9.34375 2.90625 10.6094 2.90625 10.9844 3.65625L13.4219 8.57812L18.3438 11.0156C18.7188 11.2031 18.9531 11.5781 19 12ZM12.1094 13.6406L15.3438 12L12.1094 10.4062C11.875 10.3125 11.6875 10.125 11.5938 9.89062L10 6.65625L8.35938 9.89062C8.26562 10.125 8.07812 10.3125 7.84375 10.4062L4.60938 12L7.84375 13.6406C8.07812 13.7344 8.26562 13.9219 8.35938 14.1562L10 17.3906L11.5938 14.1562C11.6875 13.9219 11.875 13.7344 12.1094 13.6406Z" fill="#777777"/>
</svg>

After

Width:  |  Height:  |  Size: 1.7 KiB