Files
root b6df4dbb92 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>
2026-04-29 15:32:23 +00:00

8 lines
2.3 KiB
XML
Executable File

<svg xmlns="http://www.w3.org/2000/svg" width="57" height="59" fill="#E27730">
<path d="M45.6 19.69c.84.84 1.4 2.06 1.4 3.18V54.1a4.48 4.48 0 0 1-4.5 4.41H15.4a4.4 4.4 0 0 1-4.4-4.4v-39c0-2.54 1.97-4.5 4.4-4.6h19.23c1.12 0 2.34.56 3.18 1.4l7.78 7.79ZM35 13.59v9h8.9c-.09-.28-.18-.56-.37-.75l-7.87-7.87c-.2-.19-.47-.28-.66-.38Zm1.5 42v-3a3.08 3.08 0 0 0-3.19-3.09c-1.12 0-1.97.66-4.31.66-2.44 0-3.28-.66-4.4-.66a3 3 0 0 0-3.1 3.1v3h15Zm7.5-1.5V25.5h-9.75c-1.31 0-2.25-.94-2.25-2.16V13.5H15.4c-.74 0-1.5.75-1.5 1.6v39c0 .74.76 1.5 1.5 1.5h3.1v-3c0-1.32.38-2.44 1.03-3.48a6.1 6.1 0 0 1 5.06-2.62c1.79 0 2.25.66 4.41.66 2.06 0 2.53-.66 4.31-.66a6.1 6.1 0 0 1 5.06 2.63 6.37 6.37 0 0 1 1.13 3.46v3h3c.75 0 1.5-.75 1.5-1.5ZM21.5 37.5c0-4.13 3.28-7.5 7.5-7.5 4.13 0 7.5 3.38 7.5 7.5 0 4.22-3.38 7.5-7.5 7.5a7.4 7.4 0 0 1-7.5-7.5Zm12 0c0-2.44-2.06-4.5-4.5-4.5a4.5 4.5 0 0 0-4.5 4.5c0 2.53 1.97 4.5 4.5 4.5a4.5 4.5 0 0 0 4.5-4.5Z"/>
<path fill-opacity=".25" d="M10.82 8.81c.16 0 .33-.05.45-.15a.47.47 0 0 0 0-.76L7.02 4.4a.75.75 0 0 0-.91 0 .47.47 0 0 0 0 .75l4.25 3.5c.12.11.29.16.46.16Z"/>
<path fill-opacity=".25" d="M10.82 8.95a.9.9 0 0 0 .57-.2c.15-.12.24-.3.24-.47a.61.61 0 0 0-.24-.47L7.14 4.3a.94.94 0 0 0-1.15 0 .61.61 0 0 0-.23.47c0 .17.08.34.23.47l4.25 3.5c.16.13.36.2.58.2ZM6.57 4.37c.12 0 .25.04.34.12L11.16 8c.1.08.14.18.14.29 0 .1-.05.2-.14.28a.54.54 0 0 1-.34.12.54.54 0 0 1-.35-.12l-4.25-3.5a.37.37 0 0 1-.14-.29c0-.1.05-.2.14-.28.1-.07.22-.12.35-.12Zm-4.84 9.46h.1l7.07-.88c.35-.05.6-.32.54-.61-.05-.3-.38-.5-.73-.45l-7.08.88c-.35.04-.6.31-.54.6.05.27.32.46.64.46Z"/>
<path fill-opacity=".25" d="M1.73 13.96h.12l7.07-.88c.45-.05.75-.4.68-.76-.06-.36-.48-.62-.92-.56l-7.07.87c-.44.06-.75.4-.68.76.06.33.4.57.8.57Zm7.07-1.94c.24 0 .45.14.48.34.04.22-.14.42-.4.46l-7.08.87h-.07c-.24 0-.45-.14-.48-.34-.04-.21.14-.42.4-.45l7.08-.88h.07Zm7.04-4.87c.31 0 .59-.19.64-.45L17.54.87c.05-.3-.2-.57-.55-.61-.35-.05-.68.15-.73.45L15.2 6.54c-.06.3.19.56.54.6l.1.01Z"/>
<path fill-opacity=".25" d="M15.84 7.29c.4 0 .74-.25.8-.57L17.7.89a.58.58 0 0 0-.15-.5.93.93 0 0 0-1.13-.14.66.66 0 0 0-.32.44l-1.07 5.83a.6.6 0 0 0 .15.5.84.84 0 0 0 .66.27ZM16.9.39h.07c.13.02.24.07.32.16.08.08.1.19.09.3l-1.06 5.83c-.04.2-.24.34-.48.34h-.08a.51.51 0 0 1-.32-.16.35.35 0 0 1-.08-.3L16.42.73a.4.4 0 0 1 .19-.27.56.56 0 0 1 .29-.07Z"/>
</svg>