b6df4dbb92
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>
2 lines
4.3 KiB
CSS
Executable File
2 lines
4.3 KiB
CSS
Executable File
@keyframes wpforms-dot-pulse{0%{box-shadow:0 0 0 0 rgba(223,119,57,0.6)}100%{box-shadow:0 0 0 10px rgba(223,119,57,0)}}span.wpforms-admin-form-embed-wizard-dot{display:inline-block;width:12px;height:12px !important;padding:0 !important;border:0 !important;border-radius:50%;background-color:#df7739;animation:wpforms-dot-pulse 1.5s infinite !important;margin:3px 10px}.wp-editor-tools span.wpforms-admin-form-embed-wizard-dot{margin-top:9px}.wpforms-admin-form-embed-wizard-tooltip{display:none}.wpforms-admin-form-embed-wizard.tooltipster-sidetip{z-index:100100 !important}.wpforms-admin-form-embed-wizard.tooltipster-sidetip.tooltipster-top .tooltipster-box{margin-bottom:18px}.wpforms-admin-form-embed-wizard.tooltipster-sidetip.tooltipster-top .tooltipster-arrow{bottom:8px}.wpforms-admin-form-embed-wizard.tooltipster-sidetip.tooltipster-top .tooltipster-arrow-background{top:0}.wpforms-admin-form-embed-wizard.tooltipster-sidetip.tooltipster-right .tooltipster-box{margin-left:18px}.wpforms-admin-form-embed-wizard.tooltipster-sidetip.tooltipster-right .tooltipster-arrow{left:8px}.wpforms-admin-form-embed-wizard.tooltipster-sidetip .tooltipster-box{max-width:260px;background:white;border:none;border-radius:4px;box-shadow:0px 5px 15px rgba(0,0,0,0.25);-webkit-box-shadow:0px 5px 15px rgba(0,0,0,0.25);-moz-box-shadow:0px 5px 15px rgba(0,0,0,0.25)}.wpforms-admin-form-embed-wizard.tooltipster-sidetip .tooltipster-box .tooltipster-content{color:#444444;padding:16px 20px 18px;text-align:center}.wpforms-admin-form-embed-wizard.tooltipster-sidetip .tooltipster-box .tooltipster-content div *:first-child{margin-top:0 !important}.wpforms-admin-form-embed-wizard.tooltipster-sidetip .tooltipster-box .tooltipster-content h3{font-size:16px;letter-spacing:0px;line-height:18px;margin:0;color:#23282C}.wpforms-admin-form-embed-wizard.tooltipster-sidetip .tooltipster-box .tooltipster-content p{font-size:14px;letter-spacing:0px;line-height:18px;margin:10px 0 0;color:#444444}.wpforms-admin-form-embed-wizard.tooltipster-sidetip .tooltipster-box .tooltipster-content a{color:#1D7BAC}.wpforms-admin-form-embed-wizard.tooltipster-sidetip .tooltipster-box .wpforms-admin-form-embed-wizard-done-btn{border-radius:3px;cursor:pointer;text-decoration:none;text-align:center;vertical-align:middle;white-space:nowrap;box-shadow:none;font-size:14px;font-weight:600;letter-spacing:0px;padding:7px 18px;border:none;background-color:#df7739;color:#ffffff;display:block;margin:15px auto 0}.wpforms-admin-form-embed-wizard.tooltipster-sidetip .tooltipster-box .wpforms-admin-form-embed-wizard-done-btn:hover{background-color:#b85a1b}.wpforms-admin-form-embed-wizard.tooltipster-sidetip .tooltipster-box .wpforms-admin-form-embed-wizard-done-btn:disabled{cursor:default;opacity:0.5}.wpforms-admin-form-embed-wizard.tooltipster-sidetip .tooltipster-box .wpforms-admin-form-embed-wizard-done-btn:disabled:hover{background-color:#df7739}.wpforms-admin-form-embed-wizard.tooltipster-sidetip .tooltipster-arrow-border{border:none}.wpforms-admin-form-embed-wizard.tooltipster-sidetip.tooltipster-top .tooltipster-arrow-background{border-top-color:white}.wpforms-admin-form-embed-wizard.tooltipster-sidetip.tooltipster-right .tooltipster-arrow-background{border-right-color:white}.wpforms-admin-form-embed-wizard.tooltipster-sidetip.tooltipster-bottom .tooltipster-arrow-background{border-bottom-color:white}.block-editor-page .edit-post-layout .components-notice-list>div{padding-left:50px}.block-editor-page .wpforms-admin-form-embed-wizard-dot{position:absolute;top:75px;left:20px;z-index:9999}.block-editor-page .wpforms-admin-form-embed-wizard{width:260px !important;z-index:99980 !important;margin-top:5px}.block-editor-page .wpforms-admin-form-embed-wizard .tooltipster-box{margin-top:10px}.block-editor-page .wpforms-admin-form-embed-wizard .wpforms-admin-form-embed-wizard-tooltips-red-arrow{position:absolute;display:block;width:15px;height:42px;top:-65px;left:145px;background-image:url(../images/challenge/red-arrow.svg);background-size:15px 42px;background-repeat:no-repeat}.block-editor-page.is-fullscreen-mode .edit-post-layout .components-notice-list>div{padding-left:125px}.block-editor-page.is-fullscreen-mode .wpforms-admin-form-embed-wizard-dot{left:75px}.block-editor-page.is-fullscreen-mode .wpforms-admin-form-embed-wizard .wpforms-admin-form-embed-wizard-tooltips-red-arrow{left:105px}
|