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>
1 line
3.9 KiB
JavaScript
Executable File
1 line
3.9 KiB
JavaScript
Executable File
let WPFormsDashboardWidget=window.WPFormsDashboardWidget||((t,s)=>{let a={$widget:s("#wpforms_reports_widget_lite"),$settingsBtn:s("#wpforms-dash-widget-settings-button"),$canvas:s("#wpforms-dash-widget-chart"),$chartDismissButton:s(".wpforms-dash-widget-dismiss-chart-upgrade"),$dismissButton:s(".wpforms-dash-widget-dismiss-icon"),$recommendedBlockDismissButton:s("#wpforms-dash-widget-dismiss-recommended-plugin-block")};var e=s("body").hasClass("rtl"),i={instance:null,settings:{type:"line",data:{labels:[],datasets:[{label:wpforms_dashboard_widget.i18n.entries,data:[],backgroundColor:"rgba(255, 129, 0, 0.135)",borderColor:"rgba(211, 126, 71, 1)",borderWidth:2,pointRadius:4,pointBorderWidth:1,pointBackgroundColor:"rgba(255, 255, 255, 1)"}]},options:{maintainAspectRatio:!1,scales:{x:{type:"timeseries",reverse:e,ticks:{source:"labels",padding:10,minRotation:25,maxRotation:25,callback(e,t,s){var a=Math.floor(s.length/7);return a<1||(s.length-t-1)%a==0?moment(e).format("MMM D"):void 0}}},y:{beginAtZero:!0,ticks:{maxTicksLimit:6,padding:20,callback(e){if(Math.floor(e)===e)return e}}}},elements:{line:{tension:0,fill:!0}},animation:!1,plugins:{legend:{display:!1},tooltip:{displayColors:!1,rtl:e}}}},init(){a.$canvas.length&&i.injectChartScript()},injectChartScript(){var e;wpforms_dashboard_widget.adapter_path&&((e=t.createElement("script")).src=wpforms_dashboard_widget.adapter_path,e.onload=i.initializeChart,e.onerror=function(e){console.log("Script injection failed:",e)},t.body.appendChild(e))},initializeChart(){var e=a.$canvas[0].getContext("2d");i.instance=new Chart(e,i.settings),i.updateUI()},updateUI(){i.updateWithDummyData(),i.instance.data.labels=i.settings.data.labels,i.instance.data.datasets[0].data=i.settings.data.datasets[0].data,i.instance.update()},updateWithDummyData(){var e,t=moment().endOf("day");let s;for(s=1;s<=7;s++)e=t.clone().subtract(s,"days"),i.settings.data.labels.push(e),i.settings.data.datasets[0].data.push({x:e,y:Math.floor(16*Math.random())+5})}},o={init(){s(o.ready)},ready(){i.init(),o.events(),o.graphSettings()},graphSettings(){a.$settingsBtn.on("click",function(){s(this).siblings(".wpforms-dash-widget-settings-menu").toggle()})},events(){o.formsListEvents(),o.handleChartClose(),o.handleRecommendedPluginsClose(),o.handleWidgetBlockClose()},formsListEvents(){a.$widget.on("click","#wpforms-dash-widget-forms-more",function(){o.toggleCompleteFormsList()})},handleChartClose(){a.$chartDismissButton.on("click",function(e){e.preventDefault(),o.saveWidgetMeta("hide_graph",1),s(".wpforms-dash-widget.wpforms-lite").addClass("wpforms-dash-widget-no-graph"),s(this).closest(".wpforms-dash-widget-chart-block-container").remove()})},handleRecommendedPluginsClose(){console.warn("WARNING! WPFormsDashboardWidget.handleRecommendedPluginsClose() has been deprecated, please use WPFormsDashboardWidget.handleWidgetBlockClose() instead."),a.$recommendedBlockDismissButton.on("click",function(){o.dismissRecommendedBlock()})},handleWidgetBlockClose(){a.$dismissButton.on("click",function(){o.dismissWidgetBlock(s(this))})},saveWidgetMeta(e,t){e={_wpnonce:wpforms_dashboard_widget.nonce,action:"wpforms_"+wpforms_dashboard_widget.slug+"_save_widget_meta",meta:e,value:t};s.post(ajaxurl,e)},toggleCompleteFormsList(){s("#wpforms-dash-widget-forms-list-table .wpforms-dash-widget-forms-list-hidden-el").toggle(),s("#wpforms-dash-widget-forms-more").html(function(e,t){return t===wpforms_dashboard_widget.show_less_html?wpforms_dashboard_widget.show_more_html:wpforms_dashboard_widget.show_less_html})},dismissWidgetBlock(e){e.closest(".wpforms-dash-widget-block").remove(),o.saveWidgetMeta(e.data("field"),1)},dismissRecommendedBlock(){console.warn("WARNING! WPFormsDashboardWidget.dismissRecommendedBlock() has been deprecated, please use WPFormsDashboardWidget.dismissWidgetBlock() instead."),s(".wpforms-dash-widget-recommended-plugin-block").remove(),o.saveWidgetMeta("hide_recommended_block",1)}};return o})(document,(window,jQuery));WPFormsDashboardWidget.init(); |