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>
@@ -0,0 +1 @@
|
||||
<svg width="12" height="12" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M11.719.188c.14 0 .281.14.281.28v4.5c0 .165-.14.282-.281.282h-4.5a.27.27 0 0 1-.282-.281v-.633a.27.27 0 0 1 .282-.281l2.953.07C9.445 2.531 7.852 1.406 6 1.406A4.586 4.586 0 0 0 1.406 6 4.571 4.571 0 0 0 6 10.594a4.546 4.546 0 0 0 3.047-1.149c.117-.093.281-.093.375 0l.469.47a.297.297 0 0 1 0 .42A5.889 5.889 0 0 1 6 11.813c-3.21 0-5.813-2.578-5.813-5.789C.165 2.836 2.767.211 5.978.211a5.732 5.732 0 0 1 4.851 2.578L10.781.492c0-.164.117-.304.281-.304h.657Z" fill="#2271B1"/></svg>
|
||||
|
After Width: | Height: | Size: 565 B |
@@ -0,0 +1 @@
|
||||
<svg width="11" height="11" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M5.5.047a5.327 5.327 0 0 1 5.328 5.328A5.327 5.327 0 0 1 5.5 10.703 5.327 5.327 0 0 1 .172 5.375 5.327 5.327 0 0 1 5.5.047Zm2.6 6.746L6.703 5.375 8.1 3.979c.107-.086.107-.258 0-.366l-.838-.838c-.108-.107-.28-.107-.366 0L5.5 4.172 4.104 2.775c-.108-.107-.28-.107-.366 0l-.86.838c-.107.108-.107.28 0 .366l1.419 1.396-1.418 1.396c-.108.108-.108.28 0 .366l.838.86c.107.107.28.107.365 0L5.5 6.577l1.396 1.418c.086.108.258.108.366 0l.838-.838c.107-.107.107-.28 0-.365Z" fill="#D63638"/></svg>
|
||||
|
After Width: | Height: | Size: 570 B |
@@ -0,0 +1 @@
|
||||
<svg width="11" height="11" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M10.828 5.375c0 2.943-2.406 5.328-5.328 5.328A5.327 5.327 0 0 1 .172 5.375C.172 2.453 2.557.047 5.5.047c2.922 0 5.328 2.406 5.328 5.328ZM4.877 8.211 8.83 4.258a.364.364 0 0 0 0-.494l-.494-.473a.304.304 0 0 0-.473 0L4.641 6.514 3.115 5.01a.304.304 0 0 0-.472 0l-.495.472a.364.364 0 0 0 0 .495L4.383 8.21a.364.364 0 0 0 .494 0Z" fill="#008A20"/></svg>
|
||||
|
After Width: | Height: | Size: 433 B |
@@ -0,0 +1 @@
|
||||
<svg aria-hidden="true" data-prefix="fas" data-icon="check-circle" class="svg-inline--fa fa-check-circle fa-w-16" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="#00A32A" d="M504 256a248 248 0 1 1-496 0 248 248 0 0 1 496 0zM227 387l184-184c7-6 7-16 0-22l-22-23c-7-6-17-6-23 0L216 308l-70-70c-6-6-16-6-23 0l-22 23c-7 6-7 16 0 22l104 104c6 7 16 7 22 0z"/></svg>
|
||||
|
After Width: | Height: | Size: 380 B |
@@ -0,0 +1 @@
|
||||
<svg width="11" height="11" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M5.5.047a5.327 5.327 0 0 1 5.328 5.328A5.327 5.327 0 0 1 5.5 10.703 5.327 5.327 0 0 1 .172 5.375 5.327 5.327 0 0 1 5.5.047ZM7.477 6.77a.328.328 0 0 0 .085-.214c0-.108-.064-.194-.128-.258l-1.247-.924V2.281a.37.37 0 0 0-.343-.344h-.688a.353.353 0 0 0-.343.344v3.352c0 .28.107.515.322.666l1.44 1.074a.32.32 0 0 0 .193.086.335.335 0 0 0 .279-.15l.43-.538Z" fill="#BD8600"/></svg>
|
||||
|
After Width: | Height: | Size: 459 B |
@@ -0,0 +1 @@
|
||||
<svg aria-hidden="true" data-prefix="far" data-icon="exclamation-circle" class="svg-inline--fa fa-exclamation-circle fa-w-16" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="#D63638" d="M256 8a248 248 0 1 0 0 496 248 248 0 0 0 0-496zm0 448a200 200 0 1 1-.1-400.1A200 200 0 0 1 256 456zm42-104a42 42 0 1 1-84 0 42 42 0 0 1 84 0zm-81.4-211.4 6.8 136a12 12 0 0 0 12 11.4h41.2a12 12 0 0 0 12-11.4l6.8-136a12 12 0 0 0-12-12.6h-54.8a12 12 0 0 0-12 12.6z"/></svg>
|
||||
|
After Width: | Height: | Size: 477 B |
@@ -0,0 +1 @@
|
||||
<svg aria-hidden="true" data-prefix="fas" data-icon="exclamation-circle" class="svg-inline--fa fa-exclamation-circle fa-w-16" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="#E27730" d="M504 256a248 248 0 1 1-496 0 248 248 0 0 1 496 0zm-248 50a46 46 0 1 0 0 92 46 46 0 0 0 0-92zm-43.7-165.3 7.4 136a12 12 0 0 0 12 11.3h48.6a12 12 0 0 0 12-11.3l7.4-136a12 12 0 0 0-12-12.7h-63.4a12 12 0 0 0-12 12.7z"/></svg>
|
||||
|
After Width: | Height: | Size: 428 B |
@@ -0,0 +1 @@
|
||||
<svg aria-hidden="true" data-prefix="fas" data-icon="exclamation-circle" class="svg-inline--fa fa-exclamation-circle fa-w-16" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="#D63638" d="M504 256a248 248 0 1 1-496 0 248 248 0 0 1 496 0zm-248 50a46 46 0 1 0 0 92 46 46 0 0 0 0-92zm-43.7-165.3 7.4 136a12 12 0 0 0 12 11.3h48.6a12 12 0 0 0 12-11.3l7.4-136a12 12 0 0 0-12-12.7h-63.4a12 12 0 0 0-12 12.7z"/></svg>
|
||||
|
After Width: | Height: | Size: 428 B |
@@ -0,0 +1 @@
|
||||
<svg width="46" height="45" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M23 .219C10.691.219.719 10.28.719 22.5.719 34.809 10.69 44.781 23 44.781c12.219 0 22.281-9.972 22.281-22.281C45.281 10.281 35.22.219 23 .219zm0 9.883c2.066 0 3.773 1.707 3.773 3.773 0 2.156-1.707 3.773-3.773 3.773-2.156 0-3.773-1.617-3.773-3.773 0-2.066 1.617-3.773 3.773-3.773zm5.031 22.82c0 .629-.539 1.078-1.078 1.078h-7.906c-.629 0-1.078-.45-1.078-1.078v-2.156c0-.54.449-1.078 1.078-1.078h1.078v-5.75h-1.078c-.629 0-1.078-.45-1.078-1.079v-2.156c0-.539.449-1.078 1.078-1.078h5.75c.539 0 1.078.54 1.078 1.078v8.985h1.078c.54 0 1.078.539 1.078 1.078v2.156z" fill="#3582C4"/></svg>
|
||||
|
After Width: | Height: | Size: 665 B |
@@ -0,0 +1 @@
|
||||
<svg width="14" height="15" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M7 .469c3.719 0 6.781 3.062 6.781 6.781 0 3.746-3.062 6.781-6.781 6.781A6.78 6.78 0 0 1 .219 7.25C.219 3.531 3.254.469 7 .469Zm0 12.25a5.467 5.467 0 0 0 5.469-5.469c0-3.008-2.461-5.469-5.469-5.469A5.467 5.467 0 0 0 1.531 7.25 5.45 5.45 0 0 0 7 12.719Zm0-9.242c.629 0 1.148.52 1.148 1.148 0 .656-.52 1.148-1.148 1.148a1.121 1.121 0 0 1-1.148-1.148c0-.629.492-1.148 1.148-1.148Zm1.531 6.945a.332.332 0 0 1-.328.328H5.797a.316.316 0 0 1-.328-.328v-.656c0-.164.136-.329.328-.329h.328v-1.75h-.328a.316.316 0 0 1-.328-.328v-.656c0-.164.136-.328.328-.328h1.75c.164 0 .328.164.328.328v2.734h.328c.164 0 .328.165.328.329v.656Z" fill="#646970"/></svg>
|
||||
|
After Width: | Height: | Size: 725 B |