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

2 lines
14 KiB
CSS
Executable File

#wpforms-panel-fields .wpforms-stripe-payment-element,#wpforms-panel-revisions .wpforms-stripe-payment-element,#wpforms-panel-ai-form .wpforms-stripe-payment-element{width:60%}#wpforms-panel-fields .wpforms-stripe-payment-element.above input::-webkit-input-placeholder,#wpforms-panel-revisions .wpforms-stripe-payment-element.above input::-webkit-input-placeholder,#wpforms-panel-ai-form .wpforms-stripe-payment-element.above input::-webkit-input-placeholder{color:transparent}#wpforms-panel-fields .wpforms-stripe-payment-element.above input:-moz-placeholder,#wpforms-panel-revisions .wpforms-stripe-payment-element.above input:-moz-placeholder,#wpforms-panel-ai-form .wpforms-stripe-payment-element.above input:-moz-placeholder{color:transparent}#wpforms-panel-fields .wpforms-stripe-payment-element.above input::-moz-placeholder,#wpforms-panel-revisions .wpforms-stripe-payment-element.above input::-moz-placeholder,#wpforms-panel-ai-form .wpforms-stripe-payment-element.above input::-moz-placeholder{color:transparent}#wpforms-panel-fields .wpforms-stripe-payment-element.above input:-ms-input-placeholder,#wpforms-panel-revisions .wpforms-stripe-payment-element.above input:-ms-input-placeholder,#wpforms-panel-ai-form .wpforms-stripe-payment-element.above input:-ms-input-placeholder{color:transparent}#wpforms-panel-fields .wpforms-stripe-payment-element.floating input::-webkit-input-placeholder,#wpforms-panel-fields .wpforms-stripe-payment-element.floating select::-webkit-input-placeholder,#wpforms-panel-revisions .wpforms-stripe-payment-element.floating input::-webkit-input-placeholder,#wpforms-panel-revisions .wpforms-stripe-payment-element.floating select::-webkit-input-placeholder,#wpforms-panel-ai-form .wpforms-stripe-payment-element.floating input::-webkit-input-placeholder,#wpforms-panel-ai-form .wpforms-stripe-payment-element.floating select::-webkit-input-placeholder{color:#999c9e}#wpforms-panel-fields .wpforms-stripe-payment-element.floating input:-moz-placeholder,#wpforms-panel-fields .wpforms-stripe-payment-element.floating select:-moz-placeholder,#wpforms-panel-revisions .wpforms-stripe-payment-element.floating input:-moz-placeholder,#wpforms-panel-revisions .wpforms-stripe-payment-element.floating select:-moz-placeholder,#wpforms-panel-ai-form .wpforms-stripe-payment-element.floating input:-moz-placeholder,#wpforms-panel-ai-form .wpforms-stripe-payment-element.floating select:-moz-placeholder{color:#999c9e}#wpforms-panel-fields .wpforms-stripe-payment-element.floating input::-moz-placeholder,#wpforms-panel-fields .wpforms-stripe-payment-element.floating select::-moz-placeholder,#wpforms-panel-revisions .wpforms-stripe-payment-element.floating input::-moz-placeholder,#wpforms-panel-revisions .wpforms-stripe-payment-element.floating select::-moz-placeholder,#wpforms-panel-ai-form .wpforms-stripe-payment-element.floating input::-moz-placeholder,#wpforms-panel-ai-form .wpforms-stripe-payment-element.floating select::-moz-placeholder{color:#999c9e}#wpforms-panel-fields .wpforms-stripe-payment-element.floating input:-ms-input-placeholder,#wpforms-panel-fields .wpforms-stripe-payment-element.floating select:-ms-input-placeholder,#wpforms-panel-revisions .wpforms-stripe-payment-element.floating input:-ms-input-placeholder,#wpforms-panel-revisions .wpforms-stripe-payment-element.floating select:-ms-input-placeholder,#wpforms-panel-ai-form .wpforms-stripe-payment-element.floating input:-ms-input-placeholder,#wpforms-panel-ai-form .wpforms-stripe-payment-element.floating select:-ms-input-placeholder{color:#999c9e}#wpforms-panel-fields .wpforms-stripe-payment-element.floating label,#wpforms-panel-revisions .wpforms-stripe-payment-element.floating label,#wpforms-panel-ai-form .wpforms-stripe-payment-element.floating label{display:none}#wpforms-panel-fields .wpforms-stripe-payment-element input[type=text],#wpforms-panel-fields .wpforms-stripe-payment-element select,#wpforms-panel-revisions .wpforms-stripe-payment-element input[type=text],#wpforms-panel-revisions .wpforms-stripe-payment-element select,#wpforms-panel-ai-form .wpforms-stripe-payment-element input[type=text],#wpforms-panel-ai-form .wpforms-stripe-payment-element select{width:100%;min-width:initial}#wpforms-panel-fields .wpforms-stripe-payment-element .wpforms-sub-label,#wpforms-panel-revisions .wpforms-stripe-payment-element .wpforms-sub-label,#wpforms-panel-ai-form .wpforms-stripe-payment-element .wpforms-sub-label{margin-bottom:5px;margin-inline-start:1px}#wpforms-panel-fields .wpforms-stripe-payment-element .wpforms-field-row,#wpforms-panel-revisions .wpforms-stripe-payment-element .wpforms-field-row,#wpforms-panel-ai-form .wpforms-stripe-payment-element .wpforms-field-row{overflow:hidden;container-type:inline-size;container-name:wpforms-field-row-responsive}@container wpforms-field-row-responsive (max-width: 200px){#wpforms-panel-fields .wpforms-stripe-payment-element .wpforms-field-row .wpforms-one-half,#wpforms-panel-revisions .wpforms-stripe-payment-element .wpforms-field-row .wpforms-one-half,#wpforms-panel-ai-form .wpforms-stripe-payment-element .wpforms-field-row .wpforms-one-half{float:none;width:100%}#wpforms-panel-fields .wpforms-stripe-payment-element .wpforms-field-row .wpforms-stripe-cvc,#wpforms-panel-revisions .wpforms-stripe-payment-element .wpforms-field-row .wpforms-stripe-cvc,#wpforms-panel-ai-form .wpforms-stripe-payment-element .wpforms-field-row .wpforms-stripe-cvc{margin-top:10px}#wpforms-panel-fields .wpforms-stripe-payment-element .wpforms-field-row .wpforms-stripe-cardnumber-pics,#wpforms-panel-revisions .wpforms-stripe-payment-element .wpforms-field-row .wpforms-stripe-cardnumber-pics,#wpforms-panel-ai-form .wpforms-stripe-payment-element .wpforms-field-row .wpforms-stripe-cardnumber-pics{display:none}}#wpforms-panel-fields .wpforms-stripe-payment-element .wpforms-stripe-cvc,#wpforms-panel-revisions .wpforms-stripe-payment-element .wpforms-stripe-cvc,#wpforms-panel-ai-form .wpforms-stripe-payment-element .wpforms-stripe-cvc{position:relative}#wpforms-panel-fields .wpforms-stripe-payment-element .wpforms-stripe-cvc svg,#wpforms-panel-revisions .wpforms-stripe-payment-element .wpforms-stripe-cvc svg,#wpforms-panel-ai-form .wpforms-stripe-payment-element .wpforms-stripe-cvc svg{position:absolute;bottom:8px;inset-inline-end:12px;opacity:0.75}#wpforms-panel-fields .wpforms-stripe-payment-element .wpforms-stripe-cardnumber-pics,#wpforms-panel-revisions .wpforms-stripe-payment-element .wpforms-stripe-cardnumber-pics,#wpforms-panel-ai-form .wpforms-stripe-payment-element .wpforms-stripe-cardnumber-pics{position:absolute;bottom:7px;inset-inline-end:12px;width:136px;max-width:calc( 100% - 24px);height:24px;background-image:url("../../../images/integrations/stripe/cc-preview.png");background-repeat:no-repeat;background-size:136px 24px;background-position:100% 50%}.rtl #wpforms-panel-fields .wpforms-stripe-payment-element .wpforms-stripe-cardnumber-pics,.rtl #wpforms-panel-revisions .wpforms-stripe-payment-element .wpforms-stripe-cardnumber-pics,.rtl #wpforms-panel-ai-form .wpforms-stripe-payment-element .wpforms-stripe-cardnumber-pics{background-position:0 50%}#wpforms-panel-fields .wpforms-field-stripe-credit-card.size-small .wpforms-stripe-payment-element,#wpforms-panel-revisions .wpforms-field-stripe-credit-card.size-small .wpforms-stripe-payment-element,#wpforms-panel-ai-form .wpforms-field-stripe-credit-card.size-small .wpforms-stripe-payment-element{width:25%}#wpforms-panel-fields .wpforms-field-stripe-credit-card.size-large .wpforms-stripe-payment-element,#wpforms-panel-revisions .wpforms-field-stripe-credit-card.size-large .wpforms-stripe-payment-element,#wpforms-panel-ai-form .wpforms-field-stripe-credit-card.size-large .wpforms-stripe-payment-element{width:100%}#wpforms-panel-fields .wpforms-field-stripe-credit-card .format-selected:not(.wpforms-stripe-payment-element),#wpforms-panel-revisions .wpforms-field-stripe-credit-card .format-selected:not(.wpforms-stripe-payment-element),#wpforms-panel-ai-form .wpforms-field-stripe-credit-card .format-selected:not(.wpforms-stripe-payment-element){width:100%}#wpforms-panel-fields .wpforms-field-stripe-credit-card.sublabel_hide .floating input::-webkit-input-placeholder,#wpforms-panel-revisions .wpforms-field-stripe-credit-card.sublabel_hide .floating input::-webkit-input-placeholder,#wpforms-panel-ai-form .wpforms-field-stripe-credit-card.sublabel_hide .floating input::-webkit-input-placeholder{color:transparent}#wpforms-panel-fields .wpforms-field-stripe-credit-card.sublabel_hide .floating input:-moz-placeholder,#wpforms-panel-revisions .wpforms-field-stripe-credit-card.sublabel_hide .floating input:-moz-placeholder,#wpforms-panel-ai-form .wpforms-field-stripe-credit-card.sublabel_hide .floating input:-moz-placeholder{color:transparent}#wpforms-panel-fields .wpforms-field-stripe-credit-card.sublabel_hide .floating input::-moz-placeholder,#wpforms-panel-revisions .wpforms-field-stripe-credit-card.sublabel_hide .floating input::-moz-placeholder,#wpforms-panel-ai-form .wpforms-field-stripe-credit-card.sublabel_hide .floating input::-moz-placeholder{color:transparent}#wpforms-panel-fields .wpforms-field-stripe-credit-card.sublabel_hide .floating input:-ms-input-placeholder,#wpforms-panel-revisions .wpforms-field-stripe-credit-card.sublabel_hide .floating input:-ms-input-placeholder,#wpforms-panel-ai-form .wpforms-field-stripe-credit-card.sublabel_hide .floating input:-ms-input-placeholder{color:transparent}#wpforms-panel-fields .wpforms-field-stripe-credit-card .wpforms-field-preview-wrap,#wpforms-panel-revisions .wpforms-field-stripe-credit-card .wpforms-field-preview-wrap,#wpforms-panel-ai-form .wpforms-field-stripe-credit-card .wpforms-field-preview-wrap{position:absolute;display:flex;justify-content:space-between;flex-wrap:nowrap;width:auto;height:40px;top:0;inset-inline-start:0;bottom:0;font-size:16px;line-height:40px;color:#666666;container-type:inline-size;container-name:wpforms-field-preview-wrap-small}@container wpforms-field-preview-wrap-small (max-width: 280px){#wpforms-panel-fields .wpforms-field-stripe-credit-card .wpforms-field-preview-wrap .wpforms-field-stripe-credit-card-number-expcvc-preview,#wpforms-panel-revisions .wpforms-field-stripe-credit-card .wpforms-field-preview-wrap .wpforms-field-stripe-credit-card-number-expcvc-preview,#wpforms-panel-ai-form .wpforms-field-stripe-credit-card .wpforms-field-preview-wrap .wpforms-field-stripe-credit-card-number-expcvc-preview{display:none}}#wpforms-panel-fields .wpforms-field-stripe-credit-card.size-small .wpforms-field-preview-wrap,#wpforms-panel-revisions .wpforms-field-stripe-credit-card.size-small .wpforms-field-preview-wrap,#wpforms-panel-ai-form .wpforms-field-stripe-credit-card.size-small .wpforms-field-preview-wrap{width:25%}#wpforms-panel-fields .wpforms-field-stripe-credit-card.size-medium .wpforms-field-preview-wrap,#wpforms-panel-revisions .wpforms-field-stripe-credit-card.size-medium .wpforms-field-preview-wrap,#wpforms-panel-ai-form .wpforms-field-stripe-credit-card.size-medium .wpforms-field-preview-wrap{width:60%}#wpforms-panel-fields .wpforms-field-stripe-credit-card.size-large .wpforms-field-preview-wrap,#wpforms-panel-revisions .wpforms-field-stripe-credit-card.size-large .wpforms-field-preview-wrap,#wpforms-panel-ai-form .wpforms-field-stripe-credit-card.size-large .wpforms-field-preview-wrap{width:100%}#wpforms-panel-fields .wpforms-field-stripe-credit-card.wpforms-field-drag-to-column .wpforms-field-preview-wrap,#wpforms-panel-revisions .wpforms-field-stripe-credit-card.wpforms-field-drag-to-column .wpforms-field-preview-wrap,#wpforms-panel-ai-form .wpforms-field-stripe-credit-card.wpforms-field-drag-to-column .wpforms-field-preview-wrap{width:100%}#wpforms-panel-fields .wpforms-field-stripe-credit-card .wpforms-field-stripe-credit-card-number-placeholder-preview,#wpforms-panel-revisions .wpforms-field-stripe-credit-card .wpforms-field-stripe-credit-card-number-placeholder-preview,#wpforms-panel-ai-form .wpforms-field-stripe-credit-card .wpforms-field-stripe-credit-card-number-placeholder-preview{display:flex;line-height:40px;padding-block:0;padding-inline-end:0;padding-inline-start:10px;overflow-x:hidden}#wpforms-panel-fields .wpforms-field-stripe-credit-card .wpforms-field-stripe-credit-card-number-placeholder-preview svg,#wpforms-panel-revisions .wpforms-field-stripe-credit-card .wpforms-field-stripe-credit-card-number-placeholder-preview svg,#wpforms-panel-ai-form .wpforms-field-stripe-credit-card .wpforms-field-stripe-credit-card-number-placeholder-preview svg{width:24px;min-width:24px;fill:#000000}#wpforms-panel-fields .wpforms-field-stripe-credit-card .wpforms-field-stripe-credit-card-number-placeholder-preview span,#wpforms-panel-revisions .wpforms-field-stripe-credit-card .wpforms-field-stripe-credit-card-number-placeholder-preview span,#wpforms-panel-ai-form .wpforms-field-stripe-credit-card .wpforms-field-stripe-credit-card-number-placeholder-preview span{opacity:0.5;padding-inline-start:10px;white-space:nowrap}#wpforms-panel-fields .wpforms-field-stripe-credit-card .wpforms-field-stripe-credit-card-number-expcvc-preview,#wpforms-panel-revisions .wpforms-field-stripe-credit-card .wpforms-field-stripe-credit-card-number-expcvc-preview,#wpforms-panel-ai-form .wpforms-field-stripe-credit-card .wpforms-field-stripe-credit-card-number-expcvc-preview{display:block;width:fit-content;padding:0 20px 0 0;opacity:0.5;white-space:nowrap}#wpforms-panel-fields .wpforms-layout-column .wpforms-field-stripe-credit-card.size-small .wpforms-field-preview-wrap,#wpforms-panel-fields .wpforms-layout-column .wpforms-field-stripe-credit-card.size-medium .wpforms-field-preview-wrap,#wpforms-panel-fields .wpforms-layout-column .wpforms-field-stripe-credit-card.size-large .wpforms-field-preview-wrap,#wpforms-panel-revisions .wpforms-layout-column .wpforms-field-stripe-credit-card.size-small .wpforms-field-preview-wrap,#wpforms-panel-revisions .wpforms-layout-column .wpforms-field-stripe-credit-card.size-medium .wpforms-field-preview-wrap,#wpforms-panel-revisions .wpforms-layout-column .wpforms-field-stripe-credit-card.size-large .wpforms-field-preview-wrap,#wpforms-panel-ai-form .wpforms-layout-column .wpforms-field-stripe-credit-card.size-small .wpforms-field-preview-wrap,#wpforms-panel-ai-form .wpforms-layout-column .wpforms-field-stripe-credit-card.size-medium .wpforms-field-preview-wrap,#wpforms-panel-ai-form .wpforms-layout-column .wpforms-field-stripe-credit-card.size-large .wpforms-field-preview-wrap{width:100%}