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
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
@@ -0,0 +1,490 @@
#wpforms-splash-modal header {
display: flex;
align-items: center;
gap: 30px;
padding: 50px 120px;
}
#wpforms-splash-modal header h2 {
color: #1d2327;
font-size: 24px;
font-weight: 700;
margin: 0 0 5px;
}
#wpforms-splash-modal header img {
max-width: 80px !important;
max-height: 80px;
border: 4px solid #ffffff;
border-radius: 40px;
box-shadow: 0 5px 15px rgba(0, 0, 0, 0.1);
}
#wpforms-splash-modal .wpforms-splash-notice {
background-color: #fdf2eb;
padding: 15px 20px;
margin: 0 120px 50px;
color: #2c3338;
border-radius: 6px;
}
#wpforms-splash-modal .wpforms-splash-notice a {
color: #e27730;
font-weight: 600;
text-decoration: underline;
text-decoration-color: rgba(226, 119, 48, 0.35);
text-underline-offset: 2px;
transition-property: border, background, color, text-decoration-color;
}
#wpforms-splash-modal .wpforms-splash-notice a:hover, #wpforms-splash-modal .wpforms-splash-notice a:focus {
color: #cd6622;
text-decoration-color: rgba(226, 119, 48, 0.75);
}
#wpforms-splash-modal .wpforms-splash-notice {
background-color: #fdf2eb;
padding: 15px 20px;
margin: 25px 120px 75px;
color: #2c3338;
border-radius: 6px;
}
#wpforms-splash-modal .wpforms-splash-notice a {
color: #e27730;
font-weight: 600;
text-decoration: underline;
text-decoration-color: rgba(226, 119, 48, 0.35);
text-underline-offset: 2px;
transition-property: border, background, color, text-decoration-color;
}
#wpforms-splash-modal .wpforms-splash-notice a:hover, #wpforms-splash-modal .wpforms-splash-notice a:focus {
color: #cd6622;
text-decoration-color: rgba(226, 119, 48, 0.75);
}
#wpforms-splash-modal main .wpforms-splash-section {
display: flex;
align-items: center;
gap: 50px;
margin-bottom: 50px;
padding: 0 120px;
}
#wpforms-splash-modal main .wpforms-splash-section .wpforms-splash-badge {
border-radius: 3px;
background-color: #edfaef;
padding: 8px 10px;
color: #00ba37;
text-align: center;
font-size: 10px;
font-weight: 700;
line-height: 10px;
letter-spacing: 0.5px;
text-transform: uppercase;
cursor: default;
}
#wpforms-splash-modal main .wpforms-splash-section h3 {
color: #1d2327;
font-size: 28px;
font-weight: 500;
line-height: 36px;
margin: 15px 0 10px;
}
#wpforms-splash-modal main .wpforms-splash-section p {
line-height: 25px !important;
opacity: 0.9;
}
#wpforms-splash-modal main .wpforms-splash-section ul {
list-style: revert;
margin-left: 2em;
}
#wpforms-splash-modal main .wpforms-splash-section .wpforms-splash-section-buttons {
display: flex;
align-items: flex-start;
gap: 20px;
margin-top: 20px;
}
#wpforms-splash-modal main .wpforms-splash-section .wpforms-splash-section-buttons .wpforms-btn {
padding: 10px 15px;
font-size: 14px;
line-height: normal;
font-weight: 500;
}
#wpforms-splash-modal main .wpforms-splash-section.wpforms-splash-section-fifty-fifty .wpforms-splash-section-content {
flex: 1;
}
#wpforms-splash-modal main .wpforms-splash-section.wpforms-splash-section-fifty-fifty .wpforms-splash-section-image {
flex: 1;
}
#wpforms-splash-modal main .wpforms-splash-section.wpforms-splash-section-one-third-two-thirds .wpforms-splash-section-content {
flex: 2;
}
#wpforms-splash-modal main .wpforms-splash-section.wpforms-splash-section-one-third-two-thirds .wpforms-splash-section-image {
flex: 1;
}
#wpforms-splash-modal main .wpforms-splash-section:nth-child(odd) .wpforms-splash-section-content {
order: 2;
}
#wpforms-splash-modal main .wpforms-splash-section:nth-child(odd) .wpforms-splash-section-image {
order: 1;
}
#wpforms-splash-modal main .wpforms-splash-section .wpforms-splash-section-image {
flex: 0 0 auto;
align-self: center;
justify-self: center;
}
#wpforms-splash-modal main .wpforms-splash-section .wpforms-splash-section-image.wpforms-image-shadow-apply img {
box-shadow: 0 15px 50px 0 rgba(0, 0, 0, 0.15);
}
#wpforms-splash-modal main .wpforms-splash-section .wpforms-splash-section-image.wpforms-image-shadow-yes img {
max-width: calc(100% + 60px);
margin: -18px 0 -38px -30px;
}
#wpforms-splash-modal main .wpforms-splash-section.wpforms-splash-section-full-width {
flex-direction: column;
align-items: center;
gap: 0;
text-align: center;
padding: 0;
margin-bottom: 75px;
}
#wpforms-splash-modal main .wpforms-splash-section.wpforms-splash-section-full-width .wpforms-splash-section-content,
#wpforms-splash-modal main .wpforms-splash-section.wpforms-splash-section-full-width .wpforms-splash-section-image {
flex: revert;
order: revert;
}
#wpforms-splash-modal main .wpforms-splash-section.wpforms-splash-section-full-width .wpforms-splash-section-content {
width: fit-content;
background-color: #f6f7f7;
padding: 50px 120px;
}
#wpforms-splash-modal main .wpforms-splash-section.wpforms-splash-section-full-width .wpforms-splash-section-content .wpforms-splash-badge {
background-color: #ffffff;
}
#wpforms-splash-modal main .wpforms-splash-section.wpforms-splash-section-full-width .wpforms-splash-section-content h3 {
font-size: 32px;
}
#wpforms-splash-modal main .wpforms-splash-section.wpforms-splash-section-full-width .wpforms-splash-section-image {
width: 100%;
background: linear-gradient(180deg, #f6f7f7 50%, #ffffff 50%);
}
#wpforms-splash-modal main .wpforms-splash-section.wpforms-splash-section-full-width .wpforms-splash-section-image img {
max-width: 760px;
padding: 10px;
background: #ffffff;
border-radius: 9px;
box-shadow: 0 15px 50px rgba(0, 0, 0, 0.15);
}
#wpforms-splash-modal main .wpforms-splash-section.wpforms-splash-section-full-width .wpforms-splash-section-buttons {
justify-content: center;
}
#wpforms-splash-modal main .wpforms-splash-section.wpforms-splash-section-full-width h3 {
margin-top: 20px;
}
#wpforms-splash-modal main .wpforms-splash-section.wpforms-splash-section-full-width p {
font-size: 18px !important;
line-height: 28px !important;
}
#wpforms-splash-modal footer {
display: flex;
padding: 50px 120px;
align-items: center;
gap: 50px;
background: #2c3338;
box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.05);
}
#wpforms-splash-modal footer h2 {
margin: 0 0 10px;
color: #ffffff;
font-size: 28px;
font-weight: 500;
line-height: 36px;
}
#wpforms-splash-modal footer a {
padding: 11px 17px;
font-size: 16px;
font-weight: 500;
}
#wpforms-splash-modal footer p {
color: rgba(255, 255, 255, 0.8) !important;
line-height: 25px !important;
opacity: 0.9;
}
#wpforms-splash-modal .wpforms-btn {
border: 1px;
border-style: solid;
border-radius: 4px;
cursor: pointer;
display: inline-block;
margin: 0;
text-decoration: none;
text-align: center;
vertical-align: middle;
white-space: nowrap;
box-shadow: none;
}
#wpforms-splash-modal .wpforms-btn.inactive {
cursor: no-drop;
pointer-events: none;
box-shadow: none;
opacity: 0.5;
}
#wpforms-splash-modal .wpforms-btn-orange {
background-color: #e27730;
border-color: #e27730;
color: #ffffff;
}
#wpforms-splash-modal .wpforms-btn-orange:hover, #wpforms-splash-modal .wpforms-btn-orange:active, #wpforms-splash-modal .wpforms-btn-orange:focus {
background-color: #cd6622;
border-color: #cd6622;
color: #ffffff;
}
#wpforms-splash-modal .wpforms-btn-orange:focus {
box-shadow: 0 0 0 2px #cd6622;
border-color: #ffffff;
outline: 0;
}
#wpforms-splash-modal .wpforms-btn-bordered {
background-color: #ffffff;
color: #50575e;
border-color: #8c8f94;
}
#wpforms-splash-modal .wpforms-btn-bordered:hover, #wpforms-splash-modal .wpforms-btn-bordered:focus {
color: #2c3338;
border-color: #50575e;
}
#wpforms-splash-modal .wpforms-btn-bordered:focus {
background-color: #ffffff;
box-shadow: 0 0 0 1px #50575e;
outline: 0;
}
#wpforms-splash-modal .wpforms-btn-green {
background-color: #008a20;
color: #ffffff;
border-color: #008a20;
}
#wpforms-splash-modal .wpforms-btn-green:hover, #wpforms-splash-modal .wpforms-btn-green:focus {
background-color: #00a32a;
color: #ffffff;
}
body.wpforms-splash-modal {
overflow: hidden;
margin-right: var(--wpforms-body-scrollbar-width);
}
body.wpforms-splash-modal #wpadminbar {
width: calc( 100vw - var( --wpforms-body-scrollbar-width ));
}
body.wpforms-splash-modal .jconfirm {
overflow: hidden;
bottom: revert;
min-height: 100vh;
backdrop-filter: blur(4px);
-webkit-backdrop-filter: blur(4px);
}
body.wpforms-splash-modal .jconfirm .jconfirm-cell {
vertical-align: top;
overflow-y: auto;
max-height: 100vh;
height: 100vh;
display: flex;
justify-content: center;
align-items: center;
}
body.wpforms-splash-modal .jconfirm .jconfirm-cell::-webkit-scrollbar {
background: transparent;
width: 15px;
height: 15px;
}
body.wpforms-splash-modal .jconfirm .jconfirm-cell::-webkit-scrollbar-track {
background: transparent;
}
body.wpforms-splash-modal .jconfirm .jconfirm-cell::-webkit-scrollbar-thumb {
box-shadow: inset 0 0 5px 5px rgba(0, 0, 0, 0.05);
background: transparent;
border-radius: 15px;
border: solid 4px transparent;
}
body.wpforms-splash-modal .jconfirm .jconfirm-cell::-webkit-resizer, body.wpforms-splash-modal .jconfirm .jconfirm-cell::-webkit-scrollbar-button, body.wpforms-splash-modal .jconfirm .jconfirm-cell::-webkit-scrollbar-corner {
display: none;
}
@-moz-document url-prefix() {
body.wpforms-splash-modal .jconfirm .jconfirm-cell {
scrollbar-color: rgba(0, 0, 0, 0.05) transparent;
scrollbar-gutter: initial !important;
scrollbar-width: thin;
}
}
body.wpforms-splash-modal .jconfirm .jconfirm-cell:hover::-webkit-scrollbar {
background: transparent;
width: 15px;
height: 15px;
}
body.wpforms-splash-modal .jconfirm .jconfirm-cell:hover::-webkit-scrollbar-track {
background: transparent;
}
body.wpforms-splash-modal .jconfirm .jconfirm-cell:hover::-webkit-scrollbar-thumb {
box-shadow: inset 0 0 5px 5px rgba(0, 0, 0, 0.3);
background: transparent;
border-radius: 15px;
border: solid 4px transparent;
}
body.wpforms-splash-modal .jconfirm .jconfirm-cell:hover::-webkit-resizer, body.wpforms-splash-modal .jconfirm .jconfirm-cell:hover::-webkit-scrollbar-button, body.wpforms-splash-modal .jconfirm .jconfirm-cell:hover::-webkit-scrollbar-corner {
display: none;
}
@-moz-document url-prefix() {
body.wpforms-splash-modal .jconfirm .jconfirm-cell:hover {
scrollbar-color: rgba(0, 0, 0, 0.3) transparent;
scrollbar-gutter: initial !important;
scrollbar-width: thin;
}
}
body.wpforms-splash-modal .jconfirm .jconfirm-cell .jc-bs3-container {
padding-bottom: 50px;
}
body.wpforms-splash-modal .jconfirm .jconfirm-cell .jconfirm-holder {
width: 100%;
padding: 0 !important;
}
body.wpforms-splash-modal .jconfirm.jconfirm-open .jconfirm-bg {
position: sticky;
height: 100%;
}
body.wpforms-splash-modal .jconfirm.jconfirm-open .jconfirm-scrollpane {
margin-top: -100vh;
}
body.wpforms-splash-modal .jconfirm.jconfirm-modern .jconfirm-bg {
background-color: #72777c;
opacity: 0.75;
}
body.wpforms-splash-modal .jconfirm-box {
max-width: 1000px;
width: 100% !important;
}
body.wpforms-splash-modal .jconfirm-box-container {
opacity: 0;
padding: 0 50px;
}
body.wpforms-splash-modal div.jconfirm .jconfirm-box-container .jconfirm-box {
border-radius: 12px;
box-shadow: 0 15px 50px rgba(0, 0, 0, 0.15);
}
body.wpforms-splash-modal div.jconfirm .jconfirm-box-container .jconfirm-box.jconfirm-type-default {
padding: 0;
transition-duration: initial !important;
}
body.wpforms-splash-modal .jconfirm.jconfirm-modern .jconfirm-box div.jconfirm-content {
text-align: revert;
}
body.wpforms-splash-modal div.jconfirm .jconfirm-box-container .jconfirm-box .jconfirm-content-pane {
display: block;
margin-bottom: 0;
max-height: none !important;
}
body.wpforms-splash-modal div.jconfirm .jconfirm-box-container .jconfirm-box .jconfirm-content-pane .jconfirm-content {
color: #3c434a;
font-size: 16px;
line-height: 24px;
margin-bottom: 0;
overflow: inherit;
}
body.wpforms-splash-modal div.jconfirm .jconfirm-box-container .jconfirm-box .jconfirm-content-pane .jconfirm-content p {
color: #50575e;
font-size: 16px;
font-weight: 400;
line-height: 22px;
margin-block: 0;
}
body.wpforms-splash-modal div.jconfirm .jconfirm-box-container .jconfirm-box .jconfirm-closeIcon {
top: 20px;
right: 20px;
}
body.wpforms-splash-modal div.jconfirm .jconfirm-box-container .jconfirm-box .jconfirm-closeIcon:after {
font-size: 20px;
}
@media screen and (max-width: 1024px) {
#wpforms-splash-modal header, #wpforms-splash-modal footer {
padding: 50px;
}
#wpforms-splash-modal main .wpforms-splash-section {
padding: 0 50px;
}
#wpforms-splash-modal main .wpforms-splash-section.wpforms-splash-section-full-width .wpforms-splash-section-content {
padding: 50px;
}
}
@media screen and (max-width: 768px) {
body.wpforms-splash-modal .jconfirm {
display: none;
}
}
File diff suppressed because one or more lines are too long
@@ -0,0 +1,98 @@
/**
* Common styles.
*/
.wpforms-edit-post-education-notice-body {
padding-left: 52px;
min-height: 40px;
margin: 0;
position: relative;
}
.wpforms-edit-post-education-notice-body p {
margin: 0;
}
.wpforms-edit-post-education-notice-body:before {
content: '';
display: block;
width: 40px;
height: 40px;
background-image: url("../../images/sullie-edit-post-education.svg");
background-size: 100%;
position: absolute;
left: 0;
top: 0;
}
/**
* Classic editor styles.
*/
.wpforms-hidden {
display: none !important;
}
.wpforms-edit-post-education-notice {
position: relative;
background: #FFFFFF;
border: 1px solid #C3C4C7;
box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
padding: 10px;
font-size: 14px;
line-height: 21px;
display: flex;
align-items: flex-start;
margin: 23px 0;
}
.wpforms-edit-post-education-notice .notice-dismiss {
position: static;
margin-left: auto;
}
.wpforms-edit-post-education-notice:not(.wpforms-hidden) + #postdivrich {
margin-top: -20px;
}
/**
* Gutenberg editor styles.
*/
.is-distraction-free .interface-interface-skeleton__header:focus-within .wpforms-edit-post-education-notice .components-notice__actions,
.is-distraction-free .interface-interface-skeleton__header:focus-within .wpforms-edit-post-education-notice .components-notice__content {
transform: none !important;
}
.components-notice-list .wpforms-edit-post-education-notice {
background-color: #f0f6fc;
border-top: 0;
border-left: 4px solid #007cba;
border-bottom: 0;
border-right: 0;
margin: 0;
}
.components-notice-list .wpforms-edit-post-education-notice-body {
padding-right: 150px;
float: left;
}
@media (max-width: 767px) {
.components-notice-list .wpforms-edit-post-education-notice-body {
float: none;
padding-right: 0;
}
.components-notice-list .components-notice__action.components-button.wpforms-edit-post-education-notice-guide-button {
margin-left: 52px;
}
}
@media (min-width: 768px) {
.components-notice-list .components-notice__action.components-button.wpforms-edit-post-education-notice-guide-button {
position: absolute;
right: 60px;
top: 14px;
margin: 0;
}
.components-notice-list .wpforms-edit-post-education-notice.components-notice .components-notice__dismiss {
margin-top: 14px;
}
}
@@ -0,0 +1 @@
.wpforms-edit-post-education-notice-body{padding-left:52px;min-height:40px;margin:0;position:relative}.wpforms-edit-post-education-notice-body p{margin:0}.wpforms-edit-post-education-notice-body:before{content:'';display:block;width:40px;height:40px;background-image:url("../../images/sullie-edit-post-education.svg");background-size:100%;position:absolute;left:0;top:0}.wpforms-hidden{display:none !important}.wpforms-edit-post-education-notice{position:relative;background:#FFFFFF;border:1px solid #C3C4C7;box-shadow:0 1px 1px rgba(0,0,0,0.05);padding:10px;font-size:14px;line-height:21px;display:flex;align-items:flex-start;margin:23px 0}.wpforms-edit-post-education-notice .notice-dismiss{position:static;margin-left:auto}.wpforms-edit-post-education-notice:not(.wpforms-hidden)+#postdivrich{margin-top:-20px}.is-distraction-free .interface-interface-skeleton__header:focus-within .wpforms-edit-post-education-notice .components-notice__actions,.is-distraction-free .interface-interface-skeleton__header:focus-within .wpforms-edit-post-education-notice .components-notice__content{transform:none !important}.components-notice-list .wpforms-edit-post-education-notice{background-color:#f0f6fc;border-top:0;border-left:4px solid #007cba;border-bottom:0;border-right:0;margin:0}.components-notice-list .wpforms-edit-post-education-notice-body{padding-right:150px;float:left}@media (max-width: 767px){.components-notice-list .wpforms-edit-post-education-notice-body{float:none;padding-right:0}.components-notice-list .components-notice__action.components-button.wpforms-edit-post-education-notice-guide-button{margin-left:52px}}@media (min-width: 768px){.components-notice-list .components-notice__action.components-button.wpforms-edit-post-education-notice-guide-button{position:absolute;right:60px;top:14px;margin:0}.components-notice-list .wpforms-edit-post-education-notice.components-notice .components-notice__dismiss{margin-top:14px}}