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 49 48" xmlns="http://www.w3.org/2000/svg"><path d="M48.333 24c0-13.255-10.745-24-24-24s-24 10.745-24 24 10.745 24 24 24 24-10.745 24-24Z" fill="#e6f0f7"/><path d="m35.648 22.588-9.89-9.89c-.423-.423-.985-.704-1.595-.704h-9.562a2.25 2.25 0 0 0-2.25 2.25v9.61c0 .609.234 1.171.656 1.593l9.89 9.89c.891.891 2.345.891 3.188 0l9.563-9.562c.89-.843.89-2.296 0-3.187Zm-1.032 2.156-9.562 9.563c-.328.28-.797.28-1.078 0l-9.938-9.938a.753.753 0 0 1-.234-.515h.047v-9.61c0-.375.328-.75.75-.75h9.562c.188 0 .375.094.516.235l9.938 9.937c.28.281.28.75 0 1.078Zm-15.515-8.25a2.25 2.25 0 0 0-2.25 2.25 2.22 2.22 0 0 0 2.25 2.25 2.25 2.25 0 0 0 2.25-2.25c0-1.219-1.031-2.25-2.25-2.25Z" fill="#056aab"/></svg>

After

Width:  |  Height:  |  Size: 709 B

@@ -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="M14.7812 27.8517C14.125 26.9142 13.75 25.7423 13.75 24.4767C13.75 21.1954 16.4219 18.4767 19.75 18.4767H27.25V21.4767C27.25 22.8829 28.9375 23.5392 29.8281 22.5079L33.2031 18.7579C33.7188 18.1954 33.7188 17.3048 33.2031 16.7423L29.8281 12.9923C28.9375 11.9611 27.25 12.6173 27.25 14.0236V16.9767H19.75C15.5781 16.9767 12.25 20.3517 12.25 24.4767C12.25 26.0704 12.7188 27.5704 13.5625 28.7892C13.7969 29.0704 14.2188 29.1173 14.4531 28.8361L14.6875 28.5548C14.875 28.3673 14.9219 28.0861 14.7812 27.8517ZM34.8906 20.2111C34.6562 19.9298 34.2344 19.8829 34 20.1642L33.7656 20.4454C33.5781 20.6329 33.5312 20.9142 33.6719 21.1486C34.3281 22.0861 34.75 23.2579 34.75 24.4767C34.75 27.8048 32.0312 30.4767 28.75 30.4767H21.25V27.5236C21.25 26.1173 19.5156 25.4611 18.625 26.4923L15.25 30.2423C14.7344 30.8048 14.7344 31.6954 15.25 32.2579L18.625 36.0079C19.5156 37.0392 21.25 36.3829 21.25 34.9767V31.9767H28.75C32.875 31.9767 36.25 28.6486 36.25 24.4767C36.25 22.9298 35.7344 21.4298 34.8906 20.2111Z" fill="#E27730"/></svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

@@ -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

@@ -0,0 +1 @@
<svg viewBox="0 0 49 48" 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 d="M24.25 18.75c-2.484 0-4.5 2.39-4.5 5.25 0 2.906 2.016 5.25 4.5 5.25s4.5-2.344 4.5-5.25c0-2.86-2.016-5.25-4.5-5.25Zm0 9c-1.688 0-3-1.64-3-3.75 0-2.063 1.313-3.75 3-3.75 1.64 0 3 1.688 3 3.75 0 2.11-1.36 3.75-3 3.75ZM37.75 15h-27c-.844 0-1.5.703-1.5 1.5v15c0 .844.656 1.5 1.5 1.5h27c.797 0 1.5-.656 1.5-1.5v-15c0-.797-.703-1.5-1.5-1.5Zm-27 1.5h3c0 1.688-1.36 3-3 3v-3Zm0 15v-3c1.64 0 3 1.36 3 3h-3Zm27 0h-3c0-1.64 1.313-3 3-3v3Zm0-4.5c-2.484 0-4.5 2.063-4.5 4.5h-18c0-2.438-2.063-4.5-4.5-4.5v-6c2.438 0 4.5-2.016 4.5-4.5h18c0 2.484 2.016 4.5 4.5 4.5v6Zm0-7.5c-1.688 0-3-1.313-3-3h3v3Z" fill="#E27730"/></svg>

After

Width:  |  Height:  |  Size: 786 B

@@ -0,0 +1 @@
<svg viewBox="0 0 48 48" xmlns="http://www.w3.org/2000/svg"><path d="M48.333 24c0-13.255-10.745-24-24-24s-24 10.745-24 24 10.745 24 24 24 24-10.745 24-24Z" fill="#e6f0f7"/><path d="M35.25 13.5H12.75C11.4844 13.5 10.5 14.5312 10.5 15.75V32.25C10.5 33.5156 11.4844 34.5 12.75 34.5H35.25C36.4688 34.5 37.5 33.5156 37.5 32.25V15.75C37.5 14.5312 36.4688 13.5 35.25 13.5ZM12.75 15H35.25C35.625 15 36 15.375 36 15.75V18H12V15.75C12 15.375 12.3281 15 12.75 15ZM35.25 33H12.75C12.3281 33 12 32.6719 12 32.25V22.5H36V32.25C36 32.6719 35.625 33 35.25 33ZM19.5 29.0625C19.5 28.7812 19.2188 28.5 18.9375 28.5H15.5625C15.2344 28.5 15 28.7812 15 29.0625V29.4375C15 29.7656 15.2344 30 15.5625 30H18.9375C19.2188 30 19.5 29.7656 19.5 29.4375V29.0625ZM28.5 29.0625C28.5 28.7812 28.2188 28.5 27.9375 28.5H21.5625C21.2344 28.5 21 28.7812 21 29.0625V29.4375C21 29.7656 21.2344 30 21.5625 30H27.9375C28.2188 30 28.5 29.7656 28.5 29.4375V29.0625Z" fill="#056aab"/></svg>

After

Width:  |  Height:  |  Size: 948 B

@@ -0,0 +1 @@
<svg viewBox="0 0 48 49" xmlns="http://www.w3.org/2000/svg"><path d="M48 24.5c0-13.255-10.745-24-24-24S0 11.245 0 24.5s10.745 24 24 24 24-10.745 24-24Z" fill="#e6f0f7"/><path d="M35.156 20.234c-.093-.093-1.031-.843-2.156-1.78V17c0-.797-.703-1.5-1.5-1.5h-2.203a5.38 5.38 0 0 1-.469-.375C27.797 14.328 26.016 12.5 24 12.5c-2.063 0-3.797 1.781-4.875 2.625a5.364 5.364 0 0 1-.469.375H16.5c-.844 0-1.5.703-1.5 1.5v1.453c-1.172.938-2.11 1.688-2.203 1.781-.516.422-.797 1.032-.797 1.735V34.25a2.22 2.22 0 0 0 2.25 2.25h19.5A2.25 2.25 0 0 0 36 34.25V21.969c0-.657-.328-1.313-.844-1.735ZM24 14c.984 0 2.063.797 2.953 1.5H21c.89-.703 1.969-1.5 3-1.5Zm-7.5 3h15v8.156c-1.547 1.219-3.094 2.438-4.078 3.235-.797.656-2.344 2.156-3.422 2.109-1.125.047-2.672-1.453-3.469-2.11-.984-.796-2.531-2.015-4.031-3.234V17Zm-3 4.969a.78.78 0 0 1 .234-.563c.094-.047.563-.468 1.266-.984v3.515a23.766 23.766 0 0 1-1.5-1.218v-.75Zm21 12.281c0 .422-.375.75-.75.75h-19.5a.74.74 0 0 1-.75-.75v-9.61c1.969 1.641 4.64 3.75 6.094 4.922.984.797 2.672 2.485 4.406 2.438 1.688.047 3.375-1.64 4.36-2.438 1.453-1.171 4.124-3.28 6.14-4.921v9.609Zm0-11.531c-.469.375-.984.797-1.5 1.218v-3.515c.656.515 1.125.937 1.219.984.14.14.281.328.281.563v.75Zm-11.813 1.078 2.11.656c.281.047.422.281.422.563 0 .375-.235.609-.563.609h-1.312c-.188 0-.422-.047-.61-.14a.36.36 0 0 0-.468.046l-.516.516a.352.352 0 0 0 0 .562c.422.328.938.516 1.5.516v.75c0 .234.14.375.375.375h.75a.37.37 0 0 0 .375-.375v-.75c1.078 0 1.969-.938 1.969-2.11 0-.937-.61-1.78-1.453-2.015l-2.11-.656c-.281-.047-.422-.282-.422-.563 0-.375.235-.656.563-.656h1.312c.188 0 .422.094.61.188a.36.36 0 0 0 .468-.047l.516-.516a.352.352 0 0 0 0-.563 2.39 2.39 0 0 0-1.453-.515v-.797a.403.403 0 0 0-.375-.375h-.75a.37.37 0 0 0-.375.375v.797c-1.125 0-2.016.937-2.016 2.11 0 .937.61 1.734 1.453 2.015Z" fill="#056aab"/></svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

@@ -0,0 +1 @@
<svg viewBox="0 0 48 49" xmlns="http://www.w3.org/2000/svg"><path d="M48 24.5c0-13.255-10.745-24-24-24S0 11.245 0 24.5s10.745 24 24 24 24-10.745 24-24Z" fill="#e6f0f7"/><path xmlns="http://www.w3.org/2000/svg" d="M14.5312 27.3516C13.875 26.4141 13.5 25.2422 13.5 23.9766C13.5 20.6953 16.1719 17.9766 19.5 17.9766H27V20.9766C27 22.3828 28.6875 23.0391 29.5781 22.0078L32.9531 18.2578C33.4688 17.6953 33.4688 16.8047 32.9531 16.2422L29.5781 12.4922C28.6875 11.4609 27 12.1172 27 13.5234V16.4766H19.5C15.3281 16.4766 12 19.8516 12 23.9766C12 25.5703 12.4688 27.0703 13.3125 28.2891C13.5469 28.5703 13.9688 28.6172 14.2031 28.3359L14.4375 28.0547C14.625 27.8672 14.6719 27.5859 14.5312 27.3516ZM34.6406 19.7109C34.4062 19.4297 33.9844 19.3828 33.75 19.6641L33.5156 19.9453C33.3281 20.1328 33.2812 20.4141 33.4219 20.6484C34.0781 21.5859 34.5 22.7578 34.5 23.9766C34.5 27.3047 31.7812 29.9766 28.5 29.9766H21V27.0234C21 25.6172 19.2656 24.9609 18.375 25.9922L15 29.7422C14.4844 30.3047 14.4844 31.1953 15 31.7578L18.375 35.5078C19.2656 36.5391 21 35.8828 21 34.4766V31.4766H28.5C32.625 31.4766 36 28.1484 36 23.9766C36 22.4297 35.4844 20.9297 34.6406 19.7109Z" fill="#056AAB"/></svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

@@ -0,0 +1 @@
<svg viewBox="0 0 49 48" 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="#e6f0f7"/><path d="M24.25 18.75c-2.484 0-4.5 2.39-4.5 5.25 0 2.906 2.016 5.25 4.5 5.25s4.5-2.344 4.5-5.25c0-2.86-2.016-5.25-4.5-5.25Zm0 9c-1.688 0-3-1.64-3-3.75 0-2.063 1.313-3.75 3-3.75 1.64 0 3 1.688 3 3.75 0 2.11-1.36 3.75-3 3.75ZM37.75 15h-27c-.844 0-1.5.703-1.5 1.5v15c0 .844.656 1.5 1.5 1.5h27c.797 0 1.5-.656 1.5-1.5v-15c0-.797-.703-1.5-1.5-1.5Zm-27 1.5h3c0 1.688-1.36 3-3 3v-3Zm0 15v-3c1.64 0 3 1.36 3 3h-3Zm27 0h-3c0-1.64 1.313-3 3-3v3Zm0-4.5c-2.484 0-4.5 2.063-4.5 4.5h-18c0-2.438-2.063-4.5-4.5-4.5v-6c2.438 0 4.5-2.016 4.5-4.5h18c0 2.484 2.016 4.5 4.5 4.5v6Zm0-7.5c-1.688 0-3-1.313-3-3h3v3Z" fill="#056aab"/></svg>

After

Width:  |  Height:  |  Size: 786 B

@@ -0,0 +1 @@
<svg viewBox="0 0 15 15" xmlns="http://www.w3.org/2000/svg"><path d="M7.5.5c-3.867 0-7 3.161-7 7 0 3.867 3.133 7 7 7 3.839 0 7-3.133 7-7 0-3.839-3.161-7-7-7Zm0 12.645A5.626 5.626 0 0 1 1.855 7.5 5.644 5.644 0 0 1 7.5 1.855c3.105 0 5.645 2.54 5.645 5.645A5.644 5.644 0 0 1 7.5 13.145Zm0-9.54c-.677 0-1.185.536-1.185 1.185 0 .678.508 1.186 1.185 1.186.65 0 1.185-.508 1.185-1.186 0-.649-.536-1.185-1.185-1.185Zm1.58 7.17v-.678c0-.17-.169-.339-.338-.339h-.339V6.935c0-.169-.17-.338-.338-.338H6.258a.343.343 0 0 0-.339.338v.678c0 .197.141.339.34.339h.338v1.806h-.339a.343.343 0 0 0-.339.339v.677c0 .198.141.339.34.339h2.483c.17 0 .339-.141.339-.339Z" fill="#a7aaad"/></svg>

After

Width:  |  Height:  |  Size: 670 B